テストでバグ発見!(11)機能追加した扇風機シミュレーターのバグを検出せよ【解答編】:山浦恒央の“くみこみ”な話(153)(2/3 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、前回出題した扇風機シミュレーターの機能追加開発におけるバグ検出についての解答編だ。
3.解答
3.1 問題の意図
今回の問題では、以下を目的としています。
- 変更、追加した機能が正しく動作する
- 未変更の箇所は、過去バージョンと同じ動作をする(機能退行を起こしていない)
- 残存バグがないかチェックする(第1バージョンから生き残っているバグを摘出する)
3.1.1 変更、追加した機能が正しく動作する
当たり前ですが、変更点が確実に動作することを確認しましょう。意外に多いのが「変更不十分」や「修正不十分」です。
3.1.2 未変更の箇所は、過去バージョンと同じ動作をする
保守フェーズの難しいところは、過去の設計資産(仕様/ソースコード)に手を入れないといけないことです。今回の問題レベルでは何も影響はありませんが、手を入れることによって、意図しない影響を与える可能性があります。いつも言っているように、「キッチンの水道が水漏れしているので、ゴムのパッキングを取り換えたところ、水漏れは止まったが、2階のトイレの電灯が点かなくなった」のように、全く関係がない(ように思える)機能が突然、動かなくなったりします。これが機能退行で、筆者の経験では4〜5年に1回、発生して、大いに悩みます。
このような事象が発生しないよう、また、万が一発生しても気が付くように、回帰テストは確実に実行しましょう。ただし、全テスト項目を実施すると、テスト工数を大きく消費するので、過去に作成したテスト、ケースの中で、正常機能のテスト項目だけをサンプリングして、「回帰テストのセット」を作るといいですね(全テスト項目の5%前後になるでしょうか?)。
3.1.3 残存バグがないかチェックする
過去のバージョンから残存しているバグがある可能性があります。例えば、「第3バージョンの開発時にバグが発生し、原因を確認してみると、初期段階から発生したものだった」などです。「第1バージョンから正常に稼働しているので、バグはない」と安心していると、思わぬところで苦労します。
3.2 テスト項目作成例
テスト項目の作成例を表1に示します。実際のテスト項目例は「test_sample.xlsx」をご確認ください。なお、使用する場合は、B〜D列の2行目からをinput.csvに貼り付けて使ってください。
No. | テスト項目 | 良否 | 備考 |
---|---|---|---|
1 | 過去の機能が正しく動作することを確認する ・アイドル→弱速→中速→強速→減速→アイドル |
良 | (回帰テスト) |
2 | 過去の機能が正しく動作することを確認する ・アイドル→弱速→中速→強速→減速→アイドル→弱速→中速→強速→アイドル |
良 | (回帰テスト) |
3 | アイドル→弱速モードで以下を実施する (1)首振りモードをON (2)首振りモードをOFF (3)首振りモードをON |
否 | 追加部分 |
表1 テスト項目作成例 |
No.1、No.2は、回帰テスト項目で、No.3が、新規分のテスト項目です。人によっては、各運転モードで首振りモードを確認するテスト項目を作成してもよいでしょう(どのモードでもOFFはできないでしょうが)。
Copyright © ITmedia, Inc. All Rights Reserved.