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

测试用例全解析:从入门到精通(1)

前言:Hello!!大家早上中午晚上好!!今天来总结一下软件测试最重要的知识点之一:测试用例!下文将介绍到什么是测试用例?测试用例作用?以及如何编写测试用例等。


一、什么是测试用例

1.1 概念
  • 测试用例是为了实施测试向被测试的系统提供的一组集合
1.2 举个例子
  • 测试一个人是好是坏?

如何测试一个人是好是坏?方法有很多种,例如我们可以这样做:

  1. 请这个人去吃饭,看他会不会自觉买单?
  2. 请这个人去看电影,看他会不会在看电影的时候大声说话?
  3. 跟这个人一起过马路,看他会不会扶老奶奶过马路?
  4. 带这个人到自己家里玩,看他会不会跟叔叔阿姨打招呼?
  5. .....

以上所有都是测试用例,你还能想到更多吗?

我们会发现:越到后面能想出来的测试用例越困难,如果此时我们有一样东西可以引导你,你会更容易想到更多的测试用例!


二、测试用例的万能公式

2.1 作用
  • 万能的测试用例公式能够引导我们想出更多的测试用例
2.2 公式
  • 功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试
2.3 理解

功能测试:从产品角度出发验证产品功能是否符合用户需求;

性能测试:在一些特殊情况下会不会影响产品的功能;

界面测试:肉眼能看到的一切元素;

兼容性测试:在不同环境不同版本下产品功能是否正常;

易用性测试:检测产品是否具有简单易上手的属性;

安全测试:产品是否保护用户隐私是否会对用户造成伤害,是否存在危险性因素;

2.4 举个例子

对一个水杯进行测试

功能测试
水杯的主要功能为:喝水、盛水

对喝水功能测试:

  • 拿起水杯能否喝到水
  • 不拿起水杯能否喝到水
  • 水杯倾斜能否喝到水
  • 水杯水平能否喝到水

对盛水功能测试:

  • 能否盛一点点水
  • 能否盛一半水
  • 能否盛满水杯
  • 盛满水杯会不会溢出

性能测试:

  • 在极寒环境下水杯会不会碎裂
  • 在极热环境下水杯会不会碎裂
  • 在高压强环境下水杯会不会碎裂
  • 在非常低压环境下水杯会不会碎裂
  • 用力摔地上水杯会不会碎裂
  • 在非常晃动的桌子上水杯能否保持不摔倒

易用性测试:

  • 水杯拿起来方不方便
  • 水杯装水方不方便
  • 水杯喝水方不方便
  • 水杯藏起来方不方便

界面测试:

  • 水杯的大小是否符合预期
  • 水杯的形状是否符合预期
  • 水杯的颜色是否符合预期
  • 水杯的材质是否符合预期

兼容性测试:

  • 水杯能否盛果汁
  • 水杯能否盛汽水
  • 水杯能否在家里喝水
  • 水杯能否在广场喝水
  • 水杯能否在办公室喝水

安全性测试:

  • 水杯放入特殊物质会不会发生化学反应产生有害物质
  • 水杯喝水的时候会不会刮到嘴巴
  • 水杯拿起来的时候会不会刮到手
  • ...

以上,利用万能公式能帮助我们想到更多的测试用例!!

那么测试用例是不是越多越好呢?怎样的测试用例才是一个优秀的测试用例?

答案:能够达到更大的测试覆盖率的测试用例是更好的!

三、测试用例的具体设计方法

3.1 等价类

什么是等价类?例如: 对一个注册功能设计测试用例,在注册功能中明确要求注册密码为6~12位数字:

          这时我们不可能把<6位数字或>12位数字的所有可能都测试一遍,这样的事情是无法完成且非常低效的,我们只需要在<6位数字的集合中选一个和在>12位数字的集合中选一个进行测试即可,我们认为只要通过一个测试代表集合中的所有用例都通过测试!

在等价类中分为有效等价类和无效等价类:

  • 有效等价类:有意义合理的输入集合
  • 无效等价类:不满足需求的集合

上述的例子中的有效等价类为: 6~15位数字

上述的例子中的无效等价类为: <6位的数字 、>12位的数字

3.2 边界值

边界值的作用: 作为等价类划分的补充

边界值又分为边界值和次边界值:

例如上述的例子中边界值为:6 、12  ; 次边界值为: 5 、 13

3.3 场景法

场景法的说明: 每个需求都存在一个基本的流程(主流程),在主流程里每个阶段都可能发生异常可能(备选流)

 例如一个测试一个邮箱注册的功能:

如图:

        

在每一个环节中都有可能会发生不确定的因素导致当环节进行失败,需要重新进入这个环节,我们设计测试用例的时候可以利用场景法来设计!

3.4 正交法

正交法的作用场景: 用于在设计两两组合的测试用例时数量会非常的多情况时可以使用

例如:

        在一个注册功能里需要设计的测试用例:

如上图,如果每一个组合都要设计一个测试用例的话需要设计非常多的用例,这是我们就可以用正交法

