编写测试用例的测试方法(等价类、判定表、边界值、正交排列法、场景法)

2023-10-27

一、等价类划分法

1、应用场合
在程序中,有数据输入的地方适合使用等价类划分法进行测试
方法思想(范围):
将大量数据划分成若干的范围(等价类),再从每个范围中抽取少量代表数据进行测试(抽样测试)

2、两个概念
(1)有效等价类
对程序来说,正确的、合理的输入数据集合–验证功能能否正确实现–正向测试
(2)无效等价类
对程序来说,不正确的、不合理的输入数据集合–验证软件的健壮性(异常处理能力)–反向测试

3、测试步骤
被测案例:两个整数加法计算器
需求:第一个数和第二个数需求一样,都要求:-99–99之间的整数,不能为空
步骤1:分析需求,初步划分等价类
分析需求:
(1)不能为空
有效:不为空
无效:为空
(2)数据类型:整数
有效:整数类型
无效:非整数类型
(3)数据范围:-99–99之间
有效:-99–99之间
无效:>99、<-99
分析结果:
注意:初步划分等价类的依据就是需求
步骤2:细化等价类
注意:细化等价类不再以需求为依据,而是以数据存储的类型或格式为依据
(1)非整数
小数、字母、特殊字符(符合、空格、特殊符号)、中文字符、
(2)-99–99之间的整数
原因:由于整数类型存储时需要应用补码,而正、负整数的补码算法不同,所以:正、负整数要分别测试
提示:无效数据一般正负整数没有必要分开测,但是如果纠结,就补测一下
步骤3:将分析结果,填入《等价类表》(用的较少,只能存储等价类数据)
步骤4:从每个等价类中挑选代表数据,编写测试用例
注意:每个等价类范围至少要挑选一个代表数据,保证每个等价类范围均被测试覆盖,有些情况,一个等价类范围还可以挑选多个代表数据测试
方案(思路):单独测试每个控件的等价类–适合初学者
首先:测第一个数,此时第二个数写有效数据配合
接下来:再测第二个数,此时第一个数填写有效数据配合
总结:该案例的问题
(1)测有效数据是,测试用例存在“用例冗余”(重复),–优化重复用例
(2)无效数据组合的情况没有测
1)两个空间都无效的情况
2)一个控件多种无效情况组合在一起
3)说明:在每个控件每个无效数据都单独测试覆盖过得前提下,没有必要测试所有的无效数据组合,只需要适当挑选容易出错的组合进行重点补充测试即可。
补充内容:

4、错误推测法
是经验型测试方法,该方法是测试人员凭着经验和直觉,针对所测程序中容易出错的情况,设计测试。
错误推测法经常用于:常规测试方法设计测试后的补充测试。
通常将:测试人员不放心、纠结、用户容易错误操作、程序员容易出错的情况涵盖进来补充测试。
具体例子:特殊数据—0、空格、@、.、
测表格时,当表格为0行、1行时
当测试网络应用时要考虑弱网状态
5.随机测试
随机测试(猴子测试–monkey testing)
就是当测试用例测试执行完成后,随意操作,随意挑选数据测试的方式。
随机测试发现bug的概率低,只能是正常测试完成后的补充

二、 边界值法

1.方法说明
在开发程序时,数据的边界是很容易出现错误的,所以为了重点测试边界数据,出现了一种专门的测试方法–边界值法,边界值法是等价类划分法的有力补充
2.应用场合
在程序中,有输入数据的地方也可以使用边界值法,边界值法通常会和等价类划分法配合使用,对容易出错的边界值数据进行测试,两种方法搭配使用,从而形成更为完善的测试方案。
3.如何划分边界值
(1)边界值点
就是有效等价类和无效等价类之间的分界点(最大值max、最小值min)
(2)次边界值点
边界值点左右相邻的点,就是次边界点,
Min-:无效最小次边界
Min+:有效最小次边界
Max-:无效最大次边界
Max+:有效最大次边界
4、面试题
Q1:当测试时间紧张时,应优先测试哪些边界值?
测试时间紧张应优先测试边界值点,也就是
最小值/最大值边界值点,次边界值点可以先忽略

