Japanese subtitles

← 03-34 Mystery Test Solution

Get Embed Code
3 Languages

Showing Revision 2 created 06/24/2014 by Fran Ontanaya.

  1. mystery_test関数が失敗する原因になった入力は
    何だったでしょうか?
  2. 差分デバッグを使って調べてみましょう
  3. これは差分デバッグの実装です
  4. testを引数で使えるように実装を拡張します
  5. このようにddmin関数を呼び出せます
  6. test関数が失敗するファズとmystery_testを引数にして
  7. ddmin関数を呼び出しましょう
  8. mystery_testが失敗した原因は何だったでしょうか
  9. 実行すると1文字だけ出力されました
    この1文字のドットが原因だったようです
  10. mystery_testが失敗した原因はドットでした
    これは典型的なパターンです
  11. 私たちはプログラムが失敗するファズを得られるまで
  12. ファズテスタを何度も繰り返し使います
  13. そのファズを差分デバッグに入力し
    最小限の入力になるまで
  14. プログラムを繰り返し実行します
    その結果ドットが残りました
  15. 失敗を引き起こす最小限の入力を得ることは
    バグを修正するのと同じように重要です
  16. テストするプラグラムが
    巨大なSQLサーバだとしましょう
  17. SQLサーバに送る長くて複雑なSQLクエリを
    生成するため
  18. ファズテスタを使用すると仮定してください
  19. 非常に複雑な入力だったので
    SQLサーバが固まってしまいます
  20. あなたはSQL開発者に
    "非常に長くて複雑なSQLクエリがあるんだ"
  21. "これでサーバをダウンさせられるよ"と伝えます
    でも開発者はあなたにこう答えるのです
  22. "こんな大きなクエリは実際は絶対にありえない"
  23. つまりこの入力でサーバをダウンさせられますが
    これに対処する優先度は高くありません
  24. 気にしなければならないのは本物のクエリなのです
  25. ですのでこの巨大で複雑なクエリを
    差分デバッグで調べましょう
  26. 失敗の原因となる最小化された入力が得られますよ
  27. 得られる文字列は非常に小さく
  28. 実際にもありそうな非常にシンプルなものになります
  29. そしてSQL開発者も
    あなたの言い分に耳を貸すようになるでしょう
  30. 実際に起こり得る入力だったからです
  31. これはMicrosoftであった本当の話でした