簡體   English   中英

使單元測試快速失敗以進行突變測試

[英]Making unit tests fail quickly for mutation testing

突變測試遇到的一個問題是它很慢,因為默認情況下,您會為生成的每個突變執行完整的測試運行(測試文件或一組測試文件)。

使突變測試更快的一種方法是在遇到單個故障時停止針對給定突變體的測試運行(但僅在突變測試期間)。 甚至更好的是突變測試儀要記住什么是第一個殺死最后一個突變體的測試,並首先將其給予下一個突變體。 紅寶石中是否有任何東西可以做這些事情,或者是我開始修補猴子的最佳選擇?

(是的,我知道單元測試應該很快。並且顯示所有失敗的測試在突變測試之外是有用的,因為它不僅可以幫助您識別出錯誤,還可以確定哪里出錯了)

編輯 :我目前正在使用測試/單位的heckle。 如果測試/單元無法記住哪些測試在運行之間失敗,那么heckle或者運行heckle的東西就能記住它。

一旦遇到失敗的示例,我的突變工具使用rspec2 --fail-fast選項立即停止。 與僅執行受影響的單元測試的--rspec-dm2策略一起,我們可以獲得非常快速的變異覆蓋測試。 請參閱此asciicast進行(速度)演示。

你最好的方法是從github查看heckle源碼 ,修補它,並將該補丁提交給開發人員。 你應該能夠為heckle編寫一個自定義測試運行器。

猴子補丁永遠不會是這樣的答案。 實際上,猴子補丁幾乎不是任何事情的答案。

我開始使用的一種方法是為每個方法編寫單元測試,並將它們放在單獨的文件中,像rubyspecs一樣組織。 我單獨運行每個規范,指定我想要解決的確切方法。 我有一個rake任務管理所有這些並在最后打印一個報告失敗的突變,如果有的話。

最后,我得到了對每種方法的全面覆蓋,無需等待結果。 此外,它甚至比每個人使用的正常方法更好,因為我沒有得到任何附帶的報道 - 每個方法的規范必須涵蓋該方法的所有突變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM