SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

トップエスイーからのアウトカム ~ ソフトウェア工学の現場から

組み合わせテストにおける最適な因子数――カバレッジとミューテーションスコアの収束をもとに推定する

トップエスイーからのアウトカム ~ ソフトウェア工学の現場から 第10回

因子の収束ポイントから最適な因子数を評価する

 ここまでに、カバレッジとミューテーションスコアという2つの異なる観点で、因子数の異なるテストケースを評価しました。この結果をもとに、組み合わせテストケースをオールペア法で作成する際の最適な因子数を算出することができます。

 これらの測定結果をグラフにしたものを図6~8に示しました。関数Aについては、因子数3より大きくなってもミューテーションスコアの値に変化はなく、因子数3が最も効率の良いテストケースを生成しているといえます。同様に、関数Bでは因子数4が最も効率が良いといえます。関数Cについては、最大の因子数に向かってミューテーションスコアが増加傾向となっていますが、いずれも結果は100%となっているので、最適な因子数は5となります。

図6 関数Aに対するカバレッジとミューテーションスコアの関係
図6 関数Aに対するカバレッジとミューテーションスコアの関係
図7 関数Bに対するカバレッジとミューテーションスコアの関係
図7 関数Bに対するカバレッジとミューテーションスコアの関係
図8 関数Cに対するカバレッジとミューテーションスコアの関係
図8 関数Cに対するカバレッジとミューテーションスコアの関係

 結論として、カバレッジが収束する因子数=ミューテーションスコアが収束する因子数となりました。今回の確認では対象としたサンプルが少なく、またミューテーション解析において埋め込む誤りも特定のパターンのみ対象としているため、断言はできませんが、いずれの手法でもそう遠くない結果になっていると考えています。

おわりに

 関数に対して、実際に単体テストを実施することで、最適な因子数を算出できる手法を説明しました。

 サンプルをさらに増やし、因子数、水準数、Cyclomatic複雑度、条件分岐の数など、特定条件からあらかじめオールペア法で適用すべき因子数を算出することができる可能性も見えてきました。

 あらかじめ因子数を算出することができるようになると、単体テストの精度向上や、無意味なテストを削減できるだけでなく、テスト設計時により精度の高い工数見積もりができるようになると考えています。

 オールペア法はブラックボックステストの手法であるため、これだけで十分なテストとは呼べないまでも、少しでも開発者の皆さんの手作業を減らすことができればと思います。また、単体テストは、統合テストやシステムテストに比べ、テストケースの作成や入力データの作成に手間がかかると敬遠されがちではありますが、少しでも導入のハードルが低くなれば幸いです。

トップエスイーについて

 「トップエスイー」は、国立情報学研究所で実施している、社会人エンジニア向けのソフトウェア工学に関する教育プログラムです。2018年4月からは13期生を迎えて、1年間のカリキュラムがスタートしました。トップエスイーでは講義や制作課題を通して、最先端の研究成果や現場で得られた知見が蓄積されてきました。その「アウトカム」、つまり成果やそこに至る過程を紹介し、現場のエンジニアの方々に活用いただける記事を連載しています。一般的なソフトウェアテストを基礎から学習する講義もありますが、設計結果の検証だけでなく、実行プログラム自体をマルチプロセス上で稼働するという観点での検証を行うようなことをテーマにした講義もあります。品質を確保するためのテストは常識になっていますが、効率の良いテスト手法は永遠のテーマであり、制作課題でもよく取り上げられます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
トップエスイーからのアウトカム ~ ソフトウェア工学の現場から連載記事一覧

もっと読む

この記事の著者

藤澤 克貴(テクマトリックス株式会社 システムエンジニアリング事業部)(フジサワ カツキ)

 2016年度第11期生としてトップエスイーを受講。テクマトリックス株式会社ソフトウェアエンジニアリング技術部所属。Parasoft社製 C/C++言語対応テストツール 「C++test」のプリセールス、導入支援、保守サポート業務に従事。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10846 2018/06/04 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー