当前位置: 首页 > news >正文

软件测试之测试用例的设计

对于测试工作而言,最重要的无疑就是测试用例的设计。好的测试用例可以帮助测试人员更好更快地发现软件中的错误,对于提高产品质量意义重大。本文就是针对测试用例的设计方法。

文章目录

    • 测试用例的基本要素
    • 测试用例的设计
    • 设计测试用例的具体方法
      • 等价类划分法
      • 边界值分析法
      • 判定表
      • 场景设计法
      • 正交法
      • 错误猜测法

测试用例的基本要素

在前面的文章中,已经提到了测试用例是为了实施测试而向被测试的系统提供的一组集合。一般这组集合中需要包含的几个要素分别是:测试环境、操作步骤、测试数据、预期结果等;

测试用例的设计

基于设计测试用例的目的,即为了满足用户需求,验证产品与需求是否相符。因此,一般我们可以从以下几个方面来设计测试用例;

  • 功能测试:以需求文档为参考,验证产品是否实现了其应该实现的功能,是否没有实现其不应该实现的;
  • 性能测试:站在用户的角度,考虑在一些极端情况下的用户体验是否友好,包括高并发量、产品的响应时间等;
  • 界面测试:可以参考设计图进行,包括但不限于用户看到产品的一切像颜色、大小、材质、错别字、是否存在遮挡情况等等;
  • 兼容性测试:考虑产品在不同的环境下的使用体验,像浏览器的兼容性、版本的兼容性、系统的兼容性、数据兼容性等;
  • 易用性测试:同样以用户体验为主,产品是否具备了简单易上手的属性;
  • 安全测试:检查产品对于用户隐私数据的保护,产品本身对用户是否安全等;

对于一件产品而言,测试用例的设计是可以牵扯到产品的方方面面的,当然也是越全面越好。上面只是提供了一些测试用例设计时可以参考的角度,因此也不必局限于设计测试用例只能从这几个方面。

这是一些有关于测试用例设计的案例,可以参考(点击此处即可跳转)

其中,在兼容性测试中可能会遇到这样的问题:产品版本和浏览器版本一定是众多的,要想达到完全测试几乎不可能,那么要如何选择测试的版本呢?

首先一定是选择大部分用户使用的版本,大家主流认可的版本使用者一定更多,而在实际的工作中其实是有数据后台可以检测到大部分用户使用的版本情况的,因此同样可以帮助我们更好的选择测试的版本;

设计测试用例的具体方法

前面有关于测试用例的设计,更多地提供的是一些设计测试用例的角度和思路,下面是设计测试用例的具体方法;

等价类划分法

一般一个程序都会有多个输入,等价类划分法就是将这些输入数据根据输入需求进行划分,等价类的划分一般分为有效等价类和无效等价类;
有效等价类即有效值的集合,一般是符合规格说明书的有意义的输入值构成的集合;
无效等价类即无效值的集合,不符合规格说明书或用户需求的集合;

以最常见的密码输入为例,规定密码长度为8-18位的数字,有效等价类和无效等价类的划分如下:
在这里插入图片描述
等价类划分成功以后,就可以进行测试用例的编写了:

  1. 输入长度为8~18位的密码,具体测试数据563368368;
  2. 输入长度小于8位的密码,2345;
  3. 输入长度大于18位的密码,56638649636478467793646447;
  4. 输入非数字的密码,sghtesh;

边界值分析法

边界值分析法就是针对输入或输出的边界值进行测试的方法,它更多的是一种对等价类划分法的补充测试;

同样以上面密码输入为例,使用边界值分析法对测试用例进行补充:

  1. 输入长度为7位的密码,4563245;
  2. 输入长度为8位的密码,78564390;
  3. 输入长度为18位的密码,542398540981234567;
  4. 输入长度为19位的密码,4327856419076423162;

一般情况下的边界值是有效边界+无效边界;

判定表

