【展望2024】,从软件测试用例开始学习起

news2024/12/16 6:43:32

1. 测试用例的概念

测试用例就是测试人员向被测试系统发起的一组集合,该集合包括测试环境,测试数据,测试步骤,预期结果

2. 设计测试用例的好处

在测试前都要先设计测试用例,设计测试用例有如下好处:

测试用例是测试人员执行测试的依据

在做回归测试的时候,测试用例可以复用

测试用例可以衡量需求的覆盖率

测试用例是自动化测试的依据

测试用例具有借鉴意义,后续测试人员可以借鉴前人写的测试用例

测试用例的编写往往是根需求编写的,那么如何根据需求来编写测试用例?

3. 基于需求设计测试用例

在基于需求设计测试用例之前,测试人员要进行如下操作:

测试人员首先要分析需求,验证需求的合理性,正确性,无二义性,并且逻辑自洽

其次再是细化需求,从需求中提取出测试点,根据测试点设计测试用例

在测试人员分析需求时往往分析功能性需求和非功能性需求

3.1 功能性需求

功能性需求是为了满足软件的基本功能,往往从以下几个方面进行分析考虑

  • 从界面考虑,验证界面功能

比如QQ登陆页面,有许多的按钮对应不同的功能

  • 从业务角度考虑,把功能串起来进行测试

比如增加一条用户信息,然后是查询,修改或者删除

  • 验证功能之间的交互性,一致性

比如微信发朋友圈,你发送的内容要和微信好友在朋友圈看到的一致

  • 一个功能的多个输入

比如登陆功能,要使用不同的账号和密码进行登陆测试

  • 功能的异常测试
  • 功能的易用性,体验性的测试

主要是验证用户在使用上是否符合用户使用习惯,使用起来是否舒适等

  • 功能涉及的算法

比如滴滴打车,一个顾客叫了一个车,系统要根据某些算法算出距该顾客最近的车

下面让我们一起来看个具体的例子:思考一下我们要如何去分析这个日历页面,才能做到毫无保留把相关功能分析完呢❓🤔

答案就是:页面分析可以从上到下,从左到右,依次去分析每个测试点

3.2 非功能性需求

非功能需求是在功能性需求的基础上做一些限制,满足特定场景的需求,让用户有更好的体验,比如软件的兼容性,性能,安全性,可靠性,可移植性,易用性等

不同的软件对于非功能性的需求往往是不同的,如:

  • 客户端的软件:像word,ppt,xmind,播放器对功能和要求很简单,对性能,安全性要求比较低,对软件的可移植性要求比较高,因为这些不需要联网就可以使用
  • 企业软件:比如聊天软件,像飞Q,飞书,钉钉,对功能有一定要求,对兼容性,安全性,性能要求低,因为企业软件用的用户比较少
  • 商业软件:像QQ,微信等,对功能,性能,安全性,可移植性,易用性要求都很高,因为商业软件使用的用户基数大

4. 设计测试用例的具体方法

设计测试用例的常用方法有:等价类,边界值,错误猜测法,场景设计法,因果图,正交法,下面就对这几种常用设计测试用例的常用方法展开具体的介绍

4.1 等价类

根据输入(特殊情况下考虑输出),把输入划分成若干个等价类,从每一个等价类当中取一个测试用例进行测试,如果这个测试用例通过,我们就说这个测试用例代表的等价类测试通过

等价类可以解决测试用例无法穷举的情况

等价类有有效等价类和无效等价类

  • 有效等价类:符合需求规格说明书的数据
  • 无效等价类:不符合需求规格说明书的数据

注意:测试的时候有效等价类和无效等价类都得测试

示例:注册网易邮箱时,针对邮箱账号找到对应的等价类

等价类思想设计测试用例步骤:

  • 充分理解需求
  • 划分有效等价类,划分无效等价类
  • 从有效等价类抽取其中一个数据进行设计测试用例;从无效等价类中抽取其中一个进行测试用例设计

4.2 边界值

对输入和输出的边界针对性的进行测试用例的设计,叫作边界值法

边界值要取边界上的值,和边界左右两边的值。

边界值测试(Boundary Value Analysis,BVA)主要关注的是在接受范围的边缘测试输入数据。这包括了测试可用(有效)和不可用(无效)的边界值。

  • 测试可用(有效)的边界值:这部分测试的目的是确保在定义的接受范围的边界上,系统能够正确地处理有效的输入。
  • 测试不可用(无效)的边界值:这部分测试的目的是确保系统能够正确地拒绝那些位于接受范围之外的输入。这样做有助于确保系统的健壮性和稳定性。

