设计方法编写测试用例---思路分析

news2024/12/26 22:09:29

测一四年我在YX公司带测试团队,一个用例评审的会议上,一不小心超常发挥,结果卡在了一个用例设计方法上,印象非常深刻,当时的业务场景是支付方式的选择和优惠方案。

在后来的工作中,也曾几次遇到需要选择合理的设计方法来写用例,不过每次在网上都是搜索了半天,也找不到令人满意的答案。很多简单的问题被复杂化,然后给出的解题思路更是令人百思不得其解。

网络资源下,任何一个问题都不缺答案,更多的时候缺的是个让人一目了然的答案。

测试前准备

作为一个测试人员,软件测试的流程首先是要非常熟悉的,何时何地都能脱口而出,避免一切翻车的可能。需要注意的是流程没有唯一答案,具体由项目决定。所以给出的只是一个还算通用的参考流程。

总结一下:在测试流程中,有6个部分,其中3个部分涉及到了用例,可见写好用例的重要性。

所以,结合这些年吃过的亏,我来给大家缕缕,如何快速的get到测试用例的设计方法。

5种常见的测试用例设计方法

一、等价类划分

1)概念

某个输入域的集合,在这个集合中每个输入条件都是等效的,如果其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不太可能发现错误。

关于等价类划分的两个重要概念:

有效等价类:有效等价类是程序规格说明有意义,合理的输入数据。

比如用正确的用户名和密码来登录系统就是有效等价类。

无效等价类:无效等价类是程序规格说明无意义,不合理的输入数据。

比如用不存在的用户名和密码来登录系统就是无效的等价类。

2)等价类法设计测试用例的步骤

为每个输入划分等价类,得到等价类表,为每个等价类规定一个唯一编号

设计一个测试用例,使其尽可能多的覆盖所有尚未覆盖的有效等价类。重复这一步骤,使得有效等价类均被测试用例所覆盖设计一个测试用例,使其只覆盖一个无效等价类。重复这一步骤使得所有无效等价类均被覆盖。

假设上面的文字你都没有看懂,那么做个题目就懂啦。

3)案例来了

程序规定:输入三个正整数作为三边的边长构成三角形。请用等价类方法设计测试用例分别判断输入3个整数时的三角形为一般三角形、等腰三角形、等边三角形时情况:

提示:

需求提取:

1、三条边需求:整数/3个数/非零数/正数

2、一般三角形的要求:二边之和大于第三边

3、等腰三角形:二二边相等且满足二边之和大于第三边

4、等边三角形:三条边相等

答案解析:符合的需求条件的即是有效等价类,比如,等腰三角形,那么要求至少有两条边相等,所有有效等价类就包括a=bb=ca=c,那么不符合条件的就是无效等价类包括a!=bb!=ca!=c

二、边界值分析

1)概念

边界值分析方法的理论基础是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附近的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小。

2)边界值分析法设计用例的步骤

分析输入参数的类型:从测试规格中分析得到输入参数类型

等价类划分(可选):对于输入等价类划分方法进行等价类的划分

确定边界:运用域测试分析方法确定域范围的边界(上点、离点与内点)

相关性分析(可选):如果存在多个输入域,则需要运用因果图、判定表方法这些输入域边界值的组合情况进行进一步分析

形成测试项:选择这些上点、离点与内点或者这些点的组合形成测试项

3)案例来了

假设存在以下的测试场景,某个网站的登录页面:

1、用户名:1—20个字符,包括1和20,其他不考虑

2、密码:6个数字,其他不考虑

现要求用边界值分析法测试用户名和密码这两个输入框。

边界值分析方法如下:

答案解析:密码这个字段的范围是闭区间【1-20】,用边界值设计用例,那么去找这两个数的左邻右舍+自己,1则是0和1和2,20则是19,20,21。

三、判定表

1)概念

判定表是分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。

2)判定表法设计用例的步骤

列出所有的条件桩和动作桩

填入条件桩、条件项

填入动作桩、动作项

化简,合并相似规则

将每条规则转化为用例

3)案例来了

假设有以下逻辑:

运用判定表设计用例。

答案解析:判定表的解题思路就是先列出所有条件,然后列出每个条件的取值,最后如上图,一列就是一条用例。

四、正交试验法

1)概念

正交试验设计(Orthogonalexperimentaldesign)是研究多因子多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点。

