《软件测试的艺术》第1章:一次自评价测试

article/2025/9/30 3:45:22

写在前面:

相比于芯片验证,软件测试有着悠久的历史沉淀和更为完整的生态,和芯片验证在某些方面上几乎有着相同的思路和方法。因此从软件测试的视角出发,重新思考芯片验证的方方面面。第一个系列为《软件测试的艺术》学习。

第一章 一次自评价测试

书中第一章主要通过一个三角形判断的例子来测试读者对软件测试的认识。程序描述如下:

这个程序从一个输入对话框中读取三个整数值,这三个整数值代表了三角形三条边的长度。程序显示提示信息,指出该三角形是何种三角形:不规则三角形、等腰三角形还是等边三角形。

如果为上面这个小程序,设计一组测试的输入数据来验证程序功能是否正确,大家可以列出多少种测试输入数据,即测试用例集呢?

书中并没有给出具体的测试用例集,而是给出了需要考虑的用例种类,大家可以自行体会一下:

  1. 是否有这样的测试用例,代表了一个有效的不规则三角形?(注意,如1、、3和2、5、10这样的测试用例并不能确保“是”的答案,因为具备这样边长的三角形不存在。)

  2. 是否有这样的测试用例,代表一个有效的等边三角形?

  3. 是否有这样的测试用例,代表一个有效的等腰三角形?(注意,如2、2、4的测试用例无效,因为这不是一个有效的三角形。)

  4. 是否至少有三个这样的测试用例,代表有效的等腰三角形,从而可以测试到两等边的所有三种可能情况(如3、3、4;3、4、3;4、3、3)?

  5. 是否有这样的测试用例,某边的长度等于0?

  6. 是否有这样的测试用例,某边的长度为负数?

  7. 是否有这样的测试用例,三个整数皆大于0,其中两个整数之和等于第三个?(也就是说,如果程序判断1、23表示一个不规则三角形,它可能就包含一个缺陷。)

  8. 是否至少有三个第7类的测试用例,列举了一边等于另外两边之和的全部可能情况(如1、2、3;1、3、2;3、1、2)?

  9. 是否有这样的测试用例,三个整数皆大于0,其中两个整数之和小于第三个整数(如1、2、4;1215、30)?

  10. 是否至少有三个第9类的测试用例,列举了一边大于另外两边之和的全部可能情况(如1、2、4;1、4、2;4、1、2)?

  11. 是否有这样的测试用例,三边长度皆为0(0,0,0)?

  12. 是否至少有一个这样的测试用例,输入的边长为非整数值(如253555)?

  13. 是否至少有一个这样的测试用例,输入的边长个数不对(如仅输入了两个而不是三个整数)?

  14. 对于每一个测试用例,除了定义输入值之外,是否定义了程序针对该输入值的预期输出值?

书中最后的总结:

这个测验说明,即使测试这样一个小的程序,也不是件容易的事。因此,想象一下测试一个十万行代码的空中交通管制系统、一个编译器,甚至一个普通的工资管理程序的难度。随着面向对象编程语言(如Java、C++)的出现,测试也变得更加困难。举例来说,为测试这些语言开发出来的应用程序,测试用例必须要找出与对象实例或内存管理有关的错误。

从上面这个例子来看,完全地测试一个复杂的、实际运行的程序似乎是不太可能的。情况并非如此!尽管充分测试的难度令人望而生畏,但这是软件开发中一项非常必需的任务,也是可以实现的一部分工作,通过本书我们可以认识到这一点。

验证芯发现:

芯片验证的道理和上述是一致的,即使是一个小规模的模块,看似功能很简单,比如一个加法器、乘法器、FIR滤波器,或者I2C协议,如果真的要完全的验证充分,所需的投入成本都是“巨大”的。



验证芯发现:软件测试的艺术icon-default.png?t=M85Bhttps://mp.weixin.qq.com/s?__biz=Mzg3ODczNDg0NA==&mid=2247483671&idx=1&sn=c8281aab12a52cfbda481484a71845cf&chksm=cf0e7d84f879f492f79c437b4a0835ccafc57dc11066b9f5f4fcb4a2554b4b06d98addbb6313&token=1266482168&lang=zh_CN#rd


http://chatgpt.dhexx.cn/article/JwtFesAu.shtml

相关文章

9年测试老鸟:Glenford J编写《软件测试的艺术》PDF,高清中文版

内容简介 本书以一次自评价测试开篇,从软件测试的心理学和经济学人手,探讨了代码检查、走查与评审、测试用例的设计、模块(单元)测试、系统测试、调试等主题,以及极限测试、因特网应用系统测试等高级主题,全面展现了作者的软件测…

系统测试——软件测试的艺术

系统测试有着特定的目的:将系统或程序与其初始目标进行比较,给定目标后有两含义: 系统测试不局限于系统,若产品是一个程序:系统测试就是试图说明程序作为一个整体是如何不满足其目标的过程根据定义,若产品…

《软件测试的艺术》重点记录

