Chinese, Simplified subtitles

← 03-34 神秘测试,解答

Get Embed Code
3 Languages

Showing Revision 2 created 07/27/2013 by 秀隆 杨.

  1. 再一次,我们有一个神秘测试函数,那么到底是什么引起的输入……
  2. 是什么,导致神秘测试失败?好了,我们可以再次使用delta调试,找出了这一点。
  3. 这些是delta调试的实现代码。
  4. 我现在要把这个扩展为一个参数来进行测试。
  5. 然后,我们可以转化ddmin成任意想用、恰当的测试。
  6. 你已经知道我要根据这些输入去转换ddmin了。
  7. 它使得神秘测试失败,进而这个神秘测试函数会被当作一个参数
  8. 让我们来看看,在这里是什么导致神秘测试失败。
  9. 按1,按1,我们看到了一个字符,一个点。
  10. 一个点就可以引起mystery测试失败。那么,我们这里有的就是个经典的集合。
  11. 首先,我们使用一个模糊测试仪,测试程序,然后我们重复
  12. 再重复,直到程序中断。
  13. 之后,将之传入delta调试中,一次次地运行程序,。
  14. 直到我们得到一个最小的输入,比如单个小数点。
  15. 这样的最小失败输入非常重要,因为它会影响到人们修复bug。
  16. 假设你的程序在进行测试,它是一个巨大的SQL服务器。
  17. 假设你使用的第一个测试用例,生成了极长的
  18. 极复杂的SQL查询语句,然后发送到SQL服务器。
  19. 接下来,SQL服务器被其中的某个SQL查询语句卡住了。
  20. 于是,你向SQL开发人员说:“嘿,我这有个非常,非常冗长而复杂的
  21. SQL查询语句,我用这个可以让服务器瘫痪哦!“,但开发人员会告诉你,
  22. “哈,像这样大、复杂的查询语句,现实中怎么可能会有嘛(就算有,哥也搞不定)。
  23. (还是开发人员在说)所以,也许这个搞得我们的服务器崩溃了,但它真不是眼下最要紧的事。
  24. 我们只关心真正的查询请求。哥说完了,OVER,再见您呐,最好是不见。”
  25. 被这么吭一通的话,你应该做些什么呢?当然就是用Delta调试来处理这个大的复杂的查询语句啦。
  26. 它最后会给你一些最精简的失败输入,
  27. 简短得多了,看起来呢,
  28. 像这么简单的东西吧,是“可能”出现的。
  29. 好,SQL开发人员将采取非常认真的态度,因为一下子
  30. 这个看起来,像是在实践中可能发生的。对吧?所以开发人员就必须要解决它了。
  31. 这是一个来自微软的真实的故事。