附加:如果重点测“健壮性”选择测试哪些边界值?

选择测无效的次边界值,包括:无效最小/最大次边界值(min-和max+)

Q2:是不是所有数据的边界值在需求中都是开始就确定好了?
不一定,有的数据在需求中是开始就可以明确,需要在后续的研发过程中逐步明确
补充说明:需求是可以维护的,也是可以变更需求的,测试用例也是可以维护的,可以修改的,逐步完善

5、等价类划分法和边界值的综合运用
首先:正向测试-测试正确的数据
将多个控件的有效数据可以组合测试,这样既能保证测试质量,又能去除用例冗余(重复),提高效率
接下来:反向测试–测错误的数据
每个控件的每个无效数据,要单独测试
因为该案例有屏蔽现象,屏蔽现象影响会使测试人员无法明确是否有bug,所以无效数据不能组合测试

三 判定表法(决策表法)

一、应用场景
在界面中有多个控件,不同控件之间存在组合或限制关系,不同输入条件之间组合会对应不同的输出结果,为了理清输入组合对应的输出结果是否正确,可以使用判定表法
注意:判定表法比较适合测试组合数量较少的情况
二、判定表的特点
1.输入条件的顺序是无关紧要的
2.输出结果的顺序是无关紧要的
3.先测那个组合,后测那个组合无关紧要的
4.每个组合都是相互独立的
三、判定表法总结
1、判定表法是常用来测试多个控件至今的组合情况,常见控件由:单选按钮、复选框、下拉列表等
2、判定表法适合测试组合数量较少的情况,如果组合数量较多就还是要考虑抽样测试
3、判定表的组成(了解)

四、 正交排列法

一、方法说明
正交排列法是利用正交表测试的方法,正交表是数学统计学方向的科研成果,具备可以“将大量数据挑选最优、最少的数据进行统计”的特征,测试方向利用这个特征将正交表应用于测试。
提示:测试人员只需要能够挑选合适的正交排列法,并将其应用与测试即可,不需要研究其内部算法和原理
二、正交表公式的解析
Ln(mk)
L:line 行
N: 代表行数,表示正交表由几行(测试人员不需要计算)
M:每一列的最大数值
K:正交表的列数,表示正交表有几列

三、正交排列法
1、应用场合:
界面中有多个控件,每个控件有不同取值,不同控件取值之间存在组合关系,但是组合数量较多,此时不应测试所有组合,而应使用正交排列法,挑选最优、最少的组合进行测试(抽样测),正交排列法是一种比较优秀的测试方法
2、正交排列法的测试步骤
案例:字符属性设置
步骤1:分析需求,找出参与组合的控件,并列出每个控件取值(准备)
步骤2:挑选合适的正交表
确定m值和k值的过程
m值:在测试时由每个控件的取值个数决定
k值:在测试时,由参与组合的控件个数决定
案例:m=3,k=4
挑选34 的正交表
步骤3:应用正交表(映射)
将控件和控件取值与正交表进行对于的替换
(1)控件名称–正交表因子(列标题)
(2)每个控件取值–正交表列状态(数值123等)
注意:应用完成后,每一行代表着一种组合
步骤4:编写测试用例

3、判定表法和正交排列法的异同?
(1)都可以用来测试控件之间的组合情况
(2)判定表法测试全面,质量好,比较适合测试组合数量比较少的情况
(3)正交排列法抽烟测,效率高,比较适合测试组合数量较多的情况

提示:测试人员要在测试质量和测试时间之间追求一种平衡
4、正交表的总结
(1)正交表的局限
1)正交表的数量有限(9个)
可能会找不到正好匹配的正交表
2)正交表中每列的取值个数都有规格(一般都一样)
实际应用中,控件的取值个数有时并不一样,不一定符合正交法的规格
(2)正交表的特点(平均/均匀)
1)每一列的数值出现次数均等
2)任意两列同一行会形成有序数对,每个有序数对出现次数均等
提示:借鉴正交表的特点,测试数据的选取应尽量“均匀”
3)正交表选取的是“最优、最少”的组合,但是毕竟没有测试所有的组合,有可能有遗漏bug的风险,所以时间允许应适当补充测试。

