最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

如何保證接口測試的覆蓋率?

2022-06-22 16:14 作者:黑馬測試  | 我要投稿


PS:本文轉(zhuǎn)載自黑馬測試高贊知乎文章

鏈接:https://www.zhihu.com/question/39703248/answer/2418666827

有幸刷到這篇文章的同學(xué),請一定要認(rèn)真閱讀此文(記得多看幾遍),因為此篇文章能夠提升你的接口測試功力。

寫在前面_一定要先談下接口在測試領(lǐng)域的地位:

在當(dāng)前企業(yè)實際測試技能應(yīng)用中,功能測試和接口測試應(yīng)用最廣泛。但相比功能測試,接口測試缺口卻非常大。

接口測試在測試領(lǐng)域地位非常高,是軟件測試工程師初級和中級分界線。所以測試人員只要懂得接口測試,就能找到薪資很不錯的工作。

所以測試工作者(也就是提問者眼中的QA),一定要盡最大努力去提高自己的接口測試實力。


在此,推薦的接口測試視頻鏈接如下:



回歸正題

如果想提高接口測試的代碼覆蓋率。首先要知道代碼覆蓋率低的原因,才能更好的采取措施來提高代碼的覆蓋率。仔細(xì)分析題主補充的應(yīng)用場景后,題主的問題我分4部分來闡述。

1、為什么常規(guī)接口測試,代碼覆蓋率低呢?
2、如何提高代碼覆蓋率呢?
3、為便于理解接口測試用例方法,舉例說明。
4、保證接口測試覆蓋率可能會遇到的難點分析。

一、為什么常規(guī)接口測試,代碼覆蓋率低呢?

接口QA還是黑盒的。QA們并不關(guān)注接口的內(nèi)部邏輯。只是按自己的理解去設(shè)計不同的參數(shù)組合當(dāng)做用例。

其實題主已經(jīng)揭露了代碼覆蓋率低的根源。針對接口測試,這種黑盒測試用例設(shè)計思維還是比較普遍的。

我們以一個簡單的接口場景為例,來看看黑盒測試人員的測試用例設(shè)計:

以http協(xié)議為例

單接口:

驗證 URL

? * 針對URL 路徑上存在一些特殊的path需要驗證

驗證 查詢參數(shù),請求頭、請求體參數(shù)

? * 針對參數(shù):正則類的參數(shù)校驗(正常和異常數(shù)據(jù))

? * 針對業(yè)務(wù):單接口功能覆蓋(正向需求和反向需求)

驗證 響應(yīng)數(shù)據(jù)

? * 正常接口響應(yīng)覆蓋

? * 異常接口響應(yīng)覆蓋(錯誤信息)

驗證 業(yè)務(wù)場景:

? * 覆蓋應(yīng)用的業(yè)務(wù)場景

? * 通過接口,模擬用戶可能的操作流程


這種黑盒設(shè)計應(yīng)對接口測試,往往會遺漏下面4個分類:


遺漏分類1、測試不清晰或不規(guī)范導(dǎo)致的場景遺漏

如果接口測試用例設(shè)計思路不清晰或者不規(guī)范,是很容易遺漏場景的。也就是上面所提到的,黑盒測試用例設(shè)計思維應(yīng)該覆蓋的場景存在遺漏,肯定會降低代碼的覆蓋率。


遺漏分類2、涉及不容易覆蓋的分支

接口的實現(xiàn)邏輯多種多樣,涉及很多分支,下面列舉一些常見的點。希望大家多多補充。

1.接口涉及異步任務(wù)

當(dāng)接口涉及異步任務(wù)時。常規(guī)的接口測試用例設(shè)計思路,一般只會觸發(fā)異步任務(wù)正常執(zhí)行的場景。而異步任務(wù)失敗,重試,定時被拉起這些異步流程,有可能會被遺漏掉。因此會降低代碼覆蓋率。

2.接口涉及事務(wù)

當(dāng)某個接口涉及事務(wù),常規(guī)的接口測試用例設(shè)計,一般只會觸發(fā)正常的事務(wù)流程。而實際開發(fā)人員是對具體哪一步回滾,回滾后需要的處理,都是做了一些特殊的業(yè)務(wù)實現(xiàn)的。這些場景容易被遺漏,也會影響代碼覆蓋率。

3.接口涉及鎖

當(dāng)某個接口涉及到鎖,也會有容易遺漏一些測試場景。以讀寫鎖為例(讀-讀共存,讀-寫不共存,寫-寫不共存)。常規(guī)的接口測試用例設(shè)計,很可能會遺漏一些 讀-讀共存,讀-寫不共存,寫-寫不共存的場景。就算這些場景被覆蓋了,關(guān)于鎖過期,獲取鎖失敗后等待的場景很難被覆蓋到。很明顯這會降低代碼覆蓋率。

4.接口涉及緩存

接口中利用緩存技術(shù)是比較常見的,尤其是查詢類接口。比如批量查詢。如果接口涉及了緩存,常規(guī)的接口測試用例設(shè)計很容易忽略緩存的影響,而沒有針對性對接口緩存相關(guān)的驗證。這也會降低代碼覆蓋率。


遺漏分類3.異常場景忽略

理論上講,每一個接口都可能存在異常場景

當(dāng)接口存在一些異常場景,拋出了框架的報錯,一般是不允許的。換句話講,程序員一般要對接口可能出現(xiàn)的異常場景 進(jìn)行處理。有一些場景比較苛刻,不易出現(xiàn),測試人員也容易忽略。一旦沒有覆蓋,肯定會降低代碼的覆蓋率。比如:

場景1: 下游接口返回超時

上游服務(wù)調(diào)用本服務(wù)對外提供的某個接口時,本服務(wù)在處理此接口業(yè)務(wù)需要訪問其他服務(wù),其他服務(wù)返回可能會超時,本服務(wù)一般也不會一直等待。

場景2:數(shù)據(jù)庫連接超時

當(dāng)某個接口需要操作數(shù)據(jù)時,數(shù)據(jù)庫服務(wù)器的性能是一定的,肯定會存在一些數(shù)據(jù)庫異常的場景。針對這些場景,開發(fā)一般都做一些代碼處理。

場景3:緩存服務(wù)器異常

用戶的一些登錄狀態(tài),如果保存在緩存服務(wù)中。如果緩存服務(wù)異?;蛑貑ⅲ芏嘟涌诙紩艿接绊?。這些場景也需要去覆蓋。


遺漏分類4.其他相關(guān)-項目配置

很多項目的業(yè)務(wù)邏輯,是可以通過配置來進(jìn)行控制的,這也是很普遍的。有些功能是否開啟,開始的模式,以及具體業(yè)務(wù)內(nèi)容的控制,都可以使用配置項來進(jìn)行處理。

比如:

  • 功能開啟開關(guān)配置
    如果開關(guān)關(guān)閉,此功能業(yè)務(wù)代碼肯定是沒法覆蓋了,需要開啟并測試相關(guān)業(yè)務(wù)員,這也才能覆蓋這類代碼。

  • 定時任務(wù)配置
    根據(jù)配置設(shè)置定時任務(wù)執(zhí)行策略。一些定時任務(wù)會處理不同狀態(tài)的數(shù)據(jù)。如果某種任務(wù)模式?jīng)]有測試,或者某個模式下數(shù)據(jù)狀態(tài)覆蓋不全,都會漏側(cè)場景。降低代碼覆蓋率。

二、那如何提高代碼覆蓋率呢?

整體思路:針對第一部分分析的原因,采取一些措施,盡量讓咱們不懂代碼的測試人員能夠更好的測試接口,覆蓋這些場景。最終提高代碼的覆蓋率。

解決1. 黑盒測試場景遺漏

這種場景遺漏,是比較好解決的。具體措施:規(guī)范用例設(shè)計方法和流程,基本的測試人員都能夠勝任。推薦相關(guān)測試視頻如下:


或看測試用例相關(guān)的高贊知乎文章:

《如何編寫測試用例?1822 贊同 · 259 評論回答》

https://www.zhihu.com/question/51558124/answer/1494934653

解決2. 覆蓋接口中的特殊分支分、異常場景和項目配置相關(guān)場景

