01 设计测试用例

news/2025/1/30 17:42:45/文章来源:https://www.cnblogs.com/you-ni/p/18695263

设计测试用例的万能思路

针对某个物品/功能进行测试。

万能思路:功能测设 + 界面测试 + 性能测试 + 兼容性测试 + 易用性测试 + 安全测试

总结:

功能测试:

水杯:装水、喝水...

注册场景:注册 + 登录

​ 想象日常使用中的注册场景有哪些功能。

界面测试:

非软件:颜色、形状、大小、材质、整体

软件:

  • 文字/输入框/图片/下拉框 ——> 颜色、大小、形状、布局都要进行测试;
  • 文字是否存在错别字、病句、折叠、重叠...

性能测试:

水杯:耐热性、耐寒性、耐摔性、抗压性...

软件:

  • 响应时间
  • 几千万人同时访问...

兼容性测试:

水杯:水杯可以装液体,针对不同液体。

软件:

  • 系统:Linux、Windows、Mac;
  • 终端:PC、移动端
  • 浏览器:Chrome、FireFox、Safari...

易用性测试:

需要具备便捷、简单易上手的属性,用户引导、符合用户使用习惯。

安全测试:

水杯:

  • 水杯的材质是否安全;
  • 特殊情况下(高温低温)材质是否会释放毒性;
  • 存放特殊的液体会不会导致化学反应,材质是否会释放毒性;

软件:

  • SQL注入
  • XSS漏洞
  • 越权(垂直越权、水平越权)

设计用例的方法

​ 根据项目需求文档、产品UI设计图等来设计测试用例。

  1. [等价类]

​ 等价类是分块/分区的概念。将需求的输入划分若干个等价类,从等价类中选出一个测试用例,如果这个测试用例通过,则认为这整个等价类就通过。

​ 通过等价类可以用较少的测试用例就可以尽可能多的覆盖功能,可以解决穷举法解决不了的问题。

有效等价类:针对需求文档是合理的、有意义的集合。

无效等价类:针对需求文档是没有意义的集合。

使用步骤:

  1. 确定有效等价类和无效等价类;
  2. 编写测试用例。

假设需求:姓名输入6~200位的字符

有效等价类:输入6~200位的字符

无效等价类:输入小于6位 或 大于200 位的字符

  1. [边界值]

​ 可以认为是等价类的补充,在等价类的基础上添加边界值和次边界值的测试用例。

假设需求:姓名输入6~200位的字符。

边界值:输入6位的字符,输入200位的字符;

次边界值:输入5位的字符,输入7位的字符;输入199位字符,输入201位字符。

  1. [判定表法]

​ (因果图法)通过输入条件和输出动作之间的关系,设定判定表,再根据判定表编写测试用例。

使用步骤:

  1. 确定输入条件和输出结果;
  2. 找出输入条件和输出结果之间的关系;
  3. 画判定表;
  4. 根据判定表编写测试用例

假设需求: 提交订单,当订单金额大于300或有红包时,是有优惠的。

  1. 确定输入条件和输出结果

​ 输入条件:金额大于300、有红包、提交订单;

​ 输出结果:有优惠、无优惠;

  1. 输入条件和输出结果之间的关系:

​ (为了方便书写,这里将金额大于300定为A,有红包定为B,提交订单定为C;有优惠定为1,无优惠定为2)

  1. 画判定表

  1. 根据判定表编写测试用例

(1)金额大于300,没有红包,提交了订单,则该订单为有优惠订单;

(2)金额不大于300,有红包,提交了订单,则该订单为有优惠订单;

(3)金额大于300,有红包,提交了订单,则该订单为有优惠订单;

(4)金额大于300,没有红包,没有提交订单,则该订单为无优惠订单;

(5)金额不大于300,有红包,没有提交订单,则该订单为无优惠订单;

(6)金额不大于300,没有红包,提交了订单,则该订单为无优惠订单;

(7)金额大于300,有红包,没有提交订单,则该订单为无优惠订单;

(8)金额不大于300,没有红包,没有提交订单,则该订单为无优惠订单;

注意:

​ 在因果图法里,也是通过确定输入条件和输出结果来画出因果图(比较复杂难),然后再根据因果图画出判定表。因此这里直接通过输入条件和输出结果的关系确定了判定表,然后再编写测试用例。

  1. [正交法]

​ 通过构造正交表编写测试用例。

正交表表达式:L4(2³ )

L:正交表;

4:试验次数(测试用例的个数)

2:因素数(输入条件)

3:水平数(输入条件的可选项)

正交表的特点:

  1. 每一列中数字出现的次数是相同的;
  2. 任意两表中数字的排序方式齐全且均衡。

使用步骤:

  1. 找出因素数和水平数;
  2. 使用allpairs工具生成正交表;
  3. 编写测试用例;
  4. 补充测试用例。

使用allpairs工具生成正交表步骤:

(1)在.exe 存在的目录下新建text文档。

(2)在 Excel 表中先写好每个输入条件及其对应的可选项。然后复制粘贴到新建的text文档中。然后直接保存(ctrl + s)。


(3)打开cmd命令行窗口(win + r),cd 到allpairs 的目录下启动allpairs(执行.exe文件)allpairs.exe 2023_5_111.txt > 2023_5_111.txt,然后重定向一个新文件2023_5_111.txt,里面就是正交表。

