测试用例设计指南

news2025/5/11 4:56:56

软件测试设计是测试过程中重要的测试活动,怎么样设计测试用例能提高我们测试的效率和质量,从以下几个方面做了简单的讲解。

1、测试用例设计原则

测试用例设计的基本原则包括:有效性、清晰性、可复用性、可维护性、完整性、兼容性、易操作性、可管理性、可评估性

有效性:测试用例步骤必须描述清晰,不能出现模棱两可的以及重复的话语,测试用例应该按照一定的顺序进行编写,这样执行的时候效率比较高。

清晰性:用例的操作步骤要描述清晰,包含清晰的输入数据以及预期输出,验证点必须明确清晰,并能突出重点,对于流程性的用例建议按照流程顺序进行用例安排,从第一个验证点到最后一个验证点,组成流程的开始到结束,方便测试执行。测试用例包含前置条件的必须将前置条件描述清楚,包括入口等。

可复用性:可重复使用,并尽量将具有相似功能的测试用例抽象并归类。

可维护性:测试用例因为业务需求发生变更的时候,需要及时更新维护测试用例,做到测试用例的实时性与有效性,测试用例需要细化和不断的完善,是个循序渐进的过程。

完整性:用例是否完成并覆盖所有需求点,做到对需求的完全理解。

兼容性:测试用例要包含新老版本的兼容、新老数据兼容、浏览器兼容等测试点。

可管理性:能够检测测试人员的测试进度、工作量等。

可评估性:测试用例的通过率和缺陷的数目是评估软件质量的好坏的标准。

2、测试用例的生命周期

软件测试用例的设计阶段包含:需求分析、测试用例设计、测试用例实现、测试用例执行、测试用例管理

2.1 需求分析

测试用例过程的第一步是确定测什么,标识出测试点,并且对测试点进行优先级的划分。

2.2 测试用例设计

测试用例设计确定了如何来测试已经分析出的测试点。

测试设计的主要点是确定测试预期结果。为了确定测试预期结果,测试人员不仅需要关注测试输出,同时也需要注意测试数据和测试环境的前后置条件。假如测试用例没有测试的预期结果,则测试用例对于测试结果的对错判断是毫无意义的。

测试预期结果可以是各种各样的,包括需要创建或者输出的结果,也可以是需要更新或者变更的结果,也可以是删除的结果。每个测试用例都应该清楚的描述测试的预期结果。这样,就需要测试人员具有被测系统相关的丰富的知识和经验,才可能对软件系统的测试输出作出正确的评估。假如测试输出结果评估认为是正确的,那么就可以作为测试用例的期望输出结果。

2.3 测试用例实现

测试用例实现的过程包括准备测试脚本、测试输入、测试数据以及预期结果等。测试脚本指的是按照标准的语法组织数据或者指令。测试执行之前,首先必须满足测试前置条件,比如一个测试用例需要用到配置好的一些数据,那么这个数据就必须提前创建等。

2.4 测试用例执行

通过运行测试用例来对被测系统进行测试。对于手动测试来说,主要参照测试用例的步骤来进行测试执行,比较预期结果和实际结果、并记录测试过程中发现的问题。

对于自动化测试过程,执行时需要借助测试工具,运行测试用例脚本等,记录测试结果。

执行测试时如实际结果和预期结果是一样的,则认为是通过的,如果不一样,那用例执行失败,或存在问题,对于用例执行失败,需要进一步的检查,确定是软件问题还是用例的预期结果有问题,或者是数据问题,环境问题引起的,需要从不同的方面进行问题分析。

2.5 测试用例管理

1)测试用例组织

每一个项目,其测试用例的数目都非常多。如何来组织、跟踪和维护测试用例是一件非常重要的事情。如何来组织测试用例,是测试成功与否的一个重要因素,也是提高测试效率的一个重要步骤。

测试用例的组织,可以用不同的方法来进行组织或者分类:

按照软件功能模块组织:软件系统一般是根据软件的功能模块来进行工作任务分配的。因此,根据软件功能模块进行测试用例设计和执行等是很常用的一种方法。根据模块来组织测试用例,可以保证测试用例能够覆盖每个系统模块,达到较好的模块测试覆盖率。

按照测试用例优先级组织:测试用例是有优先级的。对于任何软件,实现穷尽测试是不现实的。在有限的资源和时间内,首先应该执行优先级高的测试用例。

按照功能模块进行划分是最常用的,我们也可以结合起来使用,比如在按照功能模块划分的基础上,再进行不同优先级的划分。

2)测试用例跟踪

