(其实这些介绍的各种方法,在测试中应用于测试不同的地方,需要测试的有测试的功能、性能、可靠性等等)
一、基于逻辑覆盖的方法(又有说是基于结构的测试)(其实就是白盒测试)
包括:判定覆盖(测试),条件覆盖,判定条件覆盖 ,条件组合覆盖,基本路径覆盖。
在开始单元测试工作之前,常常会设定一个目标就是代码行的覆盖,逻辑覆盖也不局限于代码这个层次,可以扩展到业务流程图、数据流图等,让测试覆盖需求层次的业务逻辑。
1 判定覆盖(测试)
设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。可达到代码行覆盖。其实是代码结构的分支覆盖。
但是判定覆盖有时候也不能检测出来错误。当检测and和or的逻辑时如果通过(1)(4)组合判断不出and和or互换问题
(意思就是当判定的条件变化后,输出还是不变,但却判断不出判定条件已经改变)
2 条件覆盖(测试)
使每个判断中每个条件的可能取值至少满足一次。有时候达到条件覆盖并不等于达到判定覆盖。
3 判定条件覆盖(测试)
将两种方法结合起来,是判定和条件方法的交集。判定条件中所有条件可能取值至少各执行一次,同时,所有判定的可能结果至少执行一次。(只要条件的结果出现一次,判定结果出现一次就可以)
4 条件组合覆盖
设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。(意思就是要这些条件的结果的所有可能组合都至少出现一次)
5 基本路径覆盖
设计所有的测试用例,来覆盖程序中所有可能的、独立的执行路径。
在实际的测试用例设计过程中,可以根据需要和不同的测试用例设计特征,将不同的设计方法组合起来
二、基于规格说明的测试
通过分析组件或系统的测试依据文档
基本步骤:
(1)分析规格说明(通常基于规格说明)
(2)选择有效的输入以确定测试对象是否可以正确地实现需求,也需要选择无效的输入确定测试对象以正确地处理它们。
(3)根据输入数据确定系统的期望输出
(4)执行测试用例
(5)将测试执行得到的实际结果与期望结果进行比较
(6)确定测试对象的实现是否符合规格说明
(基于输入域的方法)
单因素、单变量的输入情况
1 等价划分法
用一组有限的数据去代表近似无限的数据,这是等价划分方法的基本思想,等价划分就是解决如何现在适当的数据子集来代表整个数据集的问题。等价划分技术的对象既可以是测试对象的输入,也可以是测试对象的输出。
基本步骤:
(1)识别等价类
(2)创建测试用例
(3)覆盖率准则
在进行功能测试时,通常分为有效等价类和无效等价类
2 边界值分析法
边界包括输入等价类和输出等价类的大小边界
基本步骤:
(1)识别测试对象中参数的等价类
(2)识别每个等价类的边界值
(3)创建边界相关测试用例
(4)定义边界值分析技术的覆盖率
(基于组合及其优化的方法)
多因素或多变量的输入情况
3 判定表方法(决策表测试)
每个输入输出条件只有1和0两个取值
基本对象:
(1)条件桩:列出问题的所有条件
(2)动作桩:列出可能针对问题所采取的操作
(3)条件项:针对列出条件具体赋值
(4)动作项:列出在条件项组合情况下应该采取的动作
4 因果图法
因,指的是一个明确的输入条件或输入条件的等价类;果,指的是一个输出条件或动作。
通过布尓图连接成因果图
步骤:
(1)根据输入输出条件分析等价类,为每个输入输出赋予一个标识符;找出输入输出之间关系;
(2)将输入输出之间的关系关联起来;
(3)将因果图转化为判定表
(4)将判定表的每一列拿出来作为依据,设计测试用例
5 状态转换测试
描述了测试对象和测试数据之间的关系。测试对象的输出和行为方式不仅和当前的输入数据有关,而且与测试对象当前状态有关。
基本步骤:
(1)将状态图转换为状态树
即将可能具有无限多状态循环的状态转换图转换为不含循环的具有一定数目状态的状态转换树。
(2)设计测试用例
a.至少覆盖所有状态一次
b.至少覆盖所有的事件一次
(没有理解状态和事件有什么区别)
c.至少覆盖所有的状态转换一次
d.至少覆盖所有的路径一次(不现实,当遇到循环的情况时)
但是覆盖这样循环的测试用例对于发现一些累计的计算错误或资源方面的缺陷非常重要。
还需要检查在不同状态情况下错误调用函数的测试用例,是否会出现错误的状态转换(健壮性测试)
或
(1)将状态图转换为状态表
a.罗列所有的状态和事件的组合
b.生成有效状态转换的测试用例
优点是罗列了所有可能的状态转换组合。有的情况下,需要测试所有的组合。
6 结对测试(Pair-wise)(两两组合)
在输入参数组合数目庞大时,为了更好地减少测试用例的数目并确保测试覆盖率的要求。针对输入值的两两结合。
(1)基于正交矩阵的结对测试
开始第一遍的时候一直没有理解,然后重新看第二遍。
基于正交矩阵的结对测试:就是运用工具(如PICT),生成正交矩阵,然后选择一个合适的正交矩阵,把测试需求映射到正交矩阵。(创建正交矩阵是数学家的事)
关于正交矩阵:是数学的二维矩阵,其特征为选择矩阵中任何两列都覆盖了数字的所有两两组合。
(2)Allpairs
7 分类树方法
针对测试对象的每个特征进行部分或者完全分类,同时根据需要也可以对分类之后的特性进一步细分,通过将测试对象的不同特性的分类组合可以得到不同的测试用例。
CTE-XL工具:第一步,设计分类树;第二步,创建测试用例(自动生成);第三步,创建特定要求组合的测试用例;第四步,生成测试用例报告。