【软件测试】测试用例设计方法

  • 1. 等价类划分法
    • 1.1. 等价类划分法的定义
    • 1.2. 有效等价类和无效等价类
    • 1.3. 等价类划分法实例分析
  • 2. 边界值分析法
    • 2.1. 边界值分析法的定义
    • 2.2. 边界点
    • 2.3. 边界值法实例分析
  • 3. 判定表法
    • 3.1. 如何用判定表法设计测试用例
    • 3.2. 判定表法实例分析
  • 4. 正交表法
    • 4.1. 什么是正交表
    • 4.2. 正交表的性质
    • 4.3. 如何通过正交表设计测试用例
  • 5. 水杯测试用例设计
  • 6. 软件模块测试用例的设计

1. 等价类划分法

1.1. 等价类划分法的定义

等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集(即等价类),然后从每一个等价类中选取少量具有代表性的数据作为测试用例,如下图所示。

img

测试某等价类的代表值就等效于对于这一类其他值的测试。比如我在输入域1中选取一个输入,然后进行测试,对于输入域1中的其他输入都是等效的。

等价类划分法将不能穷举的测试数据进行合理分类,使用较少的若干个数据代表更为广泛的数据输入。

1.2. 有效等价类和无效等价类

在使用等价类划分法设计测试用例时,不但要考虑有效等价类划分,同时也要考虑无效等价类划分。

**有效等价类一般是指完全满足产品规则说明的输入数据,即有效的、有意义的输入数据所构成的集合。**利用有效等价类可以检验程序是否满足规则说明所规定的功能性要求。

无效等价类与有效等价类相反,即不满足程序输入要求或无效的输入数据构成的集合。

例如,计算器程序只能处理数值计算,包括正负数的加减乘除计算等,当输入字符数据就相当于输入了无效数据。当从键盘上输入数值时,计算器正常接收输入并正确显示该数值;当从键盘上输入字符时,计算器不接收这些无效输入,若利用复制功能将字符或字符串粘贴到计算器的输入框中时,计算器会显示“无效输入”,如下图所示。

img

使用无效等价类,可以测试程序的容错性——对异常情况的处理。在程序设计中,不但要保证有效的输入能产生正确的输出,而且要保证系统有一定的容错处理能力,在发生错误或输入无效数据的时候,系统应能自我保护而不至于发生崩溃,并应给出响应的错误提示。

1.3. 等价类划分法实例分析

在应用程序中,经常要求输入电话号码,我国的固定电话号码一般由两部分组成:

  1. 地区码:以0开头的3位或4位数字;
  2. 电话号码:以非0、非1开头的7位或8位数字。

应用程序应接收一切符合上述规定的电话号码,但应拒绝不符合上面规定的号码。

首先根据地区码和电话号码的要求划分等价类,确定有效等价类和无效等价类,为每个等价类规定一个唯一的编号,如下表所示。

输入数据有效等价类无效等价类
地区码①以0开头的3位地区码②以0开头的4位地区码③以0开头的小于3位的数字串④以0开头的大于4位的数字串⑤以非0开头的数字串⑥以0开头的含有非数字的字符串
电话号码⑦以非0、非1开头的7位号码⑧以非0、非1开头的8位号码⑨以0开头的数字串⑩以1开头的数字串⑪以非0、非1开头的小于7位数字串⑫以非0、非1开头的大于8位数字串⑬以非0、非1开头的含有非法字符7位或8位数字串

设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,此项工作重复进行,直到所有的有效等价类均被覆盖为止。例如,地区码随机取一个有效等价类,电话号码随机取一个有效等价类,合起来生成第一条测试用例。接下来,从地区码和电话号码中取尚未覆盖的其他有效等价类,合起来生成第二条测试用例,如下表所示。

测试用例输入数据/覆盖的有效等价类
040 6123456 覆盖①、⑦
0571 92345678 覆盖②、⑧

设计一个新的测试用例,使其只覆盖一个无效等价类,此项工作重复进行,直到所有的无效等价类均被覆盖。例如,电话号码随机取一个有效等价类,地区码则覆盖一个无效等价类,合起来构成一个无效输入数据。重复此步骤直至等价类划分表中所有的无效等价类均被覆盖。最终生成的测试用例如下。

测试用例输入数据/覆盖的有效等价类输入数据/覆盖的无效等价类
040 6123456 覆盖①、⑦0571 92345678 覆盖②、⑧04 61234567 覆盖③05011 61234567 覆盖④40 92345678 覆盖⑤025x 6123456 覆盖⑥
040 06123456 覆盖⑨0571 1123456 覆盖⑩040 612345 覆盖⑪0571 912345678 覆盖⑫0571 9123456zx 覆盖⑬

