突然変異テストとは何ですか? (例)
突然変異テストとは何ですか?
突然変異テスト ソフトウェア テストの一種で、ソース コードの特定のステートメントを変更/変更して、テスト ケースがソース コード内のエラーを検出できるかどうかを確認します。 ミューテーション テストの目標は、ミューテーションされたソース コードが失敗するという堅牢性の観点から、テスト ケースの品質を保証することです。
ミュータント プログラムに加えられる変更は、プログラムの全体的な目的に影響を与えないように、極めて小さく抑える必要があります。 ミューテーション テストは、プログラムに障害を作成することを伴うため、障害ベースのテスト戦略とも呼ばれます。 ホワイト Box テスト 主に使用されるのは 単体テスト.
突然変異はもともと 1971 年に提案されましたが、多額の費用がかかるため熱意を失いました。 現在、再び勢いを増し、次のような言語に広く使用されています。 Java およびXML。
ミューテーションテストを実行するにはどうすればよいですか?
突然変異テスト(突然変異解析)を実行する手順は次のとおりです。
ステップ 1: ミュータントと呼ばれる多数のバージョンを作成することにより、プログラムのソース コードに欠陥が導入されます。 各ミュータントには XNUMX つの障害が含まれている必要があり、目標は、テスト ケースの有効性を示すミュータント バージョンを失敗させることです。
ステップ 2: テスト ケースは、元のプログラムに適用されるだけでなく、変異プログラムにも適用されます。 あ テストケース は適切であるはずであり、プログラム内の障害を検出するために調整されています。
ステップ 3: 元のプログラムと変異したプログラムの結果を比較します。
ステップ 4注: 元のプログラムと変異プログラムが異なる出力を生成する場合、その変異はテスト ケースによって強制終了されます。 したがって、このテスト ケースは、元のプログラムと突然変異したプログラムの間の変更を検出するには十分です。
ステップ 5: 元のプログラムとミュータント プログラムが同じ出力を生成する場合、ミュータントは生きたままになります。 このような場合、すべての変異体を除去する、より効果的なテスト ケースを作成する必要があります。
突然変異プログラムを作成するにはどうすればよいですか?
突然変異とは、プログラム ステートメントに加えられる XNUMX つの構文変更に他なりません。 各変異プログラムは、元のプログラムとは XNUMX つの変異だけ異なっている必要があります。
| オリジナルプログラム | ミュータント プログラム |
|---|---|
| (x>y) の場合
「こんにちは」を印刷する 他 「こんにちは」を印刷する |
もし(x<y)
「こんにちは」を印刷する 他 「こんにちは」を印刷する |
ミュータント プログラムでは何を変更する必要がありますか?
突然変異プログラムを生成するために使用できる手法がいくつかあります。 それらを見てみましょう
| Operand置換演算子 | 式の変更 Operaトー | ステートメントの変更 Operaトー |
|---|---|---|
| オペランドを別のオペランド (x を y に、または y を x に) または定数値に置き換えます。 | プログラム ステートメント内の演算子を置き換えたり、新しい演算子を挿入したりします。 | プログラムステートメントは、突然変異したプログラムを作成するために変更されます。 |
| 例 -
If(x>y) x と y の値を置き換えます If(5>y) x を定数 5 に置き換えます |
例 -
If(x==y) == を >= に置き換えて、ミュータントプログラムを次のようにすることができます。 If(x>=y) とステートメントに ++ を挿入する If(x==++y) |
例 -
if-else ステートメントの else 部分を削除する if-else ステートメント全体を削除して、プログラムの動作を確認します。 サンプルの突然変異演算子の一部:
|
突然変異テストの自動化
突然変異テストは非常に時間がかかり、手動で実行するのは複雑です。 プロセスを高速化するには、自動化ツールを使用することをお勧めします。 自動化ツールにより、テストのコストも削減されます。
利用可能なツールのリスト -
突然変異テストの種類
In ソフトウエアエンジニアリング, 突然変異テストは、基本的に、ステートメント突然変異、決定突然変異、および値突然変異の 3 つのタイプに分類できます。
- ステートメントの突然変異 – 開発者がコードの一部をカットアンドペーストした結果、一部の行が削除される可能性があります。
- 値の突然変異– 主要パラメータの値が変更される
- 決定突然変異– 制御ステートメントが変更される
突然変異スコア
突然変異スコアは、突然変異体の総数に対する死滅した突然変異体の割合として定義されます。
- 突然変異スコア = (殺された突然変異体 / 突然変異体の総数) * 100
スコアが 100% であれば、テスト ケースは適切な突然変異です。 実験結果は、突然変異テストがテスト ケースの適切性を測定するための効果的なアプローチであることを示しています。 ただし、主な欠点は、ミュータントを生成し、そのミュータント プログラムに対して各テスト ケースを実行するコストが高いことです。
突然変異テストの利点
変異テストの利点は次のとおりです。
- これは、ソース プログラムの高いカバレッジを達成するための強力なアプローチです。
- このテストは、変異型プログラムを網羅的にテストすることができます。
- 突然変異テストは、ソフトウェア開発者に適切なレベルのエラー検出をもたらします。
- この方法は、ソース コードのあいまいさを明らかにし、プログラム内のすべての欠陥を検出する能力を備えています。
- お客様は、このテストにより、最も信頼性が高く安定したシステムを得ることができます。
突然変異テストの欠点
一方、ミュータント テストの欠点は次のとおりです。
- ミューテーション テストは、生成する必要があるミュータント プログラムが多数あるため、非常にコストと時間がかかります。
- 時間がかかるため、このテストは自動化ツールなしでは実行できないと言っても過言ではありません。
- 各突然変異には、元のプログラムと同じ数のテスト ケースが含まれます。 したがって、多数の突然変異プログラムを元のテスト スイートに対してテストする必要がある場合があります。
- この方法はソースコードの変更を伴うため、次の用途にはまったく適用できません。 ブラック Box テスト.
結論
アプリケーションを徹底的にテストしたいですか? 答えはミューテーションテストです。 これはプログラムをテストするための最も包括的な手法です。 これは、システム内の障害やエラーを検出するためのテスト プログラムの有効性と精度をチェックする方法です。



