软件测试用例(1)

测试用例的基本要素

回顾一下测试用例的概念:

测试用例是为了实施测试而向被测试的系统提供的一组集合,  这组集合包含: 测试环境, 操作步骤, 测试数据, 预期结果等要素.

好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试.

评价测试用例的标准: 对比好坏用例的评价标准.

用例表达清楚, 无二义性.

用例可操作性强.

用例的输入和输出明确, 一条用例只有一个预期结果.

用例的可维护性好.

用例对需求的覆盖率高.

测试用例给我们带来的好处

测试执行者的依据.

使得工作可重复, 自动化测试的基础.

评估需求的覆盖率.

用例的复用

积累测试方法思路以供后续借鉴

使用中带来的困扰:

测试用例的设计是费时费力的工作, 往往设计测试用例所花费的时间比执行所花费的时间还多

解决如下问题:

不知道是否较全面的测试了所有功能, 测试的覆盖率无法衡量, 对新版本的重复测试很难实施, 存在大量冗余影响测试效率.

测试用例的设计方法

基于需求进行测试用例设计

基于需求设计测试用例是测试设计和开发测试用例的基础, 第一步就要分析测试需求, 验证需求是否正确, 完整, 无二义性, 并且逻辑自洽. 在需求正确的基础上细化测试需求, 从测试需求中提炼出一个个测试点或者测试项, 然后根据每一个测试点进行测试用例的设计

在分析测试需求时, 一般分为功能测试需求和非功能测试需求.

功能需求测试分析

对于功能测试中, 可以借助功能框图来帮助我们进行测试的需求分析. 概括起来, 功能测试需求通常包括以下几个方面:

(1)系统各个功能界面的验证.

(2)借助业务把功能串起来进行测试.

(3)功能的一致性, 交互性(多功能互操作)的测试.

(4)系统的不同输入, 结果输出的业务数据测试.

(5)功能的错误操作, 异常操作的测试(属于负面测试).

(6)功能实现用到的算法验证, 有时需要用代码评审.

(7)用户操作的易用性, 用户体验, 往往结合功能测试同时验证.

 针对具体的需求, 可以根据业务分类, 用户角色(餐厅的会员系统)或者用户操作区域等将系统功能分解成若干个功能模块, 然后按照功能模块分别进行测试用例分析. 按照功能模块划分, 业务模块划分是最常见的做法.

非功能需求测试分析

非功能测试需求主要涉及性能, 安全性, 可靠性, 兼容性, 易维护性和可移植性等. 从测试需求分析来看, 每一类非功能特性测试都需要根据需求单独分析. 它们之间可能会存在相互影响, 如安全性越高, 就越有可能给易用性, 性能带来更大的挑战.

这里要说明的是对于每一个应用软件系统, 非功能特性的质量需求都是存在的, 但是针对不同项目类型对各个非功能特性的要求是不一样的, 这个需要根据具体项目, 具体需求和不同产品应用的特点进行分析.

(1)纯客户端软件(就没有服务器支持的): 这类软件对系统的功能测试要求是最低的, 但是对于兼容性和稳定性, 可移植性有一定要求.

(2)企业内部的客户端/服务端系统: 比如电子邮件, 即时通信系统(企业QQ)等, 在系统功能测试需求上比纯客户端更复杂, 要求功能正确, 稳定性良好. 但是整体上看, 对性能, 安全性, 兼容性要求不高.

(3)外部大型复杂网络应用系统:  比如电子商务, 网上银行等, 除了有复杂的系统功能测试需求以外, 在系统的性能, 安全性, 兼容性, 容错性, 可靠性都有很高的要求.

具体的设计方法 -- 黑盒测试

介绍

定义: 数据驱动的测试或输入/输出驱动的测试.

核心: 测试目标和结构完全无关, 重点集中在程序不按其规范正确运行的环境条件

判定标准: "穷举输入测试" 缺点: 经济, 时间, 无法实现.(因为测试投入的目标在于通过有限的测试用例最大限度地发现问题的数量.)

等价类

 因材施教的栗子:

原则上讲, 老师应该依据每个学生的自身情况, 制定符合的学习方案. 但是实际上太多老师管不过来, 只能分成几类: 优等生强调知识面的扩展和综合能力的提升; 中等生强调夯实基础, 查漏补缺; 差等生强调先掌握重点, 暂时跳过难点.

思路: 输入的集合是无穷的, 不能全部覆盖到.

依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类, 从等价类中选出一个测试用例, 如果这个测试用例测试通过, 则认为所代表的等价类测试通过,  这样就可以使用较少的测试用例达到尽可能多的功能覆盖, 解决了不能穷举测试的问题. 

有效等价类: 对于程序规格说明书是合理的, 有意义的输入数据构成的集合, 利用有效等价类验证程序是否实现了规格说明书中所规定的功能和性能.

