Return to Video

03-24 测试的个数

  • 0:00 - 0:05
    任意一个子集的删除都会影响到测试的通过,
  • 0:05 - 0:11
    也就是说,我们又要提高颗粒度了,n翻倍一下。
  • 0:11 - 0:14
    好,现在就把输入分成6块,
  • 0:14 - 0:18
    每块都进行删除的测试。
  • 0:18 - 0:20
    删除后,都通过测试了,
  • 0:20 - 0:23
    那么,再一次提高颗粒度,成12了。
  • 0:23 - 0:26
    可我们的输入就才8个字符啊,
  • 0:26 - 0:29
    分成12个子集,不科学啊,
  • 0:29 - 0:32
    难道让一些子集成空集,开玩笑吧。
  • 0:32 - 0:36
    所以,我们又要修改一下,写个minimun函数。
  • 0:36 - 0:40
    每回都要确保n 不至于比输入的字符数还大,
  • 0:40 - 0:43
    本例中,n 就应该 = 8。
  • 0:43 - 0:46
    delta调试最终环节就是这样了,
  • 0:46 - 0:50
    它会把字符一个一个地删掉,进行测试,
  • 0:50 - 0:53
    只是我们这个例子中,还是全部通过了,
  • 0:53 - 0:56
    所以最后我们就得到了结果-- < select>标签。
  • 0:56 - 1:00
    也可以看出,最后结果中的每个字符都是
  • 1:00 - 1:06
    有影响、相关的,因为只要改动一点,就会影响测试结果,测试就通过了。
  • 1:06 - 1:10
    于是,delta调试给我们的最终结果就是这一段,非常简单的一段,
  • 1:10 - 1:13
    每个字符都有用。
  • 1:13 - 1:18
    也许你好奇,delta调试会进行多少次测试呢?
  • 1:18 - 1:21
    你看,在最后这一环节中,每个字符都
  • 1:21 - 1:24
    单独地被删除过一次,所以测试的次数绝对
  • 1:24 - 1:28
    是和输入的长度成。
  • 1:28 - 1:32
    最坏的情况下,最倒霉的情况下--
  • 1:32 - 1:36
    delta调试的复杂度是输入长度的平方。
  • 1:36 - 1:39
    只是,一般来说,delta调试
  • 1:39 - 1:44
    基本上就是二分查找,所以就和二分查找一样的高效了。
  • 1:44 - 1:48
    那什么时候delta调试需要一个指数次的测试呢?
  • 1:48 - 1:50
    是在所有测试都失败的时候?
  • 1:50 - 1:55
    是在只要删掉一半,测试就失败的时候?
  • 1:55 - 1:58
    还是在所有测试都通过的时候?
  • 1:58 - 2:01
    还是,做梦的时候,不可能?请选择所有正确的项。
タイトル:
03-24 测试的个数
Video Language:
English
Team:
Udacity
プロジェクト:
CS259 - Software Debugging
Duration:
02:02
秀隆 杨 added a translation

Chinese, Simplified subtitles

改訂