测试用例设计指南

作者:京东物流 王玉坤

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

1 测试用例设计原则

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

  1. 有效性:测试用例步骤必须描述清晰,不能出现模棱两可的以及重复的话语,测试用例应该按照一定的顺序进行编写,这样执行的时候效率比较高。
  2. 清晰性:用例的操作步骤要描述清晰,包含清晰的输入数据以及预期输出,验证点必须明确清晰,并能突出重点,对于流程性的用例建议按照流程顺序进行用例安排,从第一个验证点到最后一个验证点,组成流程的开始到结束,方便测试执行。 测试用例包含前置条件的必须将前置条件描述清楚,包括入口等。
  3. 可复用性:可重复使用,并尽量将具有相似功能的测试用例抽象并归类。
  4. 可维护性:测试用例因为业务需求发生变更的时候,需要及时更新维护测试用例,做到测试用例的实时性与有效性,测试用例需要细化和不断的完善,是个循序渐进的过程。
  5. 完整性:用例是否完成并覆盖所有需求点,做到对需求的完全理解。
  6. 兼容性:测试用例要包含新老版本的兼容、新老数据兼容、浏览器兼容等测试点。
  7. 可管理性:能够检测测试人员的测试进度、工作量等。
  8. 可评估性:测试用例的通过率和缺陷的数目是评估软件质量的好坏的标准。

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

适用范围

  • 有输入参数,且输入类型或范围长度有边界时(适用于题目需求中有长度或者范围的情况)
  • 和等价类一起使用,适用于单个功能的输入的情况

步骤

  1. 明确需求
  2. 确定有效和无效等价类
  3. 明确题目条件中的边界值
  4. 编写测试用例

举例

4.3 判定表法

适用条件

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

组成部分

  • 条件桩:题目条件中的所有的测试输入
  • 动作桩:题目条件中的所有输出
  • 条件项:测试输入的取值
  • 动作项:测试输出的取值

步骤

  1. 明确条件桩
  2. 明确动作桩
  3. 对条件桩进行全组合
  4. 明确每个组合对应的动作桩
  5. 设计测试用例

举例

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 水平

步骤

  1. 根据需求形成因子状态表 —- 因子:控件名称 状态:每个控件对应的取值
  2. 确定所采用的正交表
  3. 将正交表中的数字用文字代替
  4. 一行就是一条测试用例

举例

注意

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

生成正交试验表的一些方法
在线生成: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 场景法 - 流程图法

定义

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

为什么要用户场景法

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

场景法的适用范围

  • 多个功能之间的组合测试
  • 往往在冒烟测试时经常使用

场景法中两个重要的概念

  • 基本流:按照正确的业务流程操作的一种路径
  • 备选流:出现错误的操作流程

步骤

  1. 确定项目角色
  2. 明确角色的常用功能
  3. 根据需求构建测试场景
  4. 一个场景就是一条 case

5 安全性测试设计

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

包含的测试点如下:

  • sql 注入
  • 明文传输
  • 越权访问
  • 短信邮箱验证
  • 鉴权缺失
  • 密码安全
  • 数据健壮性等

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

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

相关文章

Linux 0.11

调试介绍 Linux 0.11-调试 Linux 最早期的代码-36 启动跟踪 BIOS 加载 电脑启动&#xff0c;CPU指向0xFFFFFFF0处&#xff0c;这里正好是系统ROM BIOS存放的地址。即开始执行BIOS指令。为了保持向下兼容&#xff0c;就会把与原PC兼容的BIOS代码和数据复制到低端1M末端的64K…

0基础实现微信推送天气,生日等(女朋友快乐眼)

最近微信小程序推送的功能很火&#xff0c;我也是去看了很多攻略&#xff0c;最后选了一个0基础的版本&#xff0c;最后也是实现了推送功能&#xff0c;如图 如何实现&#xff1f; 首先&#xff0c;打开微信官方提供的一个接口生成网址&#xff0c;微信扫码登录&#xff0c;然…

数据挖掘(作业汇总)

目录 环境配置 实验1 数据 作业2 环境配置 实验开始前先配置环境 以实验室2023安装的版本为例&#xff1a; 1、安装anaconda&#xff1a;&#xff08;anaconda自带Python,安装了anaconda就不用再安装Python了&#xff09; 下载并安装 Anaconda3-2022.10-Windows-x86_64.ex…

剑指offer JZ77 按之字形顺序打印二叉树

Java JZ77 按之字形顺序打印二叉树 文章目录Java JZ77 按之字形顺序打印二叉树一、题目描述二、双栈法三、队列reverse()法使用双栈法和队列reverse()法解决剑指offer JZ77 按之字形顺序打印二叉树的问题。 一、题目描述 给定一个二叉树&#xff0c;返回该二叉树的之字形层序遍…

【pytorch】深度学习模型调参策略(五):采用贝叶斯工具进行最优参数搜索及最佳步数确认

