浅谈测试用例设计 | 京东云技术团队

news2024/11/24 0:07:08

作者:京东物流 王莹莹

一、测试用例为什么存在

1.1 定义

测试用例(Test Case)是指对特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。测试用例内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档类的输出。简而言之,测试用例是为某个目标而设计的一组测试输入、执行条件以及预期结果,用于核实是否满足某个软件需求。

1.2 作用

①指导测试(开发)的执行

测试用例作为各个测试阶段工作基准指导测试人员按照按用例项目和测试步骤实施测试。另外,测试工作左移时,测试同学提前输出的测试用例也可以指导开发人员的开发工作。

②测试物料的准备

• 数据:按照测试用例配套准备一组或若干组测试所需的原始数据。

• 测试脚本:自动化测试脚本的设计依据。

③测试工作进度把控

•测试工作量评估

•提高测试工作组织效率

④测试结果的度量基准

测试完成后需要撰写测试报告,判断测试是否完成、衡量测试质量量化的结果更加准确、有效。例:测试覆盖率是多少、测试合格率是多少、重要测试合格率是多少,等等。

⑤分析缺陷

通过测试用例和缺陷数据库对比,分析缺陷原因与类型。

二、测试用例设计基本原则

①正确性:测试用例必须是正确的,需通过测试用例评审。

②代表性:测试用例不可能是“穷举”的,期望在有限的测试时间内进行有效的测试,用例必须具有代表性的。

③可判定性:用例的测试结果必须可量化,这样测试完成之后才能将测试结果与预期结果进行比较,判定是否存在BUG。

④可重现性:测试用例执行可复现性保证问题定位的准确性。

⑤可操作性:详细、准确和清晰的步骤是测试用例执行的必要条件,也是测试用例可重现的基础。

三、关于测试用例设计的三言两语

3.1 地基:常用测试用例设计方法(黑盒测试)

等价类划分与边界值分析

•等价类划分

将测试的范围划分成几个互不相交的子集,他们的并集是全集,从每个子集选出若干个有代表性的值作为测试用例。

•边界值分析

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

场景法

场景法是通过场景描述用例执行的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。场景法适合测试业务流程清晰的系统或功能,从系统整个业务流程的全部角度对系统进行测试。

举例:京东商城购买商品,APP->选择商品->点击购买->确认购买信息->支付,这里的每个环节不同的结果结合起来都是一条不一样的用例。

错误推测法

错误猜测主要是一项依赖经验和直觉的非正规的工程方法,基本思想是列举程序可能出现的错误或者容易产生错误的测试点,然后根据测试点来编写测试用例。

举例:京东商城APP搜索输入框特殊字符的检查。

因果图与判定表

用图解的方法表示各种组合关系,写出判定表,从而设计相应的测试用例。类似于数学知识中的布尔逻辑运算,将各种输入条件的组合起来。每种组合条件就是“因”,它有一个输出的结果,这就是“果”。

举例:

正交实验法

正交试验设计是使用已经造好的正交表格进行数据分析,从中挑选出部分具有代表性的点进行试验,这些代表性的点具备了“均匀分散,整齐可比”的特点,是一种相对高效、快速的用例设计方法。

举例:

3.2 盖房子:实际工作中的测试用例设计

实际工作中,很多时候我们无法遵循理论上的测试用例设计方法那样,编写大而全的用例去执行所有大大小小需求的测试。更多情况下,用例设计时应该遵守精益测试策略,不能一味的追求测试覆盖率,有效的测试更有价值。利用测试四象限等信息指导的精益测试,追求以业务价值为目标,以尽量少的成本交付高质量的软件,做到有效覆盖,减少浪费。不管是手工测试还是自动化测试,都要先搞清楚业务价值和质量目标,测试用例设计和执行过程都需要做出相对应的考量(如测试用例的优先级)。

框架搭建