关于正交试验表的两个重要概念:

1、所有参与试验、影响试验结果的条件称为因子。

2、影响试验因子的取值或输入叫做因子的水平。

如何选择正交表:

1、考虑因子的个数

2、考虑水平的个数

3、考虑正交表的行数

4、取行数最少的一个

2)案例来了

有如下用户登录页面,三个登录条件:用户名、密码、验证码,考虑填写或不填写,用正交表设计测试用例。

分析因子数,以及因子水平值:

3因子2状态

经过组合合并之后的对应用例

补充:

答案解析:正交试验法主要在于选取因子数和水平值,将两者结果列出再合并,工作中用的不多,但是合适的业务逻辑下可以选择。

五、流程分析法

1)概念

流程分析法是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到。

2)流程分析法设计用例步骤

1、画出业务流程图

2、设置功能路径优先级

3、确定测试路径

4、选取测试数据

5、构造测试用例

3)案例来了

案例:安装QQ,安装系统之家版QQ。

对应的测试用例

答案解析:看起来非常复杂的流程图和用例,设计的核心其实就两个方向,一个是正常流程,即安装安装向导一直点击【下一步】直到完成。另一个方向则是每个判断条件选择【否】的场景,那么这样的话,就会产生很多条其他分支的用例。

结尾篇

测试用例设计方法不止上面提到的5种,但是工作中遇到的业务场景基本可以通过上述的方法来得到解决。等价类划分和边界分析方法较为简单,很多时候可以结合起来一起用。正交实验表和判定表一般用在需要将多个输入组合起来测试的情况。流程分析法顾名思义就是存在不同分支流程的时候选用。希望上述的方法能够帮助到大家。

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

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

相关文章

Games101学习笔记 -光栅化

光栅化 经过MVP矩阵和视口变换后,我们就可以从相机的角度看到一个和屏幕大小一致的二维平面。 那么把这个看到的二维平面应用到我们的屏幕上的过程就是光栅化。在这儿我们需要补充一个概念-像素: 像素: 一个二位数组,数组中每个…

Games101学习笔记 - MVP矩阵

MV矩阵(模型视图变换) 目的,把摄像机通过变换移动的世界坐标远点,并且朝向与Z轴的负方向相同。这个变换就是模型试图变换。 因为移动了相机,如果想保持正确的渲染的话,那么对应的物体需要要和相机保持相对…

【问题解决:在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-遗留问题-开机自启动can】

【问题解决在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-遗留问题-开机自启动can】 1、概述2、实验环境3、问题描述# 1-1、发送可以发送,但是PC发送数据收不到。# 1-2、接收是可以接收,但是发送PC收不到数据 4、解决方式(1&#xff…

常用的负载均衡算法(NGINX篇)

负载均衡算法用于在多个服务器或资源之间分配工作负载,以优化资源利用率、降低延迟、提高吞吐量并确保系统的容错性。 这里介绍并实验4种负载均衡算法(随机的方法理论上也算,但一般不会这么搞),在NGINX上。 目录 轮询…

Vue 插槽 slot

solt 插槽需要分为 2.6.0 版本以上和 2.6.0版本以下。 2.6.0 版本以下的 slot 插槽在,2.x版本将继续支持,但是在 Vue 3 中已被废弃,且不会出现在官方文档中。 作用 插槽 prop 允许我们将插槽转换为可复用的模板,这些模板可以基于…

【第一阶段】kotlin的函数

函数头 fun main() {getMethod("zhangsan",22) }//kotlin语言默认是public,kotlin更规范,先有输入( getMethod(name:String,age:Int))再有输出(Int[返回值]) private fun getMethod(name:String,age:Int): Int{println("我叫…

拓扑序练习(一)