测试用例的跟踪主要是针对测试执行过程中测试用例的状态来进行的,通过测试状态的跟踪和管理,从而实现测试过程和测试有效性的管理和评估。

测试用例执行的跟踪:在测试执行的过程中,对测试用例的状态进行跟踪,可以有效的将测试过程量化。比如,执行一轮测试过程中,测试的测试用例数目是多少,测试用例中通过、未通过、未测试的比例各是多少。这些数据可以提供一些信息来判断软件项目执行的质量和执行进度,并对测试进度、状态提供明确的数据,有利于测试进度和测试重点的控制。

3)测试用例维护

测试用例并不是一成不变的,当一个阶段测试过程结束后,会发现一些测试用例编写的不合理,或者需求发生了变化,这都需要对当前的一些测试用例进行修改和更新,从而使测试用例具有可复用性。

3、测试用例编写要素

用例编号:用例的唯一标识

测试模块:测试用例所属模块

用例标题:测试用例的简要说明

前提条件:用例执行的前提

测试步骤:执行用例步骤

预期结果:应该得到的结果

优先级:用例重要程度

图片

4、功能测试用例设计方法

图片

4.1 等价类划分法

等价类划分法的定义

输入具有代表性的数据子集

等价类划分法分类

有效等价类:满足需求的

无效等价类:不满足需求的

适用范围

具有单个输入的功能

步骤

明确需求

确定有效和无效等价类

编写测试用例

举例

需求:下单若是函速达,需要允许快递员修改,且限定包裹数必须为 1,重量要 < 0.5kg。

图片

4.2 边界值分析法

边界值的定义

对于输入等价类和输出等价类而言稍高于其边界或者稍低于其边界的一些特定情况

边界值范围

正好等于

刚刚好大于

刚刚好小于

边界值分析法中的三个点

上点:边界上的点

离点:距离边界最近的点

内点:范围内的点

举例:1-100 ,上点:1 100 离点:0 99 2 101 内点:50

适用范围

有输入参数,且输入类型或范围长度有边界时(适用于题目需求中有长度或者范围的情况)

和等价类一起使用,适用于单个功能的输入的情况

步骤

明确需求

确定有效和无效等价类

明确题目条件中的边界值

编写测试用例

举例

图片

4.3 判定表法

适用条件

判定表表示的是有多个输入和多个输出,而且输入与输入之间相互的组合关系,输入和输出之间有相互的制约和依赖关系

组成部分

条件桩:题目条件中的所有的测试输入

动作桩:题目条件中的所有输出

条件项:测试输入的取值

动作项:测试输出的取值

步骤

明确条件桩

明确动作桩

对条件桩进行全组合

明确每个组合对应的动作桩

设计测试用例

举例

图片

4.4 因果图法

因果图法定义

理论中是通向判定表的一个中间过程

适用范围

因果图是一种利用图解法来分析输入的各种组合情况,从而设计测试用例的方法,它适用于检查程序输入条件的各种组合情况

因果图法的核心

所谓的原因就是输入,所谓的结果就是输出。

因果图的因 — 输入条件

因果图的果 - 输入结果

因果图基本符号

图片

图片

关系

恒等:若 Ci 是 1,则 ei 也是 1;否则 ei 是 0

非:若 ci 是 1,则 ei 是 0;否则 ei 是 1

或:若 c1 或 c2 或 c3 是 1,则 ei 是 1;否则 ei 是 0

与:若 c1 和 c2 都是 1,则 ei 是 1;否则 ei 是 0

步骤

标识输入和输出

画出因果图

将因果图转换为判定表

生成测试用例

举例

需求:某软件规格说明书包含这样的要求:第一列字符必须是 A 或 B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息 L;如果第二列字符不是数字,则给出信息 M。

图片

转化为判定表

图片

最终转化为测试用例。

4.5 正交分析法

定义

正交法又叫正交试验法,又叫正交排列法,使用最小的测试过程集合获得最大的测试覆盖率,(测试用例的条数写的少一点,而测出的 bug 多一点),正交试验设计法,是从大量的试验点中挑选出适量的,有代表性的点,应用依据伽罗瓦理论导出的 “正交表”,合理安排试验的一种科学的试验设计方法。

正交表的概念:一种特制的表,一般的正交表标记为 Ln(mk)

图片

n 表示行数,也就是需要测试组合的次数

k 表示的列数,表示控件的个数(因素的个数,或是因子的个数)

m 是每个控件包含的取值个数(各因素的水平数,即各因素的状态数)

如:L9 (34)
有 4 个控件
每个控件有 3 个取值
9 为需要测试的组合个数、有 9 条测试用例
叫 4 因素 3 水平

步骤

