2016-05-15 63 views
0

背景如何確定特定單元測試用例的貢獻率?

我知道TDD(測試驅動開發)和單元測試,以及不同的覆蓋指標的原則。目前,我正在開發一個Linux C/C++項目,其中應該達到100%branch coverage

問題

是否有人知道的技術/方法來自動識別這些單元測試的情況下,最有助於達到特定的目標範圍?然後每個單元測試可以與貢獻率(百分比)相關聯。有了這個數字,單元測試案例可以按他們的貢獻率排序。

+1

我很想知道爲什麼一個低覆蓋率的測試用例並不比其他測試用例好。其他的應該覆蓋正常運行, –

+0

@Ed Heal我並不是說測試用例越低越好!我有興趣按貢獻率排列測試用例。 – orbitcowboy

+0

爲什麼?運行所有這些。在運行 –

回答

0

Greedy algorithm可以在這裏幫助。在簡單的話:

  1. 從所有的測試選擇一個具有最高覆蓋
  2. 計算已經選擇的剩餘候選人和測試之間的覆蓋面增量。
  3. 選擇,讓最大的三角洲
  4. 重複第2步,直到所有測試都投入排名

因此,你會得到一個排序,看起來像由Squish Coco產生的一個候選對於GNU的coreutils:

Optimized Execution Order

通常,每個額外的測試的好處將下降你添加更多的測試。其中一些甚至可能對整個覆蓋範圍沒有貢獻。

這種排序的好例子是煙霧測試的最佳執行順序,只有有限的時間才能運行。對於一個完整的測試,你最好總是運行整個套件,當然。