什么才算是“好的”测试用例?
通常,你的第一反应很可能会是“发现了软件缺陷的测试用例就是好的用例”,我可能会反问你“如果说测试用例发现了缺陷就是好用例,那么在该缺陷被修复后,同样的用例难道就不是好用例了吗?”。

你可能还会说“发现软件缺陷可能性大的测试用例就是好用例”,这话看起来还是蛮有道理的,但是我同样会反问你“你打算用什么方法来量化测试用例发现缺陷的可能性?”。

类似地,你可能还会说“发现至今未被发现的软件缺陷的测试用例就是好用例”,那么我想问你的是:如何评估是否还存在未被发现的缺陷?如果软件中根本就没有错误了呢?

其实,是你定义“好的”测试用例的思路错了,这就有点像“傻子吃烧饼”,连吃五个不饱,吃完第六个终于饱了,于是他说:早知道吃了第六个就会饱,何必吃前面五个呢。细想,他吃的六个烧饼其实是一个整体,一起吃下去才会饱,而你无法找到吃一个就能饱的“好”烧饼。

对于测试用例其实也是同样的道理,“好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关。

一个“好的”测试用例包含以下三个特征

  1. 整体完备性: “好的”测试用例一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求。
  2. 等价类划分的准确性: 指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。
  3. 等价类集合的完备性: 需要保证所有可能的边界值和边界条件都已经正确识别。

三种常用的测试用例设计方法

设计测试用例的方法很多,例如等价类划分法、边界值分析法、错误推测方法、因果图方法、判定表驱动分析法、正交实验设计方法、功能图分析方法、场景设计方法、形式化方法、扩展有限状态机方法等等,但对大多数的软件测试而言,综合使用等价类划分、边界值分析和错误推测这三大类方法就足够了。

  1. 等价类划分法

等价类中任意一个输入数据对于揭露程序中潜在错误都具有同等效果。后续我们只要从每个等价类中任意选取一个值进行测试,就可以用少量具有代表性的测试输入取得较好的测试覆盖结果。

等价类划分方法的另一个关键点是要找出所有“无效等价类”。 使用等价类划分的方法设计测试用例不仅包含“有效等价类”也得包含“无效等价类”。

考试成绩0~100的整数,及格60分,其中有效等价类,0~59,60~100,无效等价类小于0,大于100,0~100之间浮点数,其他任意非整数字符。

  1. 边界值分析法

边界值分析是对等价类划分的补充,你从工程实践经验中可以发现,大量的错误发生在输入输出的边界值上,所以需要对边界值进行重点测试,通常选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据

对于考试成绩这个例子,边界值测试用例应该包含-1,0,1,59,60,61,99,100,101。

  1. 错误推测法

错误推测方法是指基于对被测试软件系统设计的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而有针对性地设计测试用例的方法。这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。

如何设计一个“好的”测试用例

在真实的工程实践中,不同的软件项目在研发生命周期的各个阶段都会有不同的测试类型。
对于每一种不同的测试类型,设计出“好的”测试用例的关注点和方法论可能会有很大的差异,有些可能采用黑盒方法,有些可能采用白盒方法,有些还会采用灰盒方法(比如,微服务架构中的测试),所以很难有一套放之四海而皆准的套路。

深入理解被测软件需求的最好方法是,测试工程师在需求分析和设计阶段就开始介入,因为这个阶段是理解和掌握软件的原始业务需求的最好时机。

在具体的用例设计时,首先需要搞清楚每一个业务需求所对应的多个软件功能需求点,然后分析出每个软件功能需求点对应的多个测试需求点,最后再针对每个测试需求点设计测试用例。

测试用例设计注意两点

  • 从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率。
  • 对于识别出的每个测试需求点,需要综合运用等价类划分、边界值分析和错误推测方法来全面地设计测试用例。

用例设计其他经验

  1. 只有深入理解被测试软件的架构,你才能设计出“有的放矢”的测试用例集,去发现系统边界以及系统集成上的潜在缺陷。

必须对内部架构有清楚的认识,比如数据库连接方式、数据库的读写分离、消息中间件 Kafka 的配置、缓存系统的层级分布、第三方系统的集成等等。

  1. 必须深入理解被测软件的设计与实现细节,深入理解软件内部的处理逻辑。

在具体实践中,可以通过代码覆盖率指标找出可能的测试遗漏点。切忌不要以开发代码的实现为依据设计测试用例

  1. 需要引入需求覆盖率和代码覆盖率来衡量测试执行的完备性,并以此为依据来找出遗漏的测试点。

https://time.geekbang.org/column/article/10150

