判定表case的自動化用例設計

  • 2019 年 10 月 10 日
  • 筆記

大家好,小編今天和大家分享一個自己編寫的自動化測試工具,主要解決的問題是如何遍歷測試用例中「判定表」方法設計出來的case。

列舉一個需求: 有一個開關下發的網絡接口,針對以下條件給用戶下發音樂開關: 1、 手機廠商滿足:xiaomi,oppo,vivo 2、 且Androidid尾號為:1、2、3、4、5、6 3、 且地區必須是北京,上海,廣州 下發的音樂開關的key、value分別是「music」,「1」。

觀察該需求,我選擇採用判定表的方法來設計測試用例,詳情如下:

通過上表進行用例設計。滿足下發的條件一共有3*6*3=54條,如果每一類各設計一個反向條件,則總case數量為4*7*4=112條。

如果通過黑盒的方式全部遍歷這112條case,時間人力消耗就太大了,考慮到該接口的測試需求較頻繁,於是考慮用自動化的手段進行測試。

自動化工具的設計主要有以下三個步驟: 1、條件輸入:全部case條件的錄入; 2、測試執行:對所有條件全部遍歷組case,進行測試驗證; 3、結果輸出:對測試結果進行校驗、排版輸出。

一、條件輸入: 首先由於該接口使用頻率較高,於是計劃設計一個完整的工具,通過wxpython進行GUI的繪製(wxpython使用說明:https://www.yiibai.com/wxpython/wxpython_environment.html),做出來的界面如下:

條件框中可以多個條件填寫,通過「;」隔開,使用GetValue()方法時通過split進行拆分; 引用剛剛的例子,待查詢關鍵字:「music」,預期結果:「1」。

二、測試執行: 首先將所有正向、反向條件分別用數組接收,然後進行遍歷組合,我在這裡遇到了一個困難, 如果僅僅是例子中的3重條件,那麼嵌套3次循環即可。但是以後的需求條件可能會有很多,每增加一組條件就要修改腳本增加一重循環,對腳本的易用性有很大影響,通過查詢python庫找到了一個更有效的方法:python的itertools模塊,使用方法如下:

從圖中可以看出,該模塊循環可以將所有list進行全部組合的排列輸出,獲取到所有的條件後,將條件組合成對應case並作為body進行request上傳,接收返回的內容準備輸出結果。

三、結果輸出: 收到返回後,進行實際結果和預期的判斷,主要有兩種case 1、正確路徑:全部條件正確case,結果如果命中預期則返回True,否則False; 2、錯誤路徑:如果有一個非下發case,結果如果仍命中預期則返回False,否則返回True。 將結果進行排版輸出到excel中,大概效果如下:

本次案例屬於接口測試,但工具的設計理念不僅僅適用接口驗證,利用itertools的數組全組合能力實現判定表的所有條件遍歷,在功能回歸的多條件自動化測試上也可以使用,解放雙手,並保證測試case覆蓋率達到100%。