四、正交表的强化
–解决找不到合适的正交表的问题
1、k值不合适的问题
解决方法:选择k值最接近的,并且大一点的,用不到的列,删除即可
2、m值不合适的问题
问题:每个控件的取值个数不同, 可以选取m取值最大的(最大值方案)

五、方法总结
(1)如果有多出的列删掉即可
(2)先把能替换的部分都替换
(3)替换后,如果有多出的空白处,可以看出是多出的测试机会,应“尽量均匀”的分配给该列的取值
(4)最后检查一下是否有完全相同的两行(重复),如果有适当的处理(删、改)
(5)正好匹配的正交表优先级最高,如果没有合适的正交表,再去适当的强化处理,选择相对合适的正交表应用。

五、场景法
一、应用场景
1、场景法是最常用的测试方法,常用来测业务逻辑或业务流程
2、场景法是基于“软件业务”的测试方法
3、场景法要求测试人员将自己想象成最终用户,模拟用户使用软件正确和错误的各种场景
主要模拟两类场景–
(1)业务正确实现的情景–验证功能的正确性–正向测试
(2)业务实现错误/失败的情景–验证软件的健壮性(异常情况处理能力)–反向测试
二、场景法使用的常见思路
场景法常用于测试业务逻辑或流程,当拿到测试任务时,通常会使用场景办法对业务的流程和逻辑进行整体测试,当核心业务可以实现后,再用等价类划分、边界值、判定表等方法对细节展开测试(先整体,后细节)
三、场景法基于两个层面
1、业务层面(重要)
要求测试人员对所测软件比较熟悉,最好能成为该行业,业务方面的“专家”
2、技术层面
基本流:有效流或正确流
模拟业务正确实现的流程
备选流:无效流或错误流
模拟业务实现错误的各种场景
提示:对测试人员来说业务越复杂、测试人员对业务越陌生,测试难度就越大。我们不能改变业务的复制度,所以测试人员应该努力熟悉业务需求。
四、场景法的测试步骤
案例1:ATM取款
步骤1:熟悉、分析业务,整理业务,列出基本流和备选流
列基本流:正确的取款流程
验证卡通过–输入正确密码–进入选择功能界面–选择“取款”功能–在取款界面“输入”有效金额–出钞–更新金额,提示–返回主界面
列备选流:各种失败的取款流程
1)验证卡失败
2)密码错误3次以下
3)输错密码3次
4)余额不足
5)超出单次取款上限(5000)
6)超出单日取款上限(20000)
7)ATM余额不足
说明:还有例如:取款金额不是100的整数倍、卡内自己被冻结等备选流场景没有列出
步骤2:生成场景,填《场景表》
步骤3:覆盖场景,设计编写测试用例
说明:通常都是1个测试点(场景),对应设计1条测试用例,但是有些特殊情况场景和用例有可能不是1:1的关系
有时可能1个场景设计多条用例测试
也有可能1条用例覆盖多个场景
3、案例2:五子棋游戏
步骤1:熟悉分析需求(规则),整理业务
步骤2:填场景法
步骤3:设计测试、执行测试、记录结果(证迹+实际结果说明)
黑棋胜
黑棋负
双方和棋
黑棋下禁手(双三、双四、长连),应判黑棋负

五、下拉列表和列表控件的测试分析
下拉列表和列表框控件较多时通常不会测试所有选项,而是至少测试3项,分别为:第1项(最小值)、中间某项(有效等价类中的代表数据normal)、最后1项(最大值)
说明:有特殊情况,可能会测超过3项
例如:测月份下来列表
测试点:
边界值:
最大值–12月
最小值–1月
有效等价类:
大月:–31天、小月–30天、闰月–2月
如果有无效月份应特殊测试