用例设计之前,我们应该熟悉需求的业务背景与技术架构,从而勾勒出测试用例整体框架。然后,使用【横向扩展】+【纵向分层】的组合模式下来针对每个需求完成用例拆解覆盖。

•横向业务扩展:指从业务角度平铺来看,总共有哪些业务场景,提供了哪些能力,即产品最上层的功能全景。

•纵向架构分层:是指从技术架构层面来分析,当前产品可以宏观上分为几层,以便于在用例验证是从不同层次上进行验证和用例覆盖。

举例:

添砖加瓦

测试框架搭建完成之后,就需要完善测试范围梳理,确认功能点的细节信息。例如,一般情况下需要进行回归测试、异常测试,再有可能需要进行并发测试、安全测试和性能测试等。从测试类型出发,结合常规用例设计方法进行用例设计与编写。

举例:

站在房子外面:像用户一样去测试

怎样像用户一样测试,能否做到还原真实用户的使用场景,还原用户在使用产品时的真实心理。说起来有点玄,但其实思路很简单。第一步想象自己就是用户,如果是我会有多少奇奇怪怪的操作或需求;第二步是弥补测试人员和用户之间的断层,用户和测试信息对齐,指导用户更好的使用软件,指导测试更有同理心。

小妙招

•用户画像:我们大概率能知道用户群体是谁,他的典型画像是什么样的,这也是我们进行换位思考的基础。

•不信任上下游:我们不能保证上下游给我的信息或者功能一定是完美的,结合自身系统定位和业务确认不同场景下我们应该做出什么样的反馈。

3.3 拓展:房子的维护,测试用例管理

测试用例是我们测试人员宝贵的财富,在测试工作中测试用例是其最为重要的基础。所以,一个良好的测试用例除了可以帮助测试人员阅读,理解,修改之外,也要方便我们去管理它,从而提高测试工作的质量和效率。不同的业务条线或者团队可以根据自己需要制定一些规则,让大家在进行测试用例设计遵守。

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

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

相关文章

pytorch 计算网络模型的计算量FLOPs和参数量parameter之殊途同归

计算网络模型的计算量FLOPs和参数量parameter之殊途同归 参数量方法一:pytorch自带方法,计算模型参数总量参数量方法二: summary的使用:来自于torchinfo第三方库参数量方法三: summary的使用:来自于torchsu…

controlnet1.1预处理器功能详解

ControlNet 1.1 与 ControlNet 1.0 具有完全相同的体系结构,ControlNet 1.1 包括所有以前的模型,具有改进的稳健性和结果质量,但增加并细化了多个模型。 今天太忙了,有时间就把每个模型的测试样稿发出来 2023.4.27 分类预处理器备注模型黑白倒转invert边…

数据库物理存储结构

目录 一、数据库文件和文件组 1、数据库文件 (1) 主数据库文件(Primary Database File) (2) 次数据库文件(Secondary Database File) (3) 事务日志文件 …

[Linux]文档搜索和归档备份

​⭐作者介绍:大二本科网络工程专业在读,持续学习Java,输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Linux基础操作。本文主要是分享一些Linux系统常用操作,内容主要来源是学校作业,分享出来的…

配置zabbix自定义监控项

1.需要安装zabbix-agent服务,使用的zabbix版本为5.0版本 参考:zabbix监控linux主机_Apex Predator的博客-CSDN博客 2.创建存放脚本目录并编辑监控服务的脚本(此处监控一下服务是否存活) mkdir /opt/zabbix_jb vi /opt/zabbix_jb/service_status.sh …

【容器化应用程序设计和开发】2.2 Dockerfile 的编写和最佳实践

往期回顾: 第一章:【云原生概念和技术】 第二章:2.1 容器化基础知识和Docker容器 容器化应用程序设计和开发 2.2 Dockerfile 的编写和最佳实践2.2.1 Dockerfile 包含哪些指令2.2.2 Dockerfile 注意事项 在上篇章节中,我们介绍了…

什么是索引?MySQL索引的底层数据结构

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引…