----定义---- 测试是为发现错误而执行程序的过程。 测试提高了程序的可靠性或质量。 ----测试方法---- 黑盒测试:又称之为数据驱动的测试或输入/输出驱动的测试。 白盒测试:对程序的逻辑结构进行检查,从中获取测试数据。 ----测试的原则…

软件测试的艺术(测试工程师必备基本知识与概念)

目录: 一、黑盒测试与白盒测试: 等价类划分: 一、确定等价类 确定等价类是选取每一个输入条件(通常是规格说明中的一个句子或短语)并 将其划分为两个或更多的组。可以使用图 4-3 中的表格来进行划分。注意&#xff0…

《软件测试的艺术》第五章 模块(单元)测试

目录 5.0 前言 5.1 测试用例设计 5.2 增量测试 5.3 自顶向下测试和自底向上测试 5.4 执行测试 5.5 小结 5.0 前言 大型的软件程序需要特别的测试对策。在本章中我们会探讨构建大型程序测试的第一个步骤:模块测试(单元测试)&#xff0c…

软件测试的艺术_读书笔记(一)

软件测试的艺术是测试人员必看书,两年前看这本书给我很多理论和指导,现在重新看,按照个人的理解,整理一些学习笔记。 第一章 软件测试的心理学和经济学 最重要的一句话 : 测试人员的态度比实际测试过程本身更重要 1.…

【读书笔记】-《软件测试的艺术》

2018年10月13日23:24:26 自诩: 因为上一东家工作的原因而接触测试。原本本职是嵌入式软件,因为公司正在风口浪尖的阶段,就是一种小公司要发展成为大公司而经历的那种痛,全公司上下都忙得焦头烂额的这样的背景下,我从软…

《软件测试的艺术》第2章:软件测试的心理学和经济学

软件测试的心理学 书中此部分首先辨析了两个概念:软件测试的定义、成功的测试和不成功的测试。 软件测试的定义: 测试是为发现错误而执行程序的过程,我们应当假设程序是存在bug的;由于证明程序不存在错误的过程是一项看起来不…

《软件测试的艺术》读书笔记

1 一次自评价测试 所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该执行的功能。 2 软件测试的心理学和经济学 2.1 软件测试的心理学 软件测试是为发现错误而执行程序的过程。 2.2 软…

精读-软件测试的艺术之模块测试及更高级别的测试

本文是关于精读书籍《软件测试的艺术》的一些学习笔记和分享 本书共有九章包括测试思想(心理,经济),代码检查,测试用例设计,模块测试,更高级别的测试,调试,极限测试和因…

软件测试,浅析这项黑色艺术的难与易

今天给各位同行们带来一本技术好书《软件测试的艺术》(原书第3版),让我们一起来赏析这本经典著作吧! 本书是国内很多软件测试书籍的首要参考书目,短小精悍的篇幅、深入浅出的内容很适合初学者作为入门首选。同时&…

软件测试执行的艺术

测试执行 测试执行过程 主要任务 确定测试用例的优先级开发测试规程并确定优先级,创建测试数据,同时也可以准备测试用例和设计自动化测试脚本根据测试规程创建测试套件,以提高测试执行的效率确认已经正确搭建的测试环境根据计划的执行顺序&…

《软件测试的艺术》万字笔记

软件测试的心理学和经济学 软件测试人员在测试过程中要有正确的态度(愿景) 心理学 软件测试的定义需要明确:软件测试的根本应该聚焦到为程序增加价值,让程序变得更加可靠,是找出问题并让问题得到解决的过程 测试是…

《软件测试的艺术》第3章:代码检查、走查与评审

《软件测试的艺术》: 软件开发人员通常不会考虑到的一种测试形式:人工测试。大多数人认为,因为程序是为了供机器执行而编写的,那么也应由机器来对程序进行测试。这种想法是有问题的。人工测试方法在暴露错误方面是很有成效的。实际…

Hash与HashCode

1.hash和hash表 首先看一张来自百度百科的解释 hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多种算法得到hash值…

深入理解 Java 中的 hashCode

深入理解 Java 中的 hashCode 一、hashCode 方法二、为什么重写 equals 方法的时候必须重写 hashCode 方法? 一、hashCode 方法 Java 是一门面向对象的编程语言,所有的类都会默认继承自 Object 类,Object 类中就包含了 hashCode() 方法&…

hashCode 和对象的内存地址

hashCode 文章目录 hashCodehashCode 的生成逻辑第 0 种算法第 1 种算法第 2 种算法第 3 种算法第 4 种算法第 5 种算法 根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值…

HashCode

HashCode 文章目录 HashCode前言Hash是什么?HashCodeHashCode关键点判断两个对象相等 前言 Hash是什么? 哈希函数 把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,是一种压缩映射。 hash是一个函数&#…

java中equals,hashcode和==的区别

2019独角兽企业重金招聘Python工程师标准>>> 1、== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 2.引用类型(类、接口、数组) 当…

hashcode讲解【最详细版本】

Object 基类 Object 含有的方法 hashCode 作用:用于查找的快捷性,常用于确定对象的存储地址 如 Hashtable,HashMap 默认情况下,Object中的hashCode() 返回对象的32位jvm内存地址。 如果两个对象相同, equals方法一…