学习测试用例

news2024/11/25 20:24:42

✏️作者:银河罐头
📋系列专栏: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.coloradmin.cn/o/578692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式简要说明

1.分布式简要说明 《分布式系统原理与范型》定义&#xff1a; 分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统。 分布式系统 (distributed system) 是建立在网络之上的软件系统。 随着互联网的发展&#xff0c;网站应用的规模不断扩…

RabbitMQ学习-死信队列

死信队列 背&#xff1a;就是三种情况导致消息无法消费就是死信&#xff0c;然后就会转到死信交换机中&#xff0c;死信交换机发送到死信队列中&#xff0c;然后创建个消费者消费死信队列中的东西,再没什么哈哈 死信&#xff0c;顾名思义就是无法被消费的信息&#xff0c;字面…

springboot接口返回的json字符串如何不显示null值字段

springboot接口返回的json字符串如何不显示null值字段 POSTMAN 测试接口时&#xff0c;默认字段值即使是null也显示出来&#xff0c;如何去掉更加简洁&#xff1f;这个跟POSTMAN无关&#xff0c;POSTMAN仅仅是展示response的body而已 思考&#xff1a;为什么要去掉null值的字…

Copilot插件:时时陪伴的AI助手 | Obsidian实践

这段时间&#xff0c;有点儿沉迷于AIGC实践不可自拔&#xff0c;也因此懈怠了Obsidian实践。回过头来猛然发觉&#xff0c;其实Obsidian也“上架”了很多与ChatGPT有关的插件。 赶紧体验下&#xff0c;看看有没有什么&#xff0c;是一下子就能用起来的。不得不说&#xff0c;自…

mysql错误码1045解决方案

用数据库连接工具访问提示 1045的错误码&#xff0c;在命令行输入mysql -u root –p&#xff0c;输入密码&#xff0c;经常出现下面的错误信息&#xff0c;相信该错误信息很多人在使用mysql时都遇到过。 ERROR 1045 (28000): Access denied for user rootlocalhost (using pas…

如何在百度百科里创建一个百科词条,百度百科官网创建词条步骤方法

很多朋友表示特别希望能在百度百科里创建一个百科词条&#xff0c;但是在百度百科官网却不知如何操作创建百科词条&#xff0c;连最基本的百度百科操作步骤可能都不清楚&#xff0c;下面洛希爱做百科网为大家分享如何在百度百科里创建一个百科词条&#xff0c;百度百科官网创建…

编码,Part 1:ASCII、汉字及 Unicode 标准

个人博客 编码的历史由来就懒得介绍了&#xff0c;只需要知道人类处理文本信息是以字符为基本单位&#xff0c;而计算机在最底层只认识 0/1&#xff0c;所以当计算机要为人类存储/呈现字符时&#xff0c;就需要有一个规则&#xff0c;在字符和 0/1 序列之间建立映射关系&#…

Mybatis generator

文章目录 使用引入依赖配置文件设置生成使用中出现的异常 Mybatis中javaType和jdbcType对应关系int、bigint、smallint 和 tinyint是使用整数数据的精确数字数据类型。 使用 引入依赖 <!-- mysql --><dependency><groupId>mysql</groupId><artifa…

(转载)基于遗传算法的TSP算法(matlab实现)

1 理论基础 TSP(traveling salesman problem,旅行商问题)是典型的NP完全问题&#xff0c;即其最坏情况下的时间复杂度随着问题规模的增大按指数方式增长&#xff0c;到目前为止还未找到一个多项式时间的有效算法。 TSP问题可描述为&#xff1a;已知n个城市相互之间的距离&…

5月份读书学习好文记录

学好C可以采取以下几个步骤&#xff1a; 掌握基本语法&#xff1a;C的语法对于初学者来说可能是一件比较难的事情&#xff0c;所以需要花时间掌握C的语言基础和语法规则&#xff0c;例如数据类型、流程控制、函数等。 学会面向对象编程(OOP)&#xff1a;C是一种面向对象的编程…

RNN Seq2Seq

