测试用例
测试用例的重要性:
软件测试的重要性是毋庸置疑的。但如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标,每个软件产品或软件开发项目都需要有一套优秀的测试方案和测试方法。
影响软件测试的因素很多,例如软件本身的复杂程度、开发人员(包括分析、设计、编程和测试的人员)的素质、测试方法和技术的运用等。因为有些因素是客观存在,无法避免的;有些因素则是波动的、不稳定的。例如开发队伍是流动的,有经验的开发人员走了,新人不断补充进来;每个开发人员的工作也会受情绪影响,等等。有了测试用例,无论是谁来测试,参照测试用例实施,都能保障测试的质量,从而把人为因素小。即便最初的测试用例考虑不周全,随着测试的进行和软件版本更新,也将日趋完善。
因此,测试用例的设计和编制是软件测试活动中最重要的。测试用例是测试工作的指导,是软件测试必须遵守的准则,更是软件测试质量稳定的根本保障
测试用例的定义:
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
测试用例的话是将软件测试的行为活动做一个测试用例科学化的组织归纳,目的是能够将软件测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一,不同类别的软件,测试用例是不同的。
测试用例的主要设计方法:
1.黑盒测试:也称功能测试,黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
2.白盒测试:又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
测试用例常用的两种文档:
1.exl 表格的方式
2.word文档方式
测试用例的特性:
a.代表性:能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。
b.针对性:对程序中的可能存在的错误有针对性地测试
c.可判定性:测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果
d.可重现性:对同样的测试用例,系统的执行结果应当是相同的。
测试用例的格式,包含那些要素:
编写测试用例的8大要素有:用例编号,所属模块,测试标题,重要级别,前置条件,测试输入,操作步骤,预期结果。以及编写测试用例时的注意事项 。
a.用例编号
由字符和数字组合成的字符串,测试用例编号应该具有唯一性、易识别。
如系统测试的用例编号格式为:产品编号-ST-系统测试项名-系统测试子项名-xxx。(备注:每个公司对于用例书写的规则不尽相同,具体细则还需要参考公司配置命名规范)
b.所属模块
当前测试用例所在的测试大类或被测试需求、被测的模块、被测单元等
f.输入数据
测试用例在执行过程中需要输入的外部数据。依据用例具体情况,通常包含有手工录入、文件、DB记录等。
g.操作步骤
执行当前测试用例需要的操作步骤,通常要明确的给出每个步骤的详细描述,用例执行人员需根据该步骤完成用例执行。
h.预期结果
当前用例的预期输出结果,包括返回值的内容,以及界面的响应结果,输出结果的规则符合度、数据库等存储表中的操作状态等。
测试用例的输入类型:
字母 数字 特殊符号 空字符 汉字
测试用例的方法\测试策略:
一、等价类法
概述:
- 根据程序对数据的要求,把程序的输入域划分成若干个部分
- 区分出哪些数据是有效的,哪些数据是无效的,(有效等价类与无效等价类)
- 从每个部分中选取少数代表性数据作为测试用例
步骤:
- 划分等价类
- 细化等价类 (对等价类进行编号)
- 建立等价类表
- 编写测试用例
要点:
- 被选为测试用例的数据在测试中的作用等价于这一类中的其他值
- 如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
- 如果等价类中的一个测试不能捕获缺陷,那么选择该类中的其他测试也不会捕获到缺陷
二、边界值法
概述:
- 找到测试数据的边界点,也就是有效等价类和无效等价类的边界点
- 对边界点数据专门进行测试
步骤:
- 找到测试数据的边界点, 分析出上点、离点、内点
- 根据上点、离点、内点写出测试用例
要点:
- 如果输入条件规定了值的范围,则应取边界点数据,以及边界点两边的数据进行测试
- 如果输入条件规定了值的个数,则用最大个数及其两边的点、最小个数及其两边的点作为测试数据
- 根据规格说明的每个输出条件,使用前面的原则
- 根据规格说明的每个输出条件,应用前面的原则
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
三、因果图法
概述:
- 在一个模块或一个界面中,有多个控件,这些控件存在约束关系或组合关系,且输出依赖于输入条件,则可以使用因果图法
步骤:
- 找出所有的输入条件
- 找出所有的输出条件
- 明确所有输入条件之间的制约关系以及组合关系
- 明确所有输出条件之间的制约关系以及组合关系
- 找出怎么样的输入条件组合会产生那种输出结果
- 根据因果图写出判定表
- 根据判定表写出测试用例
要点:
- 恒等、或(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个属性
六.场景法
概述:
- 场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程
- 在冒烟测试时也主要采用场景法进行测试
步骤:
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 对每一个场景生成相应的测试用例
要点:
一、 基本流:
- 按照正确的业务流程来实现的一条操作路径(模拟正确的操作流程)
二、 备选流 :
- 导致程序出现错误的操作流程(模拟错误的操作流程)
七.大纲法
概述:
- 在一个程序或程序的某个模块中,涉及到多个窗口,每个窗口中能够完成多个动作
- 这些窗口又相互联系, 为了弄清窗口和窗口之间的关系,或者说动 作和动作之间的关系,可以使用测试大纲方法
步骤:
- 找出所有的窗口以及每个窗口的输入动作
- 找到各个窗口之间的联系,并据此编写测试用例
要点: (综合策略)
- 为了测试程序的业务逻辑、业务流程、主要功能的正确性,错误处理能力,使用场景法设计测试用例
- 需要输入数据的地方,进行等价类划分,包括输入条件和输出条件的等价划分
- 使用边界值分析方法补充用例
- 可以用错误推测法追加一些测试用例
- 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准或发现还有遗漏,应该再补充足够的测试用例
- 如果程序的功能说明中含有输入条件和输出条件的组合情况, 则一开始就可选用因果图法或判定表方法
- 对于参数配置类的软件,要考虑各个参数之间的组合情况,使用正交排列法
- 为了更真实模拟用户的操作流程、顺序,可以使用状态转换图方法设计测试用例
- 如果程序的模块有多个窗口,并有相关联的操作,可以使用测试大纲方法设计测试用例
八、状态转换图法
概念:
- 找出软件所有的状态以及导致这些状态发生变化的所有输入动作
- 进而用图形的方法把相关联的输入动作和状态联系在一起,真实模拟用户的操作顺序流程
步骤:
- 找出程序的所有输入动作,并进行编号
- 找出程序的所有状态
- 找出什么动作会导致什么状态发生,画出状态转换图
- 把相关联的动作和状态联系起来,设计测试用例
要点:
两个重要的概念::(核心)
- 软件的状态
- 输入的动作
状态转换图法小结:
- 每种状态至少访问一次 【无论用什么方法,每一种状态都必须测试】
- 测试看起来最常见最普遍的状态转换 【根据产品说明书,通过与客户、开发人员沟通,了解哪些操作更常用、更重要】
- 测试状态之间最不常用的分支 【这些分支是最容易被产品设计者和程序员忽视的】
- 测试所有错误状态及其返回值 【错误没有得到正确处理、错误提示信息不正确等情况是常有的】
九、综合策略
- 为了测试软件的业务流程,业务逻辑,基本功能的正确性,错误处理能力,采用场景法编写用例
- 需要输入数据的地方,进行等价类划分,包括输入条件和输出条件的等价划分
- 使用边界值分析方法补充测试用例
- 可以用错误分析法追加测试用例
- 对照程序的逻辑,检查测试用例的逻辑覆盖程度,如果没有达到覆盖标准或发现有遗漏,则要补齐用例
- 如果软件的功能说明里有输入条件和输出条件的组合情况,一开始就考虑用因果图和判定表方法
- 对于有参数配置的软件,要考虑各个参数的组合情况,则可以用正交排列表法来设计测试用例
- 为了模拟用户的操作流程,顺序,则可以用状态转换图法设计测试用例
- 如果一个软件或一个界面里有多个窗口,每个窗口可以完成多步动作,且每个窗口之间存在联系,可以采用大纲法来设计用例
编写任意测试用例的时候3步骤走:
1.根据需求提取测试用例的测试点
2.根据测试点内容输入不同数据类型
3.得到不用结果用来编写测试用例