基于junit4的关于个⼈所得税计算的等价类与边界值_《边界值
分析》-有这篇就够了...
⽬录:
1. 定义(What)
结婚的风俗2. 为什么使⽤该⽅法?(Why)
3. 如何选定边界值?(How)
4. 设计测试⽤例
5. 根据测试⽤例的完整性划分
6. 边界的分类
7. 使⽤场景
古诗十九首全文
8. 实战演练
9. 边界值分析的优缺点
10. 特殊值测试
11. 边界值分析和等价类划分的联系
12. 常见的产⽣边界值bug的原因
13. 边界值法应⽤时,如果测试时间紧张,应该优先测试哪些点?
1.定义(What?)
对等价类划分法的补充,其测试⽤例来⾃等价类的边
测试⽤例来⾃等价类的边对输⼊或输出的边界值进⾏测试的⼀种⿊盒测试⽅法,通常作为对等价类划分法的补充
边界值分析法就是对输⼊或输出的边界值进⾏测试
界。
所谓边界值,是指相对于输⼊等价类和输出等价类⽽⾔,稍⾼于边界或稍低于边界的⼀些特定情况
2.为什么使⽤该⽅法?(Why)
等价类划分忽略掉了某些特定类型的⾼效测试⽤例,⽽边界值分析可以弥补其中的很多不⾜;
根据⼤量的测试统计数据,编程的很多错误是发⽣在输⼊定义域或输出值域的边界上,⽽不是发⽣在输⼊/输出范围的中间区域。因此针对输⼊和输出等价类的边界情况设计测试⽤例,可以查出更多的错
误,具有更⾼的测试回报率;
边界值数据本质上是属于某个等价类的范围,测试时确实是⼀种冗余(重复),但是为了更好的测试质量(边界值特别容易出bug),边界值必须要单独测,适当的冗余是可以接受的。
3.如何选定边界值?(How)
很难提供⼀份如何进⾏边界值分析的“详细说明”,因为这种⽅法需要⼀定程度的创造性,以及对问题采取⼀定程度的特殊处理办法。
但是可以提供⼀些通⽤指南:
如果输⼊条件规定了⼀个输⼊值范围,那么应针对范围的边界设计测试⽤例,针对刚刚越界的情况设计⽆效输⼊测试⽤例。举例,如果输⼊值的有效范围是-1.0⾄+1.0,那么应针对-1.0、1.0、-1.001和1.001的情况设计测试⽤例。
如果输⼊条件规定了输⼊值的数量,那么应针对最⼩数量输⼊值、最⼤数量输⼊值,以及⽐最⼩数量少⼀个、⽐最⼤数量多⼀个的情况设计测试⽤例。举例,如果某个输⼊⽂件可容纳1~255条记录,那么应根据0、1、256和255条记录的情况设计测试⽤例。
对每个输出条件应⽤指南1。举例,如果某个程序按⽉计算FICA的扣除额,且最⼩⾦额是0,最⼤⾦额是1165.25,那么应该设计测试⽤例来测试扣除0和1165.25的情况。此外,还应观察是否可能设计出导致扣除⾦额为负数或超过1165.25的测试⽤例。
(Tips:检查结果空间的边界很重要,因为输⼊范围的边界并不总是能代表输出范围的边界情况(例如三⾓正弦函数sin)。但是总是
企业宗旨标语
产⽣超过输出范围的结果也是不⼤可能的,但⽆论如何,应该考虑这种可能性。)
对每个输出条件应⽤指南2。如果某个信息检索系统根据输⼊请求显⽰关联程度最⾼的信息摘要,⽽摘要的数量从未超过4条,则应编
写测试⽤例,使程序显⽰0条、1条和4条摘要,还应设计测试⽤例,导致程序错误地显⽰5条摘要。
如果程序的输⼊或输出是⼀个有序序列(例如顺序的⽂件、线性列表或表格),则应特别注意该序列的第⼀个和最后⼀个元素。
如果程序中使⽤了⼀个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试⽤例。
此外,发挥聪明才智出其他的边界条件。
边界值分析考察正处于等价划分边界或在边界附近的状态。
Tips:边界值分析⽅法和等价类划分之间的重要区别是,边界值分析考察正处于等价划分边界或在边界附近的状态
4. 设计测试⽤例
A.确定边界值
在尝试针对划分好的等价类进⾏边界值取值的时候,⼀定要有适当的范围,不是根据我们的端点值往左右两侧随意选择测试值,⽽
是也有科学的⽅法进⾏选择。
边界值点的定义:
上点:边界上的点,闭内开外(“闭”是指域的边界是封闭的,即闭区间;“开”是指域的边界是开放的,即开区间)。
离点:离上点最近的点称为离点。开内闭外。
内点:域范围内的任意⼀点。
三点分析法:结合等价类划分的具体情况,针对边界值的选择就包括开区间、闭区间以及半开半闭区间
开区间、闭区间以及半开半闭区间。
三点分析法
闭区间:闭区间中的情况,上点为可以取值的点,在上点之间任取⼀点就是内点。⽽紧邻上点范围之外的第⼀对点被称为离点(也称为闭区间
外点)
半开半闭区间:半开半闭区间中,上点与内点的定义不变。离点是开区间⼀侧上点内部范围内紧邻的点,⽽在闭区间⼀侧是上点外部
半开半闭区间
范围内紧邻的点。
开区间:开区间中,上点与内点的定义仍然不变。⽽离点就是上点内部范围内紧邻的⼀对点。
开区间
总结为,上点就是区间的端点值,⽽内点就是上点之间任意⼀点。对于离点,要分具体情况,如果开区间的离点,就是开区间中上
感恩教师节手抄报图片点内侧紧邻的点;如果是闭区间的离点,就是闭区间中上点外侧紧邻的点。
PS.⼩数类型,等价类+边界值测试时的注意事项:
有效等价类:除了有效的⼩数外,有效的整数也需要测(⼩数中默认包含了整数,除⾮需求中明确的说:⼩数中不包含整数)
⽆效等价类:⼩数类型—⾮⼩数(⾮数):字母、汉字、特殊字符;⼩数位数—超出⼩数的有效位数(例如:最多两位,那么>2位就是⽆效等价类)
边界值:⼩数的次边界与边界之间的相差单位是与精确度相关的,例如:精确到⼩数点后2位,那么相差单位就是0.01。例如:最⼩值是:1.00那么次边界就是 0.99 和那么次边界是:⼩数点后1位和⼩数点后3位江西现任中央最大官是何人
B.设计测试⽤例(详见“实战演练”)
提高记忆力的音乐5. 根据测试⽤例的完整性划分
单缺陷假设与多缺陷假设:
单缺陷假设是边界值分析的关键假设。单缺陷假设指“失效极少是由两个或两个以上的缺陷同时发⽣引起的”。在边界值分析中,单缺陷假设即选取测试⽤例时仅仅使得⼀个变量取极值,其他变量均取正常值。
多缺陷假设则是指“失效是由两个或两个以上缺陷同时作⽤引起的”,要求在选取测试⽤例时同时让多个变量取极值。
⼀般性边界值测试、健壮性测试、最坏情况测试、健壮性最坏情况测试。
⼏种边界值分析法模型:⼀般性边界值测试、健壮性测试、最坏情况测试、健壮性最坏情况测试
⼀般性边界值测试
有n个输⼊变量,设计测试⽤例使得⼀个变量在数据有效区域内取最⼤值、略⼩于最⼤值、正常值、略⼤于最⼩值和最⼩值。如下图所⽰,两个变量X1,X2。它们的有效取值区间分别为[a,b]、[c,d]。
对于有n个输⼊变量的程序,⼀般性边界值分析的测试⽤例个数为4n+1
⼀般性边界值分析的测试⽤例个数为4n+1。
单缺陷假设。
边界值测试分析采⽤了可靠性理论的单缺陷假设
优点:简便易⾏;⽣成测试数据的成本很低;
局限性:测试⽤例不充分;不能发现测试变量之间的依赖关系;
结论:只能作为初步测试⽤例使⽤。
健壮性测试
健壮性是指在异常情况下,软件还能正常运⾏的能⼒。健壮性考虑的主要部分是预期输出,⽽不是输⼊。健壮性测试是边界值分析的⼀种简单扩展。除了变量的5 个边界分析取值还要考虑略超过最⼤值(max)和略⼩于最⼩值(min)时的情况。健壮性测试的最⼤价值在于观察处理异常情况,它是检测软件系统容错性的重要⼿段。如下图所⽰。
PS:软件容错性的度量:从⾮法输⼊中恢复;健壮性有两层含义:容错能⼒和恢复能⼒
健壮性测试的测试⽤例个数为6n+1。
对于有n个输⼊变量的程序,健壮性测试的测试⽤例个数为6n+1
最坏情况测试
最坏情况测试拒绝单缺陷假设,它关⼼的是当多个变量取极值时出现的情况。最坏情况测试中,对每⼀个输⼊变量⾸先进⾏包含最⼩值、略⾼于最⼩值、正常值、略低于最⼤值、最⼤值等5个元素集合的测试,然后对这些集合进⾏笛卡尔积计算,以⽣成测试⽤例。最坏情况测试将意味着更⼤⼯作量。如下图所⽰。
对于有n个输⼊变量的程序,最坏情况测试的测试⽤例个数为5^n
最坏情况测试的测试⽤例个数为5^n。
最坏情况与基本边界值分析的⽐较:
基本边界值分析测试⽤例是最坏情况测试⽤例的真⼦集;
最坏情况测试显然更彻底;
最坏情况测试⼯作量⼤得多,变量函数的最坏情况测试会产⽣5的n次⽅个测试⽤例,边界值分析只产⽣4n+1个测试⽤例。
健壮性最坏情况测试
健壮性最坏情况假设对每⼀个变量⾸先进⾏最⼩值、略⼩于最⼩值的值、略⾼于最⼩值的值、正常值、最⼤值、略⾼于最⼤值的值、略低于最⼤值的值等7个元素的集合。然后对这些集合进⾏笛卡尔积运算,以⽣成测试⽤例。如下图所⽰。
健壮最坏情况测试的测试⽤例个数为7^n。
对于有n个输⼊变量的程序,健壮最坏情况测试的测试⽤例个数为7^n
6.边界的分类
边界条件:可以在产品说明书中有定义或者在使⽤软件过程中确定;
内部边界条件:在软件内部,也称为内部边界条件;
其他边界条件:如输⼊信息为空、⾮法、错误、不正确和垃圾数据。
A.边界条件的常见数据类型
数值、速度、字符、地址、位置、尺⼨、数量、空间
例如,“字符”,边界值是起始-1字符、结束+1个字符。测试⽤例的设计思路是,假设⼀个⽂本输⼊区域允许输⼊1个到255个 字符,输⼊1个和255个字符作为有效边界值;输⼊0个和256个字符作为⽆效边界值,这⼏个数值都属于边界条件值。
例如“数值”,边界值是最⼩值-1、最⼤值+1。测试⽤例的设计思路是,假设某软件的数据输⼊域要求
输⼊5位的数据值,可以使⽤10000作为最⼩值、99999作为最⼤值;然后使⽤刚好⼩于5位和⼤于5位的数值来作为边界条件。
例如“空间”,边界值是⼩于空余空间⼀点、⼤于满空间⼀点。测试⽤例的设计思路是,例如在⽤U盘存储数据时,使⽤⽐剩余磁盘空间⼤⼀点(⼏KB)的⽂件作为边界条件。
B.内部边界条件
在多数情况下,边界值条件是基于应⽤程序的功能设计⽽需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终⽤户可以很容易发现问题的。然⽽,在测试⽤例设计过程中,某些边界值条件是不需要呈现给⽤户的,或者说⽤户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或⼦边界值条件。
内部边界值条件主要有下⾯⼏种:
数值的边界值检验:计算机是基于⼆进制进⾏⼯作的,因此,软件的任何数值运算都有⼀定的范围限制。
符的边界值检验:在计算机软件中,字符也是很重要的表⽰元素,其中ASCII和Unicode是常见的编码⽅式。如下列出了⼀些常⽤字符对应的ASCII码值。