目录1.如何决定是否应用某个新的超参数配置2.参数优化工具optuna确定最终最优配置为什么在调整的探索阶段使用准随机搜索而不是更复杂的黑盒优化算法&#xff1f;optuna库简介pytorch实现代码搜索参数详解输出结果3.确定每次训练运行的步数使用学习率扫描选择max_train_steps初…

设置鼠标右键打开方式,添加IDEA的打开方式

一、问题描述 已下载IDEA&#xff0c;但是右键打开之前保存的项目文件&#xff0c;无法显示以IDEA方式打开。 二、解决步骤 1. 打开注册表 winR键输入regedit 2、查找路径为计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell &#xff08;我找了半天没看到Class…

在芯片设计行业,从项目的初期到交付,不同的岗位的工程师主要负责什么?

大家都知道在芯片设计行业&#xff0c;项目是至关重要的一环。从项目的初期到交付&#xff0c;不同的岗位的工程师在项目的各环节主要负责什么?他们是怎样配合的?下面看看资深工程师怎么说。 一个项目&#xff0c;从初期到交付的过程是比较漫长的。我们知道最早的时候&#…

deskvideosys 办公行为管理软件的部署架构

deskvideosys 办公行为管理软件服务器端使用的是 B/S 架构&#xff0c;采用 golangvue 框架来编程&#xff0c;agent 端直接使用的是 vc编程框架&#xff0c;然后通过tcp协议连接服务器端&#xff0c;所以deskvideosys架构 可以作为终端安全管理&#xff0c;上网行为管理&#…

小程序 table组件

最近有在小程序中用table的需求&#xff0c;但是没有找到有符合要求的组件&#xff0c;所以自己弄了一个&#xff0c;能满足基本需求。 组件下载:https://download.csdn.net/download/weixin_67585820/85047405 引入 "usingComponents": {"table": "…

基于springboot和Web实现社区医院管理服务系统【源码+论文】分享

基于springboot和Web的社区医院管理服务系统演示开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

记录--Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 今天给大家带来的是Vue 3 中的极致防抖/节流(含常见方式防抖/节流)这篇文章&#xff0c;文章中不仅会讲述原来使用的防抖或节流方式&#xff0c;还会带来新的一种封装方式&#xff0c;使用起来更简单、…

diffusion 之 cifar/mnist 数据集

diffusion 之 mnist 数据集mnist数据集ddpm/script_utils.pyscripts/train_mnist.py展示采样结果代码出处&#xff1a;https://github.com/abarankab/DDPMwandb的问题解决方法&#xff1a; step1&#xff1a; 按照这个https://blog.csdn.net/weixin_43164054/article/details/1…

基于kubernetes部署gitlab

目录前提下载镜像部署服务前提 已经搭建完kubernets集群并可提供服务。 下载镜像 去docker hub 下载具体版本镜像&#xff0c;当使用最新版本时&#xff0c;也建议具体制定版本号&#xff0c;而不是使用latest. 如 gitlab/gitlab-ce:15.10.0-ce.0 当然可以pull到本地&#x…

Linux拒绝俄罗斯开发者合入

最近在Linux社区看到这样的信息https://lore.kernel.org/all/20230314103316.313e5f61kernel.org/我们不愿意接受你们的补丁。关于上面的内容&#xff0c;看到有一篇这样的文章https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions由于美国对俄罗斯实施制裁&#xff0…

一次内存泄露排查

前因&#xff1a; 因为测试 长时间压测导致 接口反应越来越慢&#xff0c;甚至 导致服务器 崩溃 排查过程 1、top 查看是 哪个进程 占用 内存过高 2、根据 进程 id 去查找 具体是哪个 程序的问题 ps -ef| grep 41356 可以看到 具体的 容器位置 排查该进程 对象存活 状态…

大数据学习路线图(2023完整高清版超详细)

送福利了&#xff01;超详细的大数据学习路线图来啦&#xff0c;2023版是首发哟&#xff01;大数据学习路线图分为7个阶段&#xff0c;包含&#xff1a; 数据仓库基础-->Linux &Hadoop生态-->Hadoop-->数据仓库与ETL技术-->BI数据分析与可视化-->自研数据仓…

计算机科学与技术专业-大三-学年设计-题目

大三-学年设计题目 西南大学 计算机与信息科学学院 周竹荣 课程概述 学年设计是重要的综合性设计训练&#xff0c;安排在修完相关专业平台课后进行。旨在培养学生综合运用所学的基础理论和专业知识&#xff0c;分析、解决实际问题的能力&#xff0c;理论联系实际。是一次系统的…

HTML 标签和属性

一些标签 单双标签 双标签。双标签指标签是成对出现的&#xff0c;也就是有一个开始标签和一个结束标签&#xff0c;开始标签用 <标签名> 表示&#xff0c;结束标签用 </标签名> 表示&#xff0c;只有一对标签一起使用才能表示一个具体的含义。例如 <html>&…

关于线程池你了解些什么?

前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…

电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…