判定表是一种常见但不常用的测试用例设计方法,更多地使用在输入条件的组合会对应不同结果的场景;

使用判定表设计测试用例可以参考下面的步骤进行:

  1. 确认输入条件与输出条件;
  2. 寻找输入条件与输出条件之间的关系;
  3. 画判定表;
  4. 根据判定表编写测试用例;

以淘宝购物时的优惠活动为例,当用户提交的订单使用了红包或者订单金额大于500元,认定此订单为优惠订单;

在这里插入图片描述
根据判定表编写测试用例:

  1. 有红包,订单金额大于500,提交订单,为优惠订单;
  2. 有红包,订单金额不大于500,提交订单,为优惠订单;
  3. 有红包,未提交订单,为非优惠订单;
  4. 无红包,订单金额大于500,为优惠订单;
  5. 无红包,订单金额大于500,未提交订单,为非优惠订单;
  6. 无红包,订单金额不大于500,提交订单,为非优惠订单;
  7. 有红包,订单金额大于500,未提交订单,为非优惠订单;
  8. 无红包,订单金额不大于500,未提交订单,为非优惠订单;

场景设计法

场景由事件触发而形成,产品的使用又一定会有事件的触发,因此经同一事件不同的触发顺序和处理结果就形成了事件流。场景设计法其实就是通过对事件触发时情景的描绘来设计测试用例。

实际就是使用业务流程将产品的各个孤立的功能点串起来,可以避免测试陷入功能细节而忽略业务流程结构的误区;
事件流有基本事件流与备选事件流;

以使用ATM取款为例,基本事件流为程序执行正常时的情况,但也不可避免地会出现备选事件流中的故障,备选事件流是根据实际使用ATM取款时设计的,这就是场景设计法的运用;
在这里插入图片描述
根据上面的事件流编写测试用例:

  1. 基本事件流的用例:首先插卡,选择取款功能,输入卡的密码,选择要取款的金额,进行取钞操作,退卡;
  2. 备选事件流的用例:
  3. 插入卡时插入不进去;
  4. 插入卡之后,无法选择取款操作;
  5. 插入卡,选择取款操作,输入密码时输入错误;
  6. 插入卡,选择取款操作,输入密码,选择取款金额,金额不符合要求;
  7. 插入卡,选择取款操作,输入密码,选择合适的取款金额,等待ATM吐钞失败;
  8. 插入卡,选择取款操作,输入密码,选择合适的取款金额,待吐钞之后取钞,退卡时不成功;

场景设计法主要是一种思路引导的作用,在设计测试用例时,不仅要基于需求文档进行基础测试,还应该尽可能地考虑到在实际使用中可能会出现的情况;

正交法

前面我们使用判定表的方式来设计测试用例,但判定表的方式有可能会得到很多测试测试,其中不乏有一些是不太必要的。因此我们使用正交法来尝试解决这个问题;

正交法是一种对试验元素的水平组合进行试验,通过试验结果分析了解全面试验的情况,最终找出最优的水平组合;
正交法的目的就是为了减少用例数目,用尽量少的用例覆盖更多的输入组合情况;
正交试验设计是一种基于正交表的高效率且快速经济的试验;

关于正交法的几个概念:

因素:需要被考察的变量;
水平:因素可能的取值;

以网站的注册操作为例,演示正交法设计测试用例的步骤(使用allparis生成正交表):

在这里插入图片描述

  1. 确定试验的因素和水平都有哪些;
    因素:用户名、电话号码、验证码、密码、确认密码;
    水平:每个因素的水平都为填写和未填写;

  2. 将水平和因素写入excel;

在这里插入图片描述

  1. 在allparis同级目录下创建一个新的txt文件,复制前面excel中的内容,直接保存;

在这里插入图片描述

  1. 使用allparis生成正交表(使用cmd操作);

在这里插入图片描述
这里重定向指定的文件(保存正交结果的文件)可以是在该目录下不存在的;

