等价类测试与划分研究
测试等价类划分法

测试等价类划分法等价类划分法是一种软件测试技术,通过将输入和输出数据划分为等价类,以便在测试过程中选择最具代表性的测试用例。
这种方法可以显著减少测试用例的数量,同时保证测试覆盖率。
等价类划分法的基本原则是将输入和输出数据划分为若干个等价类,每个等价类中的数据在功能上是等效的。
这样,我们只需要选择一个代表性的测试用例来测试每个等价类即可。
通过这种方式,我们可以在保证测试覆盖率的同时,大大减少测试工作量。
在使用等价类划分法进行测试时,首先需要了解被测试系统的输入和输出数据。
对于输入数据,我们需要了解每个输入项的取值范围和限制条件。
对于输出数据,我们需要了解每个输出项的可能取值和对应的功能。
接下来,我们可以将输入数据划分为若干个等价类。
每个等价类包含了一组具有相同功能的输入数据。
例如,对于一个要求输入年龄的系统,我们可以将年龄划分为三个等价类:小于18岁的未成年人、18岁到60岁之间的成年人和大于60岁的老年人。
这样,我们只需要选择一个代表性的年龄来测试每个等价类即可。
同样地,我们还可以将输出数据划分为若干个等价类。
每个等价类包含了一组具有相同功能的输出数据。
例如,对于一个根据年龄判断是否为成年人的系统,我们可以将输出划分为两个等价类:是成年人和不是成年人。
这样,我们只需要选择一个代表性的输出来测试每个等价类即可。
在选择测试用例时,我们应该尽可能选择能够覆盖每个等价类的测试用例。
例如,对于上述的年龄划分,我们可以选择一个未成年人、一个成年人和一个老年人作为测试用例。
这样,我们就可以通过这三个测试用例来验证系统在不同情况下的功能是否正常。
总结一下,等价类划分法是一种有效的测试技术,可以帮助我们减少测试用例的数量,提高测试效率。
通过将输入和输出数据划分为等价类,我们可以选择最具代表性的测试用例来验证系统的功能。
在使用等价类划分法进行测试时,我们需要了解被测试系统的输入和输出数据,并将其划分为若干个等价类。
如何划分等价类测试用例

如何划分等价类测试用例等价类测试是软件测试中常用的一种测试方法,它通过将输入和输出值划分为多个等价类来减少测试用例的数量,以提高测试的效率和覆盖率。
以下是如何划分等价类测试用例的详细说明。
一、什么是等价类测试等价类测试是一种基于黑盒测试的方法,它将所有的输入和输出值分成若干等价类,每一个等价类代表一组相同行为或结果的输入和输出值。
等价类测试的目的是减少测试用例的数量,提高测试效率和覆盖率。
二、如何划分等价类测试用例1. 无效等价类无效等价类包括那些不应该被接受或不符合要求的输入值。
例如,在考试中,学生的年龄必须大于等于18岁才能参加考试,那么小于18岁的学生就属于无效等价类。
2. 有效等价类有效等价类包括那些被接受或符合要求的输入值。
例如,在考试中,学生的年龄必须大于等于18岁才能参加考试,那么大于等于18岁的学生就属于有效等价类。
3. 边界值等价类边界值等价类是一组包含最小值、最大值和某个在中间范围内的值的等价类。
例如,在考试中,学生的分数必须在0-100之间,那么0和100就属于边界值等价类。
4. 特殊值等价类特殊值等价类包括那些具有特殊意义或重要性的值。
例如,在考试中,学生的分数为0或100就属于特殊值等价类。
三、等价类测试的优点及注意事项优点:1. 可以节省测试时间和成本。
2. 能够提高测试效率和覆盖率。
3. 可以减少测试用例的数量,提高测试效果。
注意事项:1. 划分等价类时要尽可能全面、准确地考虑所有可能的情况。
2. 必须确保每个等价类都具有独特的行为或结果。
3. 边界值等价类和特殊值等价类通常需要特别关注。
四、总结等价类测试是软件测试中一种常用的黑盒测试方法,通过将所有的输入和输出值划分为若干等价类,以减少测试用例的数量,提高测试效率和覆盖率。
在划分等价类时要注意全面、准确地考虑各种情况,必须确保每个等价类都具有独特的行为或结果。
边界值等价类和特殊值等价类通常需要特别关注。
软件测试中的边界与等价类测试