无效等价类: 根据需求说明书, 不满足需求的集合.

等价类只考虑输入域的分类, 没有考虑到输入域的组合, 需要其它的设计方法和补充.

eg: 超市买水果

有效等价类: 苹果, 梨, 橘子.

无效等价类: 电锯, 初音未来手办, iPhone 15 promax远峰蓝1TB.

eg: 登录账号:

| 用户名  |  必填, 录入用户名  |  6至15(用户名长度由6-15位字符串组成) | 

测试用例设计: 

有效等价类: 6-15位字符串

无效等价类: 0-5位字符串/ 16位及以上位字符串. 

边界值

我们知道, 代码往往在边界值那里是容易出现问题的,边界值分析法就是对输入或输出边界进行测试的一种黑盒测试方法. 通常边界值分析法是作为对等价类划分法的补充, 这种情况下, 其测试用例来自等价类的边界.

示例:

1. 输入框长度1-11. 取边界值:1, 11, 12, 0.

2.运动员参赛项目为1-3项, 取边界值为: 0, 1, 3, 4项

3.查询页面由999行, 每50行为一页, 取边界值为: 0, 1, 50, 51, 999, 1000行 

 边界值的取法:

1.上点: 边界上的点就是上点.

2.内点: 边界内的点(不管范围是开区间还是闭区间). (取一个即可^-^)

3.离点: 如果区间是开区间, 是取区间内最靠近上点的点. 如果是闭区间, 是指区间外最靠近上点的点.

举个栗子:

 

上点: 50, 55 内点: 53 离点: 51, 56. 

错误猜测法

错误猜测法是对被测试软件设计的理解, 过往经验以及个人直觉, 推测软件中可能出现的缺陷, 从而针对性地设计测试用例的方法.

这个方法强调的是对被测试软件需求理解以及设计实现的细节把握, 还有个人经验的直觉.

错误推测法和目前流行的"探索式测试方法"的基本思想一致, 这类方法在敏捷开发模式下的投入产出比很高, 被广泛地运用于测试.

这个方法的缺点是难以系统化, 并且过度依赖个人能力.

场景设计法

现在的软件几乎都是用事件来触发控制流程的, 事件触发时的情景便形成了场景, 而同一事件不同的触发顺序和处理结果就形成事件流. 该方法可以比较生动地描绘出事件触发时的场景, 有利于测试者设计测试用例, 使测试用例更容易理解和执行.

典型的应用是用业务流把各个孤立的功能点串起来, 为测试人员建立整体业务感觉, 从而避免陷入功能细节忽视业务流程的错误倾向.

案例(注册):

  

 想象注册的场景来设计测试用例, 这与根据需求的业务流来设计的差不多. 主要是想象各种业务流设计用例. 例如我们可以想象以下场景:

1.用户激活后再次点击邮件激活链接?

2.已注册用户再次注册?

 

 

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

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

相关文章

80后、90后记忆中的经典软件正在老去,新型平台在悄然崛起

当今软件领域,可谓是瞬息万变。 更新迭代频繁,部分软件稳坐电脑桌面,而有些,则沦为记忆深处的图标,在岁月长河中悄然“凋零”。 试问,那些曾属于80、90后独特记忆的经典软件,你还记得多少&…

RAG 新进展:伊克罗德信息、墨奇科技战略合作,共研低成本快速定制大模型

AIGC 持续火爆,AI 核心技术百花齐放。过去一年里,大语言模型 LLM(Large Language Model)与 AIGC 引爆整个技术界,不过让 AIGC 落地千行百业,实现商业化使用,则面临更多挑战。例如,训…

Centos7 elasticsearch-7.7.0 集群搭建,启用x-pack验证 Kibana7.4用户管理

前言 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 环境准备 软件 …

上周六的南京,近百位南京PG圈爱好者都来啦!

3月30日,IvorySQL 社区携手中国开源软件联盟 PostgreSQL 分会以及Techtalk 社区等合作伙伴,在南京成功举办 PostgreSQL 技术峰会及 IvorySQL南京用户组,现场吸引了近百位南京PG圈技术爱好者和资深开发小伙伴们的热情参与! 浪潮集团…

基于8086直流电机调速控制系统设计

**单片机设计介绍,基于8086直流电机调速控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086的直流电机调速控制系统设计概要主要涵盖了系统的核心功能、硬件组成、软件设计以及应用场景等方面。以下…

C,C++——指针详解

目录 1.指针的基本概念 代码示例: 2.指针所占内存空间 代码示例: 3.空指针和野指针 代码示例: 4.const修饰指针 代码示例: 5.指针和数组 代码示例: 6.指针和函数 代码示例: 7.指针&#x…

python pip使用

