测试用例的设计方法:八大方法及综合策略
一、等价类法
概述:
- 根据程序对数据的要求,把程序的输入域划分成若干个部分
- 区分出哪些数据是有效的,哪些数据是无效的,(有效等价类与无效等价类)
- 从每个部分中选取少数代表性数据作为测试用例
步骤:
- 划分等价类
- 细化等价类 (对等价类进行编号)
- 建立等价类表
- 编写测试用例
要点:
- 被选为测试用例的数据在测试中的作用等价于这一类中的其他值
- 如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
- 如果等价类中的一个测试不能捕获缺陷,那么选择该类中的其他测试也不会捕获到缺陷
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
二、边界值法
概述:
- 找到测试数据的边界点,也就是有效等价类和无效等价类的边界点
- 对边界点数据专门进行测试
步骤:
- 找到测试数据的边界点, 分析出上点、离点、内点
- 根据上点、离点、内点写出测试用例
要点:
- 如果输入条件规定了值的范围,则应取边界点数据,以及边界点两边的数据进行测试
- 如果输入条件规定了值的个数,则用最大个数及其两边的点、最小个数及其两边的点作为测试数据
- 根据规格说明的每个输出条件,使用前面的原则
- 根据规格说明的每个输出条件,应用前面的原则
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
三、因果图法
概述:
- 在一个模块或一个界面中,有多个控件,这些控件存在约束关系或组合关系,且输出依赖于输入条件,则可以使用因果图法
步骤:
- 找出所有的输入条件
- 找出所有的输出条件
- 明确所有输入条件之间的制约关系以及组合关系
- 明确所有输出条件之间的制约关系以及组合关系
- 找出怎么样的输入条件组合会产生那种输出结果
- 根据因果图写出判定表
- 根据判定表写出测试用例
要点:
- 恒等、或(V)、与(∧)、非(~)、互斥(E)、包含(I)、唯一(O)、要求(R)、屏蔽(M)
- 因果图法主要考虑控件之间条件的组合关系
- 每个控件的条件不宜过多,最好为2个
- 控件较多,或每个控件的条件过多,不宜用因果图法
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
四、判定表法
概述:
- 判断表主要侧重输入条件之间的逻辑关系(画因果图只是一个辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例)
步骤:
- 找出所有的输入条件
- 找出所有的输出条件
- 明确所有输入条件之间的制约关系以及组合关系
- 明确所有输出条件之间的制约关系以及组合关系
- 找出怎么样的输入条件组合会产生那种输出结果
- 根据因果图写出判定表
- 根据判定表写出测试用例
要点:
- 判定表的组成:
- 适合使用判定表设计测试用例的条件:
- 规格说明以判定表的形式给出,或很容易转换成判定表
- 条件的排列顺序不影响执行哪些操作
- 规则的排列顺序不影响执行哪些操作
- 当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
- 如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
五、正交法
概述:
- 能够使用最小的测试过程集合获得最大的测试覆盖率
步骤:
- 根据所测程序中控件的个数以及每个控件的取值个数,选取一个合适的正交排列表
- 把控件以及取值列出来,并对取值进行编号
- 把控件以及取值映射到正交排列表中
- 根据映射好的正交排列表编写测试用例
要点:
一、 n阶拉丁方:
用n个不同的拉丁字母排成一个n阶方阵, 每个字母在任一行、任一列中只出现一次
二、 正交拉丁方:
设有两个n阶的拉丁方,如果将它们叠合在一起,恰好出n2个不同的有序数对
三、 正交表是一种特制的表,记为:
- m是每个控件包含的取值个数
- K表示控件的个数
- n是表的行数, n=k*(m-1)+1
- n=k1*(m1-1)+k2*(m2-1)+…kx*(mx-1)+1
- L为正交表的代号
- Ln(m1^k1 m2^k2...mx^kx)
正交排列法的局限性:
- 基本都要求每个控件中取值的个数要相等,这在实际软件中很少遇到
正交表的性质:
- 每一列中,不同的数字出现的次数相等
- 任意两列中数字的排列方式齐全而且均衡
- 即:
- 正交表的两大优越性,“均匀分散性,整齐可比性”
- 通俗的说,每个因素的每个水平与另一个因素各水平各碰一次,这就是正交性
种类:
- 各列水平数均相同的正交表
- 混合水平正交表
- 例:L8(4*24)——一个控件有4个属性,4个控件有2个属性
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
六.场景法
概述:
- 场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程
- 在冒烟测试时也主要采用场景法进行测试
步骤:
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 对每一个场景生成相应的测试用例
要点:
一、 基本流:
- 按照正确的业务流程来实现的一条操作路径(模拟正确的操作流程)
二、 备选流 :
- 导致程序出现错误的操作流程(模拟错误的操作流程)
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
七.大纲法
概述:
- 在一个程序或程序的某个模块中,涉及到多个窗口,每个窗口中能够完成多个动作
- 这些窗口又相互联系, 为了弄清窗口和窗口之间的关系,或者说动 作和动作之间的关系,可以使用测试大纲方法
步骤:
- 找出所有的窗口以及每个窗口的输入动作
- 找到各个窗口之间的联系,并据此编写测试用例
要点: (综合策略)
- 为了测试程序的业务逻辑、业务流程、主要功能的正确性,错误处理能力,使用场景法设计测试用例
- 需要输入数据的地方,进行等价类划分,包括输入条件和输出条件的等价划分
- 使用边界值分析方法补充用例
- 可以用错误推测法追加一些测试用例
- 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准或发现还有遗漏,应该再补充足够的测试用例
- 如果程序的功能说明中含有输入条件和输出条件的组合情况, 则一开始就可选用因果图法或判定表方法
- 对于参数配置类的软件,要考虑各个参数之间的组合情况,使用正交排列法
- 为了更真实模拟用户的操作流程、顺序,可以使用状态转换图方法设计测试用例
- 如果程序的模块有多个窗口,并有相关联的操作,可以使用测试大纲方法设计测试用例
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
八、状态转换图法
概念:
- 找出软件所有的状态以及导致这些状态发生变化的所有输入动作
- 进而用图形的方法把相关联的输入动作和状态联系在一起,真实模拟用户的操作顺序流程
步骤:
- 找出程序的所有输入动作,并进行编号
- 找出程序的所有状态
- 找出什么动作会导致什么状态发生,画出状态转换图
- 把相关联的动作和状态联系起来,设计测试用例
要点:
两个重要的概念::(核心)
- 软件的状态
- 输入的动作
状态转换图法小结:
- 每种状态至少访问一次 【无论用什么方法,每一种状态都必须测试】
- 测试看起来最常见最普遍的状态转换 【根据产品说明书,通过与客户、开发人员沟通,了解哪些操作更常用、更重要】
- 测试状态之间最不常用的分支 【这些分支是最容易被产品设计者和程序员忽视的】
- 测试所有错误状态及其返回值 【错误没有得到正确处理、错误提示信息不正确等情况是常有的】
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
九、综合策略
- 为了测试软件的业务流程,业务逻辑,基本功能的正确性,错误处理能力,采用场景法编写用例
- 需要输入数据的地方,进行等价类划分,包括输入条件和输出条件的等价划分
- 使用边界值分析方法补充测试用例
- 可以用错误分析法追加测试用例
- 对照程序的逻辑,检查测试用例的逻辑覆盖程度,如果没有达到覆盖标准或发现有遗漏,则要补齐用例
- 如果软件的功能说明里有输入条件和输出条件的组合情况,一开始就考虑用因果图和判定表方法
- 对于有参数配置的软件,要考虑各个参数的组合情况,则可以用正交排列表法来设计测试用例
- 为了模拟用户的操作流程,顺序,则可以用状态转换图法设计测试用例
- 如果一个软件或一个界面里有多个窗口,每个窗口可以完成多步动作,且每个窗口之间存在联系,可以采用大纲法来设计用例