[1] テスト網羅率
- ステートメントカバレッジ (C0)
- ブランチカバレッジ (C1)
⇒テストカバレッジではテスト網羅率の評価のみで、バグ検出能力は評価できない。
[2] バグ検出能力
- ミューテーションテスト
⇒
ソースコードの一部を機械的に変更し、改変されたことをみつけられるかを計測する事で、バグ検出能力を評価する。
<用語の説明>
- ミュータント ・・・ ソースコードを機械的に変更する事で埋め込まれた因子(不具合)
- ミューテーションオペレータ ・・・ ソースコードを変更するルール(※1)
- ミューテーションスコア ・・・ 対象のテストでどれだけのミュータントを摘出出来たかの度合い。バグ検出能力の指標(※2)
(※1)不等号の変更(>,<, ==, || など)、演算子の変更(+,- など)、値の変更
(※2)Score(%)=k/(m-e) で求まる
k:摘出できたミュータントの総数
m:埋め込んだミュータントの総数
e:等価ミュータントの総数
⇒
機械的にソースコードを変更したとしても、論理的に元のコードと同等であった場合は、不具合として摘出する事は出来ない。このようなミュータントを等価ミュータントと呼び、ミューテーションスコアの算出時には母数から減算する必要がある。
一方で、論理的に等価であることを機械的に判別する事は出来ないため、精度の高いミューテーションスコアを得るためには、等価ミュータントが生成されう割合が少なくなるようなミュータントオペレータを用意する事が重要となる。
<ミューテーションオペレータ>
- Value Mutations ・・・ 値の書換。
- Decision Mutations ・・・ 不等号の書換。
- Statement Mutations ・・・ ステートメントの書換。ステートメントの実施順序の変更など。
以下はStatement Mutationsの一部。
- Statement Deletion Operator (SDL) ・・・ ステートメントを削除。等価ミュータントの割合が少ないらしい。
<ミューテーションテスト用のツール(C#向け)でサポートしているVSのバージョン>
- CREAM V.3.0 ・・・ Visual Studio 2010 Premium/Ultimate, 2008 Team System
- NinjaTurtles 0.8.0.2 ・・・ Visual Studio 2005 (Editionは問わず?)
- Nester 0.3 ・・・ Visual Studio 2010 (Editionは問わず?)
- Visual Mutator 2.0 ・・・ Visual Studio Professional or higher version 2012/2013
自前環境が2012ProなのでVisual Mutatorを試してみたが、何故か.NETのバージョンチェックでNG。インストールされているのになぁ。なんでー。
2015/12/09 18:28:22 - 拡張機能の Microsoft Visual Studio Professional 2012 へのインストールを開始しています...
2015/12/09 18:28:22 - インストール エラー : Microsoft.VisualStudio.ExtensionManager.MissingTargetFrameworkException: 拡張機能 'VisualMutator' には、インストールされていない .NET Framework のバージョンが必要です。
場所 Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework(IExtension extension)
・・・
- Strong (standard mutation) ・・・ 適用した全てのミュータントオペレータで生成された全てのミュータントをカバーするTestCase
- Selective (constrained mutation) ・・・ 適用した一部のミュータントオペレータで生成された全てのミュータントをカバーするTestCase
- Week mutation ・・・ 適用した全てのミュータントオペレータで生成された指定割合のミュータントをカバーするTestCase
[参考資料]
0 件のコメント:
コメントを投稿