連載
» 2017年02月22日 11時00分 UPDATE

山浦恒央の“くみこみ”な話(92):タダでソフト開発の生産性と品質を上げる方法(2):フリーの組合せテスト自動生成ツール「PictMaster」 (1/4)

「タダでソフト開発の生産性と品質を上げる方法」の第2回。今回は、ソースコードを簡単に分析し、計測するフリーの組合せテスト自動生成ツール「SourceMonitor」を紹介します。

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

1.はじめに

 ネット上には、非常に便利なのに無料でダウンロードできて使えるツールがたくさんあります。今回は、テスト項目作成時に、自動的に「効率の良い組合せテスト項目」を生成してくれるツールを紹介します。この無料ツールの素晴らしさは金メダル級です。

2.爆発する組合せ数

ラーメンを食べるだけでも、組み合わせの数は爆発します ※写真はイメージです

 人間の行動は、膨大な選択肢の組み合わせで成り立っています。「今日は何を食べよう」「明日は何をしよう」と考えるだけでも、膨大な選択肢が存在します。例えば、ラーメンを食べたくなり、ラーメン屋に行ったとします。オーダーの仕方は、想像以上に膨大です。「ラーメンの味(みそ、しょうゆ、塩)」「量(ミニ、普通、大盛り)」「麺の固さ(柔、普通、硬)」だけで、組み合わせは3の3乗で27通り。さらにトッピングが、メンマ、叉焼、コーン、もやし、葱、ごまの6種類あるとすると、27×64で1728通りにもなります*1)。全部の組合せをラーメン店の壁に貼ることは不可能です。ラーメンを食べるだけでも、組み合わせの数は爆発します。

*1)1728通りのうち、ラーメン屋さんが新装開店前に、実際に「テスト」するのは、多くても、味(3通り)と麺の固さ(3通り)の9通りだけでしょう。トッピングは、「実際に乗せなくても明白」なので、テストはしないはずです。ソフトウェアのテストも、「トッピング」みたいに、「明らかなのでテスト不要」な機能があればと、ラーメンを食べるたびに思います。

 普段使用している電子機器も、ラーメン同様、いろいろな機能の組み合わせでできています。例えば、携帯電話機では、音声通話、メール、ブラウザ、アプリケーションの実行など多くの機能が組み合わさっており、組み合わせの数はラーメンの例の比ではありません。プログラムを作ることは、技術者には大変な仕事ですが、それ以上に手間と時間がかかるのがプログラムのテストです。テストで複数の機能を組み合わせると、テスト項目が爆発的に増加します。そのため、組み合わせは極力避け、1機能ごとにテストするのが一般的です。

3.組み合わせテストについて

 ソフトウェアは、いろいろな機能の集合体です。バグの大半は、単一の機能から発生します。これは、「タチの良い」バグです。厄介なのは、一見、無関係な機能同士が複雑に影響し合って発生するバグです*2)。このバグはテスト工程での発見が非常に難しく、原因特定に時間がかかります。複数の機能を組み合わせてテストしたい時は、「組み合わせテスト」が効果的です。組み合わせテストとは、複数の条件を組み合わせてソフトウェアの動作を確認するテスト技法です[1]。まず、組み合わせテストを実施する上で、知っておくべき基礎知識を説明します。

*2)さらにタチの悪いバグは、OSやコンパイラなど、全く別のプログラムと複雑に絡んだものです。再現条件がなかなか分からず、プログラマーは大変な苦労をします。そんなバグの原因究明の方法の1つが「データ採集用のロジックを埋め込む」です。鍵になるモジュールの中に、そのモジュールを通過するたびに、原因究明の手掛かりになりそうな変数の値を採集するプログラムを埋め込みます。バグが再現した時にそのデータを解析すると、原因究明の手掛かりになります。原因不明のミステリアスなバグに出会うたびに、「しばらく徹夜になりそうだ」と暗い気持ちになりながらも、「プログラムのバグは再現するので、原因究明は楽だ」と思います。航空機事故の原因調査や殺人事件の捜査では、こうは行きません。例えば、マレーシア航空370便は、消息を絶って3年になろうとしていますが、いまだに機体は発見されていません。「何度も実行させられる」ことは、ソフトウェアの大きな利点だと思います。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.