想從接口設(shè)計用例去覆蓋這些場景,前提,是必須得知道這些業(yè)務(wù)邏輯并理解。為了達(dá)到這一目標(biāo),可以從以下4步來保障。

  1. 開發(fā)除了提供接口文檔,還要提供接口實現(xiàn)文檔,在文檔中要描述清楚接口的實現(xiàn)流程。比如接口涉及的配置項、異步任務(wù)、事務(wù)、鎖、緩存等等,都要明確說明。最好能夠輸出流程圖或時序圖。這一點很關(guān)鍵,這可以大大幫助無代碼基礎(chǔ)的測試人員理解接口業(yè)務(wù)和實現(xiàn)細(xì)節(jié)。

  2. 測試人員除了參加需求評審,掌握項目需求。還需要參加開發(fā)的需求設(shè)計評審會議,加深對接口的具體業(yè)務(wù)理解。由于測試人員單獨去閱讀學(xué)習(xí)是有一定難度的,測試人員可以多找對應(yīng)開發(fā)人員了解業(yè)務(wù)實現(xiàn)。

  3. 如果需求發(fā)生變更,或者業(yè)務(wù)實現(xiàn)發(fā)生變更,及時溝通并更新相關(guān)文檔。

  4. 測試人員依據(jù)對業(yè)務(wù)實現(xiàn)的掌握,來設(shè)計測試用例,覆蓋接口的實現(xiàn)業(yè)務(wù)場景。

三、為方便理解提高代碼覆蓋率的方法,舉例說明

示例1. 異步任務(wù)_以批量刪除為例

項目中為了給用戶好的體驗,一些刪除類的接口存在異步刪除任務(wù)是很常見的。

例如:訂單批量刪除(某電商),文件批量刪除(某盤)等等這些數(shù)據(jù)的批量刪除業(yè)務(wù)很多都是通過異步任務(wù)來實現(xiàn)的。

下面粗略的寫一下刪除數(shù)據(jù)的假定邏輯
批量刪除

分析:

常規(guī)的接口測試用例覆蓋,容易忽略這些異步任務(wù)其他分支。原因也很簡單,QA不知道還有這些邏輯。調(diào)用接口時,這些場景也不容易觸發(fā)。

如果開發(fā)人員提供了這個流程圖,測試人員完全可以根據(jù)流程圖來設(shè)計測試用例,覆蓋所有的分支。

場景舉例:

  • 異步任務(wù)寫入失敗

    • 可以通過提前寫入固定用戶的固定數(shù)據(jù),阻止數(shù)據(jù)寫入(主鍵沖突之類的處理)

    • 修改數(shù)據(jù)庫連接數(shù),批量執(zhí)行刪除接口

  • 異步任務(wù)執(zhí)行失敗

    • 可以提前預(yù)置錯誤數(shù)據(jù),導(dǎo)致執(zhí)行失?。ㄈ鄙倌承┳侄危承┳侄沃凳清e誤數(shù)據(jù))


示例2. 事務(wù)

項目中,有一些接口的實現(xiàn),涉及一些事務(wù),這也是非常常見的。

事務(wù)

分析:

接口測試用例設(shè)計過程中,考慮在整個業(yè)務(wù)流程中,盡量覆蓋每一步出現(xiàn)異常,設(shè)計不同的測試場景,來覆蓋整個業(yè)務(wù)流程。

場景舉例:

  • 事務(wù)內(nèi)出現(xiàn)異常,回滾成功。

示例3. 鎖

項目中,多端操作也是比較常見,web端,App端,小程序等。那就會存在一些接口操作同一部分?jǐn)?shù)據(jù)的場景。

分析:

在設(shè)計接口測試用例時,要考慮鎖相關(guān)的場景,提高代碼覆蓋率。

場景舉例:

  • 獲取鎖

    • 無鎖

      • 獲取寫鎖

      • 獲取讀鎖

    • 寫鎖存在

      • 獲取讀鎖

      • 獲取寫鎖

    • 讀鎖存在

      • 獲取讀鎖

      • 獲取寫鎖

  • 釋放鎖

    • 讀鎖

      • 釋放鎖成功

      • 釋放鎖失敗

    • 寫鎖

      • 釋放鎖成功

      • 釋放鎖失敗

示例4. 定時任務(wù)

項目如果存在需要批量處理數(shù)據(jù)時,一般 都會選擇在低峰期,通過定時任務(wù)來實現(xiàn)。

例如:數(shù)據(jù)版本遷移,清理過期數(shù)據(jù)等。

定時任務(wù)

分析:

針對服務(wù)器接口測試時,這些定時任務(wù)也要去驗證??梢杂行岣?代碼覆蓋率。

在這主要強調(diào)一下任務(wù)執(zhí)行的數(shù)據(jù)狀態(tài),要保證數(shù)據(jù)全面性,整個生命周期的數(shù)據(jù)代表均要存在,并且要有一定的量級,這樣才能覆蓋任務(wù)的處理邏輯。

