一、等价类划分法
该方法是将系统的输入域划分为若干部分,然后从每个部分选取少数代表性数据进行测试,这样可以避免穷举法产生的大量用例。
等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露软件中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。
有效等价类:是指对于系统的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可以验证程序是否实现了规格说明中所规定的功能和性能。
无效等价类:是指对于系统的规格说明来说是不合理或无意义的输入数据所构成的集合。
设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具备有更高的可靠性。
1、划分等价类
基于特性测试子项所对应的 SRS 片段,可以参考下面几条原则:
1.在输入条件规定了取值范围或值的个数的情况。
例子:在1<x<5中。一个有效等价类:1<x<5,两个无效等价类:x>=5 和 x<=1。
2.在输入条件规定了输入值的集合或者规定了必定如何的条件的情况下,可确立一个有效等价类和一个无效等价类。
例子:规定字段”星期”是输入星期几。该输入条件一个有效等价类是输入的值属于从星期一到星期日的集合,一个无效等价类是不属于星期一到星期日的其他值。
3.在输入条件是一个布尔量的情况。
例子:性别,如果规定输入“男”为有效,则一个有效等价类:“男”,一个无效等价类:“女”。
4.在规定了输入数据的一组值假定 n 个,并且程序要对每一个输入值分别处理的情况下,可确立 n 个有效等价类和一个无效等价类。
例子:PPT的打印效果分为幻灯片加框和幻灯片不加框,则对于打印效果这个输入条件,n (这里 n =2)个有效等价类:幻灯片加框,幻灯片不加框;一个无效等价类:加框和不加框外的其他值。
5.在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类符合规则和若干个无效等价类从不同角度违反规则。
例子:用户名规则:长度 6-16 位,由英文和数字组成,则一个有效等价类:符合长度和字符类型的字符串,如 test123。若干个无效等价类可以包括:违反长度,如test1,test1234567890123456,;违反字符类型,如 test@123,test 123等。
6.在确知已划分的等价类中个元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
例子:
对于学校考试分数及格(100分制)而言,
有效等价类:大于等于 60 分,无效等效类:小于 60 分,
根据学校相关规定对于分数处理方式不同,可以进一步划分:
有效:60-80 合格,80 分以上 优秀
无效:50-59 分 补考,小于 50 分 重修
2、确定初始用例
从划分出的等价类中按以下三个原则设计测试用例:
1.为每一个等价类规定一个唯一的编号。
2.设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
3.设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
例子:
3、实际应用
等价类划分法主要应用在功能测试,性能测试,GUI测试,配置测试等类型中。
性能测试,比如针对 Word 打开文档的时间进行测试,可以考虑用 Word 打开纯文字的文档,打开全是图片的文档,打开全是表格文档,打开文字、图片、表格混合的文档。
GUI 测试,比如针对下图中的文件名编辑框输入回的测试,可以考虑输入文件名长度小于编辑框的长度,输入文件名长度大于编辑框长度,输入英文字母,输入中文汉字,输入的中文汉字在编辑框边沿等等,这就是等价类划分。
配置测试,比如针对网页在不同浏览器上的工作进行测试,通过分析这些浏览器的技术实现,IE、遨游、MyIE 等属于 Trident 内核,可以归为一类;firefox、mozilla 属于 Gecko 内核,归成一类;safari、Chrome 属于 Webkit 内核,归成一类。
常见的能够划分等价类的地方:
数值范围、重复次数、字符串长度、字符串组中字符串的个数、文件命名、文件大小、可用内存大小、屏幕分辩率、屏幕颜色种类、操作系统版本、超时时间。
总结:等价类是以效果来换取效率,等价类细分程度、等价类组合程度取决于进度和人力资源情况。等价类的出发点是考虑设计用例把每个输入的每种情况都有用例测试到,就认为达到了充分性。但对于各情况的组合不进行考虑。等价类要想用的好,关键是要把输入背后隐藏的信息从各个角度去进行分类。
二、边界值分析法
1、边界值使用条件:
1.输入条件明确了一个值的取值范围,或是规定了值的个数。
例子:输入条件为整数,取值范围[1,100]
2.输入条件明确了一个有序集合。
例子:输入条件为星期几,取值范围是星期的集合:星期一到星期日
边界值点定义:
上点:边界上的点,如果域的边界是封闭的(例如闭区间[1,5]),上点就在域范围内;如果域的边界是开放的(例如开区间(1,5)),上点就在域范围外。
离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内。
内点:顾名思议,就是在域范围内的任意一个点。
例子:
88<x<=99 88 89 99 100
上点:88 99
内点:90
离点:89 100
203<=x<500 202 203 499 500
上点:203 500
内点:300
离点:202 499
2、确定测试用例:
1.为每一个等价类内点、上点或离点规定一个唯一的编号。
2.设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类的内点、上点或离点,重复这一步,直到所有的有效等价类点都被覆盖为止。
说明:等价类划分和边界值分析结合使用时,边界值分析的内点如果已经在等价类中有测试用例覆盖,则无需重复再设计用例。
3.设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类的内点、上点或离点,重复这一步,直到所有的无效等价类的内点、上点或离点都被覆盖为止。
3、实际应用:
基于边界分析方法选择测试用例的原则:
1.如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。如:重量在 10-50 范围内的邮件。应取 10 及 50,还要取 10.01,49.99,9.99,50.01等。
2.如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。如:输入文件包括1-255个记录。应取 1 和 255,还要取 0 及 256 等。
3.将规则 1 和 2 应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。如:每月保险金扣除额为 0 至 1165.25 元。应 0.00 及 1165.24,还要取 0.01 及 1165.26等。
4.如果程序的规格说明给出的输入域输出域是有序集合,则应选取集合的第一元素和最后一个元素作为测试用例。如:输入条件为星期几,如果规定星期日为一周的第一天,则选取测试用例集合第一个元素:星期日,集合最后一个元素:星期六。
5.如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。如:程序采取循环结构,则可以考虑选取循环第 0 次,第 1 次,倒数第 2 次,最后 1 次等。程序采用数组,则可以考虑选取数组第一个元素和最后一个元素等。
6.分析规格说明书,找出其他可能的边界条件。
总结:边界值分析法实际上是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法需要和等价类划分法结合使用。
持续更新。。。
2020-04-12
原文:https://www.cnblogs.com/yuntimer/p/12683218.html