2. 边界值分析法

2.1. 边界值分析法的定义

边界值分析法是针对输入数据的边界条件进行分析以确定边界值,然后设计出对应边界值的测试用例。在测试用例的设计中,不仅要取边界值作为测试数据,而且要选取刚刚大于和刚刚小于边界值的数据作为测试数据。例如,{1, 100}的数据区间,不仅要测试边界值1和100,还要测试0、2、99、101等值,虽然0和101是无效数据,但应使用这些无效数据去测试系统是否能判断出无效数据,并给予提示或其他的容错处理。

在进行等价类分析时,往往要先确定边界。如果不能确定边界,就很难定义等价类所在的区域。只有边界值确定下来,才能划分出有效等价类和无效等价类。边界确定清楚了,等价类就自然产生了。所以说,边界值分析法是对等价类划分法的补充。

2.2. 边界点

这里简单的介绍一下边界点。

  1. 上点:边界上的点
  2. 内点:边界内的点
  3. 离点:边界值附近的一个点(闭区间区间外距离上点最近的点,开区间区间内距离上点最近的点)

用两个例子来说明上面的概念。

img

img

2.3. 边界值法实例分析

某保险网站的前台计算保费的页面中要求输入被保险人的年龄,根据不同的年龄使用不同的保险费率计算标准。保费计算方式为:保费 = 保险额 X 保险费率。其中,115岁,保险费率为10%;1620岁,保险费率为15%;2150岁,保险费率为20%;5170岁,保险费率为25%。

综上所述,该程序的等价类划分结果如下所示。

年龄保险费率年龄保险费率
x < 0无效输入20 < x <= 5020%
1 <= x <= 1510%50 < x <= 7025%
15 < x <= 2015%x > 70无效输入

3. 判定表法

判定表是一种表达逻辑判断的方法。

其中判定表的关系有如下几种。

  1. 与:所有的条件必须满足,如果一个条件不满足,此时结果为假。
  2. 或:满足其中一个条件结果就为真,如果条件全部为假,结果就为假。
  3. 恒等:条件为真,结果一定为真。
  4. 非:条件为假,结果才为真。

3.1. 如何用判定表法设计测试用例

  1. 分析所有可能的输入和可能的输出。
  2. 找出输入和输出之间的对应关系。
  3. 设计判定表。
  4. 把判定表对应到每一个测试用例。

3.2. 判定表法实例分析

如下图是公交一卡通自动充值模拟系统

img

需求如下所示。

  1. 系统只接收50元或100元纸币,一次充值只能使用一张纸币,一次充值金额只能为50元或100元。
  2. 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功。
  3. 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元。
  4. 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元。
  5. 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功。
  6. 若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误。
  7. 若选择充值按钮后不输入纸币,提示错误。

下面给出公交一卡通自动充值系统的测试用例设计过程。

  1. 条件之间的制约及组合关系

根据上述描述,输入条件为:

  • 投币50元(1)
  • 投币100元(2)
  • 选择充值50元(3)
  • 选择充值100元(4)

输出结果为:

  • 完成充值、退卡(a)
  • 提示充值成功(b)
  • 找零(c)
  • 提示错误(d)
  1. 明确所有条件之间的制约关系以及组合关系

  2. 写出判定表

12345678
输入投币50元YYY
投币100元YYY
选择充值50元YYY
选择充值100元YYY
输出a. 完成充值、退卡YYY
b. 提示充值成功YYY
c. 找零YYYY
d. 错误提示YYYYY
  1. 根据判定表写出测试用例
编号用例说明预期结果
1投币50元,选择充值50元正确充值50元,提示充值成功后退卡
2投币50元,选择充值100元系统提示错误并退回50元
3投币100元,选择充值50元正确充值50元,提示充值成功后退卡,并找回50元
4投币100元,选择充值100元正确充值100元,提示充值成功后退卡
5投币50元系统提示错误并退回50元
6投币100元系统提示错误并退回100元
7选择充值50元系统提示错误
8选择充值100元系统提示错误

4. 正交表法

4.1. 什么是正交表

正交表是一种用于设计实验的统计工具,它通过排列和组合不同的因素和水平,以便在最小的试验次数下得出最大的信息。正交表能够帮助研究人员确定影响实验结果的关键因素,以及它们之间的相互作用。通过使用正交表,研究人员可以更有效地进行实验设计,节省时间和资源,并获得更可靠的结果。

4.2. 正交表的性质

  1. 每一列中各数字出现的次数都一样多
  2. 任何两列中的各有序数对出现的次数都一样多。

img其中1,2,3在每一列中出现的次数都是相同的。

img这幅图对应的就是性质2。

4.3. 如何通过正交表设计测试用例