示例:就拿上边的那个例子来说,它的有效范围为6-18位,找出边界点

注意:边界值往往和等价类结合在一起使用

边界值测试中离点的测试是一种重要策略,有助于捕获可能的边界条件错误。开区间和闭区间的离点测试有所不同,下面解释其测试方法及原因:

闭区间

在闭区间a,b中,边界点a和b是有效的。所以离点测试应该包括:

测试边界点本身:验证a和b是否被正确接受。

测试边界外的离点:选择一个紧挨着边界外的点,例如a-1和b+1,验证它们是否被正确拒绝。

开区间

在开区间a,b中,边界点a和b是无效的。所以离点测试应该包括:

测试边界内的离点:选择一个紧挨着边界内的点,例如a+1和b-1,验证它们是否被正确接受。

测试边界点本身:验证a和b是否被正确拒绝。

测试边界外的离点:选择一个紧挨着边界外的点,例如a-1和b+1,验证它们是否被正确拒绝。

边界值设计测试用例方法:

  • 充分理解需求
  • 找边界点
  • 针对边界点设计测试用例

4.3 判定表

判定表(Decision table)是另一种表达逻辑判断的工具。

关系:

  • 与:所有的条件必须满足,如果一个条件不满足,此时结果为假
  • 或:满足其中一个条件结果就为真,如果条件全部为假,结果就为假
  • 恒等:条件为真,结果一定为真非:条件为假,结果才为真
  • 非:条件为假,结果才为真

如何设计测试用例:

  • 分析所有可能的输入和可能的输出。
  • 找出输入与输出之间的对应关系。
  • 设计判定表
  • 把判定表对应到每一个测试用例。

案例一:

假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠”。

1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:

输入:订单已提交、金额大于300、有红包。

输出:优惠、不优惠。

2. 找出输入与输出之间的对应关系:

订单已提交,金额大于300, 有红包,优惠

订单已提交,金额大于300,没有红包,优惠

订单已提交,金额小于300,有红包,优惠

订单已提交,金额小额300,没有红包,不优惠

订单不提交,金额大于300,有红包,不优惠

订单不提交,金额大于300,没有红包,不优惠

订单不是交,金额小于300,有红包,不优惠

订单不提交,金额小额300,没有红包,不优惠

3. 判定表:

4. 把判定表对应到每一个测试用例

判定表的每一列都是一个测试用例

最后之所以写成这样,是因为我们后期要针对这些测试点补充测试要素

4.4 正交表

1. 什么是正交表

最简单的正交表是L4(23),含意如下:“L”代表正交表;L 下角的数字“4”表示有 4 横行,简称行,即要做四次试验;括号内的指数“3”表示有3 纵列,简称列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。正交表的特点是其安排的试验方法具有均衡搭配特性。

2. 正交表的两条性质:

  • 每一列中各数字出现的次数都一样多。
  • 任何两列中的各有序数对出现的次数都一样多。

3. 如何通过正交表设计测试用例

  • 充分理解需求
  • 确定因素,确定水平
  • 画正交表
  • 补充正交表
  • 将正交表转换成测试用例

继续以注册的需求为例: 姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册

因素: 姓名、邮箱、密码、确认密码、验证码

水平: 填写/不填写

allpairs画正交表:

① 将因素和水平放到Excel表格中

② 将Excel表格内容直接复制到TXT文本中并保存到allpairs路径下

③ cmd进入到allpairs安装路径下

④ 生成正交表 (输入下面指令)

⑤ 将正交表转换成测试用例 (每一个横行就是一个测试用例)

4.5 场景设计法

很多软件不同的场景,是基于不同的事件的触发。不同事件的触发,导致场景走向不同的事件流。不同的功能点串起来形成一个场景,不同的功能点又有不同的输出,不同的输出导致不同的测试场景。

场景设计法中涉及到两个概念:基本事件流和备选事件流。用下面的一个例子进行解释,以去ATM取款机取款的流程为例

除了基本事件流以外,可能出现的以外情况称之为备选事件流

如何通过这个方法设计测试用例:

充分理解需求-> 确定主事件流->确定次事件流->每一个事件流就是一个测试用例

根据上图编写测试用例:

基本事件流用例:插卡、输入密码、输入金额、取钞、退卡

备选事件流的用例:

(1)插卡、输入密码、密码错误、重置密码、输入金额、取钞、退卡

(2)插卡、输入密码、输入金额、金额不是整数、重新输入、取钞、退卡

4.6 错误猜测法