SAP 生产订单修改记录查询

无论在项目实施过程中还是在运维的项目中,经常会遇到生产订单被修改,导致需求发生变更,这个时候用户经常就会需要要求查询生产订单的修改记录。通过SAP的标准程序是没有办法查询到生产订单修改记录,这个时候就从开发的角度去做增强的方式去实现。 1、肯定是在生产订单保存…

AI(二):初体验(Cursor、Copilot、Bito)

Cursor Cursor官网下载:https://www.cursor.so/ && https://github.com/getcursor/cursor Cursor.so是一款基于GPT的代码生成工具,它可以帮助开发者快速生成代码,提高开发效率。GPT是一种自然语言处理技术,可以根据输入…

Lambda语法解析

Lambda语法解析 一.Lambda语法1.Lambda表达式基本形式:2.capture list(捕获列表)3.捕获列表程序案例 二.Lambda应用1.使用 lambda 表达式对数组排序,并将排序后的元素存储到新数组中:2.使用 lambda 表达式计算两个矩阵…

如何安装Auto-GPT

如何安装Auto-GPT 记录一下如何安装Auto-GPT 文章目录 如何安装Auto-GPT前提克隆项目进入项目目录安装所需的依赖重命名 .env.template 文件填写API_KEY创建auto-gpt.json文件运行 Auto-GPT 前提 在安装Auto-GPT之前,你需要具备以下条件: Git环境Python环…

从历史天气预报 API 看气象大数据的商业价值

引言 近年来,随着气象观测技术的不断提升和气象大数据的快速发展,越来越多的企业开始将气象数据应用于商业领域。其中,历史天气预报 API 作为一种可获取历史气象数据的接口,具有广泛的商业应用价值。 本文将从历史天气预报 API …

数字图像处理【8】频域滤波1—关于傅里叶

这一章是数字图像处理基础的最后一章。系统的介绍傅里叶级数、傅里叶变换、离散傅里叶变换,快速傅里叶变换,以及二维傅里叶变换在图像上的应用。 变换的作用 首先我们先来聊聊什么是“变换”?其实在第一章介绍 HSI 颜色模型的时候&#xff0…

数据库工具——mongostat

参考文档:mongostat​​​​​​​​​​​ mongostat提供了当前运行的mongod或者mongos实例的大概状态。mongostat有点类似Linux的vmstat,但mongostat提供的是mongod或者mongos实例的信息。 从MongoDB 4.4开始,mongostat现在与MongoDB Ser…

第五章——动态规划1

背包问题 01背包问题 有N个物品和容量是V的背包,每个物品有价值vi和权重(价值)wi属性,每件物品只能用一次(要么用0次,要么用1次),在背包能装得下的情况下,挑一部分物品装…

网络原理(四):传输层协议 TCP/UDP

目录 应用层 传输层 udp 协议 端口号 报文长度(udp 长度) 校验和 TCP 协议 确认应答 超时重传 链接管理 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 总结 我们第一章让我们对网络有了一个初步认识,第二章和第三章我们通…

bounding box线性回归

#bounding box regression原理 如图所示绿色框为飞机的Ground Truth(GT),红色为提取的positive anchors,即便红色的框被分类器识别为飞机,但是由于红色的框定位不准,这张图相当于没有正确的检测出飞机。所以我们希望采用一种方法对…

MQTT协议 详解

文章目录 一、啥是MQTT?1. MQTT协议特点2. 发布和订阅3. QoS(Quality of Service levels)QoS 0 —— 最多1次QoS 1 —— 最少1次QoS 2 —— 只有1次 二、MQTT 数据包结构1. MQTT固定头2. MQTT可变头 / Variable header3. Payload消息体 三、M…

Redis集群常用命令及说明

一、集群的特点 1、集群架构特点 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽; (2)节点的fail是通过集群中超过半数的节点检测失效时才生效…

2023年5月广州/东莞/深圳产品经理认证NPDP招生简章

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…