根据需求形成因子状态表 —- 因子:控件名称 状态:每个控件对应的取值

确定所采用的正交表

将正交表中的数字用文字代替

一行就是一条测试用例

举例

图片

注意

如果各个因子的状态数是不统一的,几乎不可能出现均匀的情况时,选择正交表为 等于或略大于因子数,状态数,且试验次数最少

生成正交试验表的一些方法
在线生成:https://jaccz.github.io/pairwise/tools.html

图片

输入每个控件和控件的取值

图片

生成的表

图片

正交试验的实例表可套用到用例中 http://www.york.ac.uk/depts/maths/tables/orthogonal.htm
正交试验的实例表可套用到用例中 http://support.sas.com/techsup/technote/ts723_Designs.txt

4.6 场景法 - 流程图法

定义

模拟用户操作时的场景,主要用于测试多个功能之间的组合使用情况

为什么要用户场景法

用户角度:用户平时使用的不是单个功能,而是多个功能组合起来进行使用

测试人员角度:平时测试的都是单个功能点进行测试,为了保证测试的全面性,考虑多个功能之间组合测试的场景

场景法的适用范围

多个功能之间的组合测试

往往在冒烟测试时经常使用

场景法中两个重要的概念

基本流:按照正确的业务流程操作的一种路径

备选流:出现错误的操作流程

步骤

确定项目角色

明确角色的常用功能

根据需求构建测试场景

一个场景就是一条 case

5、安全性测试设计

安全测试是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程。安全测试是检查系统对非法侵入渗透的防范能力。

包含的测试点如下:

sql 注入

明文传输

越权访问

短信邮箱验证

鉴权缺失

密码安全

数据健壮性等

图片

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
在这里插 入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

JS利用Worker多线程大文件切片上传

在做前端上传时&#xff0c;会遇到上传大文件&#xff0c;大文件就要进行分片上传&#xff0c;我们整理下思路&#xff0c;实现一个分片上传&#xff0c;最终我们要拿到每一个分片的hash值&#xff0c;index 分片索引&#xff0c;以及分片blob&#xff0c;如下&#xff1a; 一…

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…

(vue)复合型输入框el-input输入数字类型,e,+,-等特殊符号可以输入

(vue)复合型输入框el-input输入数字类型&#xff0c;e&#xff0c;&#xff0c;-等特殊符号可以输入 效果 代码 <el-form-item label"分数区间"><el-inputplaceholder"请输入内容"v-model.number"formInline.scoreIntervalValue"clas…

Oracle 11g升级19c 后部分查询功能很慢

*Oracle 11g升级19c 后部分查询功能很慢 今天生产突然有个查询非常慢&#xff0c;日志显示执行了50秒左右&#xff0c;但是从日志中拿出SQL在PLSQL执行&#xff0c;发现用时不到1秒&#xff0c;查看SQL,怀疑是下面几种原因导致 1、使用函数不当 UNIT.UNIT_CODE LIKE CONCAT(‘…

2核4G云服务器租用价格_2核4G云主机优惠价格_2024年报价

租用2核4G服务器费用价格&#xff0c;2核4G云服务器多少钱一年&#xff1f;1个月费用多少&#xff1f;阿里云2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年&#xff1b;腾讯云轻量2核4G服务器5M带宽165元一年、252元15个月、540元三…

SEACells从单细胞基因组学数据推断转录和表观基因组细胞状态

摘要 Metacells是从单细胞测序数据中衍生出的细胞分组&#xff0c;代表了高度粒度化、独特的细胞状态。在这里&#xff0c;我们提出了单细胞细胞状态聚合&#xff08;SEACells&#xff09;&#xff0c;这是一种用于识别Metacells的算法&#xff0c;它克服了单细胞数据稀疏性的…

leetcode 2.27

leetcode hot 100 哈希1.字母异位词分组2.最长连续序列 双指针1.盛最多水的容器2.和为 K 的子数组 数组1.除自身以外数组的乘积 哈希 1.字母异位词分组 49. 字母异位词分组 方法一&#xff1a;排序 由于互为字母异位词的两个字符串包含的字母相同&#xff0c;因此对两个字符…

C++设计模式之——桥接模式详解和代码实例

文章目录 桥接模式详解&#xff1a;C代码实例进一步阐述桥接模式的优点和适用场景桥接模式的实际应用场景还包括但不限于以下几种情况&#xff1a; 桥接模式(Bridge Pattern)是一种结构型设计模式&#xff0c;它将抽象部分与其实现部分分离&#xff0c;使它们都可以独立变化。这…

Arduino与processing之间的通信——进阶版

