ソフトウェア技術者のためのバグ百科事典(3)意外に厄介なデータ入力ミスのバグ:山浦恒央の“くみこみ”な話(124)(4/4 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第3回は、ある意味プログラマーにとって理不尽で、意外に厄介でもある「データ入力ミスのバグ」について解説します。
5.2 兆候
データの設定ミスによるバグが起こる兆候は、明らかにおかしいデータが表示される場合です。以下に具体例を示します。
- 常識外の値が現れる
- データ化けする
- テスト済みのプログラムが正しく動かない
5.2.1 常識外の値が現れる
例えば、年齢が30歳のところに1000と表示するなどの常識外の値を表示する場合です。
5.2.2 データ化けする
筆者が言語対応用の外部入力ファイルを作成していた時のことです。本来、UTF-8で作成しなければならないところ、Shift-Jis形式で入力してしまいました。結果として、画面の文字が全て化けしてしまい、慌てました。このように文字化けを起こしている場合は、データのバグの可能性が高いと思います。
5.2.3 テスト済みのプログラムが正しく動かない
動作実績のあるプログラムの場合、設定値の入力ミスから動かない可能性が高いように思います。この場合は、データのバグの可能性が高いでしょう。
6.まとめ
下記にデータのバグをまとめます。
- データのバグとは、GUIからの入力、ハードコード、外部入力ファイルなどから設定値を間違えたときに発生する
- データのバグにより、異常値を表示し、誤った結果を出力する
- データのバグを起こさないためには、作業を可能な限り自動化し、複数人でチェックする。また、変更前と変更後を見比べ、正しく修正したか確認すること
- データのバグの兆候は、常識外の値が表示し、動作実績のあるプログラムが正しく動作しない場合に多く発生する
7.終わりに
組み込みソフトウェアの分野でも、間違ったデータを入れてしまい、不可解な現象に遭遇する場合も少なくありません。筆者は、ソケット通信のプログラムを作成していて、お互いのIPアドレスの設定を間違え、通信エラーが発生したことがあります。くだらないバグですが、実際に起こってみると、「プログラムのバグかもしれない」と焦るものです。
上記に挙げた現象が発生した場合、「データの設定ミスかもしれない」と思っていただけると幸いです。ひとたび、「プログラムのロジックのバグかもしれない」と思い込むと、正しいロジックをデバッグすることになり、多大な時間とエネルギーのロスになります。本コラムが、少しでも、デバッグの助けになり、効率よくバグを検出できることを願って止みません。
山浦先生執筆の書籍「ソフトウェア技術者のためのバグ検出ドリル」が発売!
2019年11月27日に、山浦恒央先生が執筆した書籍「ソフトウェア技術者のためのバグ検出ドリル」が日科技連出版から発売されました。本連載「山浦恒央の“くみこみ”な話」とTechFactoryの連載「組み込みエンジニアの現場力養成演習ドリル」をベースに、大幅加筆、改訂した内容になっています。
内容は、「デバッグの詰将棋」で、要求仕様定義、設計、コーディング、テスト、保守の5フェーズでの「バグを埋め込んだ仕様記述やソースコード」を読んで、バグをピンポイントで見つける問題集になっています。全部で31問あり、難易度は初級から上級まで、いろいろです。興味のある方は、以下のアマゾンのWebサイトや書店などでチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- ソフトウェア技術者のためのバグ百科事典(2)まだあるぞ、うるう年バグ
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。第2回は、前回に続き「うるう年バグ」について解説します。 - ソフトウェア技術者のためのバグ百科事典(1)うるう年
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。記念すべき第1回は、超常連バグである「うるう年バグ」を取り上げます。 - バグ検出ドリル(21)「三角形判定」のテスト項目を設計できますか【解答編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。前回の出題編から、今回は解答編になります。 - バグ検出ドリル(20)「三角形判定」のテスト項目を設計できますか【出題編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。まずは今回の出題編を読んで、じっくり問題に取り組んでみてください。 - バグ検出ドリル(19)たかが1円されど1円……1円足りないバグの恐怖
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第19回の問題は、商品と個数から合計金額を求めるプログラムのバグです。なぜか1円だけ合わない、このバグの原因を突き止めよう!