学习测试用例

news/2024/11/24 4:23:02/

✏️作者:银河罐头
📋系列专栏:JavaEE

🌲“种一棵树最好的时间是十年前,其次是现在”

目录

  • 测试用例好处
  • 测试用例的设计方法
    • 基于需求进行测试用例的设计
    • 等价类
    • 边界值
    • 判定表
    • 正交表法
      • 案例
    • 场景设计法
    • 错误猜测法
  • 面试题

测试用例好处

1)提高测试效率,节约时间。

2)测试用例是自动化测试用例的前提。

测试用例的设计方法

基于需求进行测试用例的设计

需求文档 -> 数理需求(掌握需求) -> 针对文档设计测试用例(基于需求设计测试用例)

举例 :

image-20230509151456145

image-20230509150001410

等价类

依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果 这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的 功能覆盖,解决了不能穷举测试的问题。

  • 有效等价类:满足用户需求输入的集合。

  • 无效等价类:不满足用户需求输入的集合。

等价类思想设计测试用例步骤:

1.充分理解需求

2.划分有效等价类和无效等价类

3.从有效等价类中抽取一个数据设计测试用例;从无效等价类中抽取一个数据设计测试用例。

举例:用户名要求长度为6-15位

image-20230509153901304

边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界

上述例子中要求长度是6~15位有效

//写法1:len > 6 && len < 15
//写法2:len >= 7 && len <= 14

6 和 15 这里的边界值就可能出现问题,需要测试。

  • 边界点

1)上点:边界上的点。

2)内点:边界内的点。

3)离点:边界值附近的一个点。

(如果是闭区间,离点是区间外距离上点最近的点;如果是开区间,离点是区间内距离上点最近的点)

image-20230509160257118

边界值设计测试用例:
1.充分理解需求

2.找边界点

3.针对边界点设计测试用例

image-20230509160709533

判定表

判定表(Decision table)是另一种表达逻辑判断的工具。

输入和输出的对应关系:

与:只有所有原因都为真,那么结果为真。

或:多个原因中有一个为真时,结果就为真。

恒等:条件为真,结果一定为真。

非:只有原因为假,结果才为真。

因果图法设计测试用例的步骤如下:

(1)分析所有可能的输入和可能的输出。

(2)找出输入与输出之间的对应关系。

(3)设计判定表。

(4)把判定表对应到每一个测试用例。

举例:

假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠”。

1)输入:订单已提交,订单合计金额大于300元,有红包

输出:有优惠,没优惠

2)关系:

订单已提交,订单合计金额大于300元,有红包,有优惠

订单已提交,订单合计金额大于300元,没红包,有优惠

订单已提交,订单合计金额小于300元,有红包,有优惠

订单已提交,订单合计金额小于300元,没红包,没优惠

订单没提交,订单合计金额大于300元,有红包,没优惠

订单没提交,订单合计金额大于300元,没红包,没优惠

订单没提交,订单合计金额小于300元,有红包,没优惠

订单没提交,订单合计金额小于300元,没红包,没优惠

3)设计判定表

12345678
订单提交YYYYNNNN
金额大于300元YYNNYYNN
有红包YNYNYNYN
有优惠YYYNNNNN
没优惠NNNYYYYY

4)编写测试用例

image-20230509165453441

正交表法

最简单的正交表是L4(23),含意如下:“L”代表正交表;L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。正交表的特点是其安排的试验方法具有均衡搭配特性。

名词

1.因素:变量

2.水平:变量取值

image-20230525194733569

正交表的两条性质

每一列中各数字出现的次数都一样多。

任何两列中的各有序数对出现的次数都一样多。

  • 如何通过正交表设计测试用例?

充分理解需求 -> 确定因素水平 -> 画正交表 -> 补充正交表 -> 将正交表转换成测试用例

案例

案例:姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册

确定因素水平:

因素:姓名、邮箱、密码、确认密码、验证码

水平:填写,不填写

allpirs 画正交表:

先写一个 excel 表格。

image-20230525202125979

将exe 表格这里的内容复制到记事本当中,记事本内容保存到和 allpairs.exe 同一级的目录下。

image-20230525204133970

windows+r, cmd

C:\Users\86187>d:

D:>cd downloadSoftware

D:\downloadSoftware>dir

D:\downloadSoftware>cd allpairs

D:\downloadSoftware\allpairs>dir

D:\downloadSoftware\allpairs>allpairs.exe 20230525.txt > 20230525_result.txt

image-20230525204234433

~填写: 表示这个可以是"填写",也可以是"不填写"。

生成的正交表:
image-20230525214814233

补充正交表:

比如观察上面生成的结果发现漏了一种情况,都不填写的情况。

下面是测试表。

image-20230525215851927

场景设计法

主事件流:用户经常使用的场景。

次事件流:一些意外情况。

场景1:追女神

image-20230525221911601

场景2:ATM 机取钱

image-20230525223738636

通常情况下,需要把用户经常使用的模块串联到一起去测试。

错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针 对性地设计测试用例的方法。

以注册为例

1、校验中特殊字符空格的处理?

2、密码校验中的大小写?

3、姓名中的特殊字符?

4、密码发送是否明文

比如登录账号的时候,输入账号的时候开头允许有空格,但是中间不能有空格。

面试题