软件测试中的边界与等价类测试在软件测试中,边界与等价类测试是两种重要的测试方法。
它们能够有效地发现软件中的缺陷与错误,同时提高软件的质量与稳定性。
本文将重点探讨软件测试中的边界与等价类测试,介绍其概念、原理和使用方法。
一、边界测试边界测试是一种测试方法,它通过对输入域的边界值进行测试,以发现潜在的缺陷与错误。
在软件开发过程中,输入域通常有最小值、最大值和离最小值与最大值最近的边界值。
边界测试主要关注这些边界值是否能够正确地被处理。
在进行边界测试时,我们需要首先确定输入域的边界值。
例如,对于一个要求输入年龄的软件,边界值可能是0和150。
接下来,我们需要设计测试用例,分别输入边界值和边界值附近的值,观察软件的反应。
边界测试可以有效地发现由于边界值处理不当而引起的错误。
它能够覆盖输入空间的边界,从而提高软件的鲁棒性和可靠性。
同时,边界测试也帮助我们更好地理解软件的边界条件,从而减少潜在的漏洞。
二、等价类测试等价类测试是一种测试方法,它将输入域划分为多个等价类,在每个等价类中选择一个测试用例进行测试。
等价类测试基于一个简单的思想:对于同一个等价类中的输入,其产生的输出应该是相同的。
因此,选择一个测试用例进行测试即可代表整个等价类。
在进行等价类测试时,我们首先需要了解软件的功能和逻辑。
然后,根据输入域的不同类型,将其划分为若干个等价类。
例如,对于一个要求输入年龄的软件,输入域可以划分为小于18岁、18岁到60岁、大于60岁三个等价类。
接下来,我们需要在每个等价类中选择一个测试用例进行测试。
测试用例的选择应该尽量覆盖不同的情况,以发现潜在的错误。
例如,在上述例子中,我们可以选择17岁、30岁和70岁作为测试用例。
等价类测试能够有效地减少测试用例的数量,提高测试效率。
它帮助我们更好地理解软件的输入域和功能逻辑,从而发现潜在的错误。
同时,等价类测试也能够提高测试的可读性和可维护性,使测试过程更加简洁与系统化。
实验一 黑盒测试法——等价类划分法

实验一黑盒测试法——等价类划分法实验目的:1.掌握等价类划分的方法2.掌握按等价类方法设计测试用例实验内容:1、请用等价类划分法为三角形问题划分等价类,并设计相应的测试用例,测试下面三角形问题程序,找出缺陷并改正,给出缺陷报告。
#include "iostream.h"void main(){int a,b,c;cout<<"请输入三角形的三条边(界于1-100之间)"<<endl;cin>>a>>b>>c;if(a<=1||a>=100)cout<<"a的值超过允许的范围!";if(b<=1||b>=100)cout<<"b的值超过允许的范围!";if(c<=1||c>=100)cout<<"c的值超过允许的范围!";if(a+b>c||a+c>b||b+c>a)cout<<"a,b,c的值不能构成三角形!";if(a==b&&b==c)cout<<"是等边三角形!";if(a==b||b==c||a==c)cout<<"是等边三角形!";if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!";}三角形问题:划分等价类测试用例:1、覆盖有效等价类的测试用例2、覆盖无效等价类的测试用例缺陷报告:测试人修正人确认人修正日期年月日缺陷编号2用例编号 1 缺陷类型代码错误严重级别严重优先级优先缺陷状态New测试阶段单元□ 集成□系统□ 验收□ 其它()可重现性是□否BUG原因□需求分析基本设计□ 详细设计□ 设计式样理解□ 编程□数据库设计□ 环境配置□ 其它()缺陷描述输入正确的三个数,不能进行正确的判断三角形的类型预期结果是一般三角形!重现步骤备注1、在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述将以下代码if(a+b>c||a+c>b||b+c>a)cout<<"a,b,c的值不能构成三角形!";改成if(a+b<c||a+c<b||b+c<a)cout<<"a,b,c的值不能构成三角形!";测试人修正人确认人修正日期年月日缺陷编号3 用例编号2~4 缺陷类型严重级别严重优先级优先缺陷状态New测试阶段单元□ 集成□系统□ 验收□ 其它()可重现性是□否BUG原因□需求分析基本设计□ 详细设计□ 设计式样理解□ 编程□数据库设计□ 环境配置□ 其它()缺陷描述输入正确的三个数,不能正确判断三角形的类型预期结果等腰三角形重现步骤备注在VC++6.0中运行源程序输入数据如图所以:以下部分由BUG修改人填写缺陷修改描述将以下代码:if(a==b&&b==c)cout<<"是等边三角形!";改为:if((a==b&&b!=c)||(a==c&&c!=b)||(b==c&&a!=c))cout<<"是等腰三角形!";测试人修正人确认人修正日期年月日缺陷编号 4 用例编号6~12,20~39 缺陷类型严重级别严重优先级优先缺陷状态New测试阶段单元□ 集成□系统□ 验收□ 其它()可重现性是□否BUG原因□需求分析基本设计□ 详细设计□ 设计式样理解□ 编程□数据库设计□ 环境配置□ 其它()缺陷描述输入无效数据,不能判定能否构成三角形预期结果给出提示判断是否为有效的输入重现步骤备注在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述将以下代码:if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!";改为:if((a>0&&a<=100)&&(b>0&&b<=100)&&(c>0&&c<=100)){if(a!=b&&b!=c&&c!=a)cout<<"一般三角形!";}测试人修正人确认人修正日期年月日缺陷编号 5 用例编号40~45 缺陷类型严重级别严重优先级优先缺陷状态New测试阶段单元□ 集成□系统□ 验收□ 其它()可重现性是□否BUG原因□需求分析基本设计□ 详细设计□ 设计式样理解□ 编程□数据库设计□ 环境配置□ 其它()缺陷描述输入不能构成三角形的有效数据,不能判定是否为三角形预期结果不能构成三角形重现步骤备注在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述将以下代码:if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!";改为:if((a>0&&a<=100)&&(b>0&&b<=100)&&(c>0&&c<=100)){if((a!=b&&b!=c&&c!=a)&&(a+b>c&&a+c>b&&b+c>a))cout<<"一般三角形!";}测试人修正人确认人修正日期年月日缺陷编号6用例编号13~19 缺陷类型严重级别严重优先级优先缺陷状态New测试阶段单元□ 集成□系统□ 验收□ 其它()可重现性是□否BUG原因□需求分析基本设计□ 详细设计□ 设计式样理解□ 编程□数据库设计□ 环境配置□ 其它()缺陷描述只输入三角形的一边或两边,程序进入等待的状态,没有提示。
等价类划分实训总结报告

一、实训背景随着我国软件产业的快速发展,软件质量越来越受到重视。
软件测试作为保证软件质量的重要环节,其测试用例设计方法的研究与应用日益受到关注。
等价类划分法作为一种常用的黑盒测试用例设计方法,具有简单易行、覆盖率高、效率高等特点。
为了提高自身软件测试能力,我参加了本次等价类划分实训。
二、实训目标1. 理解等价类划分法的原理和步骤;2. 掌握等价类划分法的应用场景和注意事项;3. 能够运用等价类划分法设计有效的测试用例;4. 提高软件测试效率和质量。
三、实训内容1. 等价类划分法的基本概念等价类划分法是一种将测试输入数据划分为若干个等价类的方法,使得每个等价类中的数据在测试中具有相同的效果。
通过选取代表性的数据作为测试用例,可以有效地减少测试用例的数量,提高测试效率。
2. 等价类划分法的步骤(1)识别输入条件:分析软件需求规格说明书,确定输入条件的范围和类型。
(2)划分等价类:根据输入条件,将数据划分为有效等价类和无效等价类。
(3)选取测试用例:从每个等价类中选取代表性数据作为测试用例。
(4)设计测试用例:根据选取的测试用例,设计具体的测试步骤和预期结果。
3. 等价类划分法的应用场景等价类划分法适用于以下场景:(1)针对输入控件,如输入框、下拉菜单等;(2)针对数据输入,如输入数字、字符串等;(3)针对逻辑判断,如判断条件、循环等。
4. 等价类划分法的注意事项(1)确保等价类划分的准确性,避免漏掉或重复划分等价类;(2)注意等价类之间的互斥性,避免同一数据同时属于多个等价类;(3)根据实际情况,适当调整等价类划分的粒度;(4)关注边界值,提高测试覆盖率。
四、实训过程1. 理论学习:通过阅读相关文献、观看教学视频,了解等价类划分法的原理、步骤和应用场景。
2. 实践操作:选择一个实际项目,运用等价类划分法设计测试用例,并进行测试执行。
3. 交流讨论:与同学和老师交流心得体会,共同探讨等价类划分法的应用和优化。
测试中的边界值分析和等价类划分

