软件测试方法 - 等价类边界值

简介: 软件测试方法 - 等价类边界值

# 测试用例设计方法

测试用例的定义

测试用例是为了特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,他是指导测试工作进行的依据。

下面我们介绍几种常用的黑盒测试方法

等价类划分法

定义:等价类划分是一种重要的、常用的黑盒测试方法,不需要考虑程序的内部结构,只需要考虑程序的输入规格即可。它将不能穷举的测试过程进行合理分类,从而保证测试用例具有完整性和代表性

有效等价类验证系统功能,无效等价类验证错误处理能力
作用:在有限的测试资源的情况下,用少量有代表的数据得到比较好的测试效果。

缺陷:边界值的动态性。

步骤:

1、先确定有效和无效等价类

2、有效等价类就是题目条件

3、无效等价类先划分与条件相反的情况,再找到特殊情况。

设计测试用例

根据已列出的等价类表可确定测试用例,具体过程如下:

1、首先为等价类表中的每一个等价类分别规定一个唯一的编号

2、设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖

3、设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。

划分等价类的原则

1、如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类

2、如果输入条件规定了输入值的集合,或者是规定了”必须如何“的条件,这时可确立一个有效等价类和一个无效等价类

3、如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类

4、如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时可为每一个输入值确立一个有效等价类,它是所有不允许的输入值的集合

5、如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

6、如果规定了输入数据为整型,则可以划分出正整数、零和负整数等三个有效类

7、如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。

举例:

在这里插入图片描述

我们以 QQ 为例,当客户在 QQ 号码要求是6-10位的整数,我们该怎么进行测试?

根据等价类划分,我们划分出有效等价类和无效等价类:
在这里插入图片描述

边界值分析法

边界值分析法就是对输入或输出的边界值进行测试的一种常用的黑盒测试方法。

为什么要有边界值分析法?

大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
通常情况下,软件测试所包含的边界检验有几种类型:

数字、字符、位置、质量、大小、速度、方位、尺寸、空间等

相应地,以上类型的边界值应该在:

最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下。 

采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。

因此,边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例

用边界值分析设计测试用例应遵循的原则

1、如果输入条件规定了取值范围,则应对该范围的边界内附近,恰好在边界和在边界外附近(无效等价类)设计测试用例

如:规定金额输入框输入范围为0~100,应对 -1、0 、1、99、100、101 设计相应的测试用例

2、如果输入条件规定了数据的个数,则应对最少个数,最多个数,比最少个数少1,比最大个数多1等情况设计测试用例
如:输入文件有1~255个记录,则应分别设计0,1,255,256个记录的输入文件的测试用例
3、针对规格说明中的每个输出条件使用前面的1和2原则。
如:计算折扣量,最低折扣为0元,最高为1000元,则要设计使它们恰好产生0元或1000元的结果,以及负值或稍大于1000元的结果(如果可能的话)
4、如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件,线性表等)。应选有序集的第一个和最后一个元素作为测试用例

举例:输入的两个参数值必须大于0同时小于100的整数,计算和

If Val(Test1.Test) >= 0 Or Val(Test1.Test) <=100 Then
    MsgBox("输入的参数值必须大于0同时小于100")
    Test1.SetFocus
ElseIf Val(Test2.Test) > =0 or val (Test2.Test) <= 100 then
    MsgBox("输入的参数值必须大于0同时小于100")
    Test2.SetFocus
Else
    Test3.Test = Val(Test1.Test) + Val(Test2.Test)
End If

如何解决这类问题
1、找到测试数据的边界点,也就是有效等价类和无效等价类的边界点,对边界点数据专门进行测试。
2、一般情况下,需要对边界值(0和100)以及边界值两边的数(-1和1以及101和99)分别进行测试。
因此我们可以设计测试用例:
在这里插入图片描述
而我们仔细看一下:
在这里插入图片描述
程序员在边界条件设置错误:把>写成了>=,把<写成了<=,所以我们可以得出预期结果与实际结果不符合的结论。
所以:有效数据和无效数据的分界点,往往作为程序员编写程序的判断点,是程序员容易犯错误的地方,也是测试人员重点测试的内容。

边界值和等价类的区别:

1、边界值分析不是从等价类中随便挑一个作为代表,而是选一个或几个特定值,使这个等价类的每个边界都作为测试的目标。
2、边界值分析不仅要考虑输入条件,而且要考虑输出条件(输出等价类)。
一般联合使用等价类划分和边界值分析两种方法。