打开保存结果的文件,就可以看到生成的正交结果了:

在这里插入图片描述

  1. 利用正交表每一行的各因素水平的组合为一个测试用例,最后可以增加有必要但正交表中不存在的测试用例;

然后就可以使用生成的正交表编写测试用例啦;

  1. 用户名、电话号码、验证码、密码、确认密码都填写;
  2. 只填写用户名,其他未填写;
  3. 只填写电话号码和密码,其他未填写;
  4. …(~表示此处选项可以为任意值,不影响测试结果);

正交表的两条性质:
每一列中不同的选项出现的次数相等;
任意两列中的各有序选项出现的次数齐全且均衡;

错误猜测法

错误猜测法是建立在测试人员对产品设计的理解上,更多地是依赖测试人员的工作经验和积累来设计测试用例;

设计测试用例是测试人员测试工作中重要的一环,一个好的测试用例应该是对于一个不熟悉业务的人也能够根据用例来进行测试;而一组好的测试用例则是尽可能多的覆盖产品使用的各种情况。

over!

相关文章:

软件测试之测试用例的设计

对于测试工作而言,最重要的无疑就是测试用例的设计。好的测试用例可以帮助测试人员更好更快地发现软件中的错误,对于提高产品质量意义重大。本文就是针对测试用例的设计方法。 文章目录测试用例的基本要素测试用例的设计设计测试用例的具体方法等价类划分…...

MySQL安装与配置(保姆级教程)

MySQL安装 我们进入Mysql的官网进行下载MySQL Community Edition(GPL),这里我们以8.0.32.0版本为例,点击下面进行下载: MySQL Community Edition(GPL) 此时我们选择下面一个32位(64位的系统也选他),上面那个是在线安装等待时间比较长 当然我们…...

MATLAB算法实战应用案例精讲-【元启发式算法】随机蛙跳跃算法(SFLA)(附matlab代码实现)

目录 前言 知识储备 多目标优化问题 多目标元启发式优化方法 算法原理 数...

内网穿透:远程访问内网IP中的电脑

需求:家里电脑在路由器内网中,能连外网。想在外地时能ssh(也即vscode)访问家里的电脑。 家里电脑系统:win11(Ubuntu流程也一模一样) 具体流程 家里电脑下载【花生壳】内网穿透软件并登录&#…...

day4 selenium爬取数据总结

day4 selenium爬取数据 一、selenium基本操作 导入相关模块: from selenium.webdriver import Chrome(一)、创建浏览器对象 b Chrome()(二)、打开网页(需要爬取哪个页面的数据就打开该页面对应的网页地址) 案例:爬取豆瓣电影…...

信息收集之WAF绕过

