您好,欢迎访问三七文档
测试用例设计方法主要内容功能性测试设计结构性测试设计状态转换测试设计OO单元测试设计参考书1.《软件测试(原书第二版)(SoftwareTestingAcraftsman‘sApproachSecondEdition)美PaulC.Jorgensen著韩柯杜旭涛翻译,机械工业出版社2.《软件工程-实践者的研究方法》(SoftwareEngineeringApractitioner‘sApproachFifthEdition)RogerS.Pressman,黄伯素,梅宏翻译,机械工业出版社3.《嵌入式软件测试》(TestingEmbededSoftware)[美]BartBorekman,EdwinNotenboom著,张君施,张思宇,周承平译,电子工业出版社测试用例设计方法概述测试用例设计方法主要分两大类:黑盒测试(功能性测试)和白盒测试(结构性测试),它们使用的测试用例在表现形式上一模一样,都是:(输入1,输入2,…….输入n,预期输出)这输入1,输入2,……..输入n就是程序的输入(可以理解为程序的输入参数,全局变量,触发事件),预期输出可以是程序的输出(可理解为程序的输出参数,返回值,全局变量,输出事件)如右图程序的规格说明(预期行为)和内部结构(决定实际行为)黑盒测试与白盒测试的区别在于,黑盒测试方法通过程序的规格说明来识别测试用例。白盒测试根据程序的内部代码结构(分支,循环,条件)来识别测试用例.见右图图8程序的规格说明(预期行为)和内部结构(决定实际行为)黑盒测试与白盒测试的结合基于黑盒的测试(也就是基于规格说明测试)可能有些程序的内部路径(大多数是些异常处理路径)覆盖不到,往往是这里的代码会使程序表现出大家所不期望的行为(程序异常死机,或隐藏了恶意的代码,如特洛伊木马程序,还有内存泄漏,程序走飞,死循环等等)。所以有必要在黑盒测试结束后,检查一下程序内部的测试覆盖率,对没有覆盖到的路径或代码,根据代码结构信息,再设计一些测试用例覆盖这些没有覆盖到路径或代码,看看程序是否会出现异常的行为。这是我们所倡导的基本的软件单元测试策略。两个示例程序三角形问题NextDate问题三角形问题陈述三角形问题接受三个整数a,b和c作为输入,用做三角形的的边。程序的输出是由这三条边确定的三角形类型:等边三角形,等腰三角形,不等边三角形或非三角形。NextDate问题NextDate是一个有三个变量(月份,日期和年)的函数。函数返回输入日期后面的那个日期。变量月份,日期和年都具有整数值,且满足下列条件:C1:1=月份=12C2:1=日期=31C3:1812=年=2012如果任意一个条件失败,则NextDate会出示一个消息,指示相应的变量超出范围功能性测试设计边界值测试等价类测试决策表测试边界值测试任何程序都可以看做是一个函数,程序的输入构成函数的定义域,程序的输出构成函数的值域,输入定义域测试是最著名的功能性测试手段,它的重点是在输入定义域边界值分析健壮性测试最坏情况测试特殊值测试边界值分析大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。针对各种边界情况设计测试用例,可以查出更多的错误。边界值分析的基本思想是使用在最小值,略高于最小值,正常值,略低于最大值和最大值处取输入变量值边界值分析基于单缺陷假设:失效极少是由两个(或多个)参数同时取某一特定值引起的,基本是由单变量取某一特定值引起的.边界值测试用例的获得:通过所有变量取正常值,只有一个变量取边界值。x1nom,x2min,x1nom,x2min+,x1nom,x2nom……x2nom,x1max共9个测试用例变量是离散有界值都可以用边界值分析,但逻辑布尔量不适用(如电话号码)X2abdc两变量函数边界值分析测试用例X1边界值分析举例用例abc预期输出11001001等腰三角形21001002等腰三角形3100100100等边三角形4100100199等腰三角形5100100200非三角形61001100等腰三角形71002100等腰三角形8100100100等边三角形9100199100等腰三角形10100200100非三角形111100100等腰三角形122100100等腰三角形13100100100等边三角形14199100100等腰三角形15200100100非三角形在描述问题时,关于三角形的边,除了说明是整数外,没有给出其他条件.显然,低端边界都是1.我们任意取200做为高端边界,下表给出使用这些定义域产生的边界测试用例.健壮性测试健壮性测试是边界值分析的一种简单扩展:除了变量的五个边界值分析取值,还要通过采用一个略超过最大值(max+)的取值,和一个略小于最小值(min-)的取值如果程序执行显式的范围检查并适用例外处理机制解决“健壮值”问题,必须选择健壮性测试X2abdc两变量函数健壮性测试用例X1最坏情况测试最坏情况测试拒绝单缺陷假设,采用多缺陷假设:某些失效(Failure)是由两个或多个参数同时取某些特定值引起的.对每个变量首先进行包含最小值,略高于最小值,正常值,略低于最大值,最大值五元素测试然后对这集合进行笛卡尔儿积计算,生成测试用例X1abcb两变量函数最坏情况测试用例笛卡尔积两个集合A和B的笛卡尔积,是集合A×B={x,y;xЄA^YєB}例1:集合A={1,2,3}集合B={w,x,y,z}A和B的笛卡尔积是集合A×B={1,w,1,x,1,y,1,z,2,w,2,x,2,y,2,z,3,w,3,x,3,y,3,z}例2:一个更直观的例子:x轴上的点与y轴上的点的笛卡尔积是整个平面上所有点的集合。最坏情况测试举例我们仍然以三角形程序举例来说明最坏情况测试392100199等腰三角形402100200不等边三角形4121991非三角形4221992非三角形432199100非三角形442199199不等边三角形452199200等腰三角形4622001非三角形4722002非三角形482200100等腰三角形492200199非三角形502200200非三角形5110011非三角形5210012非三角形531001100等腰三角形541001199非三角形特殊值测试当测试人员适用其领域知识,适用类似程序的经验以及关于“软点”信息开发测试用例时,就会出现特殊值测试,就是不使用测试方针,只使用“最佳工程判断”特殊值测试是高度主观性的,但是所产生的测试用例集合,常常比我们已经研究过的其他方法生成的测试集合,更能有效地发现缺陷边界值测试总结除了特殊值测试,基于函数(程序)输入定义域的测试方法是所有测试方法中最基本的,这些测试方法都有一种假设:即输入变量是真正独立的,如果不能保证这种假设,就不能产生令人非常满意的测试用例(如NextDate中生成1912年2月31日)这些方法还有两方面的区别:正常值和健壮值,单缺陷和多缺陷假设等价类测试使用等价类作为功能性测试的基础有两个动机:1.我们希望进行完备的测试2.同时又希望避免冗余等价类测试重复边界值测试的两个决定因素:健壮性和单/多缺陷假设等价类的重要问题是它们构成集合的划分,其中划分是指互不相交的一组子集,子集的元素都有一些共同的特点等价类测试的思想就是通过每个等价类中的一个元素代表整个等价类元素集合,来标识测试用例。等价类测试的关键就是选择类的等价关系。示例函数我们讨论一个具有两个变量x1,x2的函数F其中:1.a=x1=d,区间为[a,b),[b,c),[c,d]2.e=x2=g,区间为[e,f),[f,g]X1和x2的无效值是:x1a,x1d,和X2e,X2g弱一般等价类测试弱一般等价类测试:测试用例中每个参数等价类(区间)的都被遍历到注意单缺陷假设的作用,弱一般等价类测试的测试用例的个数等于max(参数1等价类个数,参数2等价类个数……参数n的等价类个数)X2abfe弱一般等价类测试用例CdgX1强一般等价类强一般等价类测试基于多缺陷假设,因此测试用例的个数等于各个参数等价类个数的乘积。X2abfe弱一般等价类测试用例CdgX1弱健壮等价类测试这种测试的名称显然与直觉矛盾,而且自相矛盾,怎么既弱而且又健壮?健壮是考虑了无效值弱是有单缺陷假设1.对于有效输入,使用等价类的一个值2.对于无效输入,测试用例将拥有一个无效值X2abfe弱健壮等价类测试用例CdgX1强健壮等价类测试这种测试名称既不与直觉矛盾,也不自相矛盾,只是觉得有些冗余健壮是指要考虑无效指强是指多缺陷假设我们从所有等价类的笛卡尔积中获得测试用例X2abfe强健壮等价类测试用例CdgX1三角形问题的等价类测试用例在描述问题时,我们曾经提到过有四种可能出现的输出:非三角形,不等边三角形,等腰三角形和等边三角形。可以使用这些输出标识如下所示的输出(值域)有效等价类(无效等价类没有列出):R1={a,b,c:有三条边a,b和c的等边三角形}R2={a,b,c:有三条边a,b和c的等腰三角形}R3={a,b,c:有三条边a,b和c的不等边三角形}R4={a,b,c:三条边a,b和c不构成三角形}一般等价类,弱健壮,强健壮等价类举例测试用例abc预期输出WN1555等边三角形WN2223等腰三角形WN3345不等边三角形WN4412非三角形测试用例abc预期输出WR1-155a取值不在所允许的取值范围内WR25-15b取值不在所允许的取值范围内WR355-1c取值不在所允许的取值范围内WR420155a取值不在所允许的取值范围内WR552015b取值不在所允许的取值范围内WR655201c取值不在所允许的取值范围内测试用例abc预期输出SR1-155a取值不在所允许的取值范围内SR25-15b取值不在所允许的取值范围内SR355-1c取值不在所允许的取值范围内SR4-1-15a,b取值不在所允许的取值范围内SR55-1-1b,c取值不在所允许的取值范围内SR6-15-1a,c取值不在所允许的取值范围内SR7-1-1-1a,b,c取值不在所允许的取值范围内弱一般等价类测试用例额外的弱健壮等价类测试用例额外的强健壮等价类测试用例NextDate问题的等价类测试NextDate是一个三变量函数,即月份,日期和年,这些变量的有效值区间定义如下:M1={月份:1≤月份≤12}D1={日期:1≤日期≤31}Y1={年:1812≤年≤2012}无效等价类M2={月份:月份〈1}M3={月份:月份〉12}D2={日期:日期〈1}D3={日期:日期〉31}Y2={年:年〈1812}Y3={年:年〉2012}NextDate问题的等价类测试用例测试用例月份日期年预期输出WN161519121912年6月16日测试用例月份日期年预期输出WR161519121912年6月16日WR2-1151912月份取值不在所允许的取值范围内WR31351912月份取值不在所允许的取值范围内WR46-11912日期取值不在所允许的取值范围内WR56321912日期取值不在所允许的取值范围内WR66151811年取值不在所允许的取值范围内WR66152013年份取值不在所允许的取值范围内测试用例月份日期年预期输出SR1-1151912月份取值不在所允许的取值范围内SR26-11912日期取值不在所允许的取值范围内SR36151811年取值不在所允许的取值范围内SR4-1-11912月份,日期取值不在所允许的取值范围内SR56-11811日期,年份取值不在所允许的取值范围内SR6-1151811月份,年份取值不在所允许的取值范围内SR7-1-11811年,月日取值不在所允许的取值范围内弱一般等价类测试用例额外的弱健壮等价类测试用例额外的强健壮等价类测试用例NextDate问题的等价类测试(第
本文标题:测试用例设计方法
链接地址:https://www.777doc.com/doc-3357760 .html