· 如果程序的规格随明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试数据。
· 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试数据。
· 分析规格说明,找出其他可能的边界条件。
这里给出测试一个排序程序的边界值分析法的例子,其边界条件有:
· 排序序列为空。
· 排序序列仅有一个数据。
· 排序序列为满,用猜错法补充一下测试用例。
· 排序序列已经按要求排好序。
· 排序序列的顺序与要求的顺序恰好相反。
· 排序序列中的所有数据全部相等。
因为错误最容易发生在边界值附近,所以边界值分析法对于多变量函数的测试很有效,尤其是对于像c,C++这种数据类型要求不足很严格的语言有用。缺点是对布尔值或逻辑变量无效,也不能很好地测试不同的输入组合。边界值分析法也币具有随机性,常被看做是等价类划分法的一种补充,两者结合起来使用史有效。
3错误推测法
有经验的测试人员往往可以根据自己的工作经验和直觉推测出程序可能存在的错误,从而有针对性地进行测试,这就是错误推测法。错误推测法是测试者根据经验、知识和直觉来发现软件错误,“只可意会,不能言传”,就是表明这样一个道理。 .错误推测法基于这样一个思想:某处发现了缺陷,则卅能会隐藏更多的缺陷,在实际操作中,列出程序中所有可能的错误和容易发生的特殊情况,然后依据测试者经验做出选择。如等价类划分法和边界值分析法通过选择有代表性的测试数据来暴露程序错误,但不同类型、不同特点的程序通常又有一些特殊的容易出错的情况。并且,有时分别使用某些测试数据或用例进行测试时程序工作正常,但其组合可能会使程序出错a例如·程序中两个模块使用并修改某些共享的变量,则在程序运行测试过程中应对这些共享的变量赋值不同来验证这两个模块,一般说来,可能的输入组合数目往往很多。因此,测试人员应依靠经验和直觉,从各种可能的方案中选出最可能引起程序出错的方案。
错误推测法能充分发挥人的直觉和经验,在一个测试小组中集思广益,方便实用,特别是在软件测试基础较差的情况下,很好地组织测试小组进行错误猜测,但错误推测法不是一个系统的测试方法,所以只能用作辅助手段,即先用其他方法设计测试用例,再用此方法补充一些例子。这种方法的优点是测试者能够快速且容易地切入,并能够体会到程序的易用与否;缺点是难以知道测试的覆盖率,可能丢失大量未知的区域,并且这种测试行为带有主观性且难以复制。
4因果图法
错误推测法是根据经验和直觉设计测试用例,尽管能考虑到输入组合的情况,但仍显得不充分。因果图法则借助图形来设计测试用例,特别适用于被测程序具有多种输入条件,程序的输出又依赖于输入条件的各种组合的情况。
因果圈法着重分析输入条件的各种组合,每种组合条件就是“因”,它必然有一个输出的结果,这就是“果”。等价类法与边界值分析法的缺点是没有检查各种输入条件的组合·而因果图就能有效地检测输入条件的各种组合可能引起的错误。它是一种形式语言,由自然语言写成的规范转换而成,这种形式语言实际上是一种使用简化记号表示数字逻图。它还能指出程序规范中的不完全性和二义性。
例如.某个软件规格说明中包含以下的要求:第一列字符必须是A或B,第二个字符必须是一个数字,在此情况下进行文件的修改:但如果第一列字符不正确,则输出信息L;如果第二列字符不是数字,则给出信息M。采用因果图方法进行分析,得到表6—4的各种
5组合分析法
&&.目
┏━━━┳━━━━━━━━━━━┳━━━┳━━━━━━┓
┃编号 ┃ 原因(条件) ┃编号 ┃结果(动作) ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃第一列字符是A ┃ ┃修改文件 ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃第一列字符是B ┃ ┃给出信息L ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃第二列字符是一个数字 ┃ ┃拾H1信息M ┃
┣━━━╋━━━━━━━━━━━╋━━━╋━━━━━━┫
┃ ┃中间原因 ┃ ┃ ┃
┗━━━┻━━━━━━━━━━━┻━━━┻━━━━━━┛
组合分析法是一种基于每对参数组合的测试技术,考虑参数之间的影响是主要的错误来源,并且大多数的错误起源于简单的参数组合。组合分析法的优点是低成本实现.低成本维护,易于自动化,易于用较少的测试案例发现更多的错误和用户可以自定义限制;缺点是需要专家领域知识,不能测试所有可能的组合,不能测试复杂的交互。
文章来源于领测软件测试网 https://www.ltesting.net/