場景舉例:

  • 定時任務(wù)是否拉起

  • 定時任務(wù)是否執(zhí)行

  • 任務(wù)執(zhí)行前,數(shù)據(jù)是否全面(覆蓋整個生命周期的所有類型數(shù))

四、保證接口測試覆蓋率可能會遇到的難點分析

難點1. 開發(fā)提供的接口實現(xiàn)文檔不規(guī)范

開發(fā)實現(xiàn)文檔要有一定的模版和編寫規(guī)范,嚴(yán)格要求開發(fā)人員輸出文檔。要有把控措施。

難點2.測試人員理解困難

  • 文檔要注重流程描述,少代碼。

  • 這個是可以培養(yǎng)的,難點并不會特別大。除非這個測試人員不想進(jìn)步。

難點3.設(shè)計的用例無法實施測試

  • 存在一些異常場景,實施測試確實有難度,可以求助。

  • 我現(xiàn)在越來越覺得作為測試人員,在設(shè)計用例的時候,是不需要考慮能不能實現(xiàn)測試的。沒法測試,多半是因為自己技能不足。所以用例正常設(shè)計,用例執(zhí)行可以找大佬輔助。

五、最后總結(jié)

具體的實現(xiàn)要求

  • 開發(fā)人員,將接口實現(xiàn)邏輯,從代碼思想轉(zhuǎn)化為文檔描述。這是讓無代碼基礎(chǔ)理解項目業(yè)務(wù)的前提。文檔要規(guī)范,評審要清晰,變更及時同步。

  • 測試人員需要加強學(xué)習(xí),通過文檔閱讀,評審學(xué)習(xí),請教開發(fā),理解業(yè)務(wù)實現(xiàn)。

  • 測試人員深入理解業(yè)務(wù),然后設(shè)計更全面的測試場景并實施測試。

意義

  • 提高了代碼覆蓋率,項目自然測試的更加充分。能夠發(fā)現(xiàn)更多隱藏的問題。

  • 能夠讓沒有代碼能力的測試人員快速成長,做好測試。

  • 規(guī)范化了開發(fā)實現(xiàn)流程,對項目的開發(fā)管理也很一定促進(jìn)作用。

缺點

  • 剛開始實施起來會吃力一些,尤其是跨部門操作。

  • 測試和開發(fā)會有更多的溝通成本。

若你想在學(xué)接口測試之前,先掌握軟件測試的基礎(chǔ)知識,打牢測試基礎(chǔ)。



若你是對測試不太了解的測試小萌新,有太多太多對測試的疑惑(前途、薪資、技術(shù)含量、男生是否可以干.....),強烈推薦你觀看《測試小白必看:學(xué)習(xí)軟件測試必問的100個問題,從此貼開始》,相信能掃除掉你心目中90%以上的常見問題。


《100個常見問題鏈接》:http://bbs.itheima.com/thread-507947-1-1.html


最后,為方便大家自學(xué)軟件測試,特意給大家準(zhǔn)備了一份13G的超實用干貨學(xué)習(xí)資源,涉及的內(nèi)容非常全面。


包括軟件學(xué)習(xí)路線圖,黑馬50多天的上課視頻、16個突擊實戰(zhàn)項目,80余個軟件測試用軟件,37份測試文檔,70個軟件測試相關(guān)問題,40篇測試經(jīng)驗級文章,上千份測試真題分享,還有2020軟件測試面試寶典,還有軟件測試求職的各類精選簡歷,希望對大家有所幫助…..


《2022黑馬測試學(xué)習(xí)路線圖鏈接》:http://bbs.itheima.com/thread-405757-1-1.html



如何保證接口測試的覆蓋率?的評論 (共 條)

分享到微博請遵守國家法律
拉萨市| 玛多县| 闽侯县| 通渭县| 阿合奇县| 奉节县| 武隆县| 霍林郭勒市| 义马市| 甘肃省| 锡林郭勒盟| 玉门市| 安阳市| 获嘉县| 江口县| 山丹县| 花莲县| 河源市| 南昌县| 佳木斯市| 吉隆县| 金乡县| 沙河市| 灯塔市| 芜湖县| 固阳县| 镇远县| 翁牛特旗| 饶阳县| 旌德县| 河东区| 纳雍县| 新巴尔虎左旗| 临江市| 汝州市| 汝南县| 土默特右旗| 尼玛县| 内乡县| 姚安县| 五华县|