软件测试的分类:
1、按软件功能测试分类:基于规格说明的测试(传统黑盒测试、基于规格说明测试)、基于控制流的测试(白盒测试)
传统黑盒测试:边界值、等价类、决策表、因果图
白盒测试:语句覆盖、判断覆盖、条件覆盖、MC/DC覆盖、基本路径覆盖。
基于规格说明测试:状态机、UML、Petri网、Z规约
其他测试:冒烟测试、随机测试、错误猜测测试、故障树测试、基于蜕变的测试
2、根据测试阶段分类:
单元测试:对软件中最小的可测单元进行验证,可以是一个函数、一个类、一个类的方法。
集成测试:将单元模块组装成系统或子系统,确保各模块集成在一起后能够符合设计要求。(1)验证接口是否与设计相符 (2)发现设计和需求中存在的错误
系统测试:将整个软件系统整体进行测试,在系统集成完毕后进行测试,前期主要测试功能是否满足需求,后期主要测试系统性能是否满足需求,以及系统在不同的软硬件环境中的兼容性。
验收测试:主要是用户代表进行,根据务需求分析,验证是否满足需求。验收测试中应该使用真实数据。
α测试:由用户在开发环境下进行测试。
β测试:由用户在实际环境下进行测试。
用例设计方法:
1、等价类
测试过程中很难使用穷举法覆盖所有测试可能,因此,等价类测试过程中只取一组代表数据作为测试输入。
等价类的划分原则:
(1)如果输入条件规定了取值范围、取值个数,则可以确定一个或者多个有效等价类或无效等价类。
(2)如果输入条件规定了输入值的集合或者必须,一定的条件,则可以确定一个有效等价类和一个无效等价类
(3)如果输入条件规定了一组限定值,同时需要对输入值做处理,则可以为所有的值确定一个有效等价类和一个无效等价类
(4)如果输入条件规定了必须要遵守的规则,则可以确定一个有效等价类和若干个无效等价类
(5)如果已知等价类中不同元素在程序中的处理方式不一样,那么将该等价类进一步划分为更小的等价类
2、边界值
常见的边界包括语言相关的边界和业务相关的边界
语言相关的边界:当定义不同类型的数据时,其取值范围是不一样的,如果定义变量时,没有充分考虑所使用数据的范围,那么就可能出现错误。
业务相关的边界:由业务特性决定的,在边界数据值上没有做合适的处理就会导致错误。
边界值分析原则:
(1)如果输入值确定且连续,则测试数据可以取最小值、略大于最小值、正常值、略小于最大值、最大值.
(2)如果输入值确定且离散,则测试数据可以取该离散范围内最小值、略大于最小值、正常值、略小于最大值、最大值.
(3)如果输入值有特殊的结构,则可根据其特殊行设计用例
(4)如果输入值是有序集合,则应该取集合的第一个以及最后一个元素作为测试用例
(5)分析规则说明,找出其他可能的边界值。
3、决策表:
适合描述在不同逻辑条件取值组合的情况需要执行的动作。
适合使用决策表设计测试用例的条件:
(1)规格说明书以决策表的形式给出或容易转换为决策表。
(2)输入条件的排列顺序不影响操作执行。
(3)规则的排列顺序不影响操作执行
(4)当某一规则的条件以满足,同时确定需要执行的操作时,无需校验其他规则。
(5)如果某一规则需要执行多个操作,这些操作的顺序不会造成影响。
决策表建立:
(1)确定规则数目:如果有n个条件,每个条件取值为(0,1),则有2^n种规则。
(2)列出所有的条件桩和动作桩(相当于输入项和输出结果)
(3)输入条件项(输入项)
(4)输入动作项(输出结果),制作初始决策表(所有输入输出的情况)
(5)简化、合并相似或相同项
4、因果图
原因和原因之间,原因和结果之间都存在一定的关联。原因指的就是输入条件(或等价类),结果指的是输出条件。
常见的关联有四种:恒等、非、与(多个条件)、或(多个条件)
原因和原因、原因和结果、结果和结果之间的关联:互斥、包含、唯一、要求、屏蔽、强制
利用因果图设计测试用例:
(1)找出规则说明书中的原因和结果(输入输出)
(2)分析软件原因结果之间的关联,并转化为因果图
(3)原因和原因、原因和结果、结果和结果之间的关联,在因果图中用对应符合标识
(4)分析因果图中的条件关系,将其转化为判定表
(5)根据判断表中的每一列数据设计一个测试用例。