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

article/2025/9/30 3:46:39

今天给各位同行们带来一本技术好书《软件测试的艺术》(原书第3版),让我们一起来赏析这本经典著作吧!

本书是国内很多软件测试书籍的首要参考书目,短小精悍的篇幅、深入浅出的内容很适合初学者作为入门首选。同时,对于一些已经入行的测试工程师而言,本书依然有其价值。书中很多内容读起来犹如拨云见日,书里覆盖的知识经过了时间的考验,25年来一直列在出版商提供的书目清单中。作为理论指南,时常翻阅一下,可以梳理自己的经验和认知,加深对测试学科和测试技术的理解。

今天和大家分享的是本书的第一章节:一次自评价测试。让我们一起来了解软件测试,这门软件开发中的“黑色艺术”吧!“自本书30年前首次出版以来,软件测试变得比以前容易得多,也困难得多。”

 software testing

作者分析了测试工作变困难的原因:“原因在于大量的编程语言、操作系统以及硬件平台的涌现。在今天几乎人人离不开计算机,数字电视、电话、游戏产品、汽车等都有一颗计算机的‘心’以及运行其中的软件,以至于在某些情况下它们自己本身也能够被看做是一台特别的计算机。”

所以今天的软件会影响更多的人,更多的行业,软件的影响力空前的强大,甚至会影响到数以百万级的人。在人们享受着软件带来的高效工作效率的同时,如果没有软件测试的工作,也将带来事业或经济损失,甚至是人身伤害,测试工作的意义正由此体现。

laptop internet reality

反之,作者何以认为软件测试比之前更简单了呢?“因为大量的软件和操作系统比以往更加复杂,内部提供了很多已充分测试过的例程供应用程序集成,无须程序员从头进行设计。例如,图形用户界面(GUI)可以从开发语言的类库中建立起来,同时,由于它们是经过充分调试和测试的预编程对象,将其作为自定义应用程序的组成部分进行测试的要求就减少了许多。”

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。

另一方面,“引入更优秀的开发工具、紧张的交付日期以及高度集成的便利开发环境会让测试变得仅仅是让那些最基本的测试用例走走过场罢了。影响不大的bug也许只不过会让最终用户觉得使用不方便而已”。全面综合的整体测试是有意义的,这让我想起自学的测试网课中,老师曾表达过一个观点:在测试工作中,当时间和质量冲突时,时间要服从质量。如果开发人员为了赶上交付时间要求通融时,测试人员应要求开发人员作出书面保证。保证软件交付后,如果出现重大失误和BUG而带来的一切后果及经济损失,包括对用户体验和公司声誉等的影响,由开发人员全权承担责任。没有开发会愿意做这个承诺的,这也是对软件质量的一种负责。

 testing

所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。软件应当是可预测且稳定的,不会给用户带来意外惊奇。”测试工作就是一场预演,把可能发生在用户面前的灾难场景提前在测试人员眼前预警演练,并由开发人员来解决问题,使得软件日臻完美。

书中列举了一个小测验,设计一组测试用例,适当地测试一个相当简单的程序。为此要为该程序建立一组测试数据,程序须对数据进行正确处理以证明自身的成功(对该程序的具体描述及评分标准可翻阅原书,此处碍于篇幅,不进行赘述)。

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

 杀虫剂效应

尽管对一个复杂的、实际运行的程序进行充分的测试并不容易,但这是软件开发中的一项必要的工作,不可或缺  !也是通过学习,可以实现的一项工作。本书将帮助设计人员、开发工程师以及项目经理更好地理解全面综合测试的意义所在,并提供行之有效的指南以帮助达成测试的目标。

【Summary】:本文阐释了关于《软件测试的艺术》第一章节内容的解析,解析了当今行业里软件测试工作的现状,在不同方面而言的难易程度以及原因的阐释。同时,剖析了软件测试的涵义和这项工作的意义。下一篇文章我们将赏析本书的第二章内容,从心理学和经济学角度来解析软件测试工作,敬请期待!


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

