軟體測試 - 變異測試
軟體為了交付預期的效能,會經歷各種測試階段。變異測試是一種用來構建新的測試用例並分析已有的用於驗證軟體的測試用例質量的測試型別。
什麼是軟體變異測試?
軟體變異測試也稱為程式碼變異測試。它是白盒測試技術下的一個概念。在此期間,對程式碼進行小的更改以驗證現有測試用例的有效性,或識別程式原始碼中使用的測試資料中的弱點。
軟體變異測試可用於驗證設計模型、資料庫、XML 等。它是一種結構化測試,其中程式碼的結構用於幫助測試過程。它基本上以微小的方式重寫程式碼,以便可以避免或最大限度地減少程式碼冗餘。在更新原始碼後,預計現有測試用例會識別它們。程式碼的更改通常會導致引入錯誤。
變異測試主要用於評估軟體測試工具的有效性,而不是軟體本身。它主要在單元測試時使用。它捕獲其他測試方法未檢測到的缺陷。在執行變異測試時,可以刪除或多次使用一行程式碼,可以修改真或假語句或變數等。一旦程式碼中的變異被合併,它們就會被驗證並與實際程式碼進行比較。
如果在變異程式碼上執行的現有測試用例識別出的缺陷與在原始程式碼上執行時識別出的缺陷相同,那麼程式碼要麼未執行,要麼現有測試用例無法識別變異。然後表明需要改進現有測試用例以提高其效率。成功的變異測試結果應該在對原始程式碼和變異程式碼執行相同的測試用例時產生不同的測試結果。當來自變異程式碼和原始程式碼的測試結果不同時,突變體將不再使用,這些被稱為已殺死的突變體。
計算變異分數百分比的公式
變異分數可以透過將殺死的突變體的總數除以突變體的總數,然後乘以一百來計算。
Mutation Score = (Total count of mutants killed/ Total count of mutants) * 100
如果我們獲得一百分的變異分數,這表明現有測試用例是有效且足夠的。
軟體變異測試的目標
軟體變異測試的目標列在下面:
- 軟體變異測試驗證尚未驗證的程式碼部分。
- 軟體變異測試識別遵循其他測試方法未檢測到的程式碼缺陷。
- 軟體變異測試檢測程式碼中的新型問題。
- 軟體變異測試衡量程式碼的變異分數。
- 軟體變異測試可以瞭解現有測試套件的有效性。
軟體變異測試的型別
軟體變異測試的不同型別列在下面:
1. 值變異
在這種型別中,修改常量的值以識別程式碼中的問題。對非常大的值進行小的更新,或將大的值更新為較小的值。例如:
int i = 100000089; int j = 5678; int k = 91011; int c = (j * k) % i; Updated Code: int i = 1089; int j = 5678; int k = 91011; int c = (j * k) % i;
2. 判定變異
在這種型別中,更新邏輯或算術運算子以識別程式原始碼中的問題。例如:
if(i = j) k = 35; else k = 50; Updated Code: if(i != j) k = 35; else k = 50;
3. 語句變異
在這種型別中,刪除語句或將其替換為另一個語句。例如:
if(i = j) k = 35; else k = 50; Updated Code: if(i != j) m = 35; else m = 50;
用於軟體變異測試的工具
下面列出了用於軟體變異測試的各種工具:
- PIT
- Insure++
- Jester
- Jumble
- MuClipse
軟體變異測試的優點
軟體變異測試的優點列在下面:
- 軟體變異測試提高了程式原始碼中錯誤識別的水平。
- 軟體變異測試有助於擺脫程式碼中不清楚的部分。
- 軟體變異測試檢測並解決程式碼中的問題。
- 軟體變異測試為設計或自動化更好、更有效的測試用例提供指導。
- 軟體變異測試提高了程式碼中使用的程式設計水平。
軟體變異測試的缺點
軟體變異測試的缺點如下:
- 軟體變異測試是一個昂貴且耗時的過程。
- 軟體變異測試僅適用於白盒測試,不能應用於黑盒測試技術。
- 有時變異體很複雜,因此不容易設計和執行它們以針對現有的測試套件。
- 執行軟體變異測試的測試人員應該經驗豐富,並且應該具備程式設計和技術技能。
- 選擇合適的自動化工具來執行變異測試並不容易。
結論
本教程總結了關於軟體變異測試的全面內容。我們從描述什麼是軟體變異測試開始,包括計算變異分數百分比的公式,軟體變異測試的目標是什麼,軟體變異測試的不同型別是什麼,用於軟體變異測試的各種工具是什麼,軟體變異測試的優點是什麼,軟體變異測試的缺點是什麼。這使您掌握了軟體變異測試的深入知識。明智的做法是繼續練習您所學的內容,並探索與軟體測試相關的其他內容,以加深您的理解並拓寬您的視野。