什么是测试需求
- 测试需求主要解决”测什么”的问题, 即指明被测对象中什么需要测试
- 测试需求通常是以软件开发需求为基础进行分析, 通过对开发需求的细化和分解, 形成可测试的内容
- 测试需求应全部覆盖已定义的业务流程, 以及功能和非功能方面的需求
测试需求的特征
- 测试需求项必须是可核实的. 即, 他们必须有一个可观察, 可评测的结果, 无法核实的需求不是测试需求
- 测试需求应指明满足需求的正常前置条件, 同时也要指明不满足需求时的出错条件
- 测试需求不涉及具体的测试数据, 测试数据设计是测试设计环节应解决的内容
为什么需要需求分析
- 测试需求是测试用例的依据
- 有助于保证测试的质量与进度
- 测试需求是衡量测试覆盖率的重要指标
测试需求来源分析
- 开发需求
- 协议/标准/规范
- 用户需求
- 继承性需求
- 测试案例库
- 竞争分析
需求分析案例
需求跟踪矩阵
测试用例设计表格
测试用例设计技术
- 等价类划分法
- 边界值分析法
- 因果图法
- 决策表法(判定表)
- 正交试验法
- 状态迁移法
- 错误推测法
- 场景法
等价类划分法
- 等价类划分法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。
- 某些数据的集合,该集合内的每个数据都是等效的,那么可以将该集合视为等价的一类
等价类的分类:
有效等价类:指符合《需求规格说明书》,输入合理的数据集合。
无效等价类:指不符合《需求规格说明书》,输入不合理的数据集合。
等价类思考步骤:
(1)先确定有效和无效等价类
(2)有效等价类就是题目条件(两端的极值(边界值)要判断、中间随意一个值也要判断)
(3)无效等价类先划分与条件相反的情况,再找到特殊情况(中文、英文、符号、空格、空)
例题:
A、计算 1—100的整数之和(包括1和100)
B、测试QQ账号,账号的要求是 6—10位正整数。
C、某城市的电话号码由三部分组成。这三部分的名称和内容分别是
地区码:空白或三位数字;
前 缀:非’0’或’1’开头的三位数;
后 缀:四位数字。
第一步:划分等价类,包括4个有效等价类,11个无效等价类。
第二步:确定调试用例。
对11个无效等价类,要选择11个调试用例,如下所示:
等价类分类总结
通过上面的案例,我们可以总结一下,当我们在测试文本框的程序可以考虑如下的情况:
a:文本框要求输入的长度
b:输入的类型
c:组成规则
d:是否为空
e:是否重复—区分大小写,
f:是否去除空格
边界值分析法
所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界一下的状态。边界值分析法也是一种常用的黑盒测试方法。特别要注意的是:大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
我们先来看一个例题,解释一下为什么要用边界值。
题目:输入的参数值必须大于0同时小于100的整数。
接下来我们来看程序员写的一段代码:
If Val(Test1.Test) > =0 Or Val(Test1.Test) <= 100 Then
MsgBox(“输入的参数值必须大于0同时小于100”)
Test1.SetFocus
ElseIf Val(Test2.Test) >= 0 or val (Test2.Test) < =100 then
MsgBox(“输入的参数值必须大于0同时小于100”)
Test2.SetFocus
Else
Test3.Test = Val(Test1.Test) + Val(Test2.Test)
End If
各位思考一下,这里面有什么问题呢。仔细看题目,你会发现程序员边界条件设置错误:把>写成了>=,把<写成了<=。这条代码告诉了我们有效数据和无效数据的分界点,往往作为程序员编写程序的判断点,是程序员容易犯错误的地方,也是测试人员重点测试的内容。
那么我们要怎么去确定这个边界值呢,各位接下来请看:
1、找到测试数据的边界点,也就是有效等价类和无效等价类的边界点,对边界点数据专门进行测试。
2、一般情况下,需要对边界值(0和100)以及边界值两边的数(-1和1以及101和99)分别进行测试。
这里我们还会讲一个概念叫做上点,离点,内点。这几个名词我也用例子展示给大家看,只要数学不是体育老师教的,都是能看懂的
如果是闭区间,例如[1,10]。那么上点就是1,10。内点就是区间内任意一个数字,例如5。离点则是0,11
如果是开区间,例如(1,10)。那么上点就是1,10。内点就是区间内任意一个数字,例如5。离点则是(2,9)
这两个最大的区别就是在于离点的不同,概括起来一句话就是闭两边,开中间。也就是说闭区间的离点是区间外边相邻的两个数字(0,11),开区间的离点就是区间里边相邻的两个数字(2,9)。
接下来就是例题了
使用边值的方法设计添加标题的测试用例:标题长度>0 标题长度<=30
输入一个学生成绩n,判断是否及格(0到100整数)
边界值的方法小结:
1、如果输入条件规定了值得范围,则应取刚到到这个范围的边界值,以及刚刚超越这个范围边界的值作为输入数据。
两位整数加法器数的范围为-99—99,则应测试-99,-100和99,100,和中间任意数字
2、输入条件规定了值得个数
姓名要求1—20个字符,需要测试0、1、2个字符和19、20、21个字符
因果图法
因果图的建立(步骤)
- 提取因果,给每个原因和结果并赋予一个标识符,根据这些关系,画出因果图。
- 因果图上用一些记号表明约束条件或限制条件。
- 对需求加以分析并把它们表示为因果图之间的关系图。
- 把因果图转换成判定表。
- 将判定表的每一列作为依据,设计测试用例。
判定表(决策表)法
判定表的建立(步骤):
- 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2的n次方种规则
- 列出所有的条件桩和动作桩
- 填入条件项
- 填入动作项。制定初始判定表
- 简化。合并相似规则或者相同动作
实例:阅读指南
正交试验法
多因素多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是分析因式设计的主要方法。是一种高效率、快速、经济的实验设计方法。
正交表是一种特制的表格,一般用Ln(mk)表示,L代表是正交表,n代表试验次数或正交表的行数,k代表最多可安排影响指标因素的个数或正交表的列数,m表示每个因素水平数,且有n=k*(m-1)+1。正交试验法原理及特点见[附录]
使用正交试验法的原因
对于单因素或两因素试验,因其因素少,试验的设计、实施与分析都比较简单。但在实际工作中,常常需要同时考察3个或3个以上的试验因素,若进行全面试验,试验的规模很大,由于时间和成本的限制我们不可能进行全面试验,但是具体挑其中的哪些测试用例进行测试我们心里拿不准,总担心不做不挑选的那些测试用例会遗漏一些严重缺陷。为了有效的、合理地减少测试的工时与费用,我们利用正交试验法来设计测试用例。正交试验法就是安排多因素试验、寻求最优水平组合的一种高效率的试验设计方法。
我们用测试实例来进行说明使用正交试验法设计测试用例的好处。
测试需求:
某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:
根据“性别”=“男,女”进行查询
根据“班级”=“1班,2班”查询
根据“成绩”=“及格,不及格”查询
按照传统设计——全部测试
分析上述测试需求,有3个被测元素,被测元素我们称为因素,每个因素有两个取值,我们称之为水平值,所以全部测试用例个数是222=8,参见下表
利用正交表设计测试用例,我们得到的测试用例个数是n=3*(2-1)+1=4,对于三因素两水平的刚好有L4(23)的正交表可以套用,于是用正交表试验法得出4个测试用例如下:
根据实际需要可以在用正交试验法设计用例的基础上补充一些测试用例。
4个测试用例与8个测试用例相比测试用例个数是减少了。因素数和水平数越大越能体现用正交表的好处。例如:对于一个四因素且每个因素均为三水平的试验,如果按照全面试验需要进行3333=81次。但是如果用正交试验法选择L9(34)正交表,n=4(3-1)+1=9次试验就可以覆盖。从这点可以说明用正交试验法能有效地、合理地减少测试用例和工时,节约测试成本。
优点:根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的特点具备了“均匀分散,整齐可比”的特点。通过使用正交试验法减少了测试用例,合理地减少测试的工时与费用,提高测试用例的有效性。是一种高效率、快速、经济的实验设计方法。
缺点:对每个状态点同等对待,重点不突出,容易造成在用户不常用的功能或场景中,花费不少时间进行测试设计与执行,而在重要路径的使用上反而没有重点测试。
虽然正交试验设计有上述不足,但它能通过部分试验找到最优水平组合,因而很受实际工作者的青睐。
状态迁移法
状态迁移法或状态—迁移表被用来描述系统或对象的状态,以及导致系统或对象的状态改变的事件,从而描述系统的行为,属于结构化分析方法。
步骤
- 生成局部测试用例:在每个状态中,从因果图生成局部测试用例.局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成。
- 测试路径生成:利用上面的规则(三种)生成从初始状态到最后状态的测试路径。
- 测试用例合成:合成测试路径与功能图中每个状态中的局部测试用例.结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。
场景法
错误推测法
基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例
时间性测试
- 提交操作时限
- 未到达的日期是否可选择
- 前后时间限制问题
- 系统时间的调整
综合策略
- 在任何情况下都必须使用边界值分析方法,判定表明用这种方法设计出测试用例发现程序错误的能力最强。
- 必要时用等价类划分方法补充一些测试用例。
- 用错误推测法再追加一些测试用例。
- 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
- 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。