设计测试用例(万能思路 + 六种设计用例方法)(详细 + 图解 + 实例)

一、设计测试用例的万能思路

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

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

总结:

功能测试:

水杯:装水、喝水...

注册场景:注册 + 登录

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

界面测试:

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

软件:

文字/输入框/图片/下拉框 ——> 颜色、大小、形状、布局都要进行测试;

文字是否存在错别字、病句、折叠、重叠...

性能测试:

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

软件:

响应时间

几千万人同时访问...

兼容性测试:

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

软件:

系统:Linux、Windows、Mac;

终端:PC、移动端

浏览器:Chrome、FireFox、Safari...

易用性测试:

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

安全测试:

水杯:

水杯的材质是否安全;

特殊情况下(高温低温)材质是否会释放毒性;

存放特殊的液体会不会导致化学反应,材质是否会释放毒性;

软件:

SQL注入

XSS漏洞

越权(垂直越权、水平越权)

二、设计用例的方法

针对手撕代码、明确额需求、项目来设计测试用例。

1. 等价类

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

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

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

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

使用步骤:

1. 确定有效等价类和无效等价类;

2. 编写测试用例。

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

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

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

2. 边界值

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

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

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

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

3. 判定表法

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

使用步骤:

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

2. 找出输入条件和输出结果之间的关系;

3. 画判定表;

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

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

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

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

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

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

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

3. 画判定表

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

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

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

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

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

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

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

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

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

注意:

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

4. 正交法

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

正交表表达式: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. 找出因素数和水平数

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

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

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

3. 编写测试用例

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

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

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

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

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

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

4. 补充测试用例

(7)都不填写。

5. 场景设计法

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

假设需求:在ATM上取款

编写测试用例:

基本事件流:

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

备选事件流:

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

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

.......

6. 错误猜测法

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2017年第六届数学建模国际赛小美赛A题飓风与全球变暖解题全过程文档及程序

2017年第六届数学建模国际赛小美赛 A题 飓风与全球变暖 原题再现: 飓风(也包括在西北太平洋被称为“台风”的风暴以及在印度洋和西南太平洋被称为“严重热带气旋”)具有极大的破坏性,往往造成数百人甚至数千人死亡。   许多气…

【Spring Security】打造安全无忧的Web应用--入门篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Spring Security是什么 1.概…

FFmepeg——视频处理工具安装以及简单命令学习。

FFmpeg 是一个免费、开源且高度可定制的多媒体处理工具,它是一个强大的跨平台框架,用于处理音频、视频、多媒体流和图像。FFmpeg 的主要功能包括解码、编码、转码、流处理、多路复用、分离、合并、过滤等,支持多种音视频格式,包括…

研发管理-代码管理篇

前言: 工作了这些年,工作了三家公司,也用过主流的代码管理平台,比如SVN,git系列(gitlib,gitee),各有优点,我个人比较喜欢SVN,多人协作的代码管理难免会有代码冲突&#…

【QT表格-6】QTableWidget的currentCellChanged实现中途撤销

背景: 【QT表格-1】QStandardItem的堆内存释放需要单独delete,还是随QStandardItemModel的remove或clear自动销毁?-CSDN博客 【QT表格-2】QTableWidget单元格结束编辑操作endEditting_qtablewidget 单元格编辑事件-CSDN博客 【QT表格-3】Q…

LLama Factory 安装部署实操记录(二)

1. 项目地址 GitHub - hiyouga/LLaMA-Factory: Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM)Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) - GitHub - hiyouga/LLaMA-Factory: Easy…

hive命令启动出现classnotfound

环境:ambari集群三个节点node104、node105和node106,其中node105上有hiveserver2,并且三个节点均有HIVE CLIENT 注意:“./”指hive安装目录 其中装有hiveserver2的node105节点,由于某种需要向lib目录下上传了某些jar包…

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测介绍题目一. 背景(解决的问题)二. 系统模型2.1 信道模型2.1.1 信道系数2.1.2 进行标准化 2.2 信道估计 和 数据传输2.2.1 信道估计…

环境搭建及源码运行_java环境搭建_idea版本下载及安装

1、介绍 Idea是一款被广泛使用的Java集成开发环境,它提供了丰富的功能和工具来帮助开发人员更高效地编写和调试代码。作为一款开源软件,Idea不仅提供了基本的代码编辑、自动完成和调试功能,还支持大量的插件和扩展,可为开发人员提…

将Abp默认事件总线改造为分布式事件总线

文章目录 原理创建分布式事件总线实现自动订阅和事件转发 使用启动Redis服务配置传递Abp默认事件传递自定义事件 项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能,如注册事件、取消注册事件、触发事件等。 Abp.Events…

MySQL之表的约束

目录 前言 not null约束 default约束 同时设置not null约束和default约束 comment约束 zerofill约束 primary key约束(又称主键约束) 复合主键约束 auto_increment约束(又称自增长约束) unique约束(又称唯一…

Redis分布式缓存-Redis持久化

RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文…

cpp_04_类_对象_this指针_常对象_常(成员)函数

1 类 1.1 类的定义 类的作用是抽象事物(抽取事物特征)的规则。 类的外化表现是用户自定义的复合数据类型(包括成员变量、成员函数): 成员变量用于表达事物的属性,成员函数用于表达事物的行为。 类的表现…

力扣79. 单词搜索(java DFS解法)

Problem: 79. 单词搜索 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该问题可以归纳为一类遍历二维矩阵的题目,此类中的一部分题目可以利用DFS来解决,具体到本题目(该题目可以的写法大体不变可参看前面几个题目:&…

校园圈子交友系统,APP小程序H5,三端源码交付,支持二开!实名认证,大V认证,地图找伴,二手平台!

校园圈子交友系统,是属于自主定义开发的系统,内容有很多,先截取一些给大家看看,让大家更多的了解本系统,然后再做评价! 校园后端下载地址:校园圈子系统小程序,校园拼车,校…

Netty Review - StringEncoder字符串编码器和StringDecoder 解码器的使用与源码解读

文章目录 概念概述StringEncoderStringDecoder Code源码分析StringEncoderStringDecoder 小结 概念 概述 Netty是一个高性能的网络应用程序框架,它提供了丰富的功能,包括编解码器,这些编解码器用于在网络中发送和接收数据时进行数据的编码和…

mac电脑安装虚拟机教程

1、准备一台虚拟机,安装CentOS7 常用的虚拟化软件有两种: VirtualBoxVMware 这里我们使用VirtualBox来安装虚拟机,下载地址:Downloads – Oracle VM VirtualBox 001 点击安装 002 报错:he installer has detected an…

uni-app 用于开发H5项目展示饼图,使用ucharts 饼图示例

先下载ucharts H5示例源码: uCharts: 高性能跨平台图表库,支持H5、APP、小程序(微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序)、Vue、Taro等更多支持canvas的框架平台&#…

在Windows系统平台下部署运行服务端Idea工程的jar服务

前言 目前云原生docker等技术,加上部署流水线大大的简化了各种流程,我们后端开发的人员只需要提交代码后,构建、部署、测试、发布等环节都无需人员接入,完全的自动化交付了。那么你肯定不禁想问,如题的需求不是点击一…

pyCharm 创建一个FastApi web项目,实现接口调用

FastApi和Django区别 我这边演示项目使用的fastApi作为web框架,当然主流一般都是使用Django做web框架,但是Django是一个重量级web框架他有很多组件,如授权,分流等全套web功能。我这边呢只需要有个接口可以被别人调用,…