Software Debuggingまとめ3
Ch3 Simplifying Failures
エラーを単純化することによって得られるメリット
- すぐに理解できる。
- 説明する手間が減る。
どうしたら単純化できるのか?
ある問題に対し、単純化させることを考える。
- ある要素が、その問題が発生することに関して関係があるかをチェックする。
- 関係がなければ、削除する。
- 1, 2を繰り返す。
単純化に必要なもの
エラーの単純化は面白くないので、コンピュータに行わせる。
コンピュータに行わせるためには以下の2つが必要。
- 戦略
- 単純化が成功したかチェックするためのテスト。
戦略の例
- デルタ・デバッギング
- ファジ・テスト
デルタ・デバッギング
- 入力をn個に分ける。(最初はn=2)
- n個に分けた入力の内、エラーを返すものがあれば、それをさらに分割する。(n = max(n-1, 2))
- もしエラーを返さなければ、nを大きくし(n = 2n)、1から行う。
デルタ・デバッギングの欠点
- 最悪テスト回数が、入力文字列の2乗になる。
- テストを行う機能が複雑であるということ。(エラーのテストを繰り返し行うには、ビルド機能の自動化及びバージョン管理システムが必要。)
ファジ・テスト
ランダムに入力を行うテストの事。
セキュリティのチェックなどに使われる。
テスト後のチェック
テストを行った後は以下をチェックする必要がある。
エラーの修正方法。
エラーの修正を行った後、エラーが起こらないこと。