windowsR打开cmd 跳转到安装python解释器的路径下 我装的是官网3.9版本下到了D盘的vspython配置下 假如要装jieba pip install jieba Successfully installed jieba-0.42.1有这个代表成功安装 安装好程序就可以使用了,打开IDLE jieba库用来分词,红…

java+mysql图书管理系统制作教程v1.0.0完整版

本人QQ:2711138299,需要源码的可以加我,附带数据库备份文件,以及建立数据库表 下面是我写在有道云笔记里面的教程,由于复制粘贴后,代码都混乱在一起了,不建议大家观看,所以想看详细教程的也可以…

苹果手机黑屏打不开怎么办?5种方法让你轻松应对

苹果手机以其卓越的性能和流畅的操作体验赢得了全球用户的喜爱。然而,就像其他电子产品一样,苹果手机偶尔也会遇到一些问题。其中,苹果手机黑屏打不开是许多用户都曾遇到过的困扰。当您按下电源键,却发现手机屏幕一片漆黑&#xf…

2024如何做好跨境电商?7个步骤详细讲解

近几年来,随着互联网的发展,国内外的商业贸易越来越流畅,直播电商的火爆也带动着一大批相关的产业链发展,其中跨境电商就是尤为突出的一个。尽管在国内做跨境电商的企业数量非常之多,但仍有许多新人争相入局&#xff0…

QT-自定义参数设计框架软件

QT-自定义参数设计框架软件 前言一、演示效果二、使用步骤1.应用进行参数注册2.数据库操作单例对象3.参数操作单例对象 三、下载链接 前言 常用本地数据参数通常使用的是xml等文本的格式,进行本地的数据参数的存储。这种参数的保存方式有个致命的一点,就…

gin源码分析(1)--初始化中间件,路由组与路由树

目标 关于gin.Default(),gin.New(),gin.Use()group与子group之间的关系,多group与middleware之间关系中间件的类型,全局,group,get,不同类型的中间件什么时候执行。中间件 next 和abort行为如何…

用Qt浅写一个流程动画 + 随便聊聊

恍然间,已经有段时间没有正儿八紧的写点东西了。前段时间从前东家离职,最近才到新东家。这个年过得是工作若干年来最长的一次。说是武汉的就业行情不太好,但是我感觉也没太差,可能我的要求也不高吧。医疗、自动化、半导体的offer各…

JavaScript 数组元素交互最优解

利用 ES6 解构赋值: let arr [1, 2, 3, 4, 5];// 交互下标 1,4 元素的值 [arr[1], arr[4]] [arr[4], arr[1]];// 输出: [1, 5, 3, 4, 2] console.log(arr);浏览器控制台效果:

PCB项目设计-必知必会

版本控制 V0.0 2024-4-2 ini 一、PCB项目设计的基本概念 留空 二、原理图关键知识点 留空 三、PCB关键知识点 3.1首先看完这两篇 技术指导:下单前技术员必看 嘉立创PCB工艺加工能力范围说明 3.2焊盘和过孔的主要区别 焊盘主要用于器件引脚的焊接和固定&am…

OpenLayers6实战,OpenLayers实现鼠标拖拽绘制三角形,OpenLayers自定义绘制特殊图形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解使用OpenLayers如何绘制三角形。 OpenLayers本身是可以通过多边形绘制来绘制自行绘制三角形的,但是这种绘制方式是通过鼠标点击每个点来实现线条链接的,不支持固定的三角形这种特殊图形绘制的。 因此本章我们通过自定义…

keycloak - 鉴权quarkus

目录 一、前言 二、遇到的问题 1、keycloak中配置public访问方式如何配置keycloak 2、keycloak拦截登录后,重定向多次报错,因cookie超长 三、解决问题 1、环境说明 2、对应keycloak public访问方式的keycloak配置 3、解决cookie太长的问题 a、方…

Re-architecting I/O Caches for Emerging Fast Storage Devices——论文泛读

ASPLOS 2023 Paper 论文阅读笔记整理 问题 I/O缓存已在企业存储系统中广泛使用,例如使用固态硬盘(SSD)作为硬盘阵列(HDD)顶部的I/O缓存层。随着超快存储设备的出现,例如P5800X Optane SSD、Intel PM&…

AI绘图初探

摘要 通过SD进行AI图片生成训练学习。 1.键盘佛祖 2.跳舞的佛祖 3.编程佛祖 4.AI美女

Qt实现Kermit协议(四)

3 实现 3.3 KermitRecvFile 该模块实现了Kermit接收文件功能。 序列图如下: 3.3.1 KermitRecvFile定义 class QSerialPort; class KermitRecvFile : public QObject, public Kermit {Q_OBJECT public:explicit KermitRecvFile(QSerialPort *serial, QObject *…