正交表的特性:

        每一列中不同数字的出现次数相等;

        任意两列的数字排列齐全且均衡;

如图: 

        

这是一个正交表,这个正交表的因素数为因子1、 因子2、 因子3, 水平数为 1 、2、 3;

正交法的步骤:

  1. 根据需求找出因素和水平:  例如上面注册功能的因素为:姓名,手机号,邮箱,地址。水平数为:填写/不填写;
  2. 把因素数写到excel表格中:
  3. 利用pairs工具,在pairs下创建txt文件,把excel中内容复制粘贴到txt文件中,直接保存
  4. 在命令行中进入到allpairs.exe所在目录,输入命令让allpairs对刚才的txt文件生成正交表:使用allpairs.exe工具对txt文件生成正交表文件

然后我们就可以根据生成的正交表设计出测试用例:

用例一:姓名填写 手机号填写 邮箱填写 地址填写

用例二:姓名填写 手机号不填写 邮箱填写 地址不填写

用例三:姓名不填写 手机号填写 邮箱不填写 地址填写

用例四:姓名不填写 手机号不填写 邮箱填写 地址不填写

用例五:姓名填写 手机号填写 邮箱填写 地址不填写

用例六:姓名填写 手机号不填写 邮箱填写 地址填写

再加上一个:姓名不填写 手机号不填写 邮箱不填写 地址不填写

如上我们只需要设计7个测试用例即可!

今天的分享就到这里!如果对你有所帮助记得点赞收藏+关注哦!! 谢谢!!!

咱下期见!!!


文章转载自:

http://PqO87Q92.fjtnh.cn
http://uWPNuY2E.fjtnh.cn
http://roCjK55r.fjtnh.cn
http://ELuwtmT0.fjtnh.cn
http://z0agdUTz.fjtnh.cn
http://3bMH1QbE.fjtnh.cn
http://rlN5dRku.fjtnh.cn
http://1lVTgbNi.fjtnh.cn
http://l1vGmXvm.fjtnh.cn
http://DxIdTnSP.fjtnh.cn
http://KjkFEBVe.fjtnh.cn
http://OsOuLQc8.fjtnh.cn
http://QswWpCZB.fjtnh.cn
http://AX3WEbW3.fjtnh.cn
http://L4xddRdL.fjtnh.cn
http://bj7duKez.fjtnh.cn
http://AaYQbkot.fjtnh.cn
http://yOGtZKcA.fjtnh.cn
http://fOgMcg11.fjtnh.cn
http://m9OQt8oz.fjtnh.cn
http://AmV4SDwS.fjtnh.cn
http://Qm8DLarg.fjtnh.cn
http://hFCdRwMi.fjtnh.cn
http://eDNzGnRj.fjtnh.cn
http://18ogWafd.fjtnh.cn
http://dpklKjt3.fjtnh.cn
http://T4mKzrMD.fjtnh.cn
http://bOIJGAzS.fjtnh.cn
http://pV5llNQv.fjtnh.cn
http://a1BNcjYT.fjtnh.cn
http://www.dtcms.com/a/381070.html

相关文章:

  • Linux Netfilter 之 如何完成一个自制的防火墙实例
  • 大语言模型强化学习中的熵崩溃现象:机制、影响与解决方案
  • Netty 源码扩展篇:零拷贝、内存池与背压机制
  • 21.1 《24GB显存搞定LLaMA2-7B指令微调:QLoRA+Flash Attention2.0全流程实战》
  • 前端架构-CSR、SSR 和 SSG
  • range与enumerate的异同与使用
  • Cursor MCP调用流程
  • UBOOT启动流程详解-现代FIT设备加载
  • 中级统计师-统计法规-第七章 统计调查管理
  • 力扣刷题笔记-电话号码的字母组合
  • 基于arduino的视频监控土壤灌溉系统
  • 【硬件-笔试面试题-90】硬件/电子工程师,笔试面试题(知识点:DCDC开关电源的效率计算)
  • 快速理解并记住Python中的可变与不可变对象
  • Netty 调优篇:实战配置、性能监控与常见坑
  • ZYNQ7020+AD9361裸机驱动验证
  • 【超简单】后端入门案例-基于SpringBoot+MyBatis-plus+MySQL图书管理系统
  • 【C++】:list容器全面解析(超详细)
  • Java 笔记 OCA 备考Checked Exception(受检异常)
  • DAY 26 函数专题1:函数定义与参数-2025.9.13
  • MySQL的基础和进阶与运维
  • 看到手就亮灯 防夹手视觉光栅
  • QT M/V架构开发实战:M/V架构的初步认识
  • 4.2-中间件之MySQL
  • 基于hiprint的票据定位打印系统开发实践
  • 批量获取虾皮商品数据:开放API接口操作详解
  • @JsonFormat 如何在get请求中日期字段不报错还能使用
  • C/C++ 标准库中的 `strspn` 函数
  • 关闭click for mouse control
  • C语言打印爱心
  • Notion-Folder-Opener | 一个极简、稳定的本地“链接→打开文件/文件夹”工具