検索
連載

ソフトウェア技術者のためのバグ百科事典(9)境界値のバグ山浦恒央の“くみこみ”な話(130)(3/3 ページ)

ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第9回は、常連バグの代表格である、境界値に関する仕様の不良や勘違いのバグ「境界値のバグ」を取り上げます。

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

4.兆候

 閉括のバグは、範囲の考察ミスか、不等号の実装ミスの可能性があります。仕様書に条件式や範囲を表す記述がある場合、境界値のバグが存在する可能性が大です。注意深く実装し、気になる箇所は仕様定義者と相談しましょう。

 境界が左右に移動する場合、データ設定値、計算式のミスかもしれません。出力結果を確認しながら、どこにバグがあるか考えましょう。

 境界抜けは、実装抜けの可能性があります。仕様とコードの対応付けを確認するといいでしょう。

 余分な境界は、場合によっては実行結果が同じになるため、見つけるのが難しいかもしれません。冷静に確認しましょう。

5.対策

5.1 仕様記述を工夫する

 プログラマーに誤解を与えない仕様記述を書く必要があります。また、不等号や日本語の読み間違いが発生しないように不等号と日本語の両方を記載するとよいでしょう。これにより、仕様と実装が同じ表記となり、閉括のバグを防げます。

5.2 仕様・プログラムのテスト項目を作成する

 同値分割・境界値分析で、境界値のバグを見つけましょう。これにより、左右の境界、境界抜けを防げます。また、プログラム作成時ならば、プログラムを作成しながらテスト項目をその都度実行しましょう。

5.3 コードレビュー

 余分な境界が発生しないように、コードを見直しましょう。また、余分と感じるコードがあれば、その段階で取り除くことをお勧めします。そうしないと、そのままコードが残り、余分な境界が出現する可能性がありますし、出荷直前のタイミングでは怖くて削除できず、そのまま「居座る」ことになります。

6.まとめ

 下記に、今回のまとめを示します。

  • 境界値とは、同値クラスの端の値であり、境界値に関するバグを境界値のバグという
  • 「閉括のバグ」は、閉じているべき境界が開いていたり、開いているはずの境界が閉じていたりすること。仕様記述と実装が正しく対応していることを確認する
  • 「左・右の境界移動」は、境界が左右にずれること。同値分割・境界値分析を実施し、バグを防ぐ
  • 「境界抜け」は、あるべき境界が抜けていること。実装抜けがないか、確認する
  • 「余分な境界」は、不必要な境界があること。前に実装したコードが残っていないか確認する

7.終わりに

 今回は、ソフトウェア開発の不良の常連であり、圧倒的に多いバグである境界値のバグを取り上げました。今回の例題以外にも、さまざまな箇所に境界値は存在しますので、注意深く成果物を作成してください。

 境界値に関係するバグは、前のシリーズのバグ検出ドリルや、書籍版の『ソフトウェア技術者のためのバグ検出ドリル(日科技連)』でも取り上げましたので、ご参照いただければと思います。

参考文献

[1]実践的プログラムテスト入門((著)ボーリス・バイザー、(翻訳)小野間彰、山浦恒央、1997年、日経BP)

[2]ソフトウェアテスト技法((著)ボーリス・バイザー、(翻訳)小野間彰、山浦恒央、1994年、日経BP)

[3]ソフトウェアテスト教科書 JSTQB Foundation 第3版(大西建児、勝亦匡秀、佐々木方規ほか、2011年、翔泳社)

山浦先生執筆の書籍「ソフトウェア技術者のためのバグ検出ドリル」が発売中!

 山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売中です。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。

 内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、Amazon.comや書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る