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

软件测试 | 怎么写测试用例?设计测试用例的思路和方法......

目录:导读

    • 前言
    • 一、用例独立性
    • 二、用例易用性
    • 三、用例有效性
    • 四、用例进化性
    • 五、总结


前言

测试的目的是发现bug,说明程序有错,要证明程序有错就要有说服力的数据,而这些有说服力的数据就是bug。

如果我们在设计测试用例的时候仅从正向思维去出发,设计的测试用例自然而然就是正向的,这其实与开发进行设计实现走的是同样的路,即验证程序是按需求实现了,能够达到预期,但是实现的功能有没有问题,不得而知。

逆向思维的方法,其实就是不走寻常路,这也是开发人员常常忽视的地方。大家都在走同样的路,我却往反方向走,用与正向思维相反的思维方式设计用例,发现新bug。这是一种历练,也是历练中的摸索、创新。

通过这种不同寻常的历练,经常能够帮助我们总结出适合自己的方法,自己也能得以提高。

一、用例独立性

所谓独立性是指每组(个)测试用例可以单独维护、执行,不影响其他的测试用例组,如果测试用例之间是强耦合的,考虑对它们进行合并。

这样设计的好处是当迭代出现变更时,可以对测试用例组进行增删改的操作而不相互影响。

例如一些操作是针对登录用户的,那么登录相关的用例和这些操作用例就是强耦合的。

或者在一个场景中,存在上下文数据的传递关系,必须组合使用,但是单独任何一个步骤拿出去都是不可执行的,那么这种场景就需要设计成一个完整的测试用例,因为每个步骤都是不可分割的。

二、用例易用性

易用性顾名思义就是测试用例应该是尽量简洁,同时又要易于理解的。这样描述听起来有些简单,但是实际操作起来并不容易把握尺度。

举例来说,按传统方法设计的一个测试用例,具备以下几个要素:ID、标题、优先级、前置条件、复现步骤、错误描述、期望结果,这样一个测试用例从构思到完成大概需要十分钟,所以每小时大约能够完成六个用例设计,按每天八小时工作制计算每天可以设计四十八个测试用例。

这样的效率在如今的研发迭代是难以接受的高成本,因此许多公司引入了思维导图设计测试用例的方法,这种方法不再强调格式,而是强调自由发散,因此大部分测试用例类似于一句话,例如“新注册用户首次进入主页则展示引导蒙层,手指点击屏幕任何地方即可领取奖励,且弹窗展示成功图片”,这样就大大提高了用例的设计速度,大概完成一个需要两分钟,所以每小时能够完成三十个用例设计,每天就能完成二百四十个用例。较传统方法提高了四倍效率。

三、用例有效性

测试用例的有效性是有几个要点可以阐述的。

首先测试用例不是空想得来,必须来源于真实的产品需求,否则就是无效的测试用例;

其次测试用例应该是对产品内核的充分理解,不应该是对产品文档的复述,否则就是无效的测试用例。

很多初级的测试人员就是辛苦的搬运工,把产品经理的文档拆解成一条条,再搬运到测试用例管理系统,你不能说它是错误的,但是其实它就是无效的;然后每组测试用例对应一个独立产品模块,产品模块变更触发用例变更(新增、修改、删除),如果不能跟随变化,就是无效的测试用例,这一点尤为常见。

大多数国内公司的测试人员每天都疲于设计新的测试用例,但是数据库中堆积了数万数十万的废弃测试用例无人问津。

四、用例进化性

建议测试人员尽量早地交付一个测试用例版本,并随着客户需求的变化而层层递进,这个最早的版本一定是较为粗犷和简约的,但是它为将来的细化设定了“锚点”,后续的设计工作都将由这些锚点展开。

测试人员应该定期反思和回顾测试用例的设计,时间周期上可以跟随迭代,不断地对譬如颗粒度、数据流向、场景,进而调整设计策略。

同理,由于测试用例的设计是基于需求的,所以测试用例设计绝对不是一次性工作,因此需要“欣然面对需求变化”,跟随迭代不断优化。

设计测试用例的原则

每组测试用例 可以单独维护、执行,不影响其他的测试用例组;
如果测试用例之间是强耦合的,考虑对它们进行合并;
每组测试用例之间可以传递数据、状态;
测试用例应该是尽量简洁,易于理解的;
好的测试用例应该是对产品内核的充分理解,不应该是对产品文档的复述;
每组测试用例对应一个独立产品模块,产品模块变更触发用例变更(新增、修改、删除);
尽量早地交付一个测试用例版本,并随着客户需求的变化而层层递进;
测试用例的设计应该是基于需求的,所以不是一次性工作,因此需要“欣然面对需求变化”,跟随迭代不断优化;
应该定期反思和回顾测试用例的设计,譬如颗粒度、数据流向、场景,进而调整设计策略;
邀请开发、产品和其他团队的测试参加测试用例评审,避免个人盲区。

五、总结

每当夜深人静的时候望着那灿烂的夜空我会感到那里充满了太多的梦想、告诉自己生命就象一场比赛、不争取就一定会失败!

换个方法思考,可以使问题变简单;换个立场看人,可以更宽容处世;换种心态看人生,可以得到更多美好。有时仅需换换角度,就可以改变自己的一生。

注意你的思想,它会变成你的言语;注意你的言语,它会变成你的行动;注意你的行动,它会变成你的习惯;注意你的习惯,它会变成你的性格;注意你的性格,它会变成你的命运。

相关文章:

  • shell命令以及运行原理
  • 【MySQL】 B+ 树存储的原理
  • 网络安全——SQL注入之安全狗bypass深度剖析
  • java每日一练(2)
  • C# 类实现接口(Interface) 多态 多继承
  • 量子计算(八):观测量和计算基下的测量
  • 2022年第三季度泛出行行业洞察:泛出行行业正在经历数智化升级的关键时期,用户规模保持平稳增长,行业整体良性发展
  • 配置FTP站点操作步骤—图解
  • lazada买家订单导出
  • MySQL事务管理 MVCC,隔离性详解
  • Docker入门教程(详细)
  • 免费申请Jetbrains全家桶
  • C语言中字符串相关操作函数
  • linux篇【11】:linux下的线程<后序>
  • 让学前端不再害怕英语单词(二)
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android单元测试 - 几个重要问题
  • ES6语法详解(一)
  • java中的hashCode
  • Mac转Windows的拯救指南
  • magento2项目上线注意事项
  • OSS Web直传 (文件图片)
  • React组件设计模式(一)
  • 大型网站性能监测、分析与优化常见问题QA
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 关于for循环的简单归纳
  • 汉诺塔算法
  • 跨域
  • 巧用 TypeScript (一)
  • 项目实战-Api的解决方案
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ( 10 )MySQL中的外键
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)JAVA使用POI操作excel
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (力扣)循环队列的实现与详解(C语言)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)ORM
  • .gitignore文件_Git:.gitignore
  • .naturalWidth 和naturalHeight属性,
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net 受管制代码
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET的微型Web框架 Nancy
  • .NET企业级应用架构设计系列之技术选型
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Autowired自动装配
  • @Conditional注解详解
  • @Pointcut 使用
  • [20150707]外部表与rowid.txt
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Angular] 笔记 9:list/detail 页面以及@Output