测试中的边界值分析和等价类划分边界值分析和等价类划分是软件测试中常用的两种测试技术,旨在有效地识别和测试系统的边界、边界值和等价类。
本文将分别介绍边界值分析和等价类划分的概念、原则和实施方法,并探讨其在测试中的应用。
一、边界值分析边界值分析是一种测试技术,通过选择接近边界的测试数据来测试程序的边界行为。
其基本原则是边界附近的输入数据更容易引发错误,因此需要更详细和严格的测试。
以下是边界值分析的实施步骤:1. 确定输入和输出的边界:首先确定程序的输入和输出边界,即确定需要测试的数据范围和限制条件。
2. 选择测试数据:根据边界值分析的原则,选择接近边界的测试数据,包括边界本身、边界的上下界以及中间值,以覆盖所有可能的情况。
3. 执行测试用例:使用选定的测试数据执行测试用例,检查程序在边界条件下的行为和输出,验证其是否符合预期。
边界值分析可以帮助测试人员更全面地覆盖系统的边界情况,从而提高测试的有效性和覆盖率。
通过选择接近边界的测试数据,可以发现程序在边界条件下的异常行为和错误,进一步完善系统的功能和稳定性。
二、等价类划分等价类划分是一种测试技术,通过将输入值划分为等价类来降低测试用例的数量,并确保每个等价类都能代表该类输入的所有可能情况。
以下是等价类划分的实施步骤:1. 确定输入条件:首先确定程序的输入条件,并将其划分为若干个等价类。
2. 选择代表性测试数据:从每个等价类中选择一个或多个代表性的测试数据作为测试用例。
3. 执行测试用例:使用选定的测试数据执行测试用例,验证程序在不同等价类条件下的行为和输出。
等价类划分可以帮助测试人员更有效地组织和管理测试用例,通过减少测试用例的数量,节省时间和资源,同时又能保证覆盖所有可能的输入情况。
三、边界值分析和等价类划分的应用边界值分析和等价类划分在软件测试中都具有广泛的应用。
它们能够有效地发现和修复软件系统中的错误和缺陷,提高系统的质量和可靠性。
以下是它们在测试中的常见应用场景:1. 输入验证:在对用户输入进行验证的场景中,边界值分析和等价类划分可以帮助确定有效和无效的输入范围,并根据这些范围选择测试数据。
实验一 黑盒测试等价类划分
实验一黑盒测试——等价类划分1、实验目的(1)理解黑盒测试的内涵;(2)掌握边界值分析法中健壮性测试概念;(3)能够使用等价类设计测试用例。
2、实验预习软件的缺陷往往出现在输入变量的边界值附近,边界值分析测试的基本思想是在输入最小值、率高于最小值、最大值、略大于最大值、正常值处取输入变量。
这种方法是基于单缺陷假设,当包含无效输入值时,这种方法还包含健壮性测试内容。
3、实验内容及要求现在有一个应用于住宿管理系统的程序,其包含了用户登录、用户注册和用户结算等功能,需要对该程序使用边界值分析方法进行测试,具体测试任务主要有:(1)旅馆住宿系统用户名字段测试用例设计;(必做)(2)旅馆住宿系统用户注册测试用例设计;(必做)(3)旅馆住宿系统结算功能测试用例设计。
(选做)在任务1中,用户名限制为6~10位自然数,要求使用等价类划分方法设计测试用例。
在任务2中,用户信息主要有登录帐号(6~10位自然数)、真实姓名(大小写的英文字符)、登录密码和确认密码、出生日期(其中有效年份1900~2010)。
任务3中,旅馆房费结算有一定的规则,当游客入住后可根据房间价格、入住天数、入住人是否有会员卡等情况给予折扣结算,房费计算公式为,房费=房间单价×折扣率×入住天数。
折扣率根据住宿人住宿天数(最多30天)、是否有会员卡、入住次数(3次及以下、3次以上)和物品寄存个数的不同有所不同,体现在不同条件下对应的积分不同,10分及10分以上折扣率为7折,10分以下折扣率为9折,具体规则:要求给出所有这些任务的实验步骤以及测试用例,并给出健壮性测试结果。
4、实验总结(1) 请确定任务1和任务2的输入和输出变量。
(2) 对于任务1和任务2,在做健壮性测试用例时,其给出输入变量的无效区间。
(3) 请结合实验谈一下边界值分析测试方法的优劣。
软件测试中的边界值分析和等价类划分
软件测试中的边界值分析和等价类划分在软件测试中,边界值分析和等价类划分是两种常用的测试技术。
它们旨在有效地识别并设计测试用例,以验证软件系统在边界情况和等价类中的行为。
本文将详细介绍边界值分析和等价类划分的概念、原则和实施方法,并探讨它们在软件测试中的重要性和应用。
1. 边界值分析边界值分析是一种测试技术,旨在检查软件系统在输入边界处的行为和处理方式。
边界值是指最大值和最小值,以及这些值与其他值之间的边界。
边界值通常是导致错误和故障的主要原因之一,因为在边界处的处理可能与系统的其他部分有所不同。
边界值分析的原则是选择最小和最大的输入值,以及在最小和最大值之间的值作为测试用例。
这些测试用例将覆盖边界情况,并提供对系统在这些边界处的反应的信心。
例如,假设我们在一个银行系统中测试一个输入金额的字段。
该字段的取值范围是0到10000。
边界值分析将选择以下测试用例:- 输入0,测试系统对最小值的处理。
- 输入10000,测试系统对最大值的处理。
- 输入1到9999之间的值(例如5000、100、999),测试系统对边界之间的值的处理。
通过这些测试用例,我们可以验证系统在边界值处的行为,确保它正确处理这些边界情况。
2. 等价类划分等价类划分是一种测试技术,旨在将输入和输出值划分为等效的类别,并选择代表每个等价类的测试用例。
等价类指的是具有相同行为和处理方式的输入和输出值的集合。
等价类划分的原则是将输入和输出值分为有效和无效的等价类。
有效等价类是系统接受的输入和期望的输出,而无效等价类则是系统拒绝的输入和不期望的输出。
例如,假设我们在一个登录系统中测试用户名和密码的输入。
用户名的有效范围是3到12个字符,密码的有效范围是6到16个字符。
等价类划分将选择以下测试用例:- 输入2个字符的用户名,测试系统对无效用户名的处理。
- 输入13个字符的用户名,测试系统对超出有效范围的用户名的处理。
- 输入5个字符的密码,测试系统对有效密码的处理。
二:测试用例设计白皮书--等价类划分方法
测试用例设计白皮书--等价类划分方法一.方法简介1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类:等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
1)有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类与有效等价类的定义恰巧相反。
无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。
因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准:1)完备测试、避免冗余;2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;3)并是整个集合:完备性;4)子集互不相交:保证一种形式的无冗余性;5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
4.划分等价类的方法1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
如:输入值是学生成绩,范围是0~100;2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
测试用例设计方法——等价类划分法
测试⽤例设计⽅法——等价类划分法等价类划分法
等价类的定义:输⼊具有代表性的数据⼦集。
等价类分为:
有效等价类:满⾜需求的
⽆效等价类:不满⾜需求的
等价类设计步骤
1. 明确需求
2. 确定有效和⽆效等价类
有效等价类就是题⽬条件(两端的极值(边界值)要判断、中间随意⼀个值也要判断)
⽆效等价类先划分与条件相反的情况,再找到特殊情况(中⽂、英⽂、符号、空格、空)
编写测试⽤例:对于所有的⽆效等价类,测试⽤例要尽量全覆盖,⼀条测试⽤例尽可能的覆盖所有有效等价类
等价类划分法案例1
QQ账号: 6---10位⾃然数
等价类划分法案例2
某城市电话号码由三部分组成,分别是
地区码:空⽩或是3位数字
前缀:⾮‘0’且⾮‘1’开头的三位数字
后缀:4位数字
例⼦:1232341234
等价类划分法案例3 -⽤户名(昵称)长度为 3-19:以字母开头-登录名称:⾮空
-密码:⾮空
-确认密码:值和密码相同
适⽤范围
适⽤范围:只要存在输⼊的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2008-10-17;修回日期:2009-01-16基金项目:福建省教育科研基金资助项目(JA07133);厦门市科技计划资助项目(3502Z20083025)作者简介:范明红(1976-),女,福建龙岩人,讲师,研究方向为测试技术和嵌入式系统;浦云明,副教授,研究方向为软件测试技术和面向对象分析与设计。
等价类测试与划分研究范明红,浦云明,汪志华(集美大学计算机工程学院,福建厦门361021)摘 要:在研究等价类测试时,可以根据可靠性理论的健壮性和单/多缺陷假设,将等价类划分为弱一般等价类、强一般等价类、弱健壮等价类和强健壮等价类四种,其中弱健壮等价类就是传统软件工程所讨论的等价类测试方法。
等价类测试的数学基础是等价关系和划分,划分保证了等价类测试的完备性和无冗余性。
在分析等价关系时,只要计算出集合上的划分即可。
文中给出了划分的实例,表明了从划分研究等价关系的合理性。
提出了等价类设计的原则和等价类测试用例的设计方法。
关键词:等价关系;等价类;划分;测试用例;软件可靠性中图分类号:TP311 文献标识码:A 文章编号:1673-629X (2009)07-0062-04Study of Equivalence T esting and PartitioningFAN Ming 2hong ,PU Yun 2ming ,WAN G Zhi 2hua(School of Computer Engineering ,Jimei University ,Xiamen 361021,China )Abstract :There are two factors of equivalence class in reliability theory ,one is robustness ,and the other one is single or multiple defects ,these two factors are used in the study of equivalence.The equivalence class is divisible into four types according to these two factors ,which are weak equivalence ,strong equivalence ,weak robust equivalence and strong robust equivalence.The weak robust equivalence is discussed in software engineering.The equivalence relations and partition are the basis of the equivalence testing.Partitioning guarantees the completeness and non -redundancy of equivalence testing.Study on the partitioning based on set is must when study equivalence.The partitioning example is provided in the paper ,and it is available that the equivalence is equal to partitioning.The principle of equivalence testing is provided ,and the test cases of equivalence testing are designed.K ey w ords :equivalence relation ;equivalence classes ;partition ;test case ;software reliability0 引 言等价类测试实现了完备测试和避免冗余。
等价类测试重复边界值测试的两个基本因素,即健壮性和单/多缺陷假设[1]。
可靠性理论的单缺陷假设是边界值分析所基于的关键假设,这种假设认为,失效极少是由两个(或多个)缺陷的同时发生引起的[2],因此使用了最小值、略高于最小值、正常值、略低于最大值和最大值5个输入变量,对于n 个变量的函数,边界值分析会产生4n +1个测试用例。
健壮性测试的主要价值是例外处理的情况,包括输入例外和输出例外,除了边界值分析的5个取值元素,还要采用一个略超过最大值(max+)的取值,以及一个略小于最小值(min -)的取值,共7个取值元素,对于n 个变量的函数,健壮性测试会产生6n +1个测试用例。
最坏情况测试是基于可靠性理论的多缺陷假设,关注了多个变量取极值的情况,对于n 个变量的函数,最坏情况测试是5个元素集合进行笛卡儿积计算,会产生5n 个测试用例,同样地,健壮最坏情况测试是7个元素集合进行笛卡儿积计算,会产生7n 个测试用例[3]。
等价类测试基于等价关系和划分,划分是互不相交的一组子集,这些子集的并是整个集合。
从测试的角度而言,整个集合提供了形式的完备性,互不相交保证形式的无冗余性[4]。
子集是由等价关系决定的,因此,每个子集中的元素都有共同点。
等价类测试的思想是通过每个等价类中一个元素标识测试用例。
广泛选择等价类可以大大降低测试用例之间的冗余,提高功能性测试的效率。
1 等价类在健壮性和单/多缺陷假设下,可以将等价类组合第19卷 第7期2009年7月 计算机技术与发展COMPU TER TECHNOLO GY AND DEV ELOPMEN T Vol.19 No.7J ul. 2009为四种形式:弱一般等价类、强一般等价类、弱健壮等价类和强健壮等价类[5]。
弱与强是基于单/多缺陷假设,一般等价类没有考虑健壮性。
一般软件工程教材中的等价类测试是Myers 和Mosley 等人提出,称为弱健壮等价类测试。
在经典的输入、处理、输出的结构化程序体系中,输入部分占源程序的80%,强调输入及输入数据的检验;输出部分占源程序的20%。
因此,可以划分为基于输入值域的等价类测试和基于输出值域的等价类测试[6],下文仅讨论输入值域的等价类测试。
假设函数F 涉及两个变量x 1和x 2,F 实现为一个程序,变量x 1和x 2的取值范围涉及下列边界区间。
a ≤x 1≤d ,区间为[a ,b ),[b ,c ),[c ,d ]e ≤x 2≤g ,区间为[e ,f ),[f ,g ]其中,x 1的无效值是:x 1<a 或x 1>d ,x 2的无效值是:x 2<e 或x 2>g 。
1.1 弱一般等价类弱一般等价类基于单缺陷假设,使用一个测试用例,尽可能多地覆盖有效等价类中的每个变量区间,也就是一个用例尽可能地覆盖多个区间。
图1中,3个测试用例覆盖了所有有效区间,有效区间为[a ,b ),[b ,c ),[c ,d ],[e ,f )和[f ,g ]。
三个测试用例(用X表示)使用每个等价类中的一个值,覆盖了所有有效等价类。
图1 弱一般等价类测试用例1.2 强一般等价类强一般等价类基于多缺陷假设,需要笛卡尔积的每个元素对应的测试用例。
测试用例X 覆盖所有有效等价类。
由于是多缺陷,每一个格子代表了一个有效等价类,图2中,使用6个测试用例X 覆盖了所有有效等价类。
图2 强一般等价类测试用例“好的”等价类测试的关键是等价关系的选择。
在大多数情况下,等价类测试定义输入定义域的类。
但也可以定义输出值域的等价关系,例如,三角形问题用输出值域定义等价关系是最简单的方法。
1.3 弱健壮等价类也称为传统的等价类测试,弱是考虑单缺陷假设,健壮是因为考虑了无效值,共有4个无效值。
3个测试用例(用X 表示)覆盖有效等价类,另外4个测试用例(用Y 表示)覆盖了4个无效等价类,见图3。
(1)有效输入,使用有效类(区间)的一个值,与弱等价类测试一样;(2)无效输入,测试用例,拥有一个无效值,其余值都是有效的。
图3 弱健壮等价类测试用例健壮等价类测试有如下问题需要考虑:1)规格说明没有定义无效测试用例所预期的输出,测试人员需要定义这些测试用例的输出。
2)强类型语言没有必要考虑无效输入。
1.4 强健壮等价类强是指多缺陷假设,健壮是考虑无效值。
由于是多缺陷,每一个格子代表了一个有效等价类。
图4中,使用6测试用例覆盖了所有有效等价类。
考虑多缺陷和健壮性,共有14个无效值,使用14个测试用例(用Y 表示)覆盖所有无效等价类。
图4 强健壮等价类测试用例2 等价关系与划分等价关系是常用的重要关系,它使我们能对集合的元素分类,例如面积相等、相似、全等。
其分类原则是每个元素仅属于某一类,不同的类之间没有公共元。
因此,输入域等价类划分是将程序的输入域划分为若・36・第7期 范明红等:等价类测试与划分研究干部分,从每个部分中选择代表性数据作为测试用例,这也解决了穷举测试不可能性问题。
定义2.1 设R为定义在集A上的一个关系,若R是自反的、对称的、传递的,则R称为等价关系。
定义2.2 给定集合B,以及B的一组子集A1, A2,…,A n,这些子集是B的一个划分,当且仅当:(1)A1∪A2∪…A n=B,且(2)i<>j]A i∩A j=其中,(1)保证了B的所有元素都在某个子集中;(2)保证B中没有元素在两个子集中。
定理2.1 集A上的一个划分确定了A的元素间的一个等价关系。
证明:设S={S1,S2,…,S m}为集A的一个划分。
定义R:aRb当且仅当a,b在同一分块中。
下面证明R为A上等价关系。
1)因a与a在同一块中,故aRa,即R是自反的。
2)若a,b在同一块中,则b,a也在同一块中,故有aRb,bRa,即R对称。
3)若a与b在同一块中,b与c在同一块中,则必有a与c在同一块中,即aRb,bRc必有aRc,故R传递的。
可见R为A上等价关系。
在定理2.1中,提供了一个使用划分来构造等价关系的方法。
例1 设A={a,b,c,d,e},S={{a,b}, {c},{d,e}}为A的划分,试由S确定A的等价关系R[7]。
解:用如下办法产生一个等价关系。
{a,b}×{a,b}={<a,a>,<a,b>,< b,a>,<b,a>}{c}×{c}={<c,c>}{d,e}×{d,e}={<d,d>,<d,e>,< e,d>,<e,e>}对上面产生的集合求并,即为等价关系R。