当前位置: 首页 > news >正文

编写测试用例的常用方法总结

目录

一、等价类划分法

二、边界值分析法

三、判定表法

四、正交法

五、场景法

六、错误猜测法


一、等价类划分法

定义

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

目的:

在有限的测试资源下,用较少的测试用例尽可能多地覆盖各种可能的输入情况,以发现程序中的错误。

划分原则:

有效等价类:对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。

无效等价类:与有效等价类相反,是那些对程序的规格说明来说不合理或无意义的输入数据构成的集合。

举例:

对于一个输入年龄的字段,有效等价类可以是 18 到 60 岁之间的整数,无效等价类可以是小于 18 岁、大于 60 岁、非整数等情况。

二、边界值分析法

定义

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

目的:

选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,因为在边界附近往往容易出现错误。

边界值的选择:

通常包括最小值、略小于最小值、最大值、略大于最大值等情况。

举例:

对于一个输入范围为 1 到 100 的整数字段,边界值测试用例可以包括 1、0、2、99、100、101 等。

三、判定表法

定义

判定表是分析和表达多逻辑条件下执行不同操作的工具。

目的:

能够将复杂的逻辑关系和多种条件组合清晰地表示出来,从而设计出全面的测试用例。

构建判定表:

确定条件桩和动作桩,列出条件项和动作项,根据条件组合确定规则,最后根据规则生成测试用例。

举例:

假设一个系统有两个输入条件 A 和 B,输出结果为 C。如果 A 为真且 B 为真,则 C 为真;如果 A 为假且 B 为假,则 C 为假。根据这个逻辑关系可以构建判定表并生成测试用例。

四、正交法

定义

正交试验设计法是利用正交表来安排多因素试验,并对试验结果进行分析的一种方法。

目的:

在多因素、多水平的情况下,通过较少的试验次数找到最优的组合,提高测试效率。

步骤:

确定因素和水平,选择合适的正交表,根据正交表安排试验,进行试验并分析结果。

举例:

对于一个软件系统有三个因素 A、B、C,每个因素有三个水平。通过正交法可以选择合适的正交表,安排试验并确定哪些因素组合对系统性能影响最大。

正交表的构成:因素数、水平数、行数。
因素:对指标的影响条件,通常是正交表中的一列。
水平:因素对应的可选项。
正交表的性质:
  • 每一列中,不同的数字出现的次数相等。
  • 任意两列中数字的排列方式齐全而且均衡。
根据正交表的性质,一般人很难通过手动设计出正交表, 正交法设计测试用例的步骤:
  1. 找到因素和水平
  2. 用allparis工具生成正交表
  3. 将因素和水平写入Excel表格中
  4. allparis目录下创建新的文本文件new.txt,复制Excel中的因素和水平,直接粘贴到文本中保存并退出
  5. 使用allparis命令生成正交表:allparis.exe new.txt>zhengjiao.txt
  6. 根据正交表编写测试用例
  7. 补充遗漏的重要测试用例

五、场景法

定义

场景法是通过描述流经用例的路径来确定不同的场景,从用例开始到结束遍历其中所有基本流和备选流。

目的:

模拟用户的实际操作场景,确保系统在各种场景下都能正常工作。

基本流和备选流:

基本流是系统最主要、最正常的业务流程;备选流是在基本流的基础上,由于各种异常情况或条件分支而产生的流程。

举例:

对于一个在线购物系统,基本流可以是用户浏览商品、加入购物车、结算、支付、完成订单。备选流可以包括商品缺货、支付失败、用户取消订单等情况。针对不同的场景编写测试用例,以覆盖系统的各种可能情况。

根据场景法设计测试用例的步骤:
  1. 确定基本流
  2. 确定备选流
  3. 根据备选流补充测试用例
  4. 编写测试用例

六、错误猜测法

定义

错误猜测法是基于经验和直觉,猜测系统可能存在的错误和问题,编写相应的测试用例。

目的:

利用测试人员的经验和洞察力,发现一些不容易被其他方法发现的错误。

实施方法:

参考以往项目的经验、常见的错误类型、用户反馈等,推测系统可能出现的问题。

举例:

对于一个登录功能,测试人员可能会猜测用户输入错误的用户名或密码、密码大小写敏感问题、账号被锁定等情况,并编写相应的测试用例。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Web安全:SQL注入实战测试.(扫描 + 测试)
  • 【MySQL 15】使用 C/C++ 连接数据库
  • java实现ocr功能(Tesseract OCR)
  • skywalking接入nginx
  • window上部署kafka3.6.1,并配置sasl认证
  • python从入门到精通:数据可视化-图形开发
  • 【Android】使用 ADB 查看 Android 设备的 CPU 使用率
  • 以“更好的”价值主张,五粮特曲打响双节动销
  • WordPress美化节日灯笼插件,适合春节的时候使用
  • 前端(Vue)tagsView(子标签页视图切换) 原理及通用解决方案
  • Leetcode 第 408 场周赛题解
  • 数据结构之最短路径
  • 在Mac上打开UE4Editor
  • 爆改YOLOv8 | 利用CPA-Enhancer提高低照度物体检测(适用于雨,雪,雾天)
  • vscode开发uniapp项目教程
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【React系列】如何构建React应用程序
  • C++类中的特殊成员函数
  • chrome扩展demo1-小时钟
  • leetcode386. Lexicographical Numbers
  • Redash本地开发环境搭建
  • spring security oauth2 password授权模式
  • SwizzleMethod 黑魔法
  • Swoft 源码剖析 - 代码自动更新机制
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • 给第三方使用接口的 URL 签名实现
  • 码农张的Bug人生 - 初来乍到
  • 如何实现 font-size 的响应式
  • 入门到放弃node系列之Hello Word篇
  • 实现简单的正则表达式引擎
  • 使用API自动生成工具优化前端工作流
  • 听说你叫Java(二)–Servlet请求
  • 小程序开发中的那些坑
  • 写给高年级小学生看的《Bash 指南》
  • #pragma预处理命令
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)(1.13) SiK无线电高级配置(五)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++20) consteval立即函数
  • (LeetCode C++)盛最多水的容器
  • (void) (_x == _y)的作用
  • (第61天)多租户架构(CDB/PDB)
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三分钟)速览传统边缘检测算子
  • (四)模仿学习-完成后台管理页面查询
  • (转) RFS+AutoItLibrary测试web对话框
  • .net dataexcel 脚本公式 函数源码
  • .net解析传过来的xml_DOM4J解析XML文件
  • /etc/motd and /etc/issue
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @NotNull、@NotEmpty 和 @NotBlank 区别