相关文章

软件测试执行的艺术

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

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

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

《软件测试的艺术》第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方法一…

hashcode详解

前言 HashCode是在Java中用于获取对象的唯一标识符的方法。它是根据对象的内容生成的一个整数值。对象的hashCode()方法被调用时,它返回的是对象的哈希码。哈希码可以用于在哈希表等数据结构中快速定位对象。 在Java中,hashCode()方法是被Object类定义…

真正搞懂hashCode和hash算法

本人当初刚接触java的时候一说到hash算法或者hashCode也是蛋蛋疼,两只都疼 后来花了整整一天时间来研究hash,搞懂后发现其实也不难理解,时隔一年突然想起来,写篇博客记录下; 以前我莫得选择,现在我想搞懂…

腾讯_TEG一面

总结 不愧是腾讯内部技术含量较高的部门,上来怼基础。总体有套路可循,比较偏技术

腾讯技术解读|TEG—硬核拆解,腾讯产品的底层技术牛在哪里?

技术,是各个事业群的核心力量 然而,事业群的不同,核心力量也不同 你是否还在纠结事业群的选择? 担心对事业群不了解而选错事业群? 毫无疑问 技术也是事业群选择的重要衡量因素之一哦! 对此&#xff0c…

15 年腾讯老兵谈技术人成长之路

作者:alexguo,腾讯TEG技术总监&技术专家 每个职场人都会经历从职场新人到骨干、专家亦或是管理者的蜕变过程。作为技术职业人,大家常会碰到一些困惑,在不同职业发展阶段所需要具备的认知和专业能力差异在哪里?除了…

腾讯TEG客户端开发面经

2022年秋招/春招/提前批/大厂面经整理(持续更新中~) 腾讯TEG客户端开发面经 2021/05/19下午两点半初试 1、面试官先让做自我介绍,主要介绍项目,简短一点不需要太详细。 ------我大概讲了一下我的三个项目,第一个是高…

腾讯TEG首次集体亮相腾讯全球数字生态大会,这些亮点不容错过!

5月21日—23日,腾讯全球数字生态大会将在昆明滇池国际会展中心召开。大会是将腾讯过往的三大峰会“腾讯全球合作伙伴大会”、“腾讯云未来峰会”和“互联网数字经济峰会”进行有机整合,届时,众多行业领袖、技术领军人物、国际知名数字经济研究…

粉丝投稿!大三参加校招三面腾讯TEG实习岗面经分享,希望对大家有帮助!(已拿意向书)

背景介绍 背景:本科大三,末流211,计科专业,寒假在某bat一家实习 腾讯流程好快,从面到结束一周拿意向书,3.18开始一面,3.25拿到意向书 一面 75min 自我介绍学校做的项目有没有什么优点&#x…

TEG《选择》乘风破浪 · 披荆斩棘

等灯等灯~ 今夜,TEG《选择》在新年晚会闪亮登场 听说有人夸我们大歌舞大排面(蟹蟹) 其实咱剧情还搭载着回忆与梦境、理想与现实 来,他二哥就好好跟大家唠嗑唠嗑这《选择》 选择音乐剧 几句话概括我们的故事主线&#x…

什么是IEGT?

1980年前后,通用公司的B•贾扬•巴利加发明了IGBT,解决了当时MOSFET和普通双极功率晶体管无法解决的问题。但随着产品的发展,大家发现了这种新型器件拥有静态损耗的问题。于是东芝半导体的工程师就在上个世纪九十年代率先实现了栅极注入增强&…

关于【腾讯 TEG云架构平台部( 云架平) 存储组】

这算是个简单的辟谣帖吧 本人21届新人,入职快半年了,之前也在这边实习过半年,几乎不怎么看脉脉,但最近看到一些黑帖,本不想回复,但是考虑到自己也是应届生过来的,刚拿到offer肯定忍不住想从各方…