题目 LintCode127 给定一个有向图,图节点的拓扑排序定义如下: 对于图中的每一条有向边 A -> B , 在拓扑排序中A一定在B之前. 拓扑排序中的第一个节点可以是图中的任何一个没有其他节点指向它的节点。 如下图所示: 拓扑排序可以为: [0, 1, 2, 3, 4,…

排序八卦炉之总复习【改良版】

文章目录 1.总结2.总代码2.1Stack.h2.2Stack.c2.3Sort.h2.4Sort.c2.5Test.c 1.总结 2.总代码 点击 排序&#xff08;C&#xff09; 跳转码云获取完整代码 2.1Stack.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include …

以http_proxy和ajp_proxy方式整合apache和tomcat(动静分离)

注意&#xff1a;http_proxy和ajp_proxy的稳定性不如mod_jk 一.http_proxy方式 1.下载mod_proxy_html.x86_64 2.在apache下创建http_proxy.conf文件&#xff08;或者直接写到conf/httpd.conf文件最后&#xff09; 3.查看server.xml文件 到tomcat的安装目录下的conf/serve…

Python-OpenCV中的图像处理-图像阀值

Python-OpenCV中的图像处理-图像阀值 图像阈值单阈值自适应阈值Otsus二值化 图像阈值 单阈值 与名字一样&#xff0c;这种方法非常简单。但像素值高于阈值时&#xff0c;我们给这个像素赋予一个新值&#xff08;可能是白色&#xff09;&#xff0c;否则我们给它赋予另外一种颜…

数据结构--BFS求最短路

数据结构–BFS求最短路 BFS求⽆权图的单源最短路径 注&#xff1a;⽆权图可以视为⼀种特殊的带权图&#xff0c;只是每条边的权值都为1 以 2 为 b e g i n 位置 以2为begin位置 以2为begin位置 代码实现 //求顶点u到其他顶点的最短路径 void BFS_MIN_Distance(Graph G, int u…

开发工具Eclipse的使用之导入项目(import)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Eclipse使用的相关操作吧 一.导读 上篇我们已经详细介绍了开发工具eclipse&#xff0c;也说明了eclipse的基本使用&#xff0c;那么我们这篇来详细讲述一下怎…

yolov5目标检测多线程C++部署

C多线程复习 下面的代码搭建了简单的一个生产者-消费者模型&#xff0c;在capture()函数中进行入队操作&#xff0c;infer()函数中进行出队操作&#xff0c;为了模拟采图-推理流程&#xff0c;在函数中调用Sleep()函数延时。 #include <iostream> #include <string&…

Unity游戏源码分享-儿童益智数学大脑训练游戏

Unity游戏源码分享-儿童益智数学大脑训练游戏 5秒内选择答案 项目下载地址&#xff1a;https://download.csdn.net/download/Highning0007/88198773

数据结构:双向链表的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 前言 一、实现思路1.节点的结构(ListNode)2.新节点的创建(BuyListNode)3.头结点的创建(ListCreate)4.双向链表的销毁(ListDestroy)5.双向链表的打印(ListPrint)6.双向链表的尾插(ListPu…

Vue3项目中使用原生input实现excel导入导出功能

重写input样式 首先我们先来重写input的原生样式&#xff0c;毕竟实在不好看。这里的思路很简单input外面套一层div然后让input撑满盒子然后给input隐藏了就行 <div class"bg-[#f8f8f8] w-[430px] h-[220px] rounded-md cursor-pointer relative outline-0">…

Git详解及使用

Git简介 Git 是一种分布式版本控制系统&#xff0c;它可以不受网络连接的限制&#xff0c;加上其它众多优点&#xff0c;目前已经成为程序开发人员做项目版本管理时的首选&#xff0c;非开发人员也可以用 Git 来做自己的文档版本管理工具。 大概是大二的时候开始接触和使用Gi…

计算机组成原理-笔记-第四章

目录 第四章——指令系统 1、指令格式 &#xff08;1&#xff09;指令&#xff08;机器指令-二进制数&#xff09; &#xff08;2&#xff09;指令分类&#xff08;按照 地址码的数量 分类&#xff09; &#xff08;3&#xff09;指令分类&#xff08;按照长度分类&#x…

Dubbo启动错误

加完Nacos配置后报错 信息: [DUBBO] The registry[<dubbo:registry address"nacos://localhost:8848" protocol"nacos" port"8848" />] will be used as the config center, dubbo version: 2.7.8, current host: 192.168.0.103 八月 09…

【香瓜说职场】如何高效地提问(2018.05.06)

一、什么是低效地提问&#xff1f; 香瓜先举3个非常非常常见的低效提问实例&#xff1a; 1、“为什么我的XXX不成功&#xff1f;” 这个问题就像“为什么我会摔倒”&#xff0c;可能原因有“腿残疾”、“路上有坑”、“眼神不好”等无数种原因……“不摔倒”的我是回答不了的、…