ソフトウェア技術者のためのバグ百科事典(8)バグを見つけるテストがバグってる:山浦恒央の“くみこみ”な話(129)(4/4 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第7回は、プログラムのバグを見つける作業である「テスト」がテーマです。テストの作業次第では逆にバグを作り込むこともあり、「テストのテストのテスト」のように無限ループに陥りかねません。
5.兆候と対策
テストに関するバグの兆候と対策を以下に示します。
5.1 テストの入力値を間違える
発生の兆候ですが、テスト結果が期待値と異なる場合は、正しい値を入力しているか、再確認しましょう。また、最後までテスト手順を実施できない場合の多くは、入力の間違いです。もちろん、プログラムのバグかもしれませんので、入力ミスでないことを確認した上で、プログラムをチェックしましょう。
対策は、人手での入力を可能な限り自動化するとよいと思います。ただし、自動化用のプログラムにもバグがあることに注意してください。
5.2 使用するバージョンを間違える
バージョン違いは、見つけるのが難しいかもしれません。筆者の経験では、昔はパスしたテスト項目が通らない場合、間違ったバージョンでテストしている可能性がありますね。それ以外で兆候を探すことは難しいように感じます。
対策は、試験前に開発側が持っているプログラムと実行可能形式のファイルを比較するとよいでしょう。例えば、「バイナリファイルが一致しているか」「タイムスタンプが同じか」をチェックしましょう。
5.3 テスト判定の良否を間違える
同じような出力結果が連続したり、疲労時にテストしたりする場合、発生しやすいと思います。もう一度、良否の判定方法が正しいか確認しましょう。また、以前のバージョンがある場合は、前のテスト結果と比較しましょう。昔から判定を間違えていた可能性があります。
対策は、結果をダブルチェックして確認するなどのチェック作業をすると良いでしょう。また、適度の休憩も必要ですね。
5.4 機器のセットアップを間違える
「自動車のエンジンがかからないのは、そもそもガソリンが入っていない」のように、テスト手順が最後まで実行できない場合に発生します。再度、機器の接続を疑いましょう。また、未知の事象が発生した場合も、機器のセットアップミスの可能性が大きいと思います。
対策は、テスト手順を確立することです。ちょっとした試験の場合は、環境の立ち上げる手順などがおざなりになることがあります。手順書をきちんと作成し、テスト開始手順と停止手順を確定しましょう。
6.まとめ
今回は、「テストの入力値を間違える」「使用するバージョンを間違える」「テスト判定の良否を間違える」「機器のセットアップを間違える」のバグを取り上げました。
「テストの入力値を間違える」は、担当者がテスト入力を間違えた場合に発生します。期待値と一致しない場合は、入力値自体を間違えていないか確認しましょう。対策は、入力を可能な限り自動化することです。
「使用するバージョンを間違える」は、テスト実施時に使用するプログラムのバージョンを間違えた場合に発生します。なかなか気付かない厄介な不良で、発生するとテストの信頼性が損なわれ、再テストになりますので注意が必要です。対策は、開発側のファイルとテスト側のファイルを比較し、一致するか確認しましょう。
「テスト判定の良否を間違える」は、出力結果の判定を間違える場合に発生します。出力結果を判定する場合、ダブルチェックをおススメします。また、担当者の疲労の程度にも注意しましょう。
「機器のセットアップを間違える」は、テストに必要な機器の準備を正しくできていない場合に発生します。正しくテストが実施できないため、すぐに見つかるでしょうが、セットアップ手順書を作成し、万全の状態でテストに臨見ましょう。
7.終わりに
今回は、テストに関するバグを紹介しました。テストのバグは、プログラムが原因のバグではありませんが、やってしまいがちでしょう。
読者の方によっては、紹介したケーススタディーが低レベルに感じる方もいるでしょうが、実際に起きると、「なぜ、テスト項目通りにいかないのだろう?」とものすごく悩んでしまいます。テスト項目通りに動作しない場合、プログラムのバグを疑うことも重要ですが、まずは、テストの入力値やセットアップ、バージョンにも目を向けるとバグの早期発見につながると思います。
山浦先生執筆の書籍「ソフトウェア技術者のためのバグ検出ドリル」が発売!
2019年11月27日に、山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売されました。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。
内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- ソフトウェア技術者のためのバグ百科事典(7)要求仕様書がバグってる
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第7回は、ソフトウェアのライフサイクルで最も重要な要求仕様に焦点を当てます。要求仕様書をしっかり作成しないと、その後のフェーズでさまざまな問題が発生し、プロジェクトの進行に大きく影響するのです。 - ソフトウェア技術者のためのバグ百科事典(6)不信感を生む“文書作成のバグ”
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第6回は、ソフトウェア開発業務の中で圧倒的に大きな比率を占める「文書作成」における間違い、「文書作成のバグ」を取り上げます。プログラムの動作には影響しませんが、その文書を読んだユーザーに不信感を与えかねない危険なバグなのです。 - ソフトウェア技術者のためのバグ百科事典(5)意外に多い「実装抜け」のバグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第5回は、学生のプログラミング作成を事例に「実装抜け」のバグを取り上げます。学生の事例ですが、プロも意外とやりがちなので気を付けておきましょう。 - ソフトウェア技術者のためのバグ百科事典(4)Excelがバグの原因に!?
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第4回は、前回に続き「データ入力ミスのバグ」について解説します。Excelのように日頃使う開発ツールもバグの原因になり得るのです。 - ソフトウェア技術者のためのバグ百科事典(3)意外に厄介なデータ入力ミスのバグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第3回は、ある意味プログラマーにとって理不尽で、意外に厄介でもある「データ入力ミスのバグ」について解説します。