首先先了解两个重要的概念。

  1. 因素:输入变量
  2. 水平:每一个输入变量的取值

其次是通过正交表设计测试用例的步骤。

  1. 充分理解需求
  2. 确定因素,确定水平
  3. 画正交表
  4. 补充正交表
  5. 将正交表转换成测试用例

假设这样的一个需求,一个注册的功能,需求是姓名,邮箱,密码,确认密码,验证码必须全部输入后,才能注册。如下面的简图。

img

可以明确的是,

  1. 因素:姓名,邮箱,密码,确认密码,验证码
  2. 水平:填写/不填写

这里我使用allpairs来画正交表,步骤如下。

  1. 将因素和水平放到Excel表格中。

img

  1. 将Excel表格内容直接复制到txt文本中。

img

  1. CMD进入到allpairs安装路径下面

img

  1. 生成正交表

imgimg

后面pairings列忽略不管,其中~代表的是,可以是填写或不填写。根据上面生成的正交表就可以编写测试用例了。这里我就不写了,有兴趣的同学可以自行写一写看一看。

5. 水杯测试用例设计

这里用思维导图的方式来看下实体的测试用例该如何设计。

img

6. 软件模块测试用例的设计

这里以微信发朋友圈的例子来设计测试用例

img

这一篇博客主要讲了测试用例的设计方法,以及给出了实体和软件该从哪些方面进行测试的方向,希望对大家能有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

批量美化图片,轻松实现多张图片描边,让图片瞬间焕发新生!

图片已成为我们日常生活中不可或缺的一部分。无论是社交媒体上的个人分享&#xff0c;还是商业宣传中的产品展示&#xff0c;高质量、精美的图片都扮演着至关重要的角色。然而&#xff0c;对于许多人来说&#xff0c;图片处理仍然是一个令人头疼的问题。现在&#xff0c;我们为…

商超物联网方案-Hotspot Service和客流分析方案概述

商超物联网方案-Hotspot Service和客流分析方案概述 场景概述 大型商场、大型综合体在相互竞争及线上消费的影响下&#xff0c;利润增长缓慢&#xff0c;迫切需要通过提供个性化服务提升顾客购物体验&#xff0c;促进利润增长。 向不同顾客推送其感兴趣的广告&#xff0c;不仅…

c++游戏小技巧16:实例1(地牢生成算法)

1.前言 (头图) &#xff08;其实最开始是想写恶魔轮盘的&#xff0c;但没想到它竟然更新了&#xff09; &#xff08;等我有时间在更&#xff0c;最近很忙&#xff0c;玩第五玩的&#xff09; 想法来源&#xff1a;房间和迷宫&#xff1a;一个地牢生成算法https://indienova…

机器学习(五)之损失函数

上面几节讲了监督学习和非监督学习的一些算法&#xff08;目前还不完整&#xff0c;会慢慢补充哒) 如果文章内容有错误&#xff0c;欢迎小伙伴在评论区指出! 前言&#xff1a; 损失函数在机器学习中非常重要&#xff0c;直接关乎模型的好坏&#xff08;so?学好它&#xff09;…

STM32G474 CMAKE VSCODE 开发环境搭建

本篇博文尝试搭建 stm32g474 的开发环境 一. 工具安装 1. 关于 MinGW、OpenOCD、Zadig 这些工具的下载和安装见 JlinkOpenOCDSTM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-CSDN博客 2. 导出一个 STM32 的 CMAKE 工程&#xff0c;这里略过。 3. 安装 ninja …

matlab期末知识

1.期末考什么&#xff1f; 1.1 matlab操作界面 &#xff08;1&#xff09;matlab主界面 &#xff08;2&#xff09;命令行窗口 &#xff08;3&#xff09;当前文件夹窗口 &#xff08;4&#xff09;工作区窗口 &#xff08;5&#xff09;命令历史记录窗口 1.2 matlab搜索…

Elasticsearch:对 Java 对象的 ES|QL 查询

作者&#xff1a;Laura Trotta ES|QL 是 Elasticsearch 引入的一种新的查询语言&#xff0c;它将简化的语法与管道操作符结合起来&#xff0c;使用户能够直观地推断和操作数据。官方 Java 客户端的新版本 8.13.0 引入了对 ES|QL 查询的支持&#xff0c;提供了一个新的 API&…

Redis 实战2

系列文章目录 本文将从字典的实现、哈希算法、解决键冲突、rehash、渐进式rehash几方面来阐述 Redis 实战Ⅱ 系列文章目录字典的实现哈希算法解决键冲突rehash渐进式 rehash渐进式 rehash 执行期间的哈希表操作 字典 API总结 字典的实现 Redis 的字典使用哈希表作为底层实现&…

