版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
测试用例设计基本方法1第1页,课件共117页,创作于2023年2月测试用例设计基本思想场景分析法3测试用例设计概述12分类推理法42第2页,课件共117页,创作于2023年2月等价类分法边界值法7元素分析法56随机数据法83第3页,课件共117页,创作于2023年2月因果图法其他一些测试用例设计方法判定表法910小结11124第4页,课件共117页,创作于2023年2月测试用例设计概述15第5页,课件共117页,创作于2023年2月为什么需要测试用例(1)如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。测试用例是测试工作的指导,是软件测试的必须遵守的准则,更是软件测试质量稳定的根本保障。软件测试是有组织性、步骤性和计划性的,为了能将软件测试的行为转换为可管理的、具体量化的模式,需要创建和维护测试用例6第6页,课件共117页,创作于2023年2月测试用例的作用重要参考依据提高测试质量有效性复用性客观性可评估性和可管理性知识传递7第7页,课件共117页,创作于2023年2月测试用例设计方法的重要意义软件质量的好坏很大程度上取决于测试用例的质量和数量测试用例设计方法也可以用于非软件领域的测试测试用例设计方法是一种分析问题的方法测试驱动开发对开发人员也是一种挑战,不懂测试用例设计就不能算懂开发。8第8页,课件共117页,创作于2023年2月测试用例数和软件规模的关系测试用例数软件规模测试用例数与被测软件的质量通常有一定的比例关系,测试用例数与被测软件大小有关,与测试级别有关(单元、集成、系统),与要求有关(一般、高可靠)。9第9页,课件共117页,创作于2023年2月缺陷空间测试空间上所有可能发生的缺陷构成的集合就是缺陷空间。if(a==b)//a、b为布尔变量
{
DoSomething();
}
else
{
returnErrorMsg();
}测试空间={(0,0),(0,1),(1,0),(1,1)}缺陷空间可以接近无限大10第10页,课件共117页,创作于2023年2月测试用例设计基本思想211第11页,课件共117页,创作于2023年2月测试空间寻找原则以测试数据的表现形式为线索寻找测试空间。寻找所有的可变数据外部输入层—在需求中找接口层—在高层设计中找内部实现层—在详细设计和代码中找寻找单个可变数据的测试空间场景分析法、元素分析法和分类推理法分析可变数据的组合关系因果图、判定表法12第12页,课件共117页,创作于2023年2月缺陷空间反向设计原则先找缺陷空间,据此构造测试数据,设计出测试用例。只寻找缺陷空间中那些发生概率较高的缺陷。设计方法:分类推理元素分析边界值状态图错误猜测13第13页,课件共117页,创作于2023年2月测试空间划分原则找全测试空间和设计空间后,开始测试用例设计,也就是从测试空间中选取若干个可测数据。以可测数据揭示缺陷的概率为依据选取的测试数据通过测试后其他测试数据也通过测试有一个概率,这个概率越大表明选取的测试数据越有效。这个概率称为可测数据子集的选取概率,也是测试数据揭示缺陷的概率。14第14页,课件共117页,创作于2023年2月数据划分的例子给定一个概率0.95,从可测数据中划分出一个数据子集{1,2,3,4,5},如果5通过测试,则1,2,3,4通过测试的概率大于等于0.95。注意:使用测试空间划分原则的前提—需要知道有哪些可能的缺陷,如果对可能发生的缺陷一无所知,是无法对测试空间进行划分的。实际往往只知道一些发生概率比较大的缺陷,因此测试用例设计往往是建立在对测试缺陷集合的一个子集上的测试空间划分。15第15页,课件共117页,创作于2023年2月测试用例的优化问题如何划分测试空间才能以尽量少的子集覆盖整个测试空间属于测试用例的优化问题。(参考)16第16页,课件共117页,创作于2023年2月测试用例的评价指标可测数据通过测试:测试结果与期望的结果一致。假设某个可测数据有可能因为n个可能的缺陷而不能通过测试,而这n个缺陷中每个缺陷发生的概率为P(i),那么
可测数据不能通过测试的概率=
可测数据通过测试的概率=1-当可测数据通过测试的概率大于选取概率时,就认为可以通过测试17第17页,课件共117页,创作于2023年2月测试空间覆盖率18第18页,课件共117页,创作于2023年2月场景分析法319第19页,课件共117页,创作于2023年2月分析软件应用的场景,从用户的角度出发,从场景的角度来设计测试用例,是一种面向用户的测试用例设计方法。关心用户做什么,而不是关心产品做什么优点:实用性强,有效,设计出来的用例有价值缺点:可能使用的场景不一定能对事件系列进行全面的分析,设计出来的用例不完整。20第20页,课件共117页,创作于2023年2月基本概念找出所有会影响结果的环境因素找出场景中可能发生的事件序列将环境因素和事件序列进行组合并进行分析推导,得到不同的场景。意会知识(参见文献阅读)21第21页,课件共117页,创作于2023年2月显性场景猎人、树、鸟参见文献阅读(场景分析法)22第22页,课件共117页,创作于2023年2月过桥问题4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过(人多了桥支撑不住就塌了),
4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?
23第23页,课件共117页,创作于2023年2月过桥问题--可能的事件序列先过去2个人,其中一个拿手电筒(1分钟和2分钟)1个人拿手电筒返回(1分钟)再过去2个人,其中一个拿手电筒(5分钟和10分钟)1个人拿手电筒返回(2分钟)拿手电筒返回的人和剩下的那个人一起过桥(1分钟和2分钟)24第24页,课件共117页,创作于2023年2月过桥问题--可能的事件序列先过去2个人,其中一个拿手电筒(1分钟和2分钟)已过桥的人站在桥头拿手电筒照亮桥。剩下2个人一起过去(5分钟和10分钟)25第25页,课件共117页,创作于2023年2月过桥问题—环境因素4个人,桥、手电筒、夜晚人:过桥的速度是一定的,所以只有他们的过桥行为会对总的过桥时间有影响。人:有力学知识人:4人的情况有所不同(年龄、身体)桥:长度和承重手电筒:照射距离和时间夜晚:光线26第26页,课件共117页,创作于2023年2月场景分析过程由显性的环境因素分析出对结果有影响的因素后,就可以设计具体的过桥时的显性场景了。27第27页,课件共117页,创作于2023年2月过桥具体场景环境4个人为一家人,一对夫妻、一个老人和小孩,丈夫过桥1分钟,妻子过桥2分钟,小孩10分钟,老人5分钟。当时天上一片漆黑,在过桥的过程中没有手电筒无法看清桥面。手电筒照10米远,维持1小时左右。桥的长度60米,最多可以让2个人同时通过。28第28页,课件共117页,创作于2023年2月过桥具体事件序列丈夫和妻子先过到桥那边去(2分钟);丈夫拿手电筒回来(1分钟);丈夫背小孩一起过去(2分钟);丈夫拿手电筒再回来(1分钟);丈夫回来扶老人一起过去(5分钟)29第29页,课件共117页,创作于2023年2月隐性场景分析手电筒会不会掉到桥下或摔坏?过桥的过程中是否有山洪爆发或水突然涨高将桥淹没?会不会在过桥过程中有野兽嚎叫等因素影响他们的过桥速度?桥下面是什么?是水溪还是无水的沟谷还是很深的悬崖?隐性的环境因素和隐性事件很可能是一个无穷大的集合,在其中找出有用的场景是一个极大的挑战。分析隐性场景的几种方法:影响因素分析法、异常情况分析法、空间分解分析法和时间序列分析法。30第30页,课件共117页,创作于2023年2月影响因素分析法列出场景中的事件的结果;分析事件结果产生的原因;从原因中找出隐性环境。过桥问题中,事件主要是4个人过桥,结果是过桥花费时间。影响结果的因素主要有:过桥的方式、过桥的速度、过桥的过程。31第31页,课件共117页,创作于2023年2月异常情况分析法分析现有场景中的异常情况和异常事件。异常情况包括已有环境中的异常和外部环境中的异常。要点:找出那些概率比较大的异常。32第32页,课件共117页,创作于2023年2月空间分解分析法空间是一个抽象的概念,软件中有许多形式,如数据空间、内存空间、磁盘空间等。将空间分解成一个个更小的空间块,然后分析这些小的空间块中环境和事件。33第33页,课件共117页,创作于2023年2月时间序列分析法分析现有场景中事件的发生从之前到之后的各个时间序列的场景。过桥之前、过桥期间、过桥之后34第34页,课件共117页,创作于2023年2月分类推理法435第35页,课件共117页,创作于2023年2月分类推理法步骤找一个可以对软件子功能进行覆盖的集合,这个集合可以是输入域、输出域、场景、内部数据等;对找到的集合分类,可按照边界值、等价类、场景、数据特点。元素属性等各种分法进行分类;对已有的分类再进行分类直到不需要再分类为止。36第36页,课件共117页,创作于2023年2月常见的分类方法场景、边界、等价类、数据特点、元素属性。场景优先考虑。分类推理是一种寻找缺陷空间的方法。37第37页,课件共117页,创作于2023年2月猎人开枪打鸟的分类推理(从输出域考虑)由于树上原来有10只鸟,在没有其他鸟飞来的情况下(这是最普遍的正常情况),开枪后,树上的鸟最多不会超过10只,因此最终可能的结果是0~10只,这就得到一个可以对软件功能进行覆盖的集合。38第38页,课件共117页,创作于2023年2月剩0只鸟在树上1只死鸟掉到地上,其他全部飞走了剩0只鸟在树上鸟全部飞走了剩0只鸟在树上推理:鸟是如何离开树的?一种情况是飞走了,另外也可能是死掉了掉到地上。因此,这种情况下,使用的枪是有声的,鸟被吓飞了,打死的鸟都掉到地上。39第39页,课件共117页,创作于2023年2月剩1只鸟在树上剩1只鸟在树上活鸟死鸟被猎人打伤本来有伤未受伤的鸟受伤的鸟不会飞的鸟…单发子弹穿过打死的鸟打伤这只鸟霰弹枪会飞的鸟残疾无飞行能力被限制自由的鸟幼鸟病鸟拔了毛的鸟…40第40页,课件共117页,创作于2023年2月命令行程序(从输入着手推理)dir命令,只显示当前目录下的文件,不带参数时将当前目录下的文件全部显示出来,当带一个参数/p执行分页显示。dir和/p都是小写字符。41第41页,课件共117页,创作于2023年2月
dir后面有若干个空格或TAB字符dir后面无任何字符dir前面无任何字符dir前面有若干个空格或TAB字符同dir后面有若干个空格或TAB字符及参数/p分类一样参数/p后面无任何字符参数/p后面只有若干个空格或TAB字符dir前面有其他非空格或非TAB字符dir中有大写字符dir后面有非/p字符dir后面有空格或TAB字符及参数/pdir后面直接接参数/p(中间无空格)\p-p//p大写/P参数/p后面有若干个空格或TAB字符,再接其他字符参数/p后面直接接其他
非空格和TAB的字符和/p完全不同的字符和/p相近的易混淆字符同dir前面有若干个空格或TAB字符的分类一样42第42页,课件共117页,创作于2023年2月二分查找的分类推理分类推理法还可以按多种方法进行分类,然后再进行分类组合叠加得到最终分类。43第43页,课件共117页,创作于2023年2月二分查找二分查找又称折半查找,它是一种效率较高的查找方法【二分查找要求】:1.必须采用顺序存储结构2.必须按关键字大小有序排列。【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。【算法复杂度】假设数组长度为n,其算法复杂度为o(log(n))44第44页,课件共117页,创作于2023年2月二分查找实现的伪代码(假定升序排列)left=0,right=n-1 //t是查找关键字,数组x[]while(left<=right) //保证数组非空
mid=(left+right)/2casex[mid]<t:left=mid+1;x[mid]=t:p=mid;break; //x[p]=t,找到
x[mid]>t:right=mid-1;return-1;45第45页,课件共117页,创作于2023年2月第一个正确的程序intsearch(intarray[],intn,intv){intleft,right,middle;left=0,right=n-1;while(left<=right){middle=(left+right)/2;if(array[middle]>v){right=middle;}
elseif(array[middle]<v){left=middle;}else{returnmiddle;}}return-1;}46第46页,课件共117页,创作于2023年2月边界错误造成的问题二分查找算法的边界,一般来说分两种情况,一种是左闭右开区间,类似于[left,right),一种是左闭右闭区间,类似于[left,right].需要注意的是,循环体外的初始化条件,与循环体内的迭代步骤,都必须遵守一致的区间规则,也就是说,如果循环体初始化时,是以左闭右开区间为边界的,那么循环体内部的迭代也应该如此.如果两者不一致,会造成程序的错误。47第47页,课件共117页,创作于2023年2月第一个错误的二分查找算法intsearch_bad(intarray[],intn,intv){intleft,right,middle;left=0,right=n;while(left<right){middle=(left+right)/2;if(array[middle]>v){right=middle-1;}
elseif(array[middle]<v){left=middle+1;}else{returnmiddle;}}return-1;}48第48页,课件共117页,创作于2023年2月第一个正确的程序intsearch(intarray[],intn,intv){intleft,right,middle;left=0,right=n-1;while(left<=right){middle=(left+right)/2;if(array[middle]>v){right=middle;}
elseif(array[middle]<v){left=middle;}else{returnmiddle;}}return-1;}49第49页,课件共117页,创作于2023年2月二分查找算法的边界二分查找算法的边界,一般来说分两种情况,一种是左闭右开区间,类似于[left,right),一种是左闭右闭区间,类似于[left,right].需要注意的是,循环体外的初始化条件,与循环体内的迭代步骤,都必须遵守一致的区间规则,也就是说,如果循环体初始化时,是以左闭右开区间为边界的,那么循环体内部的迭代也应该如此.如果两者不一致,会造成程序的错误.50第50页,课件共117页,创作于2023年2月第二个错误的程序(左闭右开)intsearch_bad(intarray[],intn,intv){intleft,right,middle;left=0,right=n;while(left<right){middle=(left+right)/2;if(array[middle]>v){right=middle-1;}
elseif(array[middle]<v){left=middle+1;}else{returnmiddle;}}return-1;}在循环初始化的时候,初始化right=n,也就是采用的是左闭右开区间,而当满足array[middle]>v的条件是,v如果存在的话应该在[left,middle)区间中,但是这里却把right赋值为middle-1了,这样,如果恰巧middle-1就是查找的元素,那么就会找不到这个元素.51第51页,课件共117页,创作于2023年2月第二个正确的程序(左闭右闭)intsearch2(intarray[],intn,intv){intleft,right,middle;left=0,right=n-1;while(left<=right){middle=(left+right)/2;if(array[middle]>v){right=middle-1;}
elseif(array[middle]<v){left=middle+1;}else{returnmiddle;}}return-1;}52第52页,课件共117页,创作于2023年2月第三个正确的程序(左闭右闭)intsearch3(intarray[],intn,intv){intleft,right,middle;left=0,right=n;while(left<right){middle=(left+right)/2;if(array[middle]>v){right=middle;}
elseif(array[middle]<v){left=middle+1;}else{returnmiddle;}}return-1;}53第53页,课件共117页,创作于2023年2月死循环上面的情况还只是把边界的其中一个写错,也就是右边的边界值写错,如果两者同时都写错的话,可能会造成死循环,比如下面的这个程序:54第54页,课件共117页,创作于2023年2月死循环intsearch_bad2(intarray[],intn,intv){intleft,right,middle;left=0,right=n-1;while(left<=right){middle=(left+right)/2;if(array[middle]>v){right=middle;}
elseif(array[middle]<v){left=middle;}else{returnmiddle;}}return-1;}这个程序采用的是左闭右闭的区间.但是,当array[middle]>v的时候,那么下一次查找的区间应该为[middle+1,right],而这里变成了[middle,right];当array[middle]<v的时候,那么下一次查找的区间应该为[left,middle-1],而这里变成了[left,middle].两个边界的选择都出现了问题,因此,有可能出现某次查找时始终在这两个范围中轮换,造成了程序的死循环.55第55页,课件共117页,创作于2023年2月溢出在循环体内,计算中间位置的时候,使用的是这个表达式:middle=(left+right)/2;假如,left与right之和超过了所在类型的表示范围的话,那么middle就不会得到正确的值.所以,更稳妥的做法应该是这样的:middle=left+(right-left)/2;
56第56页,课件共117页,创作于2023年2月正确,精确且效率高的二分查找算法intsearch4(intarray[],intn,intv){intleft,right,middle;left=-1,right=n;while(left+1!=right){middle=left+(right-left)/2;if(array[middle]<v){left=middle;}
else{right=middle;}}if(right>=n||array[right]!=v){right=-1;}returnright;}57第57页,课件共117页,创作于2023年2月二分查找的分类推理两个输入域:有序表和要查找的数据(可变数据)。58第58页,课件共117页,创作于2023年2月有序表分类(1级)有序表的个数作为分类的出发点,有序表中可能有0,1,2,3,…个数据。有序表有4个或以上数据;有序表有3个数据;有序表有2个数据;有序表有1个数据;有序表有0个数据。59第59页,课件共117页,创作于2023年2月有序表分类(2级)有序表是一个有顺序的表,可以根据数据特点再分类。以3个数据为例:3个数据都相等;3个数据都不相等;第1、2个数据相等;第2、3个数据相等。有序表有0、1、2、4或4个以上数据均可按照类似的方法进行再分类。60第60页,课件共117页,创作于2023年2月要查找的数据分类查找数据等于有序表中最大元素查找的数据在有序表中查找的数据为空查找的数据不在有序表中查找数据等于有序表中最小元素查找数据等于有序表中某个元素查找数据介于有序表两个相邻元素元素之间查找数据大于有序表中最大元素查找数据小于有序表中最小元素61第61页,课件共117页,创作于2023年2月分类的组合3个数据都相等有序表中有3个数据查找数据等于有序表中最大元素查找的数据在有序表中查找的数据为空查找的数据不在有序表中查找数据等于有序表中最小元素查找数据等于有序表中某个元素查找数据介于有序表两个相邻元素元素之间查找数据大于有序表中最大元素查找数据小于有序表中最小元素3个数据都不相等第2、3个数据相等第1、2个数据相等同3个数据相等的分类一样…同3个数据相等的分类一样…同3个数据相等的分类一样…62第62页,课件共117页,创作于2023年2月组合的化简3个数据都相等查找数据等于有序表中最大元素查找的数据在有序表中查找的数据为空查找的数据不在有序表中查找数据等于有序表中最小元素查找数据等于有序表中某个元素查找数据介于有序表两个相邻元素元素之间查找数据大于有序表中最大元素查找数据小于有序表中最小元素查找数据为空并非所有情况下都要测,只要在其他分类中处理过,也可以删去。63第63页,课件共117页,创作于2023年2月二分查找的测试用例即使不考虑4个以上数据以及3个数据在有2个数据相等情况下的分类,最终的分类也有20多种,每种分类至少要设计一个测试用例,总共需要20多种。根据多种分类最后进行组合也可以使用因果图和判定表。64第64页,课件共117页,创作于2023年2月分类推理法的原则覆盖原则:每次分类时,所有子分类集合的并集应该完整覆盖原分类的集合。随机分类:可以任意按照一种对结果产生影响的情况进行分类,没有顺序之分。65第65页,课件共117页,创作于2023年2月元素分析法566第66页,课件共117页,创作于2023年2月元素分析法的基本概念 对测试对象的各个元素的属性、范围、特点等进行分析,找出测试空间和缺陷空间。元素分析法提供一个设计测试用例的框架,是一种较为系统的测试用例设计方法。步骤:找出测试对象中的各个元素;对各个元素的属性和特点进行单独分析得到测试空间和缺陷空间;对各个元素的组合情况进行分析。67第67页,课件共117页,创作于2023年2月显性元素分析测试iGoogle系统登录功能可以设计多少测试用例?测试用例(testcase)是可以被独立执行的一个过程,这个过程是一个最小的测试实体,不能再被分解。测试用例也就是为了某个测试点而设计的测试操作过程序列、条件、期望结果及其相关数据的一个特定的集合。68第68页,课件共117页,创作于2023年2月测试点的显性元素分析这个对话框有以下一些显性的元素可以从规格说明书中找到:邮件地址输入栏密码栏保存信息选项勾选栏登录按钮69第69页,课件共117页,创作于2023年2月从元素分析和组合得到的测试点如果输入正确的用户邮件地址,而密码输错,登录失败。如果输入正确的用户邮件地址,不输密码,登录失败。如果输入错误的用户邮件地址,而密码正确,登录失败。用户邮件地址和密码都不输,登录失败。用户邮件地址含有特殊字符,如“/'$_@~",是否可以登录?密码输错3次,情况怎样?…70第70页,课件共117页,创作于2023年2月如果输入正确的用户邮件地址,而密码输错,登录失败71第71页,课件共117页,创作于2023年2月测试用例要描述什么?Why——为什么而测?What——测什么?Where——在哪里测?When——什么时候开始测?Which——哪些输入数据?How——如何操作软件?5W1H72第72页,课件共117页,创作于2023年2月测试用例的元素73第73页,课件共117页,创作于2023年2月单个测试用例的质量要求具有可操作性具备所需的各项信息各项信息描述准确、清楚测试目标针对性强验证点完备,而且没有太多的验证点没有太多的操作步骤,例如不超过7步符合正常业务惯例。74第74页,课件共117页,创作于2023年2月整体测试用例的质量要求覆盖率。依据特定的测试目标的要求,尽可能覆盖所有的测试范围、功能特性和代码。易用性。测试用例的设计思路清晰、组织结构层次合理,测试用例操作的连贯性好,使单个模块的测试用例执行顺畅。易维护性。应该以很少的时间来完成测试测试用例的维护工作,包括添加、修改和删除测试用例。易用性和易读性,也有助于易维护性。粒度适中。既能覆盖各个特定的场景,保证测试的效率;又能处理好不同数据输入的测试要求,提高测试用例的可维护性。75第75页,课件共117页,创作于2023年2月测试用例书写标准标志符(Identification)测试项(TestItems)测试环境要求输入标准(InputCriteria)输出标准(OutputCriteria)测试用例之间的关联76第76页,课件共117页,创作于2023年2月77第77页,课件共117页,创作于2023年2月良好测试用例的特征可以最大程度地找出软件隐藏的缺陷可以最高效率的找出软件缺陷可以最大程度地满足测试覆盖要求既不过分复杂、也不能过分简单使软件缺陷的表现可以清楚的判定测试用例包含期望的正确的结果待查的输出结果或文件必须尽量简单明了不包含重复的测试用例测试用例内容清晰、格式一致、分类组织78第78页,课件共117页,创作于2023年2月如何设计出高质量的测试用例客户需求导向的设计思路责任到人
灵活的设计方法
测试用例设计不能局限于输入数据
尽量避免含糊的、冗长的或复杂的测试用例尽量将具有相类似功能的测试用例抽象并归类79第79页,课件共117页,创作于2023年2月隐性元素(规格中未提及的元素)分析(11.3)使用者视力听力运动能力认知和语言障碍操作系统硬件键盘鼠标显示器80第80页,课件共117页,创作于2023年2月单元测试中的元素分析显性隐性输入参数输出参数函数返回值全局数据外部数据通信数据未打桩的函数网络数据消息信号量静态变量全局变量成员变量用户输入文件数据数据库数据共享变量共享内存事件81第81页,课件共117页,创作于2023年2月等价类分法682第82页,课件共117页,创作于2023年2月等价类分法的基本概念将测试空间划分为若干个子集,并且满足每个子集中的任一组测试数据对揭露程序中的缺陷都是等价的,这些子集就叫做等价类或等价子集。83第83页,课件共117页,创作于2023年2月
等价类划分等价类划分法是一种典型的黑盒测试方法,它完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。84第84页,课件共117页,创作于2023年2月等价类划分方法所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并便是整个输入域。1.划分等价类(1)有效等价类检验程序是否实现了规格说明预先规定的功能和性能。(2)无效等价类检查软件功能和性能的实现是否有不符合规格说明要求的地方。85第85页,课件共117页,创作于2023年2月2.2.1等价类划分方法2.常用的等价类划分原则(1)按区间划分(2)按数值划分(3)按数值集合划分(4)按限制条件或规则划分(5)细分等价类86第86页,课件共117页,创作于2023年2月等价类表在确立了等价类之后,可按表的形式列出所有划分出的等价类表:
表
等价类表同样,也可按照输出条件,将输出域划分为若干个等价类。输入条件有效等价类无效等价类87第87页,课件共117页,创作于2023年2月等价类划分测试用例设计在设计测试用例时应同时考虑有效等价类和无效等价类测试用例的设计。根据等价类表设计测试用例,具体步骤如下:(1)为每个等价类规定一个唯一的编号。(2)设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。(3)设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了所有的无效等价类。88第88页,课件共117页,创作于2023年2月三角形问题的等价类测试三角形问题是软件测试文献中使用最广泛的一个例子。输入三个整数a、b和c分别作为三角形的3条边,通过程序判断由这3条边构成的三角形类型是:等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。89第89页,课件共117页,创作于2023年2月
三角形问题描述
输入3个整数a、b和c分别作为三角形的三条边,要求a、b和c必须满足以下条件:Con1.1≤a≤10Con2.1≤b≤100Con3.1≤c≤100
Con4.a<b+cCon5.b<a+c
Con6.c<a+b如果a、b和c满足Con1、Con2和Con3,则输出为4种情况之一(互斥):①.如果不满足条件Con4、Con5和Con6中有一个,则程序输出为“非三角形”。②.如果三条边相等,则程序输出为“等边三角形”。③.如果恰好有两条边相等,则程序输出为“等腰三角形”。④.如果三条边都不相等,则程序输出为“一般三角形”。90第90页,课件共117页,创作于2023年2月三角型问题的等价类输入3个整数有效等价类编号无效等价类编号整数1一边为非整数两边为非整数三边为非整数4563个数2只有一条边只有两条边多于三条边7891≤a≤1001≤b≤1001≤c≤1003一边为0两边为0三边为0101112一边<0两边<0三边<0131415一边>100两边>100三边>10016171891第91页,课件共117页,创作于2023年2月三角形的有效测试例测试例Test1-(3,4,5)便可覆盖有效等价类92第92页,课件共117页,创作于2023年2月三角形问题覆盖无效等价类的测试用例测试用例输入a、b、c期望输出覆盖等价类test2test3test4test5test6test7test8test9test10test11test12test13test14test15test161.5,4,53.5,2.5,52.5,4.5,5.534,52,3,4,53,0,80,6,00,0,0-3,4,62,-7,-5-3,-5,-7101,4,83,101,101101,101,101提示“请输入1~100”之间的整数提示“请输入1~100”之间的整数提示“请输入1~100”之间的整数提示“请输入三条边长”提示“请输入三条边长”提示“请输入三条边长”提示“请输入边长不能为0”提示“请输入边长不能为0”提示“请输入边长不能为0”提示“请输入边长不能为负”提示“请输入边长不能为负”提示“请输入边长不能为负”提示“请输入1到100之间的整数”提示“请输入1到100之间的整数”提示“请输入1到100之间的整数”45678910111213141516171893第93页,课件共117页,创作于2023年2月2.2.2等价类划分法的测试运用2.保险公司人寿保险保费计算程序的等价类测试【例2.2】某保险公司人寿保险的保费计算方式为:
保费=投保额×保险费率其中,保险费率根据年龄、性别、婚姻状况和抚养人数的不同而有所不同,体现在不同年龄、性别、婚姻状况和抚养人数,点数设定不同,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则见表2.5。年龄性别婚姻状况抚养人数20~3940~59其它MF已婚未婚1人扣0.5点,最多扣3点6点4点2点4点3点3点5点94第94页,课件共117页,创作于2023年2月2.2.2等价类划分法的测试运用分析程序规格说明中给出和隐含的对输入数据的要求,可以得出:①年龄:一位或两位非零整数,取值的有效范围为1~99。②性别:一位英文字符,只能取‘M’或’F’值。③婚姻:字符,只能取‘已婚’或‘未婚’。④抚养人数:空白或字符‘无’或一位非零整数(1~9)⑤点数:一位或两位非零整数,取值范围为8~19通过对规格说明输入数据的取值分析,可以得出保险公司人寿保险保费计算程序的等价类。95第95页,课件共117页,创作于2023年2月2.2.2等价类划分法的测试运用等价类测试存在两个问题:
一是规格说明往往没有定义无效测试用例的期望输出应该是什么样的。因此,测试人员需要花费大量时间来定义这些测试用例的期望输出。二是强类型语言没有必要考虑无效输入。传统等价类测试是诸如FORTRAN和COBOL这样的语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学成本会计期末综合提升练习试题附完整答案详解【考点梳理】
- 2026年医院招聘医基儿科专业知识题库及答案详解(名师系列)
- 2026年卫生毒理综合检测模拟卷附答案详解(巩固)
- 2026年应用写作学习通课后章节答案期末考前冲刺练习题库(考试直接用)附答案详解
- 2026年国际商务英语一级练习题测试卷完整参考答案详解
- 2026年车工-通关题库及参考答案详解(基础题)
- 北海2025年北海供电局项目资料员招聘20人笔试历年参考题库附带答案详解(5卷)
- 2026年教育学、教育心理学填空题考前冲刺练习题含答案详解【培优】
- 2026年商务谈判网上通关题库及完整答案详解(全优)
- 2026年教师资格证考前自测高频考点模拟试题及完整答案详解(易错题)
- 201年报考中国民航飞行学院硕士研究生政审表
- 高中综评项目活动设计范文
- 历史文化街区保护规划
- 2023年专利代理人专利法律知识考试试卷及参考答案
- 胆汁淤积性肝病课件
- 美军装备试验人员培养主要做法、特点及借鉴,军事技术论文
- GB/T 26559-2021机械式停车设备分类
- GB/T 19274-2003土工合成材料塑料土工格室
- 通用的决策树算法CARTClassificati课件
- 安全爬梯受力计算正文
- DB37-T 4401-2021养老机构分级护理服务规范
评论
0/150
提交评论