目录
相关文章
|
7天前
|
敏捷开发 数据可视化 Devops
敏捷测试价值观、方法和实践读书笔记(4)
本章节探讨了敏捷测试执行的关键概念与实践。首先介绍了用户故事及其重要性,强调其在敏捷开发中的角色,并阐述了用户故事的 INVEST 原则。接着分析了用户故事生命周期中的测试关注点,包括定义、处理、完成及验收阶段的测试活动。此外,还对比了不同测试术语的差异,并提供了敏捷测试计划的策略与过程。通过看板等工具实现任务管理与跟踪,确保测试活动高效进行。最后,介绍了敏捷测试中的度量指标,帮助团队评估测试效果。
17 5
敏捷测试价值观、方法和实践读书笔记(4)
|
7天前
|
JavaScript 前端开发 Java
敏捷测试价值观、方法和实践读书笔记(5)
本章节介绍了敏捷功能测试的原则与实践,包括单元测试的概念及其编写步骤,测试驱动开发(TDD)的流程,以及如何通过模拟对象进行测试。详细讲解了单元测试的编写方法,如初始化对象、执行操作及验证结果,并探讨了 TDD 的五个步骤。通过具体案例展示了如何逐步完善储蓄账户的功能测试,包括存款、取款及异常处理。此外,还讨论了代码覆盖率的重要性及其局限性,强调了测试充分性比单纯追求代码覆盖率更为关键。
14 3
敏捷测试价值观、方法和实践读书笔记(5)
|
7天前
|
机器人 测试技术
敏捷测试价值观、方法和实践读书笔记(6)
验收测试驱动开发(ATDD)强调在开发前定义验收标准,并通过自动化测试确保用户价值得到满足。验收测试关注用户需求是否实现,而非代码细节。ATDD涉及用户、产品负责人、开发人员及测试人员,通过讨论、开发和交付三个阶段,确保产品符合预期。此方法有助于团队更好地理解和实现用户需求。
17 5
|
7天前
|
Devops jenkins 测试技术
敏捷测试价值观、方法和实践读书笔记(10)
本文介绍了敏捷测试的延伸实践,重点讨论了持续集成(CI)和持续部署(CD)的概念与实践方法。持续集成强调频繁提交代码至主干并自动化构建测试,确保快速反馈和高质量代码。持续部署则进一步实现自动化部署,通过蓝绿部署、金丝雀发布等方式提升软件交付效率。此外,文章还探讨了持续反馈机制,如A/B测试和混沌工程,以及DevOps文化下的测试策略,强调测试在整个开发流程中的重要性。
14 0
敏捷测试价值观、方法和实践读书笔记(10)
|
7天前
|
XML 存储 API
敏捷测试价值观、方法和实践读书笔记(8)
本文介绍了API的基础知识,区分了Web Service和Web API的概念,详细阐述了Web Service中的SOAP服务和REST服务的特点及区别。同时,文章还探讨了如何在项目中进行API测试,包括API测试的类型和实施阶段,强调了API在现代软件开发中的重要性和优势。
8 0
敏捷测试价值观、方法和实践读书笔记(8)
|
7天前
|
JavaScript 前端开发 Java
敏捷测试价值观、方法和实践读书笔记(7)
本文介绍了BDD(行为驱动开发)的Given-When-Then方法,并详细描述了如何在Java环境中使用Cucumber框架实现BDD测试。内容涵盖配置环境、修改POM文件、编写Feature文件及步骤定义文件、运行测试等过程。同时,提供了使用Cucumber和Selenium对Web页面进行测试的具体示例,并探讨了BDD在团队中的实施策略,包括不同角色之间的协作流程与自动化测试框架的选择。
11 0
敏捷测试价值观、方法和实践读书笔记(7)
|
3天前
|
敏捷开发 测试技术 UED
软件测试中的探索性测试方法
在软件开发过程中,测试是确保产品质量的重要环节。本文将探讨一种常被忽视但极其重要的测试方法——探索性测试。通过分析其定义、优势及实际应用案例,揭示如何更有效地发现软件缺陷,提升软件质量。
11 0
|
8天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
53 7
Jmeter实现WebSocket协议的接口测试方法
|
8天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
35 3
快速上手|HTTP 接口功能自动化测试
|
7天前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
21 5