異常場景測試


什么是異常測試?

異常測試是有別於功能測試和性能測試的又一種測試類型,通過異常測試,可以發現由於系統異常、依賴服務異常、應用本身異常等原因引起的系統問題,可以幫助我們改善以后的測試設計方案,提高系統的穩定性。

為什么要做異常測試?

常規的功能測試過程中,主要關注的是業務的正常邏輯是否能夠走通,以及在正常邏輯多並發運行過程中是否有潛在的性能問題,往往忽視了各種異常情況對服務造成的影響。隨着產品規模的擴大以及業務的不斷迭代,我們無法預料每個應用可能出現的異常情況。所以在測試過程中不但要關注正向測試也需要關注異常場景的測試。

如何展開異常測試?

從異常測試的定義來看,想要開展異常測試,首先需要知道怎么去設計異常測試用例,應該使用哪些測試方法來模擬異常場景?接下來我將以電商業務為例從接口異常和業務操作異常兩個維度進行具體的介紹。

一、接口異常測試

接口異常測試可能會與業務操作異常有部分重疊,但個人覺得接口異常測試放在接口測試階段比較合適,並且接口異常測試可以為后續業務操作異常測試做鋪墊。

  • 整體流程:了解產品需求,分析需求特點-》了解接口實現邏輯-》設計接口用例-》確定測試方法

  • 關注重點:依賴服務調用異常和輸入異常時,業務代碼能否容錯及容錯邏輯是否合理。

  • 測試內容:主要包括輸入異常、操作異常、服務異常等。

  • 接口類型:http接口、scf接口

1、http接口測試

電商商品上架平台為后台系統,存在很多新增、刪除、修改模板等操作,業務邏輯會要求在新增修改等操作時不允許為空或重復等校驗,一般像這類操作前端和后端都會做校驗,單純從頁面只能測試前端校驗邏輯是否正確,無法測試后端校驗是否正確,通過http接口測試就可以覆蓋到后端的校驗邏輯。所以基於業務邏輯在進行接口測試時會重點關注以下異常情況,其中主要包括:

  • 重復和非空校驗:名稱重復、必填項字段為空等

  • 異常參數:參數不完整、參數重復等

  • 異常查詢:缺少分頁信息、缺少品類id\型號id等

  • 數值校驗:設置參數為非數值類型、包含特殊字符等

測試工具主要使用Yapi平台:在設計接口case時通過異常參數的傳參,可以清楚的驗證異常場景下接口的返回值。

2、scf接口測試

在測試訂單流程時,會重點關注訂單狀態的流轉。以競拍接口為例,為避免出現超賣,會針對接口進行並發測試,來校驗后端在參拍時是否對回收單狀態進行了校驗。

測試方式:使用注解的方式對TestNg線程池和執行次數進行配置

invocationCount:表示執行的次數

threadPoolSize:表示線程池內線程的個數

 

二、業務操作異常測試

業務操作異常測試一般是放在功能測試的后期,因為業務異常用例的設計需要對項目有一定的理解,是業務強相關的。整體流程主要分為以下四步:

結合業務需求,確定業務重點-》了解開發實現邏輯-》設計異常場景用例-》確定測試方法

1、基於業務的異常場景測試

以電商上傳商品業務為例,商品添加為后台操作系統,商品上傳存在新增、編輯、刪除等功能,映射邏輯的上傳都是通過導入excel的方式。所以在測試期間會重點關注頁面異常操作和excel上傳異常。

(1)頁面異常操作

  • 思路:由於在接口測試階段已經將對應模塊的接口異常case覆蓋到,所以在功能測試階段只需要重點關注頁面層面的異常操作。

  • 異常測試點:提交時快速多次點擊、頻繁添加/刪除

  • 測試方法:主要通過頁面頻繁操作對系統並發情況進行驗證

(2)excel上傳

  • 思路:了解對應上傳功能校驗邏輯,針對校驗邏輯設計異常case

  • 異常測試點:上傳內容包含特殊字符、文件格式不正確、非空校驗、最大條數限制、表頭順序是否一致、業務內部邏輯

  • 測試方法:主要通過修改上傳的excel文件中的內容,來模擬異常數據的上傳

2、通用性異常場景測試

(1)冪等校驗

  • 消息重發:目前很多提交都是異步提交,如短信發送,一般點擊發送就會提示發送成功。但實際是否發送成功,后續會有系列處理機制,根據消息的一些本身機制,后續處理過程中會進行重發機制。

    測試方法:可在終端最后一步,或中間環節人為觸發多次發送。如:在消息隊列中重發,多次補收同一內容的報文等。

  • 業務間的重試:有些業務特意設置在連接超時或者失敗時需重試,這時候就需要驗證冪等性處理。

     測試方法:可以通過模擬網絡連接超時或服務超時等觸發重發機制。

(2)緩存測試

為提升效率,很多系統應用了緩存機制,那么對於緩存測試以下三點在測試過程中需重點關注。

  • DB同步性: 如對商品重要屬性進行了新增、編輯(價格、庫存等重要信息)、刪除時,如果應用了緩存機制,那測試過程中就需要關注DB的修改是否同步到緩存中、數據庫的字段進行更新緩存中的存儲結構是否進行更新等。

    測試方法:

    了解緩存內容,對數據進行操作,操作后緩存相應展示頁面查看

    ②如數據庫結構發生變化,需測試緩存中數據的存儲

  • 緩存失效性:有些關鍵數據放緩存中是有失效性的,需根據具體業務去了解相關失效性,還是永遠存儲。

    測試方法:根據業務關鍵性數據的緩存設置時間來測試業務的失效性。

  • 緩存異常時系統處理:緩存溢出或丟失時,系統的業務是否能正常處理。一般的處理邏輯:重試機制、數據獲取切換到DB。總之,不能因緩存異常,影響業務。

    測試方法:模擬緩存溢出

3、與第三方交互

與第三方的交互一般都是mq交互或服務調用,所以在測試過程中會重點關注冪等校驗以及服務調用超時的情況。

測試方法:

  • 重復發送mq

  • 使用Yapi平台對接口進行mock 、修改服務超時響應時間、模擬第三方服務返回異常

總結與展望

整體來說前期的接口測試,測試過程中的功能測試,測試后期的異常測試基本可以組成一個完整的測試方案,覆蓋整個測試周期。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM