测试2:编写测试用例的方法
2.编写测试用例的方法
7种
测试常用的方法:code review +代码静态分析、CI/CD
CI–持续集成–开发成员经常集成它们的工作,尽快发现集成错误
CD–持续部署–将集成后的代码部署到更贴近真实运行的环境
2.1 测试用例的描述:
用例编号 用例标题 功能模块名称 前置条件 输入数据 操作步骤 预期结果
优先级 执行结果 编写人 执行人 其他补充项
2.2 测试用例设计方法
(1)基于需求:依据需求来写测试点
难点:读出需求之外的测试点(需求非常的了解)
需求学习方法:、
- 多学习、分析需求
- 测试经验
- 项目组人员多沟通
(2)等价类–分类
思想:解决无穷输入
目的:减少测试用例条目
概念:无穷输入进行N个归类,从第一个类中提取一个数据进行测试,只要这个数据测试通过,我们就任务它所在的这一类的数据全部测试通过
有效等价类:根据需求说明书,和需求一致,有意义的输入数据构成的集合
无效等价类:和需求不一致,不满足需求的集合
(3)边界值:–黑盒测试方法
测试用例来自等价类的边界,是等价类的一种补充方法,与它基本成对出现
场景:输入和输出
强调:输入和输出的“边界值”
取值:开区间和闭区间
开区间–向外取值,闭区间–向内取值
【1,50】—0,1,50,51
(1,50】–1,2,50,51
(4)因果图–条件和结果的关系–最后转为判定表
场景:输入(原因)和输出(结果)之间的关系
概念:输入(原因)和输出(结果)之间的关系,输出依赖输入(多个)
因果图需要掌握的基本知识
基础概念:
恒等、与、或、非
恒等
如果原因为真,那么结果必定为真。
与
只有两个原因都为真,那么结果为真
或
2个原因有一个为真时,结果为真
非
原因为假,结果才为真
因果图设计测试用例的步骤:
- 列出所有输入
- 列出所有输出
- 理出输入和输出之间的关系
- 画因果图
- 画判定表,列数是输出的输入次方
- 从表里提出测试用例
因果法设计测试用例可以帮助测试人员理清输入和输出的关系,但是对于比较复杂的输入和输出,会耗费大量时间
(5)正交排列法:–减少用例数目,对因果图的改进
原理:正交表,正交实验(抽样)
目的:减少测试用例的条数
两条性质:
-
任何一列中出现的数字个数一样\
-
任何两列中有序对出现的次数一样
L=N(TC)–L:正交表
N:行数实验次数
T:水平数(变量的可取值个数)
C:因素数(变量的个数),列
N=C*(T-1)+1
步骤:
-变量提取出来
-提出水平
- 找出正交表(多个)
-取值—映射到表中
-表中每一行就是一条测试用例
-特殊的测试数据表中没有的添加进来
(6)场景法:业务流程(一个业务流程不一定是一个场景)业务流程:把孤立的功能点串起来注册--登录--写邮件--发邮件业务流程是场景法的典型用法(7)错误推测法(猜测)非凭空想象,是有来源的,三大来源:
-
对某项目测试时间长
-
用户反馈
-
从故障库中整理bug,梳理产品以往哪些地方容易出现问题
例如:输入框要求字符类型--字符型输入非字符型:是等价类中的无效等价类,同时它也是错误推测法## 2.3 测试用例的评审:- 分为项目组评审- 用户评审:可以是最终用户也可以是程序员- 同行评审- 白盒:要查看代码## 2.4黑盒测试设计测试用例方法包括:等价类划分、边界值分析、因果图、场景法、正交实验设计法、判定表、驱动分析法、错误推测法、功能图分析法,**依据**是用户需求规格说明书、详细涉及说明书
## 2.5白盒测试设计测试用例方法包括:
语句覆盖、判断覆盖、条件覆盖、路径覆盖、条件组合覆盖,依据是代码结构和逻辑 六种覆盖标准发现错误的能力由弱到强的变化:
-语句覆盖,每条语句至少执行一次。
-判断覆盖,每个判断的每个分支至少执行一次。
-条件覆盖,每个判断的每个条件应取到的各种可能的值。
-判断/条件覆盖,同时满足判断覆盖条件覆盖。
-条件组合覆盖,每个判定中各条件的每一种组合至少出现一次。
-路径覆盖,使程序中每一条可能的路径至少执行一次。
1.语句覆盖:
设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。只需设计一个测试用例:a=2,b=1,c=6;即达到了语句覆盖。
【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。
2.判定覆盖: 设计若干测试用例,运行被测程序,使得程序中每个分支的取真值和取假值至少一次,即判断真假值均曾被满足。a=2,b=1 ,c=6(M,Q分支全为真)和a=-2,b=-1 ,c=-3(M,Q分支全为假)这两组测试用例可覆盖所有判定的真假分支。
【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。
3.条件覆盖:设计若干测试用例,执行被测程序以后要使每个判断中每个条件的可能取值至少满足一次。
判断M表达式:设条件 a>0 取真 记为 T1 ;假F1
条件 b>0 取真 记为 T2 ;假F2
判断Q表达式:设条件 a>1 取真 记为 T3 ;假F3
条件 c>1 取真 记为 T4 ;假F4
我们用条件覆盖设计的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4
【优点】:增加了对条件判定情况的测试,增加了测试路径。
【缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断Q的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
4.判定-条件覆盖:设计足够的测试用例,使得判断条件中的所有条件可能至少执行一次取值,同时,所有判断的可能结果至少执行一次。
测试用例要满足如下条件:1.所有条件可能至少执行一次取值;2.所有判断的可能结果至少执行一次。
【优点】 :能同时满足判定、条件两种覆盖标准。
【缺点】 :判定/条件覆盖准则的缺点是未考虑条件的组合情况。
5. 条件组合覆盖:设计足够的测试用例,使得所有可能的条件取值组合至少执行一次。
【优点】 :条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。
【缺点】 :线性地增加了测试用例的数量。
6.路径覆盖:设计所有的测试用例,来覆盖程序中的所有可能的执行路径 。
【优点】 :这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。
【缺点】 :需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。
从前面的例子我们可以看到,采用任何一种覆盖方法都不能满足我们的要求,所以,在实际的测试用例设计过程中,可以根据需要将不同的覆盖方法组合起来使用,以实现最佳的测试用例设计 。
相关文章:

测试2:编写测试用例的方法
2.编写测试用例的方法 7种 测试常用的方法:code review 代码静态分析、CI/CD CI–持续集成–开发成员经常集成它们的工作,尽快发现集成错误 CD–持续部署–将集成后的代码部署到更贴近真实运行的环境 2.1 测试用例的描述: 用例编号 用例…...

docker安装配置镜像加速器-拉取创建Mysql容器示例
List item docker 常见命令大全docker安装docker拉取创建Mysql容器docker 安装 1、安装链接:https://blog.csdn.net/BThinker/article/details/123358697 ; 2、安装完成需要配置docker镜像加速器 3、docker 镜像加速器推荐使用阿里云的: 编…...

WSL1和WSL2相互转换以及安装路径迁移相关问题
目录 1.从WSL 1如何切换到WSL 2? 2.从WSL 2如何切换回WSL 1? 3.WSL1转换为WSL2后,WSL1里面安装的程序和库需要重装吗? 4.WSL2转换为WSL1后,WSL2里面安装的程序和库需要重装吗? 5.如何备份WSL2…...
系统分析*
文章目录系统分析分析的任务结构化方法OO的方法的任务常用的详细调查方法有哪些?系统分析的建模TFD业务流程图DFDDD数据流图用例模型(重点用例图)用例图的内容:用例之间的关系:对象模型(类图)时…...
【redis】持久化:RDB和AOF
redis的持久化指将数据写入可靠内存中,如ssd。Redis提供了4种持久化策略 RDB:Redis Database,周期性的将某个时间点的数据集快照持久化AOF:Append Only File,每次redis服务接收到写操作(修改内存的操作),都…...

2023Python接口自动化测试实战教程,附视频实战讲解
这两天一直在找直接用python做接口自动化的方法,在网上也搜了一些博客参考,今天自己动手试了一下。 一、整体结构 上图是项目的目录结构,下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类,比如数据库sql…...

【原创】java+swing+sqlserver药品管理系统设计与实现
之前数据库都是用的mysql,今天我们使用sqlserver在配合swing来开发一个药品管理系统。方便医院工作人员进行药品的管理,基础功能基本都是一些增删改查操作。 功能分析: 药品管理系统主要提供给管理员和员工使用,功能如下&#x…...
软考高级信息系统项目管理师系列之二十七:信息文档管理与配置管理
软考高级信息系统项目管理师系列之二十七:信息文档管理与配置管理 一、信息文档管理与配置管理内容整理二、信息系统文档管理1.信息系统文档概念2.软件文档分类与质量等级三、配置管理1.配置管理2.典型配置项3.配置项4.配置项操作权限5.配置项状态6.配置项版本号7.配置项版本管…...
软考高级-信息系统管理师之项目管理基础(最新版)
项目管理基础 项目管理特点战略管理三个过程IT项目特点项目管理概念项目管理特点软技能PRINCE2的四个要素组织结构职能型组织优缺点职能型组织优点同时,职能型组织也存在着如下缺点:项目型组织优缺点项目型组织优点项目型组织也存在着如下缺点:矩阵型组织优缺点矩阵型组织的优…...
leetcode240+Search a 2D Matrix II+从右上角开始
链接 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if(matrix.size()0 || matrix[0].size()0) return false;int i0, jmatrix[0].size()-1; //从右上角开始while (i<matrix.size()&&j>0) {int x mat…...

0xL4ugh 2023
这回跟着个队伍跑,不过还是2X以后的成绩,前边太卷了。自己会的部分,有些是别人已经提交了的。记录一下。Cryptocrypto 1给了一些数据,像这样就没有别的了ct [0, 1, 1, 2, 5, 10, 20, 40, 79, 159, 317, 635, 1269, 2538, 5077, 1…...

Mybatis(4)之跟着老杜做一个简单的银行转账会话
这是个MVC项目,我不一定可以完整的实现这个项目,但力求把这个复现出来,尽量的复现细节。 第一步:创建数据库 表 创建表如下: 我们使用 int 是为了方便 然后采用 demcial,精确度较高 添加两个用户 然后…...

VBA提高篇_ 22 事件处理
文章目录1.事件编程2.常用工作簿事件名称与对应处理过程名称示例3. 事件编程的步骤4.工作簿事件4.1 Open4.2 BeforeClose4.3 NewSheet5.工作表事件6.变量和过程函数的作用域1.事件编程 写在事件发生地(对应工作簿或工作表) 2.常用工作簿事…...
【蓝桥杯集训·周赛】AcWing 第91场周赛
文章目录第一题 AcWing 4861. 构造数列一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4862. 浇花一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4861. 构造数列一、题目1、原题…...

【人工智能AI】三、NoSQL 实战《NoSQL 企业级基础入门与进阶实战》
帮我写一篇介绍NoSQL的技术文章,文章标题是《NoSQL 实战》,不少于3000字。这篇文章的目录是 3.NoSQL 实战 3.1 MongoDB 入门 3.1.1 MongoDB 基本概念 3.1.2 MongoDB 安装与配置 3.1.3 MongoDB 数据库操作 3.2 Redis 入门 3.2.1 Redis 基本概念 3.2.2 Red…...

platform 总线
驱动的分离与分层思想 分离:硬件信息分离; 在编写硬件驱动的时候,需要操作许多硬件寄存器。比如gpio 驱动,你需要知道gpio控制器 寄存器的地址,你想要哪个gpio输出?或是输入? 这些操作最终都是靠设置寄存…...

2023第10届生物发酵展3月30-4月1号山东济南开展,参观路线来了
2023第10届生物发酵展3月30-4月1号山东济南开展,参观路线来了!展会时间:2023年3月30日-4月1日展馆地址:山东国际会展中心(济南市槐荫区日照路1号)展馆:4号馆、5号馆BIO CHINA生物发酵展…...

RK356x U-Boot研究所(命令篇)3.6 fdt命令的用法
平台U-Boot 版本Linux SDK 版本RK356x2017.09v1.2.3文章目录 一、fdt命令的配置二、fdt命令的定义三、fdt命令的用法3.1 fdt list3.2 fdt rm3.3 fdt set一、fdt命令的配置 .config配置文件需要有以下配置: rk3568_defconfig默认已使能。 二、fdt命令的定义 usb命令定义在cm…...
2023年社工工资多少钱一月 能领多少补贴
2023年社会工作者人员的待遇还算可以,每月的全额工资一共5000多,扣完五险一金以后每月的到手工资一共4000多,不同地区薪资也是不同的,一线城市会在7千元以上,还可以领取几百到几千元不等的补贴。 12023年社工工资多少钱…...

面试攻略,Java 基础面试 100 问(十一)
抽象类(abstract class)和接口(interface)有什么异同? 抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现ÿ…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...

若依项目部署--传统架构--未完待续
若依项目介绍 项目源码获取 #Git工具下载 dnf -y install git #若依项目获取 git clone https://gitee.com/y_project/RuoYi-Vue.git项目背景 随着企业信息化需求的增加,传统开发模式存在效率低,重复劳动多等问题。若依项目通过整合主流技术框架&…...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...
Neo4j 完全指南:从入门到精通
第1章:Neo4j简介与图数据库基础 1.1 图数据库概述 传统关系型数据库与图数据库的对比图数据库的核心优势图数据库的应用场景 1.2 Neo4j的发展历史 Neo4j的起源与演进Neo4j的版本迭代Neo4j在图数据库领域的地位 1.3 图数据库的基本概念 节点(Node)与关系(Relat…...