Feedforward v.s. Recurrent Feedforward network does not have input at each stepFeedforward network has different parameters for each layer 双向RNN 双向递归层可以提供更好的识别预测效果&#xff0c;但却不能实时预测&#xff0c;由于反向递归的计算需要从最末时刻…

第18章 JQuery DataTables初始化渲染显示与排序

1 System.Linq.AsyncIEnumerableExtensions (Data\Extensions\AsyncIEnumerableExtensions.cs) namespace System.Linq { /// <summary> /// 【异步枚举数扩展--类】 /// <remarks> /// 摘要&#xff1a; /// 该类通过对System.Linq.Async中方法的自定义扩展…

开启php8的JIT及时编译,超级详细 照抄即可

JIT时php8的重要功能之一&#xff0c;可以极大的提高性能&#xff1b; JIT编译器集成在了Opcache插件中&#xff0c;仅在启动Opcache插件才有效 Opcache将 PHP 脚本编译后的字节码存储到内存中&#xff0c;以避免每次执行脚本时重新解析和编译&#xff0c;从而提高 PHP 应用程…

English Learning - L3 综合练习 4 VOA-Food 2023.05.24 周三

English Learning - L3 综合练习 4 VOA-Food 2023.05.24 周三 句 1句 2Support 拓展养家&#xff0c;养家之人 句 3mustard 芥末expect 扩展 句 4句 5句 6句 7颁奖句 8句 9句 10句 11句 12句 13句 14好声音比赛 句 1 句 2 Support 拓展 Support 作动词时&#xff1a; Support …

Loki 日志收集系统

一.系统架构 二.组成部分 Loki 的日志堆栈由 3 个组件组成&#xff1a; promtail&#xff1a;用于采集日志、并给每条日志流打标签&#xff0c;每个节点部署&#xff0c;k8s部署模式下使用daemonset管理。 loki&#xff1a;用于存储采集的日志&#xff0c; 并根据标签查询日志流…

Windows 10搭建SFTP服务器【公网远程访问】

相较比高效率的FTP协议而言&#xff0c;SFTP默认只占用一个TCP端口 22端口&#xff0c;采用的是SSH加密隧道&#xff0c;理论上会比FTP更安全&#xff0c;更稳定些。 搭建SFTP服务器&#xff0c;这里我们用freesshd来实现&#xff1b;而在服务器搭建成功后&#xff0c;要实现公…

mysql详细优化建议(谈谈你的SQL优化经验)

sql语句规范 MySQL在Linux系统下数据库名&#xff0c;表名&#xff0c;存储过程名&#xff0c;函数名称&#xff0c;触发器名称等区分大小写&#xff0c;列名不区分大小写&#xff0c;原因是这些操作系统下文件名称区分大小写。 MySQL在Windows系统下全部不区分大小写&#x…

Jenkins使用Maven构建Java应用程序

本教程将向你展示如何使用Jenkins编排并构建一个使用Maven管理的简单Java应用程序。 如果你是使用Maven的Java开发人员&#xff0c;并且对CI/CD概念不熟悉&#xff0c;或者你可能熟悉这些概念&#xff0c;但不知道如何使用Jenkins实现构建应用程序&#xff0c;那么本教程适合你…

C语言数据存储 — 整型篇

C语言数据存储 — 整型篇 前言1. 数据类型介绍1.1 类型的基本分类 2. 整型在内存中的存储2.1 原码、反码、补码2.1.1 为什么数据存放在内存中存放的是补码 2.2 大小端介绍2.2.1 什么是大小端&#xff1f;2.2.2 为什么有大端和小端&#xff1f;2.2.3 一道百度系统工程师笔试题 3…

Linux之环境变量

文章目录 前言一、环境变量1.概念2.运行程序3.windows下的环境变量4.常见的环境变量 二、系统调用获取环境变量1.getenv2.演示1.标识当前的Linux用户2. 判断当前用户是否为root 三、设置环境变量1.关于变量的命令1.echo2.export3.env4.unset5.set 2.子进程继承3.PWD1. 概念2.实…