1)如何模拟弱网?

可以借助很多工具。比如 fiddler

1.打开限速模式

image-20230525224739646

image-20230525225041740

进入文件,搜索关键字"before"

image-20230525225022430

上传 1 kb, 花费 300ms;

下载 1 kb, 花费 150ms.

2)接口如何测试?

借助 postman。

针对 http 方法进行测试

针对参数进行测试(传参数,不传参数,传非法参数)

参数通过 parameter 传递,还是通过 JSON 传递。

3)写一个冒泡排序,针对这个代码如何进行测试?

方法参数(参数类型,不给参数,传递参数为空)

异常处理

代码规范

语句覆盖

条件覆盖

语句条件覆盖

判定覆盖

4)linux 命令

对zip 命令测试

image-20230526095451759

功能:

1.要打包的文件不存在?

2.能否一次性打包多个文件?
3.打包后的内容是否有缺失?
4.命令正确,文件存在,是否成功被压缩?

界面:

1.打包后的高亮显示

2.打包后的文件后缀名.zip

易用:
输入错误,是否有提示?

性能:

打包一个 1 KB 文件要耗费多长时间?

打包一个 20GB 文件要耗费多长时间?

一次打包多个的时间?

用 zip 打包,空间给我节省了多少?

测试用例设计万能公式(黑盒测试):

功能:①物体:这个物体是用来干嘛的?②软件:软件实现功能

界面:①物体:外表,材质,大小,容量②软件:图片大小,文字,颜色,界面布局,按钮

易用:(经验)操作简单,使用流畅,符合人体工学,见名知意

兼容:①物体:除了本质功能,还有没有一些其他功能②软件:操作系统,设备,浏览器版本,手机品牌

性能:①物体:使用寿命②软件:软件响应时间,吞吐量,并发数,CPU占用率

安全:①物体:材质是否有毒,会不会对人体健康造成危险②软件:sql 注入,xss 漏洞,输入有毒脚本,密码加密保存,加密传输,权限控制。

网络:2G,4G,弱网

中断:比如一个电话来了,切回到桌面?

5)水杯测试用例

image-20230526103626738

6)微信发送朋友圈

image-20230528105109465


http://www.ppmy.cn/news/97570.html

相关文章

SpringBoot——原理(自动配置+原理分析@Conditional)

在上一篇有说到&#xff0c;进行源码跟踪时可以看见一个以Conditional开头的注解&#xff0c;这些都是条件装配的注解。 加在方法上时只对该方法生效&#xff0c;加在类上时是对整个配置类都有效。 这里只说三个常用的Conditional的子注解 案例演示 在启动类上加上一个Enabl…

YOLOv5独家原创改进,ShuffleNetV2网络结构,改进ShuffleNetV2准确率低问题

目录 一、介绍1、轻量化目标检测的瓶颈2、YOLOv5和ShuffleNetV2的概述 二、ShuffleNetV2的架构1、ShuffleNetV2的基本单元——ShuffleNet Unit2、ShuffleNetV2的网络结构 三、ShuffleNetV2的特点1、高效的通道重排操作2、逐通道矩阵乘法3、轻量级和高精度的平衡 四、YOLOv51、Y…

【SA8295P 源码分析】06 - SA8295P XBL Loader 阶段 sbl1_main_ctl() 函数代码分析

【SA8295P 源码分析】06 - SA8295P XBL Loader 阶段 sbl1_main_ctl 函数代码分析 一、XBL Loader 汇编源码分析1.1 解析 boot\QcomPkg\XBLLoader\XBLLoader.inf1.2 boot\QcomPkg\XBLDevPrg\ModuleEntryPoint.S&#xff1a;跳转 sbl1_entry 函数1.3 XBLLoaderLib\sbl1_Aarch64.s…

Android 12.0framework添加自定义开机广播

1.概述 在12.0的进行系统定制化开发中,在内置一些app需要收到开机广播以后然后做一些相关的操作的功能的时候,发现开机广播要好久能收到,要么就收不到开机广播,所以这就需要了解开机广播在哪里发送,然后自定义开机广播来接收自定义开机广播然后开发一些功能 2.framework…

美债死期推迟

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在小号“刘教链Pro”发表了一篇《链上投票是社会契约的一种存证》&#xff0c;探讨未来组织和DAO的治理问题&#xff0c;欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币略有回升&#xff0c;从26.5k下方来到了26.5k…

Qt基础之三十六:异常处理

本文将介绍如何在Qt中使用try...catch和调试dump文件来处理异常。 Qt版本5.12.6 一.使用try...catch 一段简单的捕获异常的代码,新建一个控制台工程,pro文件不用修改 #include <QCoreApplication> #include <QDebug>int main(int argc, char *argv[]) {QCoreA…

论文阅读_增强语言模型综述

论文信息 name_en: Augmented Language Models: a Survey name_ch: 增强语言模型综述 paper_addr: http://arxiv.org/abs/2302.07842 date_read: 2023-05-20 date_publish: 2023-02-15 tags: [‘深度学习’,‘自然语言处理’,‘大模型’] author: Grgoire Mialon&#xff0c;M…

【springcloud微微服务】分布式事务框架Seata使用详解

目录 一、前言 二、事务简介 2.1 原子性 2.2 一致性 2.3 隔离性 2.4 持久性