软件测试用例篇(2)

news2025/1/18 11:52:47

功能测试+界面测试+兼容性测试+安全测试+易用性测试+性能测试

针对有需求的案例来设计测试用例:邮箱注册,部分测试用例

https://zay1xofb7z6.feishu.cn/mindnotes/bmncnKD5Ak6GSZl3PRlWDgF9z3g#mindmap

一)等价类:

场景需求:姓名长度是6-200位,那么如何进行设计测试用例?

对于软件来说,开发人员实现需求里面的要求,也要避免实现需求里面没有要求的,不符合需求要求的你实现了,那么就是一个BUG

1)划分有效等价类和无效等价类

有效等价类:6-200

无效等价类:(0-5)&(200~+OO)

无效等价类更考验同学们的一个发散性思维

2)根据等价类来编写测试用例:

练习:针对需求密码是6-20位的数字来设计无效等价类

长度:针对于长度设计无效等价类,数字长度大于6小于20

无效等价类:

1)只包含数字位数小于6或者是位数大于20

2)不仅仅位数小于6或者位数大于20,不只是包含数字,但是在正确范围之外又出现数字的其他符号

2)虽然位数大于6或者是位数小于20,但是不仅仅包含数字还含有其他符号,也就是在正确范围内有出现数字的其他符号;

有效等价类:对于程序的规格说明书是合理的,有意义的输入数据组成的集合,利用等价类验证程序是否实现了规格说明中所规定的功能和性能; 

无效等价类:根据需求说明书,不满足需求的集合;

1)对于我们上面说的if语句,有效等价类就是a>10的数据,无效等价类就是a<=10的数据

2)例如我想要去商店买水果,有效等价类是苹果,桃子和梨,无效等价类是饮料,米

if(a>10)
{
    printf("a大于10");
}
    b=a;
   printf("b等于a");
}
这时把a>10的数据归到一个等价类中
把所有小于10的数据归到一个等价类中
例如拿1和15举例子

输入用户名(必填项):字符类型A-Z,不区分大小写,长度是6-15位任何长度(6和15就是边界)

1)有效等价类:A-Z,a-z,大小写混合,大于等于6位,小于等于15位;

2)无效等价类:汉字,特殊符号#,?(),!,数字,空格,字母和前面符号的混合,小于6位,大于15位;

二)边界值法:

2.1)定义:边界值是对等价类的补充,边界值分析法就是对输入或者输出的边界值进行测试的一种黑盒的测试方法,通常边界值分析法是对等价类划分法的补充,这种情况下其测试用例来自于等价类的边界;

2.2)特点:针对我们的输入输出的边界进行测试用例的设计,因为边界是一种特别出现错误的地方,是一种黑盒测试方法;

2.3)需求:活动截止日期是7.14,变量是datetime;

if(datetime<7.15 00.00.00)

if(datetime<=7.14 23.59.59)

2.4)我们的边界值法就可以这么写,这就是边界值的重要性;

2.5)1的边界值是0和2,-1的边界值就是-2和0

时间:7月14号00:00:00 23:59:58,7月15日00:00:00 0:0:0

1)for循环(int i=0;i<arr1.length();i++),因为往往会出现问题,买一个小于3000元的智能手机,3000就是一个边界点;邮件小于24小时有效,24小时就是一个边界点,我们可以对23小时59分进行测试,和24小时01分开始测试;

2)还有6-15位,那么就要对5,6 ,7和14位,15位,16位边界点进行测试;

3)设计测试用例的时候,会把等价类和边界值结合在一起用于进行测试用例的设计;

三)判定表:

1)定义:逻辑图,当输入有多个,并且不同的输入组合对应着不同的输出,可以用因果图法来分析这个输入和输出之间的逻辑关系,来设计测试用例,有效地防止漏测;

使用场景:需要进行考虑输入之间的组合关系,不同的组合关系对应的输出结果不同;

输入有多个,不同的输入组合有不同的输出,为了防止漏测,就要用因果图来设计测试用例

2)需求:淘宝618活动,订单已经提交,订单总金额大于300元或者订单有红包,则认为该订单属于有优惠的订单,否则认为此订单没有优惠的订单

3)判定表设计测试用例的步骤:

1)确认输入条件和输出条件

2)找到输入条件和输出条件之间的关系

3)画判定表

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

一)确认输入输出条件

输入条件:

1)是否提交订单?输入:提交订单,没有提交订单;

2)订单金额是否大于300?输入:金额大于300元或者小于等于300元

3)是否有红包?输入:订单有红包,订单无红包

输出条件:

输出(订单类型):有优惠,没有优惠

二)确认输入输出条件之间的关系

A:提交订单,B:没有提交订单

C:金额大于300元,D:金额小于300元

E:订单有红包,F:订单没有红包

因为所有的情况都要包含A和B,根据排列组合,划分除了以下几种情况:

ADE,ADF,ACE,ACF,BCE,BCF,BDE,BDF,AC,AD,AE,AF

订单已提交,没有红包,订单大于300,有优惠

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

订单已提交,有红包,订单小于300,有优惠

订单已提交,没红包,订单没有大于300,没有优惠

订单未提交,有红包,订单大于300,没有优惠

订单未提交,无优惠;

红包和金额组成了四种情况:

1)订单没有提交,金额大于300,有红包,没有优惠

2)订单没有提交,金额大于300,没有红包,没有优惠

3)订单没有进行提交,金额小于300,有红包,没有优惠

4)订单没有提交,金额小于300,没有红包没有优惠

三)画判定表:画判定表,使用飞书新建表格

四)根据判定表来编写测试用例

进行组合情况:

四)正交表

定义:针对输入条件进行排列组合,研究多水平,多因素的一种测试用例的设计方法

因素数:输入的条件的个数

水平数:输入的条件对应的取值,不是输出结果

多因素:输入类型的种类,比如说订单已提交,有红包,金额大于300
多水平:对于每一种输入的取值,因素的取值,例如订单已经提交,订单没有进行提交,金额大于300,金额小于300,有红包,没有红包

 

 

正交表的性质:想让我们设计正交表非常难,呜呜呜,但是有一个专门生成正交表的工具

1)每一列中,不同的数字出现的次数相等,例如在两水平正交表中,任何一列都有数码"1"与"2",且任何一列中它们出现的次数是相等的,如在三水平正交表中,任何一列都有"1"、"2"、"3",且在任一列的出现数均相等

2)任意两列的数字的组合次数是相同的,假设第一列和第三列进行组合,第一列中的第一行和第三列第一行组合成了ac,又发现第一列的第四行和第三列的第四行有组成了ac,这里的组合是存在先后顺序的,从左向右看,这样子ac组合就出现了两次;那么假设说如果第一列的第二行和第三列的第二行组成的字母组合是bc,那么必定第一列的第N行和第三列的第N行的组成序列是bc,也一定出现两次;

 正交表设计测试用例的方法:

根据正交表设计测试用例的步骤:

1)  找出因素数和水平数

2)确定每一个因素的水平

3)根据因素数和水平数确定正交标的行和列

4)根据正交表的性质去填充正交表里面的数据

5)根据正交表的每一行设计测试用例,正交表里面的填写的值都是水平数

6)补充正交表里面没有的,但是你认为比较关键的测试用例

例子:平台支持邮箱注册功能 

例如说邮箱注册,在这种情况下只考虑填写和不填写两种情况

填写姓名,邮箱,密码,确认密码,验证码

一)找出因素书和水平数

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

水平:填写,不填写

针对所有的因素,只有相同的两种取值,就是填写和不填写

二)确定行和列

行=(水平数-1)*因素数+1;

列=因素数

因素数:5

水平数:2

列=因素数=5,行=(水平数-1)*因素数+1=6

为了验证注册的这5个必填项分别在填写和不填写各种情况下的表现,只要这里面有不填写的项,就都会注册失败

三)画正交表:

四)根据正交表编写测试用例

根据这个正交表此时就可以写测试用例了,测试用例为等等等

1)姓名输入,邮箱不输入,密码输入,确认密码输入,验证码不输入,注册失败

2)姓名输入,邮箱输入,密码不输入,密码不输入,验证码不输入,注册失败

五)补充测试用例

除此之外还要考虑姓名,邮箱,密码,确认密码,验证码全部输入;