信息收集之WAF绕过前言一、工具进行目录扫描1. 工具的下载2. 工具的使用二、Python代码进行目录扫描前言 对于web安全无WAF的信息收集,大家可以查看如下链接的文章: web安全之信息收集 对于有WAF信息收集,看如下所示:(…...

从数据到智慧,TOOM舆情监测系统让你的决策更加精准!

当今社会信息化程度日益提高,网络平台已成为人们获取最新信息的主要途径,无论是个体还是组织、政府还是企业,都需要通过各种手段及时了解社会舆情,把握市场动态,调整经营策略。而舆情监测系统无疑是这些手段中最为有效…...

ChatGPT中文版网页插件-如何体验chatGPT

ChatGPT中文版网页插件 目前,OpenAI的ChatGPT并没有官方提供中文版的网页插件,但是,一些第三方网站和开发者已经开始提供一些针对中文的自然语言处理和对话机器人服务。以下是其中一些例子: 问答机器人: 像小蛮腰和小…...

Docker的网络模式

Docker常见的几种网络模式 docker network ls 查看使用了哪些网络 [rootcentos8-nat-168-182-152 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE c0184302f6a8 bridge bridge local 420492e04276 host host local …...

基于vue3.2、three实现地图在地图加载

基于vue3.2、three实现地图在地图加载code效果预览地址code 在这里插入代码片 import { ref, onMounted } from "vue"import * as THREE from "three"; import Earth from "./textures/Earth.png" import EarthSpec from "./textures/Eart…...

【C++】---优先级队列 仿函数

文章目录优先级队列介绍优先级队列使用仿函数优先级队列模拟实现优先级队列介绍 优先队列是一种容器适配器 ,它的底层实现是堆,虽然它的名字里面有队列,但它并没有队列先进先出的特性 优先级队列定义在头文件中,其模板参数有三个…...

图的遍历算法

图的遍历1.连通图的深度优先搜索1.1. 递归1.2.非递归2.连通图的广度优先遍历3. 非连通图的深度(广度)优先遍历1.连通图的深度优先搜索 算法思想:从图中某个顶点vi出发,访问此顶点,然后依次从v1的各个未被访问的邻接点…...

【蓝桥杯集训·每日一题】 AcWing 3996. 涂色

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴区间DPUnique函数一、题目 1、原题链接 3996. 涂色 2、题目描述 有 n 个砖块排成一排,从左到右编号为 1∼n。 其中,第 i 个砖块的初始颜色为 ci。 …...

人工智能中的Web端编程

Java是当前的主流编程语言之一,常年稳居TIOBE编程语言排行榜前五。Java的使用领域非常广泛,包括了桌面端编程、Web端编程、移动端编程等几乎所有的编程领域。Java是Web端编程使用最广泛的编程语言之一。要学习Web端编程,需要了解Java语言的知…...

jsp+mysql+J2EE校园自行车租赁系统cdA1A2程序

本系统的具体功能有以下六项: 1、用户信息管理模块:用户需要注册成为本网站的用户,同时修改自己的用户资料,在必要时修改自己的登陆密码。 2、车辆查询模块:用户可以根据自己的要求,按照不同的查询方式来查询自己想要的…...

当营养遇上肠道菌群:探究其对儿童健康的影响

谷禾健康 越来越多的证据表明,肠道菌群定植紊乱和微生物多样性减少与全球非传染性疾病 (NCD) 的增加有关。影响儿童和青少年的非传染性疾病包括肥胖及其相关合并症、自身免疫性疾病、过敏性疾病和哮喘。饮食变化也与非传染性疾病的发病机制有关,并且由于…...

vue尚品汇商城项目-day01【4.完成非路由组件Header与Footer业务】

文章目录4.完成非路由组件Header与Footer业务4.1使用组件的步骤(非路由组件)本人其他相关文章链接4.完成非路由组件Header与Footer业务 在咱们项目开发中,不在以HTML CSS 为主,主要搞业务、逻辑 开发项目的流程: (1)…...

IDEA安装教程(图文详解,一步搞定)

文章目录第一步:官网下载IDEA第二步:卸载旧的IDEA(没有则跳过)第二步:安装IDEA第一步:官网下载IDEA 地址:https://www.jetbrains.com/idea/download/other.html 第二步:卸载旧的I…...

【01 DualCam Porting】

1、配置camera_custom_stero_setting.h a、增加sensor配置 /vendor/mediatek/proprietary/custom/mt6765/hal/camera/camera_custom_stereo_setting.h注意: 1)IMGOYUV Size:在有FOV crop的情况下,不能配置为sensor full size,建议比full size 小或者配置为fov crop的值…...

redis --- string类型的使用

目录 一、string类型使用 1.1、set key value参数解析 1.2、同时设置/获取多个键值 1.3、获取/设置指定区间范围内的值 1.4、数值增减 1.5、获取字符串长度和内容追加 1.6、分布式锁 1.7、getset(先get再set) 一、string类型使用 1.1、set key value参数解析 SET key v…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

【生成模型】视频生成论文调研

工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...