使用allpairs自動設計組合測試用例
配對測試的基本理念是,雖然程式的某個元件,或者程式自己會接受很多的輸入,但大部分情況下,程式的bug不是因為這些輸入同時作用而產生的,而是由一 到兩個輸入條件同時作用導致的。因此配對測試在生成測試組合的時候,主要關注將每個條件與其它條件至少配對一次,而不是試圖生成全組合,這樣就可以大大減 少需要測試的組合數,盡而節省測試工作量,同時又能達到滿意的測試覆蓋率。
當然不能期望配對測試是萬能的,即我們僅依賴於配對測試自動生成的測試用例就可以了,使用配對測試的目的是為了減少測試人員浪費在執行太多的等價組合的時間,將寶貴的時間儘可能地放在設計符合使用者使用場景的測試用例上。
具體示例(手工步驟)
廢話少說,先看一個具體的示例,假設我們有下面一個產品,介面如下:
對於上面這個產品(假設文字框接受1到100之間的整數),可以將測試條件劃分為下面這樣子:
當然,文字框的條件我們還可以再細分一下,但是為了描述簡單,我把條件設定的比較粗糙,如果按照全組合的用例設定方式,需要 6 (下拉框控制元件可能的條件) * 2 (核取方塊可能的條件) * 2 (單選框可能的條件) * 6 (文字框可能的條件) = 144個組合。
我們來看使用配對方式設計組合的方式:
1、先將上面的條件輸入到Excel裡,並在列頭標明可能出現的條件的個數,並按條件的個數將各個輸入引數排序,如下圖所示:
2、先將第二個和第三個引數的各個條件組合一次,這裡為了省事起見,我先去掉第一個引數,只介紹第二、三、四個引數的配對組合方法:
4、為了確保第四個引數跟第三個引數的各個條件都有一次組合,可以使用Excel提供的過濾功能來判斷,例如下圖中,很明顯,兩個引數沒有一個完全組合:
5、解決方案很簡單,只需要再新增兩行,將兩個引數中沒有組合的條件各自組合一次好了(當然,你也可以將第四個引數的條件稍微調整一下達到相同的目的):
自動化步驟
上面的工作還是有點繁瑣,實際上早已有人將這個過程自動化了,這裡介紹一個免費開源的工具allpairs.exe,請於下面這個連結裡下載:http://www.satisfice.com/tools/pairs.zip
1、先將上面的條件輸入到Excel裡,如下圖所示(因為這個工具是老外寫得,沒有考慮支援中文的問題,所以最好全部用英文表示):
2、將Excel檔案儲存為以Tab鍵作為分隔符的文字檔案:
3、然後使用allpairs.exe處理這個檔案:
allpairs.exe test.txt > output.txt
4、在output.txt裡,PAIRING DETAILS下面的東西都是沒有用的,可以直接刪掉,刪掉以後,結果如下:
你可以在設計測試環境矩陣還有組合測試用例的時候使用allpairs這個技術,當然,你不能完全依賴這個技術,除了allpairs組合的測試用例以外,你最好再根據測試覆蓋率和使用者場景覆蓋率入手,補充更有價值的測試用例。
另外,使用配對測試的演算法,我們有可能結合Behavior Driven Design技術,直接從需求自動生成測試用例,加之如果我們將基本的測試用例自動化以後,完全可以使用這個技術將自動化過的測試用例配對組合(當然需要 加上一些限制條件),在節省測試時間的同時,達到滿意的測試覆蓋率,當然,這樣做要求我們自己寫一個測試工具來實現這個技術—至少到現在我還沒有看到現成 的工具,而且這個技術應該要比模型驅動測試更容易使用,因為模型驅動測試的問題是建模太困難。
最新內容請見作者的GitHub頁:http://qaseven.github.io/
相關文章
- python實戰-基於正交實驗(工具:allpairs)自動生成介面異常測試用例PythonAI
- 最新測試技術:使用狀態遷移法設計自動化駕駛測試用例
- 手工測試用例與自動化測試用例的區別
- 自動化測試|Eolink Apikit 如何儲存、使用測試用例API
- 測試用例設計指南
- 自動化測試平臺設計與實現(二、自動化測試用例物件設計實現、關鍵字物件設計與實現)物件
- 自動的自動化:EvoSuite 自動生成JUnit的測試用例UI
- APP測試設計測試用例的要點APP
- Web自動化-Selenium自動化測試-4-編寫測試用例Web
- 測者的測試技術手冊:自動的自動化EvoSuite 自動生成JUnit的測試用例UI
- 使用 RFT 設計 Web 2.0 應用的 GUI 自動化測試框架WebGUI框架
- 軟體測試用例設計方法
- 黑盒測試用例設計方法三
- 測試開發之自動化篇-自動化測試框架設計框架
- 聊聊介面測試用例設計規範
- 自動化測試平臺設計與實現(五、用例執行的統計與展示)
- 自動化測試平臺設計與實現(三、自動化用例物件成為可執行檔案,用例執行機的設計與實現、用例除錯)物件除錯
- 基於LangChain手工測試用例轉Web自動化測試生成工具LangChainWeb
- 基於LangChain手工測試用例轉介面自動化測試生成工具LangChain
- 基於LangChain手工測試用例轉App自動化測試生成工具LangChainAPP
- 軟體自動測試架構設計架構
- 軟體測試用例設計中的結構設計
- 設計測試用例的四條原則
- jest如何執行單組測試用例
- 微信小程式設計師自動化測試微信小程式程式設計師
- 自動化測試框架: 設計的重構框架
- 軟體測試用例設計方法-場景法
- 軟體測試用例設計方法-判定表法
- 軟體測試用例設計方法-因果圖法
- 有關介面測試的用例設計問題
- 軟體測試用例的設計和編寫
- 系統測試用例設計之判定表法
- 第8課—設計測試用例編寫技巧
- 軟體測試用例設計實用經驗之談
- 測試面試-測試用例面試
- 介面自動化用例設計
- 測試中,介面測試的必要性與介面測試的基礎用例設計
- 哪一種 AI 輔助程式設計工具適合自動化測試指令碼AI程式設計指令碼