姓名,密码,邮箱,确认密码,验证码全部不进行输入;

第二种方案:

1)找到因素数和水平数

2)使用allparis工具来生成正交表

3)根据正交表来填写测试用例

4)补充测试用例

一)找到因素数和水平数

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

水平数:填写和不填写

二)使用allpairs工具生成正交表,不再使用计算行和列的方式

2.1)下载pairs压缩包进行解压缩,解压缩生成正常的文件夹之后,打开文件看到了allpairs.exe文件

 

2.2)在飞书里面或者是excel表格里面列出所有的因素数和水平数

 2.3)在这个文件夹目录下面新创建一个文本文档txt,把在excel表格中的因素数和水平数进行复制粘贴

 

2.4)直接点击ctrl+s保存,将文件保存

2.5)打开控制台,直接进行运行

2.5.1)先切换到D盘

2.5.2)切换到pairs目录

2.5.3)执行exe文件,命令里面指明源文件和最终要生成的文件

 注意:使用allpairs生成的正交表和实际的正交表有出路,但是仍然是不会影响到我们使用allpairs来设计测试用例

三)根据正交表编写测试用例

 

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

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

相关文章

【数据结构初阶】手撕单链表

目录一.链表概念和结构二.单链表功能的实现1.打印单链表内容2.申请单链表节点3.头插和尾插4.头删和尾删5.单链表查找6.pos位置前后插入7.pos位置删除三.链表面试题剖析一.链表概念和结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素…

5-12 SpringCloud快速开发入门:服务消费者构建Hystrix Dashboard监控端点

服务消费者构建Hystrix Dashboard监控端点 Hystrix 仪表盘工程已经创建好了&#xff0c;现在我们需要有一个服务&#xff0c;让这个服务提供一个路径为/actuator/hystrix.stream 接口&#xff0c;然后就可以使用 Hystrix 仪表盘来对该服务进行监控了&#xff1b; 我们改造消费者…

pandas常用操作

文章目录1 认识Pandas2 pandas常用数据结构2.1 Series2.1.1 Series创建2.1.2 数据类型转换2.1.3 查看Series对象的属性2.1.4 预览数据head、tail2.1.5 通过索引获取数据2.2 DataFrame2.2.1 创建DataFrame对象2.2.2 获取行、列、值2.2.3 数据预览2.2.4 通过索引获取数据2.2.5 增…

【Redis】Redis高级客户端Lettuce详解

文章目录前提Lettuce简介连接Redis定制的连接URI语法基本使用API同步API异步API反应式API发布和订阅事务和批量命令执行Lua脚本执行高可用和分片普通主从模式哨兵模式集群模式动态命令和自定义命令高阶特性配置客户端资源使用连接池几个常见的渐进式删除例子在SpringBoot中使用…

C/C++每日一练(20230304)

目录 1. 计数质数 ☆ 2. 筛选10到1000的回文数 ☆ 3. 计算位于矩阵边缘的元素之和 ★ 1. 计数质数 统计所有小于非负整数 n 的质数的数量。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7…

【HomeKit】从HomeKit架构层细化到HomeKit ADK集成

前言&#xff1a;这篇文章是对于苹果协议文件《HomeKit ADK Integration Guide - Addendum for Televisions》的学习&#xff0c;针对版本为ADK 6.0电视。描述了将HomeKit ADK的电视简介集成到目标平台中所需的步骤。 总说明 此配置文件用于控制启用Airplay的电视&#xff0c;…

高通Android 13默认切换免提功能

1、测试部反馈 由于平板本身没有听筒功能 因此考虑工厂直接切换到免提功能 2、修改路径 frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp 3、编译源码ok 拨打紧急号码 可以正常切换到免提功能 其他mtk平台可能不一样 具体以项目实际为准 相关链接 构建…

ESP32编译及运行错误记录

1、打印格式不对 一般都是因为日志中某个参数打印格式不匹配造成。 ESP_LOGI(TAG, "[APP] Free memory: %lu bytes", esp_get_free_heap_size());//将之前的%d 改为%lu 2、配置载不对 这里选择了蓝牙模块需要引入蓝牙组件才能编译通过 idf.py menuconfig Component…

项目中的MD5、盐值加密

