ゴキブリを1匹見つけたらその10倍は家に潜んでいると、誰かから聞いたことがありますが、それは本当なのでしょうか?
ソフトウェアのバグもそんなにあったら嫌だなあと最近つくづくと感じています。
バグ数の推定
そもそも、システム開発工程でバグを作りこまないようにすればいいのですが、必ずと言っていいほど作りこまれてしまいます。設計書の誤り、誤解や思い込み、錯覚あるいは検討もれなど、原因はたくさんありますが、どうやら人間の行動にはミスがつきまとうものだと理解した方がよさそうです。
設計者ならば、どれくらいバグが潜んでいるのか興味があると思いますが、信頼性予測のモデルによってソフトウェアの信頼性を数理的なモデルで計量化して予測する方法もあります。プログラム開発者が意図的にプログラム中にバグを埋め込んでおき、デバッグにより発見したバグのうち意図的に埋め込んだバグの発見率から全体のバグの数を推定するのです。
次のような式になります。(詳細はこちらを参照のこと)
(発見済み埋め込みバグ数)/(埋め込みバグ数)
=(発見済み潜在バグ数)/(潜在バグ数)
ソフトウェア開発者の能力によりバグの作りこみ数も変わってくるような気もしますが、バグの収束を願う設計者の気持ちはひしひしと伝わってきます。
テストの達人とは
バグを見つけるためには効果的なテストが必要ですが、どんなテストをすれば重大なバグが素早く見つかるのでしょうか。一般的なテスト作業では、コンポーネントとして実装したプログラムが要求仕様とおりに動作することを単体テストで確認し、結合テストによりさらに大きなモジュール単位での動作を確認します。当然のことながら、どんなテストツールを使うか、どんな体制でテストチームがテストを進めるかが重要になってきます。テスト工程を管理するテストツールも沢山出ているので、うまく利用すれば自動テストや結果分析も効率化できると思います。
デバッグとは関係ありませんが、2つの似た絵があって右の絵と左の絵でどこが違うのか探すような、間違い探しのクイズを考えてみてください。答えを見れば、何だそんな所か、とわかるのですが、意外なところ、想定外のところに違いがあると案外と見つかりにくいものです。もちろん、得手、不得手はありますが、ちょっと見方を変えることでバグが見つかるということがあります。他の人の見方や意見を参考にするのも、新鮮な視点を持つという点で、効果的です。開発者は、失敗を繰り返しながら、テストの達人に成長していくものなのでしょう。
ある先輩が言っていた言葉を思い出します。
「バグを全部見つけるのは無理だが、事故再発防止により品質向上できる」
類似不良を出さないことが最低限必要なのだと理解しましたが、これはいつの時代も通用することだと思います。
cikloneによるバグ管理
バグ管理システムcikloneでは、チーム開発の進捗、wikiによる情報共有基盤を備えています。そのため、プロジェクトのチームメンバと情報交換をしながら、テストも進められます。バグ管理データベースで過去の類似バグも管理しているので、同じ失敗を繰り返さないようにできます。
無料版での利用が可能なので、皆さまも是非、御検討下さい。