検索
連載

テストでバグ発見!(11)機能追加した扇風機シミュレーターのバグを検出せよ【解答編】山浦恒央の“くみこみ”な話(153)(2/3 ページ)

提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。今回は、前回出題した扇風機シミュレーターの機能追加開発におけるバグ検出についての解答編だ。

Share
Tweet
LINE
Hatena
※本記事はアフィリエイトプログラムによる収益を得ています

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.

ページトップに戻る