错根据测试人员的经验,知识积累,猜测某一块功能有问题,有针对性的进行测试用例的编写。类似于探索性测试,针对性比较强,比较依赖测试人员个人的水平。适用于在用例设计后,作为补充,加强去设计测试用例。

案例:已注册为例

  • 校验中特殊字符空格的处理?
  • 密码校验中的大小写?
  • 姓名中的特殊字符?
  • 密码发送是否明文

5. 测试用例的万能公式

首先,为"水杯"设计一个测试用例,我们可能会想到水杯是否可以盛水、水杯是否漏水、水杯携带是否方便、水杯是否保温、水杯的形状和外观是否符合用户预期…但这些用例是我们想一个写一个的,并不是按照某个具体步骤详细而全面的来设计测试用例。因此学会万能公式对我们设计测试用例将很有帮助

测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试

  • 功能测试:对产品的功能设计测试用例(来源是需求文档/日常生活经验)
  • 性能测试:功能测试没有问题不代表性能好,考虑极端情况(高并发量、响应时间等)
  • 界面测试:界面中每个元素的大小、颜色、材质、形状、页面跳转、文字错别字…都需要进行测试(以界面设计图为依据)
  • 兼容性测试: 软件的不同版本是否兼容、不同浏览器、不同的系统版本、数据兼容性…
  • 易用性测试:产品是否具备简单易上手的属性
  • 安全测试:用户的隐私数据是否加密(注册账号时账号和密码在接口传输时是否加密)、是否存在SQL注入问题、越权问题

【SQL注入问题】

select * from info where id=1 or 1=1; 这条SQL语句的结果是返回所有的用户信息

【越权问题】

越权又分为垂直越权和水平越权

垂直越权是指,比如在一个教务系统中,有教师和学生不同的身份,教师可能有布置作业的功能,学生没有作业的功能,但如果学生也能进行布置作业,那么这就属于是垂直越权

水平越权是指,学生有张三和李四,张三不能进入到李四的界面中进行操作,但如果张三可以操作李四的界面,那这就是水平越权

在学完万能公式之后,借助万能公式对"水杯"进行设计测试用例

【设计测试用例一定是越多越好吗?】

不是的,测试用例能够提高质量覆盖率才是最好的

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

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

相关文章

Java数据结构《二叉排序树的插入删除和查找》(难度系数100)

