Return to Video

06-02 The Seven Steps Of Debugging

  • 0:00 - 0:04
    デバッグコースの最後のユニットです
  • 0:04 - 0:08
    ここでは今までの内容を復習しまとめていきます
  • 0:08 - 0:12
    最後ですので新たなバグが出た時に何を行えばよいのか
  • 0:12 - 0:15
    まとめていきましょう
  • 0:15 - 0:21
    新たなバグを見つけた時にまず行うことは
    それが管理されていることの確認です
  • 0:21 - 0:24
    問題データべースにそれを入力します
  • 0:24 - 0:28
    問題レポートのステータスが"新たな問題"に変わります
  • 0:28 - 0:32
    そしてバグが開発者に割り当てられ
  • 0:32 - 0:35
    問題が解決すれば終了です
  • 0:35 - 0:43
    新たな問題はすべて問題データべースに
    記録しておかなければなりません
  • 0:43 - 0:50
    長期間に渡るプロジェクトで問題をチェックすることは
    修正に必要なバグがどこなのかということだけでなく
  • 0:50 - 0:55
    バグの修正にかかる時間や
    修正が必要なバグの残存数といった
  • 0:55 - 0:59
    統計を導き出すことにも役立ちます
  • 0:59 - 1:04
    プログラム内でバグ密度が最も高くなっている場所が
  • 1:04 - 1:10
    時間が経つと分かってくるので
    その部分に特別な注意を払うことができます
  • 1:10 - 1:16
    そのため問題をトラッキングすることは
    第1の条件になります
  • 1:16 - 1:23
    次のステップは問題を再現することです
    なぜなら問題を再現することによって
  • 1:23 - 1:27
    実際に修正できるかどうかが分かるからです
  • 1:27 - 1:34
    私たちはすべての入力内容がプログラムの実行に
    影響を与えるものであることを確認しました
  • 1:34 - 1:41
    重要なのは静的データ、ユーザインタラクション、
    環境とのインタラクションです
  • 1:41 - 1:48
    しかしデバッガがプログラムに与える影響や
    時間のランダムネスそして制御が難しい問題といった
  • 1:48 - 1:53
    厄介な問題も重要になってきます
  • 1:53 - 1:59
    問題を再現するため
    すべての問題を管理しなければなりません
  • 1:59 - 2:05
    実際の現場のデータを収集する場合
    問題の再現が難しいことが多くなります
  • 2:05 - 2:10
    データやユーザインタラクションは
    極秘データを含む場合があるからです
  • 2:10 - 2:17
    そのため実行時の特性に関連する
    統計的デバッグも学びました
  • 2:17 - 2:23
    例えば実際の現場のデータを収集し
    プログラムを実行させることで
  • 2:23 - 2:27
    失敗するか成功するかを分かるようにするものです
  • 2:27 - 2:32
    それによりエラーに関連する機能を
    見つけることができます
  • 2:32 - 2:38
    それは実行された行や
    返された関数の値といった特徴になります
  • 2:38 - 2:43
    デバッグの次のステップは自動化し単純化することです
  • 2:43 - 2:46
    いつでも自動的にバグを再現できるように
  • 2:46 - 2:51
    テストケースを書いておくという考え方です
  • 2:51 - 2:56
    これは回帰テストを行う時に役立ちます
  • 2:56 - 3:00
    今までのテストケースをすべて検証するテストです
  • 3:00 - 3:05
    一方でテスト結果は
    自動的に問題を単純化するのに役立ちます
  • 3:05 - 3:11
    エラーを生じさせている大きな入力がある場合
    自動テストはその入力を
  • 3:11 - 3:15
    自動的に単純化するのに役立ちます
  • 3:15 - 3:21
    差分デバッグはそのような大きな入力を
    自動テストによる助けを得ることで
  • 3:21 - 3:29
    エラーの再現に適したものが含まれる入力内容へと
    自動的に単純化します
  • 3:29 - 3:36
    それによりなぜエラーが発生しているのかが
    把握できるようになるので非常に便利です
  • 3:36 - 3:43
    問題を単純化できたら次のステップは
    エラーを起こしている部分を見つけ出すことです
  • 3:43 - 3:48
    プログラムが失敗しているのなら
    実行して一連の状態を調べます
  • 3:48 - 3:55
    実行が止まったところがエラーなので
    何が悪かったのか解明する必要があります
  • 3:55 - 3:59
    エラーの原因を明らかにし
  • 3:59 - 4:04
    それ以外のものを除外するのに
    依存関係の概念が役立ちます
  • 4:04 - 4:07
    不具合がどこにあったのかをトラッキングすると
  • 4:07 - 4:11
    多くの場合その可能性がある場所が複数見つかります
  • 4:11 - 4:17
    まずは一番可能性の高い部分に注目することが必要です
  • 4:17 - 4:23
    すでに不具合の内容が分かっている場合は
    まずそれを修正するのに集中します
  • 4:23 - 4:29
    以前の状態が後の状態の原因であることが
    分かっている場合も
  • 4:29 - 4:32
    集中的にそれを修正しなければなりません
  • 4:32 - 4:39
    統計的デバッグから不具合に関する特徴が
    分かった場合はそれに取り組みます
  • 4:39 - 4:45
    例えばバグ履歴などから
    ある特定の状態にバグがある可能性が高いことを
  • 4:45 - 4:49
    信じるだけの理由がある場合はそれに取り組みます
  • 4:49 - 4:54
    あるアサーションで可能性のある原因を
    すべて見つけ出す手法も確認しました
  • 4:54 - 5:00
    アサーションは実行時に
    プログラムの状態に誤りがあるかどうかを
  • 5:00 - 5:03
    瞬時に見つけ出すのにとても役立ちます
  • 5:03 - 5:08
    6番目のステップは感染の連鎖を捜し出すことです
  • 5:08 - 5:14
    実際にエラー原因かどうかを確認するため
    可能性のあるすべての場所で
  • 5:14 - 5:17
    エラーに関する検証を行うことです
  • 5:17 - 5:22
    このために科学的手法を使用します
    まず仮説を立てます
  • 5:22 - 5:26
    これもあれもそれも原因の可能性があるというように
  • 5:26 - 5:29
    適切な予測を考えます
  • 5:29 - 5:33
    観察に基づいて検証内容を設定し
  • 5:33 - 5:38
    仮説を強化するべきか
    または却下するべきかを判断するのです
  • 5:38 - 5:44
    考えを組み立てるのに役立つように
    またデバッグ作業の中断や再開ができるように
  • 5:44 - 5:50
    これらのステップは必ず系統的なものにしましょう
  • 5:50 - 5:56
    入力データは同じでも
    出力データが異なる部分を見つけられるまで
  • 5:56 - 6:03
    プログラムをとおして
    何回もこのステップを繰り返します
  • 6:03 - 6:11
    失敗を引き起こしている部分が欠陥です
    そしてこれがデバッグの最後のステップになります
  • 6:11 - 6:17
    欠陥を修正することで
    エラーをこれ以上起こさないようにします
  • 6:17 - 6:21
    実際プログラムも正確に動くようになります
  • 6:21 - 6:29
    欠陥を修正する前に欠陥が本当の欠陥なのか
    確かめることも必要です
  • 6:29 - 6:34
    つまり適切に変更することで欠陥が修正されます
  • 6:34 - 6:40
    どう欠陥を修正したのかも
    明確に把握しておく必要があります
  • 6:40 - 6:43
    さらにまだ厄介な作業があります
  • 6:43 - 6:46
    これ以上不具合が起こらないことの確認です
  • 6:46 - 6:52
    修正によって新たな問題を発生させていないか
    確認しなければなりません
  • 6:52 - 6:57
    このコースで学習したように
    アサーションが非常に役立ちます
  • 6:57 - 7:02
    同じエラーがないかどうかチェックするために
    コードを検証します
  • 7:02 - 7:06
    そこで見つけた部分も修正します
  • 7:06 - 7:12
    この7つのステップは
    ステップの頭文字を使って簡単に覚えることができます
  • 7:12 - 7:15
    頭文字を取るとTRAFFICという言葉になりました
  • 7:15 - 7:21
    トラフィックに関連するプログラムのデバッグを
    行っていない限り
  • 7:21 - 7:27
    デバッグにTRAFFICという言葉は結びつかないでしょう
    しかしプログラムでのエラーや
  • 7:27 - 7:30
    プログラム実行中に起きていることは
  • 7:30 - 7:35
    実際の大都市のトラフィックよりも
    ゴチャゴチャしたものです
  • 7:35 - 7:41
    この7つのステップでデバッグは終了です
    おめでとうございます
  • 7:41 - 7:43
    では次のパートに移りましょう
Tytuł:
06-02 The Seven Steps Of Debugging
Video Language:
English
Team:
Udacity
Projekt:
CS259 - Software Debugging
Duration:
07:46

Japanese subtitles

Revisions Compare revisions