【大数据】学习笔记

文章目录 [toc]NAT配置IP配置SecureCRT配置PropertiesTerminal Java安装环境变量配置 Hadoop安装修改配置文件hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 环境变量配置 IP与主机名映射关系配置hostname配置映射关系配置 关闭防火墙…

分层图像金字塔变压器

文章来源&#xff1a;hierarchical-image-pyramid-transformers 2024 年 2 月 5 日 本文介绍了分层图像金字塔变换器 (HIPT)&#xff0c;这是一种新颖的视觉变换器 (ViT) 架构&#xff0c;设计用于分析计算病理学中的十亿像素全幻灯片图像 (WSI)。 HIPT 利用 WSI 固有的层次结…

【matlab基础知识】(三)二维曲线绘制plot

x[-pi:0.0001:pi]; 选择较小步距 ysin(tan(x))-tan(sin(x));plot(x,y) 条件和函数值做一个点乘 x[-2:0.02:2];y1.1*sign(x).*(abs(x)>1.1)x.*(abs(x)<1.1);plot(x,y) 颜色&#xff0c;线形&#xff0c;曲线上的标志 由于0.01cosx波动太小&#xff0c;所以plotyy绘制多…

正在载入qrc文件 指定的qrc文件无法找到。您想更新这个文件的位置么?

打开Qt的ui文件&#xff0c;弹出提示框 如果需要用到qrc文件&#xff0c;选择Yes&#xff0c;再选择qrc文件所在的位置&#xff1b;如果不需要qrc文件&#xff0c;可以选择No&#xff0c;然后用普通文本编辑器打开&#xff0c;将“ <resources> <include location&q…

ARP欺骗使局域网内设备断网

一、实验准备 kali系统&#xff1a;可使用虚拟机软件模拟 kali虚拟机镜像链接&#xff1a;https://www.kali.org/get-kali/#kali-virtual-machines 注意虚拟机网络适配器采用桥接模式 局域网内存在指定断网的设备 二、实验步骤 打开kali系统命令行&#xff1a;ctrlaltt可快…

Zookeeper服务

一、什么是Zookeeper Zookeeper 是一个分布式应用程序的协调服务&#xff0c;它提供了一个高性能的分布式配置管理、分布式锁服务和分布式协调服务。它是 Apache 软件基金会的一个项目&#xff0c;被设计用来处理大规模的分布式系统中的一些关键问题。 Zookeeper的组成员关系&…

【C语言】——结构体

【C语言】——结构体 一、结构体类型的声明1.1、结构体的声明1.2、结构体变量的创建和初始化1.3、结构体的特殊声明1.4、结构体的自引用1.5、结构体的重命名 二、 结构体的内存对齐2.1、对齐规则2.2、结构体对齐实践2.3、为什么存在内存对齐2.4、修改默认对齐数 三、结构体传参…

VS Code 保存+格式化代码

在 VSCode 中&#xff0c;使用 Ctrl S 快捷键直接保存并格式化代码&#xff1a; 打开 VSCode 的设置界面&#xff1a;File -> Preferences -> Settings在设置界面搜索框中输入“format on save”&#xff0c;勾选“Editor: Format On Save”选项&#xff0c;表示在保存…

《Mask2Former》算法详解

文章地址&#xff1a;《Masked-attention Mask Transformer for Universal Image Segmentation》 代码地址&#xff1a;https://github.com/facebookresearch/Mask2Former 文章为发表在CVPR2022的一篇文章。从名字可以看出文章像提出一个可以统一处理各种分割任务&#xff08;…

C++ | Date 日期类详解

目录 简介 日期类总代码 | Date 类的定义 & 构造 & Print 类的定义 构造函数 & Print 比较类&#xff0c;如<、>、<...... 值加减类&#xff0c;如、-、、-...... 加减类具体分类 判断某个月有多少天 GetMonthDay 日期类 / &#xff08;- / -&…

随便聊一下 显控科技 控制屏 通过 RS485 接口 上位机 通讯 说明

系统搭建&#xff1a; 1、自己研发的一个小系统&#xff08;采集信号&#xff0c;将采集的信号数字化&#xff09;通过COM口&#xff0c;连接显控屏 COM3 口采用 485 协议送到显控屏&#xff08;显控科技&#xff09;的显示屏展示出来&#xff09;。 2、显控屏 将 展示的数据…

Jenkins(超详细的Docker安装Jenkins教程!!!)

Jenkins Jenkins&#xff0c;原名 Hudson&#xff0c;2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。 官方网站&#xff1a;https://www.jenkins.io/ 中文文档&#xff1a;https://www.jenkins.io/zh/ 为什么需要Jenkins&#xff1f; 我们以前写完代码&a…