読者です 読者をやめる 読者になる 読者になる

To be a professional

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

Software Debuggingまとめ3

Google Carrers Technical Development Udacity デバッグ

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乗になる。
  • テストを行う機能が複雑であるということ。(エラーのテストを繰り返し行うには、ビルド機能の自動化及びバージョン管理システムが必要。)

ファジ・テスト

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

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

テスト後のチェック

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

エラーの修正方法。

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