首先介绍一下MD5&#xff0c;而项目中用的是MD5和盐值来确保密码的安全性&#xff1b; 1. md5简介 md5的全称是md5信息摘要算法&#xff08;英文&#xff1a;MD5 Message-Digest Algorithm &#xff09;&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以产生一个128位…

css-盒模型

巧妙运用margin负值盒模型和怪异盒模型(border padding 包含在内)display: block 能让textarea input 水平尺寸自适应父容器? – 不能 * {box-sizing: border-box; // bs: bb }<textarea/> 是替换元素,尺寸由内部元素决定,不受display水平影响. 当然可以直接设置宽度10…

React(三):脚手架、组件化、生命周期、父子组件通信、插槽、Context

React&#xff08;三&#xff09;一、脚手架安装和创建1.安装脚手架2.创建脚手架3.看看脚手架目录4.运行脚手架二、脚手架下从0开始写代码三、组件化1.类组件2.函数组件四、React的生命周期1.认识生命周期2.图解生命周期&#xff08;1&#xff09;Constructor&#xff08;2&…

Allegro如何导入第一方网表操作指导

Allegro如何导入第一方网表操作指导 在启动PCB设计之前,网表的导入是首要的流程,第一方网表内容如下图 如何将第一方网表导入到PCB中,具体操作如下 点击File点击Import

【项目】用户管理系统

一、需求分析完成一个简单的用户信息管理系统&#xff0c;超级管理员可以登录本系统&#xff0c;查询用户信息、实现用户的管理功能。1.1功能&#xff1a;主要操作和管理的对象&#xff1a;用户。用户分为两类&#xff1a;超级管理员/普通用户。登录功能&#xff08;只针对超管…

深入理解多进程

多进程 一、进程状态 二、创建子进程 - fork 1、函数接口 #include <unistd.h>pid_t fork(void);2、基本概述 成功后&#xff0c;子进程的 PID 在父进程中返回&#xff0c;在子进程中返回 0。 失败时&#xff0c;在父进程中返回 -1&#xff0c;不创建子进程&#xff0c…

MyBatis——进阶操作(2)

标签 if标签 当提交的表单中有些为非必填项&#xff0c;用户并没有上传这些属性的值&#xff0c;那么程序可以上传NUll&#xff0c;也可以用if标签判断用户有没有上传这个值 <if test"参数!null">操作 </if>其中test中填写一条语句&#xff0c;如果得…

uniapp实现地图点聚合功能

前言 在工作中接到的一个任务&#xff0c;在app端实现如下功能&#xff1a; 地图点聚合地图页面支持tab切换&#xff08;设备、劳务、人员&#xff09;支持人员搜索显示分布 但是uniapp原有的map标签不支持点聚合功能&#xff08;最新的版本支持了点聚合功能&#xff09;&am…

爬虫碎碎念

20230304 - &#xff08;非专业人士&#xff0c;简单记录自己的需求和思考&#xff09; 0. 引言 平时看到一些网站的照片什么的&#xff0c;有那种批量下载的需求&#xff0c;当然有些也是视频网站的图片介绍什么的&#xff0c;也即是说&#xff0c;我需要把这些网站的照片批…

剑指 Offer II 013. 二维子矩阵的和

题目链接 剑指 Offer II 013. 二维子矩阵的和 mid 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的左上角为 (row1, col1)&#xff0c;右下角为 (row2, col2)。 实现 NumMatrix类&#xf…

测开:前端基础-css

一、CSS介绍和引用 1.1 css概述 层叠样式表&#xff0c;是一种样式表语言&#xff0c;用来描述HTML和XML文档的呈现。 CSS 用于简化HTML标签&#xff0c;把关于样式部分的内容提取出来&#xff0c;进行单独的控制&#xff0c;使结构与样式分离开发。 CSS 是以HTML为基础&…

docker环境下安装jenkins

前言 废话不多说&#xff0c;上来就是干&#xff0c;jenkins是干嘛用的&#xff0c;小白的话&#xff0c;自己去查&#xff0c;首先我的环境时centos7&#xff0c;自己在vmware建立的一套centos虚拟机环境。docker版本如图所示: 第一步 其实可以先查看一下又那些镜像jenkin…