因子の収束ポイントから最適な因子数を評価する
ここまでに、カバレッジとミューテーションスコアという2つの異なる観点で、因子数の異なるテストケースを評価しました。この結果をもとに、組み合わせテストケースをオールペア法で作成する際の最適な因子数を算出することができます。
これらの測定結果をグラフにしたものを図6~8に示しました。関数Aについては、因子数3より大きくなってもミューテーションスコアの値に変化はなく、因子数3が最も効率の良いテストケースを生成しているといえます。同様に、関数Bでは因子数4が最も効率が良いといえます。関数Cについては、最大の因子数に向かってミューテーションスコアが増加傾向となっていますが、いずれも結果は100%となっているので、最適な因子数は5となります。
結論として、カバレッジが収束する因子数=ミューテーションスコアが収束する因子数となりました。今回の確認では対象としたサンプルが少なく、またミューテーション解析において埋め込む誤りも特定のパターンのみ対象としているため、断言はできませんが、いずれの手法でもそう遠くない結果になっていると考えています。
おわりに
関数に対して、実際に単体テストを実施することで、最適な因子数を算出できる手法を説明しました。
サンプルをさらに増やし、因子数、水準数、Cyclomatic複雑度、条件分岐の数など、特定条件からあらかじめオールペア法で適用すべき因子数を算出することができる可能性も見えてきました。
あらかじめ因子数を算出することができるようになると、単体テストの精度向上や、無意味なテストを削減できるだけでなく、テスト設計時により精度の高い工数見積もりができるようになると考えています。
オールペア法はブラックボックステストの手法であるため、これだけで十分なテストとは呼べないまでも、少しでも開発者の皆さんの手作業を減らすことができればと思います。また、単体テストは、統合テストやシステムテストに比べ、テストケースの作成や入力データの作成に手間がかかると敬遠されがちではありますが、少しでも導入のハードルが低くなれば幸いです。
トップエスイーについて
「トップエスイー」は、国立情報学研究所で実施している、社会人エンジニア向けのソフトウェア工学に関する教育プログラムです。2018年4月からは13期生を迎えて、1年間のカリキュラムがスタートしました。トップエスイーでは講義や制作課題を通して、最先端の研究成果や現場で得られた知見が蓄積されてきました。その「アウトカム」、つまり成果やそこに至る過程を紹介し、現場のエンジニアの方々に活用いただける記事を連載しています。一般的なソフトウェアテストを基礎から学習する講義もありますが、設計結果の検証だけでなく、実行プログラム自体をマルチプロセス上で稼働するという観点での検証を行うようなことをテーマにした講義もあります。品質を確保するためのテストは常識になっていますが、効率の良いテスト手法は永遠のテーマであり、制作課題でもよく取り上げられます。
