第3章 软件测试方法--基于输入域的测试方法(等价类、边界值)
文章目录
- 3.2 基于输入域的测试方法
- 3.2.1 等价类测试方法
- 3.2.2 边界值分析方法(BVA – Boundary Value Analysis)
3.2 基于输入域的测试方法
3.2.1 等价类测试方法
等价类:某个输入域的子集,在该子集中每个输入数据的作用是等效的。分为有效等价类和无效等价类。
(1)有效等价类
合理、有意义的输入数据构成的集合,即被测对象能接受的数据。用于考查软件的正常工作能力
(2)无效等价类
不合理、无意义的输入数据构成的集合,即被测对象不能接受的数据。用于考查软件的容错能力。
将输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例。
设计测试用例时,要同时考虑有效和无效两种等价类。因为软件不仅要能接收合理的数据,也要能经受异常数据的考验。经过正反的测试才能确保软件具有更高的可靠性。
确定等价类的方法:
- 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
- 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
- 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
判断等价类中所有数据是否完全等价的简便原则:
在某个指定的等价类中,被测对象对该等价类中的输入数据或输入项的处理方式是否一致,如果不一致,则该等价类需要进一步做等价划分
根据等价类创建测试用例的步骤
①建立等价类表,列出所有划分出的等价类:
②为每个等价类规定一个唯一的编号;
③设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
④重复③,最后使得所有有效等价类均被测试用例所覆盖;
⑤设计一个新的测试用例,使其只覆盖一个无效等价类。
⑥重复⑤使所有无效等价类均被覆盖。
测试用例的完整性划分
完整性从弱到强排序:弱一般等价类测试、弱健壮等价类测试。强一般等价类测试、强健壮等价类测试。下面逐一定义。
弱一般等价类:遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值。
弱健壮等价类:在弱一般等价类的基础上,增加取值为无效值的情况。“健壮”意味着程序要有容错性,取到无效值也要正确识别出来。对于有效输入,使用每个有效值类的一个值。对于无效输入,测试用例将拥有一个无效值,并保持其余的值是有效的。
强一般等价类:遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值。例如变量X有3个等价类,变量Y有2个等价类,那么应设计3*2共6个用例。要覆盖所有的有效等价类组合。
强健壮等价类:在强一般等价类的基础上,增加取值为无效值的情况。(不仅取单个无效值,也要取多个无效值。)
例1:有关三角形判定的例子。我们也将等价类分为有效类和无效类两类来进行讨论。如图所示共有20种情况:
从而确定并得出测试用例如图所示:
例2:第二日问题
- 第一次划分尝试
等价划分:
无效等价类的测试用例:
有效等价类的测试用例:
- 第二次划分尝试;
等价划分:
测试用例:
要考虑测试用例中不存在的情况(独立性假设所产生的冗余):
若针对整体输入域:对输入对象施加条件:
总结:
- 目标:从理论上追求测试的完备性和无冗余性
- 基于:独立性假设和单缺陷假设
- 当等价划分不合理(即存在漏洞时),将导致测试用例的漏洞;
- 当输入条件之间存在关联时,若基于个体输入域进行测试,将导致测试用例的冗余。
3.2.2 边界值分析方法(BVA – Boundary Value Analysis)
设计方法:
1.确定边界情况(输入或输出等价类的边界)。
2.选取正好等于、刚刚大于或小于边界值作为测试数据。
确定边界值的方法:
如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
在边界值是在有效类的边界上选取
例1:
例2:
例3:佣金问题
某酒水销售公司指派销售员销售各种酒水,其中白酒、红酒和啤酒的单价分别为168元/瓶、 120元/瓶、5元/瓶。
每个销售员,白酒每月的最高供应量为5000瓶,红酒为3000瓶,啤酒为30000瓶
各销售员每月至少需售出白酒50瓶,红酒30瓶,啤酒300瓶
月末,各销售员向酒水销售公司上报他所在区域的销售业绩,酒水销售公司根据其销售额计算该销售员的佣金,并作为奖金发放
销售员的佣金计算方法如下:
2万元以下(含):4%;
2万元(不含)~4.5万元(含):1%;
4.5万元以上(不含):0.5%。
最终将由佣金计算系统生成月销售报告,对当月售出的白酒、红酒和啤酒总数进行汇总,并计算销售公司的总销售额和各销售员的佣金。
边界点:1.35为每月最少销售额度
针对输出域的测试用例:
总结:
- 边界值测试:一种最基本、最简单的黑盒测试方法,通常可作为等价类测试的补充
- 基于:独立性假设和单缺陷假设
- 边界值测试关注的是系统边界,并不关注系统对不同类型数据的处理规律,因此,该法设计的测试用例往往具有较大的系统冗余与漏洞,但这并不影响该法的有效性
第3章 软件测试方法--基于输入域的测试方法(等价类、边界值)相关推荐
- 第3章 软件测试方法--基于组合技术和组合优化的方法(决策表、因果图、场景测试)
文章目录 3.3 基于组合技术和组合优化的方法 3.3.1 判定表(决策表)测试 3.3.2 因果图法 3.3.3 两两组合(Pair-wise)方法 3.3.4 正交实验法 3.3.5 基于场景的测 ...
- 《STM32单片机开发应用教程(HAL库版)---基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第二章 软件安装与使用
写在前面-- 作为<STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>系列之第二章,本章节将介绍开发软件STM32CubeMX和KEIL5的 ...
- 【web-渗透测试方法】(15.6)测试基于输入的漏洞
目录 一.测试基于输入的漏洞 1.1.模糊测试所有清求参数 1.2.测试SQL注入 1.3.测试XSS和其他响应注入 确定反射型请求参数 测试反射型XSS 测试HTTP消息头注入 测试任意重定向 测试 ...
- 软件测试方法大全,49种测试方法,你知道几个?
β测试_Beta测试 β测试,英文是Beta testing.又称Beta测试,用户验收测试(UAT). β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试.开发者通常不在测试现场,Be ...
- 【系统分析师之路】第十三章 软件体系结构
[系统分析师之路]第十三章 软件体系结构 软件架构这章节主要的考点有:软件架构的概念,4+1视图,五种软件架构风格(数据流,调用返回,虚拟机,构件,仓库),2层3层CS架构,BS架构,产品线,中间件, ...
- 【软件测试方法大全】49种测试方法,你知道几个?
β测试_Beta测试 β测试,英文是Beta testing.又称Beta测试,用户验收测试(UAT). β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试.开发者通常不在测试现场,Be ...
- windows篇-第四章 安装和配置Windows域
Windows域是计算机管理区域Windows系统使用基于域的活动目录来管理域中的计算机,活动目录中储存有关网络上对象的信息并使此信息可用于用户和网络管理员,安装Windows域将创建活动目录,通过活 ...
- 软件开发基于JavaScript实现快速转换文本语言(繁体中文和简体中文)_javascript技巧
软件开发基于JavaScript实现快速转换文本语言(繁体中文和简体中文)_javascript技巧 一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项 ...
- 高速ad指标分析 matlab,高速ADC的动态性能参数和基于DSP技术的测试方法研究
高速ADC是信号处理机的不可欠缺的组成部分,其性能的好坏对信号处理系统的整体性能也至关重要.通常ADC的技术参数是由生产厂商提供,可作为设计的重要依据,但是在电路板上形成的ADC模块的性能如何,还与A ...
最新文章
- LeetCode 137. Single Number II--三次异或消除相同的数--C++,Python解法
- IT业爆发“新人”争夺战
- python绘制动态模拟图-Python 模拟生成动态产生验证码图片的方法
- [翻译] FBNetworkReachability
- ASP.NET页面的处理过程完全版_AX
- 计算机应用等级考试1,计算机等级考试一级试题
- 假如有人在今天炸了支付宝的存储服务器...
- linux脚本ls输出到变量中,bash – 将命令输出的错误消息存储到shell变量中
- 【kafka】Kafka coordinator coordinator 原理剖析
- 裴蜀(贝祖)定理及其证明
- 微信小程序–二维码生成器
- 在Fcitx5中使用自定义双拼方案
- vagrant入门_在Vagrant上使用PHP入门的5种简单方法
- 随机过程(2)__马尔可夫链的主要性质__查普曼-科莫高洛夫方程
- Spring之IOC自动装配
- 心理学实验必备 | 情绪刺激材料推荐(含图片和声音)
- oracle java.sql.SQLException: 列名无效
- iOS:创建撒花动画
- 采用自编码网络(AE)实现无监督学习
- FPGA配置芯片EPCS读写操作--STM32读写