假设需求: 一个注册页面,输入姓名、电子邮箱、密码、确认密码、验证码进行注册。

  1. 找出因素数和水平数

​ 因素数:姓名、电子邮箱、密码、确认密码、验证码

​ 水平数:填写、不填写。(这里每个因素数的可选项都一样,都是填写或者不填写)

  1. 使用 allpairs工具 生成正交表

  1. 编写测试用例

(1)填写姓名、电子邮箱、密码、确认密码、验证码;

(2)填写姓名,不填写电子邮箱、密码、确认密码、验证码;

(3)填写电子邮箱、确认密码,不填写姓名、密码、验证码;

(4)填写密码、验证码,不填写姓名、电子邮箱、确认密码;

(5)填写姓名、电子邮箱、密码,不填写确认密码、验证码;

(6)填写姓名、确认密码、验证码,不填写电子邮箱、密码;

  1. 补充测试用例

(7)都不填写。

  1. [场景设计法]

​ 包括基本事件流和多个备选事件流。以一个例子来解释什么是基本事件流和备选流。

假设需求:在ATM上取款

编写测试用例:

基本事件流:

​ 先插卡、输入正确密码、选择取款功能、输入正确金额、取钱、取卡。

备选事件流:

(1)插卡,输入密码错入、第二次输入正确、选择取款.....取卡;

(2)插卡、密码忘记、取卡。

.......

  1. [错误猜测法]

​ 通过资深的测试员提出的可能会出现的错误,来编写测试用例。

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

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

相关文章

C++ 实现一个vector

C++如何写一个带有allocator的vector 在STL中,容器一般都有一个allocator模板参数。 allocator用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 。如果 Allocator::value_type 与 T 不同,那么行为未定义(C++20 前)程序非良构(C++20 起)。 模…

使用xtrabackup对MySQL8.0.34进行备份和恢复

Percona XtraBackup 是一款开源的、用于 MySQL 和 MariaDB 的热备份工具,它可以在不停止数据库服务的情况下进行全量或增量备份,并且能够快速恢复数据。以下从特点、安装、备份与恢复操作、注意事项等方面进行详细介绍。 特点热备份:可以在数据库正常运行时进行备份,不影响…

【THM】Search Skills(搜索技巧)-学习

学习有效地搜索互联网并使用专门的搜索引擎和技术文档。本文相关的TryHackMe实验房间链接:https://tryhackme.com/r/room/searchskills 本文相关内容:学习有效地搜索互联网并使用专门的搜索引擎和技术文档。介绍 在 Google 上快速搜索“学习网络安全-learn cyber security”返…

使用ailabel对图片进行标注,vue3/js+ailabel.js

​ 一、实现效果 对方案可以添加多张图片,并在图片上进行标注。并且可以通过下方的缩略图切换方案图片 (demo) 二、效果图三、页面元素 <div class="w-full overflow-auto p-2" style="height: calc(100% - 7rem)"><div class="btns mb-2…

【模拟电子技术】17-基本放大电路的派生电路与场效应管放大电路的分析原则

【模拟电子技术】17-基本放大电路的派生电路与场效应管放大电路的分析原则 现在提出要求,要用NPN,PNP三极管各一个来构造放大电路,要求在大功率的时候,从输出端看都是PNP型,复合管就可以做到这一点可以看出第一个管子的功率肯定没第二个大,但是第一级管子决定了复合管的类…

Java Collection集合

目录集合概述集合框架Collection 常用功能 集合概述集合:集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对…

Java StringBuilder类

目录字符串拼接问题StringBuilder概述构造方法常用方法append方法toString方法 字符串拼接问题 由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如: public class StringDemo {public static void main(String[] args) {Strin…

[2025.1.28 MySQL学习] 锁

锁 全局锁全局锁就是对整个数据库实例加锁,加锁后处于只读状态,DML写语句、DDL语句、已经更新的事务提交语句都会被阻塞,典型使用场景时全库的逻辑备份 加全局锁:flush tables with read lock; 数据备份:mysqldump -uroot -p1234 itcast>itcast.sql 解锁:unlock table…

网络流量优化问题

问题描述 给定一个网络G(V, E) ,其中V为节点集合,E为链路集合。网络中的每条链路e的容量为Ce拓扑上的数字为链路的容量,假设网络中有K条单向网络流(k=n*(n-1),n为网络节点的数目),假定第i条网络流为fi,流的大小从[10, 100]区间中随机产生。现需要对K条网络流进行合理的…

8. Reading attributes 之 ATT_READ_BY_TYPE

1. ATT_READ_BY_TYPE_REQ 1.1 请求格式

Kafka 的部署(单机和集群)和 SpringBoot 访问

Kafka 由 Scala 和 Java 编写,最初由 LinkedIn 开发,后来成为 Apache 顶级项目,是一种高吞吐量的分布式发布/订阅消息系统。 Kafka 不仅仅是一个消息队列,还支持实时数据处理,其高吞吐、可扩展和持久化特性使其在大数据领域广泛应用。 本篇博客不详细介绍 Kafka,主要聚焦…

DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」

前言 最近 DeepSeek 狠狠刷了一波屏,国产大模型真的越来越厉害了👍,官方的服务器已经爆满了,以至于频繁出现反应迟缓甚至宕机的情况,和两年多之前 ChatGPT 的遭遇颇为相似。 我已经好久没有本地部署模型了(现在各厂商的模型都便宜量大),这次正好来试试 DeepSeek 开源模…