這些天我主要在 Android Studio 中為 Android SDK 進行單元測驗,并使用Jqwik,它是 JUnit 平臺上基于屬性的測驗工具。
在與我的前輩一起探索不同的測驗技術方法時,我了解了基于示例的測驗和基于屬性的測驗。我想知道什么時候選擇哪一個。
uj5u.com熱心網友回復:
分享此內容的目的:與社區再次確認我的想法是否正確。
符號:EBT = 基于示例的測驗;PBT = 基于屬性的測驗;
我的理解:EBT 是為了檢查功能是否按預期作業,而 PBT 通過針對不變數(域行為)偽造給定的先決條件(輸入)來達到更高的水平
我的感受:我覺得 Jqwik 工具就像 JUnit 的引數化測驗,但使用了類固醇
示例基礎測驗
優點:
與 PBT 相比,程式員可以輕松查看哪些測驗以其指定的名稱通過,僅顯示嘗試的總次數,我們可以記錄生成的測驗用例,但 JUnit 方式更具視覺吸引力并且易于遍歷和閱讀
可以輕松地閱讀和理解測驗用例本身中提到的輸入,這與 PBT 相比,我們必須查看 Jqwik 從中獲取所有 Arbitraries 的 Provider 方法。
適合測驗沒有任何依賴組合的狀態機。
如果非技術人員知道該域組件的作業原理,那么他可能很容易理解狀態機的作業原理
缺點:
- 通常不會涵蓋所有邊緣情況,正如 Jqwik 的作者在關于 EBT 的介紹中所說的那樣,“它無法兌現承諾”
- 當有大量組合需要覆寫時,這不是最佳選擇
- 在基于示例的測驗中,我們真的很直觀,因此每個程式員都用不同的測驗用例覆寫測驗,相比之下,PBT 是一種詳盡的測驗。
基于屬性的測驗
優點:
- 適用于隨機和特定的輸入資料生成。
- 當有很多獨特的測驗用例組合時非常好,因為它作業得很好。
- 這不僅僅是關于詳盡的集合輸入組合,而是 PBT 的一個子集
缺點:
對于 PBT,我觀察到的主要缺點是測驗用例的可讀性:
- 很難閱讀和遍歷生成的測驗用例,因為它只是日志
- 測驗用例的當前輸入是什么,我們必須查看
Provides注釋函式。
uj5u.com熱心網友回復:
對我來說,這通常不是一個非此即彼的問題,但示例和屬性通常相互補充。雖然示例是測驗代碼的預期行為的良好起點,但屬性使我對功能的廣度和邊緣和極端情況下的預期行為有足夠的信任。
在某些情況下,示例可以更好地替換為屬性,例如,當許多示例可以轉換為單個或僅幾個屬性時。即便如此,我還是傾向于保留一些例子,因為它們更容易理解。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481715.html