本次需要实现Arduino获取板子的偏转角度并通过串口发送给processing&#xff0c;processing部分根据传输过来的各个轴的偏转角度建立对应偏转角度的3D模型。 这就涉及了两个轴正负方向的偏转&#xff0c;我的实现思路是使用串口传输 字母数字 格式的信息&#xff0c;字母用来判…

Corel 会声会影 2023 激活码 会声会影 2023 序列号生成器

会声会影 2023 已经出来很长时间了&#xff0c;但是对它的热爱一直持续不减&#xff0c;今天我给大家带来2023版本为用户带来的多个全新功能&#xff0c;可以更好的编辑视频&#xff0c;不过软件还是付费的&#xff0c;为此我带来了会声会影 2023序列号生成器&#xff0c;可以轻…

算法沉淀——动态规划之01背包问题(leetcode真题剖析)

算法沉淀——动态规划之01背包问题 01.【模板】01背包02.分割等和子集03.目标和04.最后一块石头的重量 II 01背包问题是一类经典的动态规划问题&#xff0c;通常描述为&#xff1a;有一个固定容量的背包&#xff0c;以及一组物品&#xff0c;每件物品都有重量和价值&#xff0c…

【蓝桥杯】分巧克力

一.题目描述 二.输入描述 三.输出描述 四.问题分析 //分巧克力 #include <iostream> #include <algorithm>using namespace std;const int N1e510; int n,k,h[N],w[N];bool judge(int mid){int cnt0;for(int i0;i<n;i){cnt(h[i]/mid)*(w[i]/mid);if(cnt>k)r…

【短时交通流量预测】基于Elman神经网络

课题名称&#xff1a;基于Elman神经网络的短时交通流量预测 版本时间&#xff1a;2023-04-27 代码获取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主获取 模型简介&#xff1a; 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&#…

数仓项目6.0(一)

尚硅谷大数据项目【电商数仓6.0】企业数据仓库项目_bilibili 数据流转过程 用户➡️业务服务器➡️数据库存储➡️数仓统计分析➡️数据可视化 数据仓库处理流程&#xff1a;数据源➡️加工数据➡️统计筛选数据➡️分析数据 数据库不是为了数据仓库服务的&#xff0c;需要…

【牛客】VL63 并串转换

题目 描述 题目描述&#xff1a; 设计一个模块进行并串转换&#xff0c;要求每四位d输为转到一位dout输出&#xff0c;输出valid_in表示此时的输入有效 信号示意图&#xff1a; clk为时钟 rst为低电平复位 valid_in 表示输入有效 d 信号输入 dout 信号输出 波形示意图&…

TypeError: the JSON object must be str, bytes or bytearray, not dict

参考文章&#xff1a;https://blog.csdn.net/yuan2019035055/article/details/124934362 Python基础系列&#xff08;一&#xff09;搞懂json数据解析与字典之间的关系 代码&#xff1a; 报错信息: TypeError: the JSON object must be str, bytes or bytearray, not dict …

光伏并网逆变器低电压穿越控制Simulink模型!

适用平台&#xff1a;MatlabSimulink 简介 当电网突发跌落故障时&#xff0c;电网电压降低会使并网电流增大、母线电压升高。当跌落程度较轻时&#xff0c;并网电流仍在逆变器安全运行的范围内&#xff1b;但跌落程度较深时&#xff0c;会引发逆变器过流和母线过压等问题&…

CommandLineRunner的使用

背景 在项目启动时需要做一些数据预加载或者某些操作&#xff0c;需要怎么办呢&#xff0c;方法其实有好几种&#xff0c;这里主要讲一下SpringBoot提供的CommandLineRunner接口的使用。一、案例说明以及实现 1.实现CommandLineRunner接口 定义一个类实现CommandLineRunner接…

在 Linux 上用 zram 替代传统交换空间 | Linux 中国

我在我的电脑上花了很多时间&#xff08;我是说工作&#xff09;&#xff0c;我发现了很多有趣的东西。其中最近引起我注意的是 zram0 设备。我是在几个月前写一篇文章时第一次注意到它&#xff0c;它显示在 lsblk 命令的输出中&#xff1a; # lsblk NAME MAJ:MIN RM…

Mybatis-Plus介绍

目录 一、Mybatis-Plus简介 1.1、介绍 1.2、特性 1.3、架构 1.4、Mybatis-Plus与Mybatis的区别 二、快速入门 2.1、首先创建数据库mybatis-plus 2.2、创建user表 2.3、插入数据 2.4、创建Spring-Boot项目 2.5、添加依赖 2.6、连接数据库 一、Mybatis-Plus简介 1.1、…