ソフトウェアテストでのバグ検出の個人差や多様性を調査した研究
ソフトウェアテストは他人(他のテストエンジニア)の思考が見えにくい活動と言われています。同じ仕様書やアプリケーションを対象にしても、あるテストエンジニアは状態遷移の抜け漏れ、他のテストエンジニアは境界値の複合条件に着目しているということもあります。技法や方針が確定すれば他のテストエンジニアの方法も見えてくるのですが、大きな方針や戦略はブラックボックスのままになりがちです。
こうした個々のエンジニアによる違いを調査した研究があります。論文のタイトルはA Controlled Experiment in Program Testing and Code Walkthroughs/ Inspectionsです。ここ(出版社のサイト)から原文を読めます。
Myers, G. J. (1978). A controlled experiment in program testing and code walkthroughs/inspections. Communications of the ACM, 21(9), 760-768.
目的
この論文では、実務経験が豊富なデータ処理専門家を対象として、異なる手法が欠陥検出数、バグ1件あたりの工数(効率性)を調べることです。
参加者
実験には、IBM Systems Research Instituteのソフトウェア信頼性コースを受講していた59名の実務者です。
-
経験年数: IT分野における平均実務経験年数は11年(7〜20年)でした。
-
職種: 59名中49名がプログラマーまたはテスト専門家であり、残り10名もシステムエンジニア、プロジェクトマネージャー、ドキュメント執筆者などのプログラミング経験者でした。
対象
PL/Iで記述された63行(3つの手続き)の小規模なテキストフォーマットプログラムです。このプログラムには、事前に15個の既知のバグが埋め込まれていました。被験者にはバグの有無や件数は事前に伝えず、不完全な可能性があるとだけ知らされました。
グループ分け
事前アンケート調査および事前のテストケース作成課題の成績により、被験者は3つのグループに無作為に割り当てられました。
-
グループA(16名): 仕様書のみが与えられ、プログラムを動作させてテストケースを個人で作成・実行するテスト
-
グループB(16名): 仕様書とソースコードリストの両方が与えられ、プログラムを動作させてテストケースを個人で作成・実行するテスト
-
グループC(9チーム・計27名): 3人1組のチームで仕様書とソースコードが与えられ、プログラムを動作させずに手動で実施するコードレビュー
結果
バグ検出数: 平均バグ検出数は全体で5.1件(全15件中の約34%)でした。全体の2/3は見逃されていることになります。グループごとに集計した結果では、グループAは4.5件、グループBが5.4件、グループCが5.7件でした。これら3グループの欠陥検出能力に統計的に有意差があるとは言えませんでした(p > 0.05, Kruskal-Wallis検定)。
効率性: バグ1件あたりの平均工数(人・分/バグ)は、グループAが37分、グループBが29分であったのに対し、グループC(このグループのみ1チーム3人)は75分となりました。
被験者個人のバグ件数はばらつきがありました(1件しか検出できない人もいれば、7件検出した人もいました)。この個人差は、実務経験年数や過去のテスト経験、事前テストの成績との相関に統計的に有意な差があるとは言えませんでした。
特に同じようなバグを検出できている人が少なかったことから、グループA, Bの人を2人一組にしたとすると、工数をそれほど大きくせずに、バグ検出件数を増やすことができることを報告しています。
この論文の調査結果から、テストにおいてバグの検出数はばらつくことや最後の2人一組の結果を見ると、エンジニアごとに検出するバグの種類が変わると言えそうです。
つまり、他のエンジニアのテストを見ると学びが大きくなる可能性が高いと言えそうです。この論文の研究とは異なりますが、私たちの研究の一環として、イベント参加者全員で同じテストベースでテストをして、著名テストエンジニア(miwaさん、リナさん、Sammyさん)のテスト方針を聞くイベントを2026年11月11日19時~計画しています。申込みは以下からできます。イベントの参加のためには、テストに加えて心理学タスクやアンケートを実施いただく必要があります。テスト対象は欧州のコンサルタントが作成した工具のオンラインショッピングサイトです。