2、为什么要细分字符
例如:身份证号码最后一位
有效等价类;0-9和X
无效等价类:中文字符、排除X以外的其他字母、特殊字符
说明:只要是键盘上能输入的都是字符,包括中文、英文字符、特殊字符、数字字符
3、一个中文 =(2个)字节
在测试中我们说1个中文算1个或2个字符,具体算几个字符要符合需求要求

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写测试用例的测试方法(等价类、判定表、边界值、正交排列法、场景法) 的相关文章

  • 等价类划分法

    专注于分享软件测试干货内容 欢迎点赞 收藏 留言 如有错误敬请指正 软件测试面试题分享 1000道软件测试面试题及答案 软件测试实战项目分享 纯接口项目 完整接口文档 软件测试实战项目分享 WEB 测试自动化项目实战 软件测试学习教程推荐
  • 【软件测试】学习笔记-高效提交Bug

    本篇文章介绍如何才能写出一份高效的软件缺陷报告 测试工程师需要利用对需求的理解 高效的执行力以及严密的逻辑推理能力 迅速找出软件中的潜在缺陷 并以缺陷报告的形式递交给开发团队 缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁 也是测试工程
  • 【软件测试】学习笔记-脚本与数据的解耦 + Page Object模型

    本篇文章介绍GUI测试中两个非常重要的概念 测试脚本和数据的解耦 以及页面对象 Page Object 模型 测试脚本和数据的解耦 GUI自动化测试适用的场景 尤其适用于需要回归测试页面功能的场景 如果在测试脚本中硬编码 hardcode
  • “揭秘性能测试工具:优化软件性能的关键秘籍“

    性能测试工具的设计宗旨是为了模拟用户对软件应用程序或系统的各种操作 旨在评估关键的性能指标 包括响应时间 吞吐量 并发能力和资源利用率 通过这些工具模拟的多用户环境 我们能够产生与实际工作负载相似的条件 并监测系统在这种情况下的性能表现 一
  • 软件测试/测试开发/全日制/测试管理丨Python关键字

    Python 语言有一些关键字 它们具有特殊的含义 不能被用作标识符 变量名 函数名等 False 布尔类型的假值 None 表示一个空对象或无值 True 布尔类型的真值 and 逻辑与操作符 as 用于给导入的模块起别名 assert
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • Python自动化操作:简单、有趣、高效!解放你的工作流程!

    今天跟大家分享一套自动化操作流程解决方案 基于 Python语言 涉及 pyautogui pyperclip pythoncom win32com 依赖包 安装命令为 pip install pyautogui pip install p
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO

随机推荐

  • png lib error bad parameters to zlib

    目录 1 问题描述 2 问题分析 3 解决方案 3 1 解决方法一 3 2 解决方法二 1 问题描述 在 Linux ubuntu 编译 PNG 库时 出现了 png lib error bad parameters to zlib 错误
  • Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用

    转载请注明本文出自xiaanming的博客 http blog csdn net xiaanming article details 26810303 请尊重他人的辛勤劳动成果 谢谢 大家好 差不多两个来月没有写文章了 前段时间也是在忙换工
  • Elasticsearch 部署以及插件安装(win7)

    Elasticsearch 部署以及插件安装 win7 一 安装版本 找到对应版本 我使用的是2 3 5版本 安装包下载地址https www elastic co downloads past releases elasticsearch
  • LEAKAGE IN NANOMETER CMOS TECHNOLOGIES

    纳米CMOS管技术中的漏电流 https link springer com book 10 1007 0 387 28133 9
  • ORA-00933: SQL 命令未正确结束

    java sql SQLSyntaxErrorException ORA 00933 SQL 命令未正确结束 在数据库中语句运行完全没问题 但是在编程的时候却报这样的错误 控制台看似报一大堆异常原因可能是 1 你没逗号可能没写够 仔细检查S
  • 获取字符串长度的函数sizeof()、strlen()、length()、size()详解和区别

    在C 中计算长度的函数有四种 它们分别是sizeof size strlen str length 一 sizeof 和strlen 两者区别 1 sizeof操作符的结果类型是size t 该类型保证能容纳实现所建立的最大对象的字节大小
  • jQuery 获取 input:file 文件路径( Firefox for Ubuntu )

    在写一个小项目的时候遇到了一个问题 通过jquery获取选择的文件的路径 最开始选择的是通过 val 获取路径 但是后来发现获取到的路径有问题原始路径是 home onemue 案例 表情上传 前端 pic png获取到的路径是C fake
  • C++之萃取技术

    自从C 中引入了template后 以泛型技术为中心的设计得到了长足的进步 STL就是这个阶段杰出的产物 STL的目标就是要把数据和算法分开 分别对其进行设计 之后通过一种名为iterator的东西 把这二者再粘接到一起 设计模式中 关于i
  • 消息队列之基础知识(一)

    来自公众号 灰子学技术 欢迎关注 笔者最近在看消息队列 顺便做了整理 在学习这个知识点之前 笔者问了自己下面几个问题 什么是消息队列 为什么我们需要消息队列 消息队列有什么用 常用的消息队列有那些 以下内容 读者便从这几个方面开始说起 一
  • windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题

    在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed registry count type 1 0 vs 1 Unknown layer type的错误 如下图 这里参考网上资料汇总了几种解决方法
  • 安卓音乐播放器--侧边栏

    侧边栏学习 参考资料 http www chinatarena com Html adpeixun 201307 5251 html 还有一个参考的代码 最后自己的理解是 在scrollView中添加两个水平的视图 musicListLay
  • react中实现拖拽排序react-dnd

    dnd文档 html 拖拽排序 import React useState useRef from react import cloneDeep from lodash import styles from index less const
  • 中国工程院院士倪光南:拥抱开源 与世界协同创新

    2022年7月21日 在中国开源软件推进联盟主办 赛迪传媒 软件和集成电路 杂志社联合承办 CSDN 独家直播的 第十七届开源中国开源世界高峰论坛 上 中国工程院院士倪光南带来了 拥抱开源 与世界协同创新 的主题演讲 以下为倪光南演讲实录
  • 【uni-app】【Android studio】手把手教你运行uniapp项目到Android App

    最开始想写一个自定义背景的弹窗 因为要用到项目的好几个地方 不希望每个地方都需要引入 而且只需要放张图片 加个关闭按钮和功能按钮就行 类似这种效果 开始写的时候找了一篇博客 写的很详细 但是这个是Vue2的 uniapp实现自定义弹窗组件
  • 轴上键槽怎么标注

    百度知道 https zhidao baidu com question 1638366488494069980 html
  • MATLAB图像拼接算法及实现

    论文关键词 图像拼接 图像配准 图像融合 全景图 论文摘要 图像拼接 image mosaic 技术是将一组相互间重叠部分的图像序列进行空间匹配对准 经重采样合成后形成一幅包含各图像序列信息的宽视角场景的 完整的 高清晰的新图像的技术 图像
  • java引用ScriptEngine解析表达式实现计算器功能

    包名 import javax script 使用 String str 2 6 7 ScriptEngine se new ScriptEngineManager getEngineByName JavaScript try double
  • 大数据技术原理与应用(复习)

    大数据 第一章 大数据的四个基本特性 p8 4V 数据量大 Volume 数据类型繁多 Variety 处理速度快 Velocity 价值密度低 Value 举例说明大数据的关键技术 p16 数据采集与预处理 利用ETL工具将分布在异构数据
  • Python123题目解析

    老样子 复习第一位 持续更新 慢慢附加知识点 python123 英寸和厘米的交互 升级版 描述 虽然我国已经很好的普及了国际单位制 而在现实生活中 仍然有很多地方采用了英制单位来描述 例如 我们买一台65寸的电视 这个地方的寸指的就是英寸
  • 编写测试用例的测试方法(等价类、判定表、边界值、正交排列法、场景法)

    一 等价类划分法 1 应用场合 在程序中 有数据输入的地方适合使用等价类划分法进行测试 方法思想 范围 将大量数据划分成若干的范围 等价类 再从每个范围中抽取少量代表数据进行测试 抽样测试 2 两个概念 1 有效等价类 对程序来说 正确的