To be a professional

プログラミング関係の情報

Software Debuggingまとめ3

Ch3 Simplifying Failures

エラーを単純化することによって得られるメリット

  1. すぐに理解できる。
  2. 説明する手間が減る。

どうしたら単純化できるのか?

ある問題に対し、単純化させることを考える。

  1. ある要素が、その問題が発生することに関して関係があるかをチェックする。
  2. 関係がなければ、削除する。
  3. 1, 2を繰り返す。

単純化に必要なもの

エラーの単純化は面白くないので、コンピュータに行わせる。

コンピュータに行わせるためには以下の2つが必要。

  1. 戦略
  2. 単純化が成功したかチェックするためのテスト。

戦略の例

  • デルタ・デバッギング
  • ファジ・テスト

デルタ・デバッギング

  1. 入力をn個に分ける。(最初はn=2)
  2. n個に分けた入力の内、エラーを返すものがあれば、それをさらに分割する。(n = max(n-1, 2))
  3. もしエラーを返さなければ、nを大きくし(n = 2n)、1から行う。

デルタ・デバッギングの欠点

  • 最悪テスト回数が、入力文字列の2乗になる。
  • テストを行う機能が複雑であるということ。(エラーのテストを繰り返し行うには、ビルド機能の自動化及びバージョン管理システムが必要。)

ファジ・テスト

ランダムに入力を行うテストの事。

セキュリティのチェックなどに使われる。

テスト後のチェック

テストを行った後は以下をチェックする必要がある。

エラーの修正方法。

エラーの修正を行った後、エラーが起こらないこと。