一、前言: 这是怀化学院的:Java数据结构中的一道难度偏难(偏难理解)的一道编程题(此方法为博主自己研究与学习一名叫qing影的博主,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢&am…

外贸找客户软件工具:BotMaster 18.5 Crack

BotMaster 拓展您的业务大师增加销量Whatsapp营销,使用 BotMaster 将您的业务提升到新的水平 - 最强大的 WhatsApp 营销软件,可促进销售和发展您的业务。 BotMaster 是一款革命性的 WhatsApp 营销工具,于 2022 年 1 月推出。这款功能强大的工…

zabbix、netdata和glances,做最简单的系统资源监控

软件需要显示服务器的资源信息(CPU、内存、网络、硬盘等),但是软件是在Docker容器中运行。 目前方案 通过ssh在主机上远程运行ps、free等指令,获取相应的信息。这种方案需要代码配置主机的IP,以及用户名和密码&#…

语聚AI知识库支持连接数据库,无需上传知识文档,数据分析更高效

数据库系统是企业信息技术基础架构的关键部分,它帮助企业管理和处理其数据,目前已有大量企业通过数据库保存数据,例如员工信息、客户数据、产品销售数据等等。但企业运营变得越来越复杂,数据库中的数据量也在持续增长,…

C++ 学习系列 -- 实现简单的 String

1 标准库 std::string c 中的 std::string 是一个重要的字符串的类, 我们在日常工作中常常与之打交道。 string是C标准库的重要部分&#xff0c;主要用于字符串处理。使用string库需要在同文件中包括该库 #include<string> std::string 实际上是 std::basic_string<…

开源的局域网文件共享工具迎来大更新

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 hello&#xff0c;伙伴们又有几天的时间不见了。 我的文章也要改变一下日更的策略了&#xff0c;变成坚持更…

什么叫应用加速,什么情况需要用到应用加速

应用加速的定义 应用加速依赖节点之间的高速通道、转发集群及智能路由技术&#xff0c;实现各地用户的就近接入&#xff0c;通过高速通道直达源站区域&#xff0c;帮助业务解决用户访问卡顿或者延迟过高的问题。使用高速网络和全球范围内的节点技术&#xff0c;确保传输时间和…

HTML行内元素与块级元素有哪些及区别

文章目录 一、HTML常见的行内元素二、HTML常见的块级元素三、行内元素与块级元素的区别 一、HTML常见的行内元素 最常用的是span&#xff0c;其他还有a、 img、 input、textarea、select、label 还有包括一些文本元素如&#xff1a;br 、b、 strong、sup 、sub、 i、em 、del、…

关于PCIE显卡的电源供电 6pin或 8pin 转接问题

问题背景 市面销售的电源五花八门 非模组电源 有一些只有 68pin&#xff0c;对于 8pin的电源缺少 2pin供电 模组或半模组电源 模组电源可能某些线材丢失半模组电源&#xff0c;如果线材丢失&#xff0c;在默认线材不够的情况下&#xff0c;可能面临跟全模组丢线一样的问题 市…

期末速成数据库极简版【查询】(3)

目录 多表查询 【8】多表连接——内连接 &#x1f642;等值连接 &#x1f642;自然连接 &#x1f642;非等值连接 【9】多表连接——外连接 【10】交叉连接不考 【11】联合查询 【12】扩展多表连接 【13】嵌套查询 &#x1f642; 多表查询 【8】多表连接——内连…

图神经网络简明教程【GNN】

图神经网络&#xff08;GNN&#xff09;是一组在图领域工作的深度学习方法。 这些网络最近已应用于多个领域&#xff0c;包括&#xff1a; 组合优化、推荐系统、计算机视觉—仅举几例。 这些网络还可用于对大型系统进行建模&#xff0c;例如社交网络、蛋白质-蛋白质相互作用网络…

关于DNS服务器地址总是127.0.0.1且无法解析域名地址

问题 笔者尝试nslookup解释域名时&#xff0c;出现服务器变成本地环回口地址&#xff0c;导致无法解析域名 C:\Users\Zsy>nslookup www.baidu.com 服务器: UnKnown Address: 127.0.0.1*** UnKnown 找不到 www.baidu.com: Server failed排查思路 尝试关闭虚拟网卡&#…

C语言数据结构-双向链表

文章目录 1 双向链表的结构2 双向链表的实现2.1 定义双向链表的数据结构2.2 打印链表2.3 初始化链表2.4 销毁链表2.5 尾插,头插2.6 尾删,头删2.7 根据头次出现数据找下标2.8 定点前插入2.9 删除pos位置2.10 定点后插入 3 完整代码3.1 List.h3.2 Lish.c3.3 test.c 1 双向链表的结…

博士论文查重【保姆教程】

大家好&#xff0c;今天来聊聊博士论文查重&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 博士论文查重&#xff1a;确保学术诚信的重要环节 引言 博士论文是博士研究生学术研究成果的重要体现&#x…

每日一练2023.12.9—— 矩阵A乘以B【PTA】

题目链接&#xff1a;L1-048 矩阵A乘以B 题目要求&#xff1a; 给定两个矩阵A和B&#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是&#xff0c;只有规模匹配的矩阵才可以相乘。即若A有Ra​行、Ca​列&#xff0c;B有Rb​行、Cb​列&#xff0c;则只有Ca​与Rb​相等时&a…

RTMP流设置超时时间失败

使用FFmpeg(版本是5.0.3&#xff09;将rtmp流作为输入&#xff0c;设置超时时间&#xff08;使用-timeout参数&#xff09;&#xff0c;结果报错&#xff1a;Cannot open Connection tcp://XXX:1935?listen&listen_timeout 通过./ffmpeg -help full 命令查看FFmpeg帮助&am…

js判断是否对象自身为空

文章目录 一、前言二、JSON.stringify三、for in 配合 hasOwnProperty四、Object.keys五、Object.getOwnPropertyNames六、Object.getOwnPropertyNames 结合 Object.getOwnPropertySymbols七、Reflect.ownKeys八、最后 一、前言 如何判断一个对象为空&#xff1f; 先上结论&a…

golang开发之个微机器人的二次开发

简要描述&#xff1a; 下载消息中的文件 请求URL&#xff1a; http://域名地址/getMsgFile 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型…

一文读懂:如何利用JMeter轻松提升系统性能

jemter是一款开源的性能测试工具、纯属记录&#xff0c;方便回忆使用 &#xff08;一&#xff09;、创建线程组 右键添加一个http请求 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的自动化测试教程&#xff0c;同…

gitbash下载安装

参考教程 零、下载 官网地址 2.43.0win64 链接&#xff1a;https://pan.baidu.com/s/16urs_nmky7j20-qNzUTTkg 提取码&#xff1a;7jaq 一、安装 图标组件&#xff08;Additional icons&#xff09;&#xff1a;选择是否创建桌面快捷方式&#xff1b;桌面浏览&#xff08;Win…