白盒测试中选择何种测试方法由测试资源决定,比如进行逻辑覆盖,测试资源比较紧张时刻采用判定覆盖,测试资源比较丰富可以采用条件组合覆盖
黑盒测试中不是所有技术适合所有类型的软件,需要根据不同软件系统的特征选择黑盒测试技术。
1.
随机测试(random testing,RT):首先定义程序的输入域,然后在输入域上随机选择一些点作为测试用例,比较方便实现测试的自动化。但也有一些问题:
(1)输入域的定义(define input domain):首先需要详细分析文档,选择合适的输入域
(2)随机数生成(generate random sequence):计算机系统中很难得到真正的随机数,作为替代可以采用伪随机数的生成算法,使用这些算法时需要给定合适的算法种子(random.org网站生提供了随机数生成的服务)
比较特殊的随机测试技术---模糊测试(Fuzz testing)
模糊测试可以看作是随机测试的一种特殊应用,主要应用于软件安全性测试。需要构建非法的输入攻击软件使软件崩溃。
2.
随机测试很简单,但是由于不考虑任何其他类型的信息可能会导致错误检测效率的降低。
自适应随机测试(ART): 导致程序出错的测试用例有聚集性的特点,例如矩形状分布(block),条带状分布(strip)和散点状分布(points)。前两者可以用用测试用例聚集性的特征来提高测试效率(近朱者赤近墨者黑,a passed test,nearby tests may ba passed; a failed test, nearby tests may be failed. ),提示在随机测试中选择测试用例时可以到尽可能远的地方选择,即自适应随机测试(Adaptive random test,ART)的特性。
固定候选集的自适应随机测试算法(FSCS-ART algorithm):首先随机生成第一条测试用例,如果测试终止条件(寻找到错误或者测试资源耗尽)不满足,选择下一条测试用例时首先随机生成k个候选测试用例(c1......ck),然后对于每个ci计算其与已有测试用例的距离,选择距离最大的ci,运行这条测试用例,以此类推,直到测试终止条件满足。
ART可以有效提高软件测试的效率,加快发现错误的速度,但也存在一些问题:
(1)测试用例之间距离(distance)的定义,需要分析程序的规格说明;
(2)考虑测试用例的分布情况(sampling):随机测试中测试用例在输入域中的分布是均匀的,自适应随机测试可能不满足这一需求。测试用例数量庞大时,大量测试用例聚集于输入域边界附近,为此提出了一种扩大输入域的自适应随机测试技术,首先人为扩大输入域,然后在扩大的输入域使用自适应随机测试,则大量测试用例会集中于扩大后的输入域,然后将扩大的输入域剪切,这样在剩下的区域中测试用例的分布依然均匀。
3.
前面都是连续输入域,输入域不连续呢?
Anti-Random Testing:首先随机选择第一条测试用例,选择第二条测试用例使需要计算测试用例与已有的测试用例的hamming距离之和,选择距离之和最大的,以此类推,直到终止。
905

被折叠的 条评论
为什么被折叠?



