测试用例之等价划分

前提

程序输入测试数据,怎么才能够算得上最全面的测试?输入所有的可能性,利用穷举法进行测试。但是,想一想就会知道,穷举法测试是一种低成本并且无法实现的测试。所以,我们所能做的工作就是,如何设计最少的测试用例做最全面的测试。

测试用例中常用到的一种方法,等价类划分,就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,覆盖了更多的可能数据陷。在这里详细的跟大家介绍一下。

一、理论

定义

是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。

等价类划分为有效等价类和无效等价类。

1)有效等价类

是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。

2)无效等价类

指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。

标准

1)完备测试、避免冗余

2)划分等价类重要的是:集合的划分、划分为互不相交的一组子集,而子集的并是整个集合

3)并是整个集合:备性

4)子集互不相交:保证一种形式的无冗余性

5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。

方法

1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;

2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;

3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。

5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);

6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

设计过程

在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:

1)为每一个等价类规定一个唯一的编号;

2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;

3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。


外部条件


有效等价类


无效等价类

二、实践

经典三角形:

题目:"输入三个整数 a 、 b 、 c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "

分析:

三角形的条件,三个数不能为零,两边之和大于第三边;等腰三角形,两个边相等;等边三角形,三个边相等;程序一般会输入四种情况“非三角形”,“一般三角形”,“等腰三角形”,“等边三角形”。

则输入条件的要求:

(1)整数 (2)三个数(3)非零数(4)正数

(5)两边之和大于第三边(6)等腰  (7)等边

接下来,我们就来设计测试用例:


外部条件


有效等价类


无效等价类(粗粒度)


输入三个整数


整数


三个数


非零数


正数


不为整数


不给三个数


至少一个为零


不为正数


一般三角形


a+b>c


两边之和小于或者等于第三边


等腰三角形


a=b≠c


任意两边都不相等


等边三角形


a=b=c


三边不相等

三、结束语

此例子仅作为参考。理论方法学会了,还要在项目中实际去应用,考虑全面,思考深入,设计高质量的代码!

时间: 2024-10-25 06:55:42

测试用例之等价划分的相关文章

软件测试之等价划分二

上周通过测试用例实现等价划分,这次需要三个输入框同时输入.其实只是增加了测试的次数. 这次我用java的程序测试. 首先是无输入: 会提示你输入字符必须是1-6. 测试1: 字符一: 121221f 字符二: jjhj12 字符三: dsd1&& 测试结果如下: 测试2: 字符一: 1212fd 字符二: fdf123 字符三: Adf2d1 测试结果: java代码如下: package ceshi;import java.util.regex.Matcher;import java.u

测试用例的优先级别划分

摘自网络:http://www.educity.cn/se/523513.html 测试用例的优先级别 首先,你必须确定什么是你优先级别的类型和其暗示着什么.就我们的目的来说, 我们将用一个假设开始,那就是我们可能发现的缺陷的严重程度和那些相应测试用例的优先级别之间是平行的. 1 –小版本确认测试(Build Verification Tests (BVTs):也叫做“冒烟测试”,一组你想先运行的以确定这个给出的小版本是否可以测试的测试用例.如果你不能访问每一个功能区域或执行其他测试用例依赖的基

黑盒测试等价划分实例

黑盒测试等价划分实例 NextDay1: #include <stdio.h>int main(){/* day:1~27* day:28,month=2,year=平年* day:29,month=2,year=闰年* day:30,month=4,6,9,11* day:31,month=1,3,5,7,8,10* day:31,month=12*/ int year,month,day,y,m,d;printf("请输入一个日期(yyyy-mm-dd):");scan

软件测试理论测试用例测试之等价类划分

定义 把所有可能输入的数据,即程序的输入域划分策划若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例,是一种黑盒测试方法 有效等价类和无效等价类    有效等价类指对于程序规格说明来说,是合理的.有意义的输入数据构成的集合 无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的.不合理的输入数据集合 等价类划分原则 如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类 如果输入条件规定了输入值的集合,或者"必须如何"

作业八——单元测试练习(个人练习)

必做一: 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例: 测试用例如下:(红色字体为错误预言) 序号 测试输入:三条边 测试预言:[Oracle:Illegal(非三角形),Scalene(一般三角形), Isoceles(等腰三角形),Regular(等边三角形)] 1 (5,5,5) Regular 2 (-5,-5,-5) Regular 3 (1,4,5) Illegal 4 (2,3,5) Illegal 5 (3,4,5) Sc

个人练习 - 单元测试练习

目标与要求 单元测试训练 (Junit框架应用) 测试用例的设计方法 要求: [必做题1] 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例,写到博客中.(10分) 测试用例 序号 测试输入:三条边(a,b,c) 测试预言(Oracle:直角.等腰.等边三角形) 1 输入(1,1,1) 等边三角形 2 输入(****) *** [必做题2] 模仿附录2给出的三角形判断Junit测试代码,设计单元测试脚本,测试 [必做题1]设计得到的测试用例.注

8 软件测试学习体会

软件测试在整个软件周期中的重要性,它存在于整个项目周期,在项目开始之初需求调研的时候就开始了,在形成需求规格说明书的时候就需要针对文档进行测试.这个环节在后续整个项目中占了很大的比重,能主导整个项目的走向,成败与否全在于开始阶段的决策. 体会一:软件测试的真正意义在于发现错误,而不在于验证软件是正确的. 再严密的测试也不能完全发现软件当中所有的错误,但是测试还是能发现大部分的错误,能确保软件基本是可用的,所以在后续使用的过程中还需要加强快速响应的环节.结合软件测试的理论,故障暴露在最终客户端之前

软工重点

*请说明软件文档的作用 *软件开发项目生存期各阶段都包含哪些文档 *什么是数据字典?其作用是什么?它有哪些条目 *采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点 *什么是软件危机 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.实际上,几乎所有软件都不同程度地存在这些问题. *何谓软件生存周期 *软件产品具有哪些特性 *什么是高内聚.低耦合,什么是内聚,什么是耦合 *什么是编码风格 *什么是N/S图,什么是PAD图,举个列子说明. *什么是数据流图 数据流图 (DFD) :

测试用例举例之等价类划分

概念 根据可能输入域数据,划分成若干个子的输入域子集,从每一个子集中选取少数具有代表性的数据作为测试用例. 设计方法:找出输入条件,划分等价类,测试用例编写 等价类划分有两种不同的情况:有效等价类和无效等价类,一般要求一条用例尽量多的覆盖有效等价类,而无效等价类则要求一对一的覆盖 有效等价类:指用户输入的有效数据,并得到预期的或正常的结果 无效等价类:异常的或不符合规定的输入,相应的也会得到异常的输出或提示信息 编写方法 从划分出的等价类中按以下三个原则设计测试用例: (1)每一个等价类规定一个