什么才算是“好的”测试用例?相关推荐

  1. 到底什么级别才算是高并发?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:边鹏_尛爺鑫 https://segmentfault.co ...

  2. 怎样才算是一个合格的网页设计师?

    随着互联网的盛行,市场上各行各业的企业对于网站的更新换代都有着不等级别的需求,然而网页设计师这个专业便是一个赤手可热职位.在上海建站行业里面什么样的网页设计师才算是合格的,对于企业网站设计理念,设计思 ...

  3. 什么样的征信才算是好的?

    有过贷款的朋友都知道征信报告对贷款有很大的影响,有时候贷款的前期工作都准备好了,突然发现征信有问题,结果贷款就黄了. 可见征信报告对贷款的作用还是很大的,贷款机构之所以会看重征信记录,因为它是一个人过 ...

  4. java怎样才算高级_怎样才算是一名java高手?

    在招聘网站上看到好多信息,招聘java高手,就在想具备什么样的水平才算是他们眼中的java高手. 这个问题 ,在刚学java时候就问过自己,也在不断地自己回答自己,但是很快就发现答案不对,于是又在试图 ...

  5. C++学到什么程度才算是精通?

    C++学到什么程度才算是精通? C++语言学透是不可能学透的,这辈子不可能学透的,C又不会用,就只有学学C++,维持上班不忘记这样子. 其实这个问题应该这么说,学无止境,你准备学到什么程度? 1,初级 ...

  6. 怎样才算是好程序员?关于好程序员与好代码的杂谈

    ​ 怎样才算是好程序员?​ · 具有优秀的技术技能,能写出干净整洁的代码. · 具有扎实的开发技术知识和解决问题的专业技术. · 了解编程的最佳实践以及何时使用它们. · 对编程有着持久的热情,并积极 ...

  7. 怎么才算是高级点灯工程师?

    怎么才算是高级点灯工程师? 文章目录 怎么才算是高级点灯工程师? 一.前言 二.初级工程师 三.中级点灯工程师 四.高级点灯工程师 五.总结 一.前言 相信大家在学习嵌入式的时候,第一个工程就是点灯! ...

  8. 什么才算是关键指标?如何选择关键指标? by彭文华

    这是彭文华的第172篇原创 昨天发的指标体系搭建指南我感觉写的很清楚了.但是有朋友说还不够清楚啊,比如具体的核心指标怎么选?这几个指标怎么能代表业务核心诉求,能够完整的描述和衡量清楚业务进展的好坏呢? ...

  9. 多少量级才算是高并发

    我认为高并发系统的本质就是充分利用硬件资源,提升cpu.io设备的综合利用率. 操作系统利用中断等分时复用机制解决了cpu的利用率问题,利用dma技术解决了io设备的利用率问题.但是并没有解决两者相互 ...

最新文章

  1. 浅谈跨平台框架 Flutter 的优势与结构
  2. Python使用正则表达式分割字符串
  3. 不做CIO 就做首席架构师
  4. nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
  5. (39)时钟抖动约束
  6. 零基础学前端,自学还是培训机构?
  7. Kafka详解与总结(七)-Kafka producer拦截器(interceptor)
  8. JAVA 使用 itextpdf 构建 PDF
  9. c++实验题:设计两个酒店管理员客房管理的类:一个是Person类,要求储存房号、客户姓名和身份证号的信息;另一个类是Client类,要求新增客户的订房、退房和消费金额等信息,并给出相关测试算法。
  10. 用python编写缠论中枢_缠论的笔、线段、中枢以及MACD背离分析实现
  11. rhel6.5 oracle12c,中标麒麟Linux6.5安装Oracle12C配置过程
  12. 迪士尼电影经过多年的
  13. MFC 屏蔽ESC键和ENTER键关闭对话框的方法
  14. SpringBoot+Vue项目社团网站
  15. python xlrd pandas_python处理excel方式(openpyxl,xlrd,xlwt,openpyxl,panda)
  16. 少女异闻录:白鹭白百合的华丽日常 v1.02 存档
  17. LeetCode-Python-277. 搜寻名人
  18. linux解压tar.gz报错,Linux解压tar.gz文件时提示gzip:stdin:not错误
  19. Ubuntu紫色背景颜色代码
  20. 制作和合入quilt补丁

热门文章

  1. led亮度鉴别测试软件,测试LED颜色与亮度——FeasaLED测试仪
  2. 简单工厂、工厂、抽象工厂
  3. Python hasattr()笔记(可执行文件路径获取)
  4. 浮动广告代码在网页两侧
  5. 博客推荐|使用自定义指标在 Kubernetes 中自动扩展 Pulsar Functions
  6. 【LaTeX教程】九.Latex常见数学公式模板
  7. 布袋除尘器过滤风速多少_布袋除尘器过滤风速的选择!
  8. python训练自己中文语料库_Python nltk载入自己的中文语料库的两种方法 for Windows7...
  9. 【JavaEE】进入Web开发的世界-CSS
  10. Navicate无法连接,提示is not allowed to connect to this mysql server