《软件测试的艺术》读书笔记
《软件工程与测试技术》读书笔记模板

目录分析
项目1软件工程概述
项目2软件项目可行 性研究
项目3软件项目需求 分析
项目4软件项目设计 与实现
项目5软件测试 与维护
项目6软件项目 管理
任务1.1软件危机与软件工程 任务1.2软件生命周期与开发模型 任务1.3统一建模语言 项目实训1—Microsoft Visio 2016的使用 软件工程师常见面试题 习题1
任务9.1单元测试框架 任务9.2 JUnit单元测试 项目实训9—在线购物系统单元测试 软件测试工程师常见面试题 习题9
任务10.1性能测试概述 任务10.2性能测试工具LoadRunner 项目实训10—在线购物系统性能测试 性能测试工程师常见面试题 习题10
任务11.1软件测试计划 任务11.2软件缺陷管理 项目实训11—在线购物系统缺陷管理 软件测试工程师常见面试题 习题11
软件工程与测试技术
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
本书关键字分析思维导图
软件
软件开发
习题
任务
测试
任务
工程师
软件
工程
测试 项目
需求
技术
软件
管理
购物
分析
系统
白盒
内容摘要
本书分两个篇章介绍了软件工程基础知识和软件测试技术,共11个项目、29个任务。以"图书管理系统”为 任务实施主线,用软件工程的思想进行开发与测试,将"图书管理系统”项目分成各阶段任务点。本书内容丰富、 层次清晰、阐述简明扼要,使读者能够较好地掌握软件开发与测试的全过程,既可作为高职高专院校软件工程的 教材,也可以作为职教本科、参加自学考试人员、软件开发设计人员、软件测试人员及其他相关人员的参考材料 或培训教材。
软件测试美读书笔记

客户反馈,然后进入下一阶段。(一个螺旋包括6个步骤:1.确定目标,可选方案和限
制条件;2.指出并解决风险;3.评估方案;4.本阶段开发和测试;5.计划下一阶段;
6.确定进入下一阶段的方法。 )测试一直在进行,知道最后宣布成功!
2.软件出现了产品说明书指明不会出现的错误。
3.软件功能超出产品说明书指明范围。
4.软件未达到产品说明书虽未指出但应达到的目标。
5.软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
二.软件缺陷的产生原因:
导致软件缺陷最大的原因是产品说明书;第二大来源是设计方案;三是代码;
四是某些软件缺陷产生的条件被错误地认定。
三.软件缺陷的修复费用:
随时间增长,修复软件缺陷的费用是呈几何数级增长的,随时间推移,数十倍增长。
四.软件测试人员的目的:
软件测试远的目标就是发现软件缺陷,尽可能早一些,并确保其得以修复。
五.怎么成为优秀测试员:
1.探索精神
2.故障排除能手
二.软件测试的术语和定义
这里引用下网上的术语总结,对原作者表示歉意和谢意和敬意!(不知道是谁)
1.精确和准确:A.精确参照物是目标。与目标越接近,就越准确;B:准确参照物是
每次实施的结果。几次结果相互之间越接近,表示越精确。但与目标可能相去甚远.
2.验证和合法性检查:A.验证保证软件符合产品说明书的过程 B.合法性检查保证软
第一部分 软件测试综述
软件测试-机械工业出版社 (美)Ron Patton著 周予滨 姚静等译
雪舞奉天读书笔记
软件测试的艺术

(6)误区之六:软件测试是没有前途的工作,只有程序员才是软件高手
由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项 目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个 别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就 是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和 待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位 和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量 的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和 待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员 的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员 还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有 前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样 是软件专家。这两年来国内软件测试人员的需求不断增大,越来越多的IT企 业认识到了软件测试的重要性,这种可喜的现状与发展趋势让笔者对我国软 件业的发展重新抱有较大的希望。
Summary
尽管这是一门崭新的学科,目前在国内的发展仍处于"婴儿"阶
段,但看到越来越多的软件公司为软件测试招兵买马,看到越来越
多的技术人员投入到软件测试中,我就情不自禁地感叹:机会来了! 这机会不仅仅是某一个人的,而是所有人的,它对每个人都是公平
的,学的领域需要新的理论新的工具新的方法,由于国内的软件测
件项目实施过程中的重要性日益突出。但是,现实情况是,与软件 编程比较,软件测试的地位和作用,还没有真正受到重视,对于很
多人(甚至是软件项目组的技术人员)还存在对软件测试的认识误
区,这进一步影响了软件测试活动开展和真正提高软件测试质量。
软件测试_读书笔记1

软件测试必备1、软件测试基本概念和方法三个重要的测试原则:1. 软件测试是为发现错误而执行程序的过程;2. 一个好的测试用例具有较高的发现某个尚未发现的错误的可能性;3. 一个成功的测试用例能够发现某个尚未发现的错误。
1.测试的过程具有一定的破坏性2.测试用例包括:输入数据的详细描述和正确输出结果的精确描述3.检查程序是否‘没有做它应该做的’仅仅是测试一半,另一半是检查‘是否做了它不应该做的’4.全面测试目标:验证是否做了应该做的事情,确保可靠性验证程序是否做了不应该做的事情,确保安全性5.任何多余的功能都应视为安全隐患6.Boehm给出的度量中的头10个表示软件现象遵守Pareto分布:20%的模块消耗80%的资源(人力、经费等);20%的模块包含80%的错误;20%的错误消耗80%的修改成本;20%的改进包含了80%的适应性为主的成本;20%的模块占用了80%的执行时间;20%的软件工具使用占80%的整个工具使用时间。
补充:20%的软件缺陷造成80%的软件故障20%的软件开发和管理人员(骨干),决定了80%软件开发质量:Pareto原理强调了精力集中在少数重要的事情上(vital few),而不是多数琐碎的事情上(trivial many)。
6.软件测试是一种作为主体的人通过各种手段对客体软件的某种固有属性进行的一种以8.审查的终极目标——确认缺陷9.人工审查包括:文档审查代码审查10. 软件缺陷的类型:可追溯性、逻辑、赋值顺序、控制、数据、接口、文档、注释、例外情况处理、内存等。
11. 只要简单地使用静态代码分析来增强输入验证的正确性就能够避免OWASP(业界领袖的安全性协会)所列出的约70%的安全性问题。
12. 圈度复杂度(独立路径的最大数量=程序控制流图中的区域数)=控制流图边数—控制流图的节点数+2二、测试框架的表述13. 测试框架(Test Framework):一组相互协作的组件的集合,能够实现一个或多个测试域中的一系列问题的解决方案。
软件测试的艺术(第3版)第04章 测试用例的设计

4.2.2 边界值分析
等价划分虽然优于随机选取用例,但不足之处在于忽略了 某些特定类型的高效测试用例
经验证明,考虑了边界条件的测试用例与其他测试用例相 比,具有更高的测试回报率
边界条件:输入和输出等价类中那些恰好处于边界、或超过边界、 或在边界以下的状态P48-49
边界值分析与等价划分的不同
4.1 白盒测试
练习
if (g>3) { x = x / 3; } if (g==0 || x>1) { x = x + 1; }
4.1 白盒测试 ——综合训练
NextDate函数的设计、实现和测试
函数有3个参数:月份、日期和年;它们都具有整数值,且满足以 下条件:
1<=月份<=12 1<=日期<=31 1812<=年<=2012
第4章 测试用例的设计
4.1 白盒测试 4.2 黑盒测试 4.3 错误猜测 4.4 测试策略
第4章 测试用例的设计
软件测试中最重要的因素是设计和生成有效的测 试用例
任何程序的测试必定是不完全的,所以很难做到完全发 现软件中的错误,那么如何发现尽可能多的错误?
软件测试最关键的问题
在给定的时间和成本约束下,在所有可能的测试用例中, 哪个子集最有可能发现最多的错误?
4.1 白盒测试
A
a>1 && b == 0
例子
//被测试的程序段如下
if (a>1 && b==0) { x = x / a; } if (a==2 || x>1) { x = x + 1; }
C
yes x=x/a
B
no
《软件测试》读书笔记(持续更新)

《软件测试》读书笔记(持续更新)⽂章⽬录#第⼀部分 软件测试综述##第⼀章 软件测试的背景###1.1臭名昭著的软件错误⽤例研究###1.2软件缺陷是什么####1.2.1软件失败的术语确实严重,甚⾄是危险的情况:故障(fault)、失败(failure)、缺点(defect)不那么尖锐,主要指未按预料运⾏,⽽不指全部失败:异常(anomaly)、事件,插曲(incident)、偏差(variance)最常⽤的术语:问题(problem)、错误(error)、缺陷(bug)其他术语:⽭盾(inconsistency)、特殊(feature)软件测试中出现的其他术语:产品说明书(product specification):简称为说明(spec)或产品说明(product spec)。
它对开发的产品进⾏定义,给出产品的细节、如何做、做什么、不能做什么。
这种协定从简单的⼝头说明到正式的书⾯⽂档有多种形式。
之后《软件开发的过程》会讲述产品说明书和开发过程中的更多内容。
在每个公司,不同的开发⼩组⾥会有不同的术语,但在⽤词上过多的计较是没有意义的。
在这本书中,所有的软件问题都被称为缺陷####1.2.2软件缺陷的官⽅定义 ☟⾄少满⾜下列5个规则之⼀才称发⽣了⼀个软件缺陷(software bug)1)软件未实现产品说明书要求的内容(产品说明书:计算器能够准确⽆误的进⾏加减乘除;按下(+)键,没有反应,或者得到错误答1)软件未实现产品说明书要求的内容(产品说明书:计算器能够准确⽆误的进⾏加减乘除;按下(+)键,没有反应,或者得到错误答案)2)软件出现了产品说明书指明不应该出现的错误(产品说明书:计算器永远不会崩溃、锁死或者停⽌反应;狂敲键盘,计算器停⽌接受输⼊)3)软件实现了产品说明书未提到的内容(计算器求加减乘除还可以求平⽅根,这也是缺陷,虽然有了更好,但会增加测试的⼯作,甚⾄带来更多的缺陷)4)软件未实现产品说明书虽未明确提及但应该实现的⽬标(⽬的为了捕获那些产品说明书上的遗漏之处。
《软件测试的艺术》精华摘要(六)

当程序无法实现其最终用户要求的合理功能时,就发生了一个软件错误。
软件开发过程在很大程度上是沟通有关最终程序的信息,并将信息从一种形式转换到另一种形式。
由于这个原因,绝大部分软件错误都可以归因为信息沟通和转换时发生的故障、差错和干扰。
1、将软件最终用户的要求转换为一系列书面的需求。
这些需求就是该软件产品要实现的目标。
2、通过评估可行性与成本、消除相抵触的用户需求、建立优先级和平衡关系,将用户需求转换为具体的目标。
3、将上述目标转换为一个准确的产品规格说明,将产品视为一个黑盒,仅考虑其接口以及与最终用户的交互。
该规格说明被称为“外部规格说明”。
4、如果该产品是一个系统,而不仅是一个程序,那么下一步骤就是系统设计。
该步骤将系统分隔为单独的程序、部件或子系统,并定义它们的接口。
5、通过定义每个模块的功能、模块的层次结构以及模块间的接口,来设计程序或程序集合的结构。
6、设计一份准确的规格说明,定义每个模块的接口与功能。
7、经过一个或更多的子步骤,将模块接口规格说明转换为每个模块的源代码算法。
需求规格说明定义了为什么要开发程序。
目标定义了程序要做什么,以及应做得怎样。
外部规格说明定义了程序对用户的准确表现。
与后续阶段相关的文档越来越详细地规定了程序是如何建立起来的。
模块测试的目的是发现程序模块与其接口规格说明之间的不一致功能测试的目的是为了证明程序未能符合其外部规格说明系统测试的目的是为了证明软件产品与其初始目标不一致6.1、功能测试功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。
外部规格说明是一份从最终用户的角度对程序行为的精确描述。
6.2、系统测试将系统或程序与其初始目标进行比较。
给定这个目标之后,隐含两方面的含义:1、系统测试并不局限于系统。
如果产品是一个程序,那么系统测试就是一个试图说明程序作为一个整体是如何不满足其目标的过程。
2、根据定义,如果产品没有一组书面的、可度量的目标,系统测试也就无法进行。
软件测试的艺术

错误猜测
错误推测法就是根据经验和直觉推测程序中 所有可能存在的各种错误,从而有针对性地 设计测试用例的方法。 基本思路:列举出程序中所有可能有的错误 和容易发生错误的特殊情况,根据他们选择 测试用例。例如:输入数据和输出数据为0 的情况。
Confidential
34
测试策略
Part Three
开发过程与测试过程的关系 测试阶段介绍
Confidential
36
开发过程与测试过程的关系
Confidential
37
测试阶段
单元测试、集成测试、系统测试、验收测试。 是“从小到大”、“由内至外”、“循序渐进” 的测试过程,体现了“分而治之”的思想。 单元测试的粒度最小,一般由开发小组采用白 盒方式来测试,主要测试单元是否符合“设 计”。 集成测试界于单元测试和系统测试之间,起到 “桥梁作用”,一般由开发小组采用白盒加黑 盒的方式来测试,既要验证“设计”又要验证 “需求”。
白盒测试中(有时候称为开盒测试),软件测 试员可以访问程序员的代码,并通过检查代码 来协助测试-可以看到盒子里面。一般在模块 测试中采用白盒测试,用于测试模块中所有可 能的路径、执行所有循环并测试所有逻辑表达 式。 黑盒测试则侧重于软件的整体功能。 它不基于 程序的内部结构而基于系统功能。犹如一个人 站在黑盒子外面,只知道系统输入一定数据, 得到一定的输出,而不必清楚这个黑盒子中进 Confidential 12 行了哪些操作和运算。
如果规格说明中包含输入条件组合的情况, 应首先使用因果图分析方法。 在任何情况下都应使用边界值分析方法。 应为输入和输出确定有效和无效等价类。 使用错误猜测技术增加更多的测试用例。 针对上述测试用例集检查程序的逻辑结构, 应使用判定覆盖、条件覆盖、判定/条件覆 盖或多重条件覆盖准则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
The Art of SoftWare Testing》读书笔记(1)_引子有关自己与软件测试之间的渊源而言,获悉这个领域的时间不长,接触的时间就更可谓短暂,但仔细想来,还要从大学期间说起比较好。
软件测试这个概念第一次出现在我的眼前时,是大四上学期开的软件工程这个科目中所涉及到的一点点。
由于某些因素,使我在大学期间忽略了对测试领域相关知识的储备。
第二次面对它时,是考研复习准备阶段。
那时,我对测试这个领域也仅仅只是知道,就是中文书面表达的“测试”这两个汉字的含义而已。
工作的前两年里,或许是因为从事的是有关算法方面性质的工作,所以并未对测试这个领域给予过多的关注,还好,或多或少还是接触到了一些。
直到最近一年多来,由于一个大型项目人手不够的缘故,所以临时从自己负责的另一个研究项目中抽过来(刚好该项目阶段性完成),负责有关此项目的测试部署与规划。
而这个时候,才能说是:真正意义上接触到了软件测试这个领域。
虽然,在此项目中也有自己开发的一些模块、算法及一些模块、算法的优化跟重构。
但,从这个项目阶段性结束后自己的体会而言,给我感悟最深的还是有关软件测试这个领域的。
通过在这个项目里的工作,让我真正体会到了:软件测试是一门艺术。
恰恰也是因为这个缘故,这也才让我开始有了想重新认识和品位测试艺术这一领域的奥妙所在。
《The Art of SoftWare Testing》读书笔记(2)_前言喜欢在网上书店中遛达,看到不错的书就买下。
为什么不去书店?一个字,懒呗!总觉得,有那去书店的时间,完全可以好好睡一美觉,亦或可亲手烹制一顿美味可口的美食。
哎,反正就是,懒得走出家门去逛街!恰巧,此次浏览书籍时,无意间看到了《The Art of Software Testing》这本书。
在看了大家所给予它极高的评价留言后,虽然有些疑惑(毕竟这个时代,枪手太多了!),但我深信:一本书能够“活”25年,应该还是很不简单的。
于是,就半信半疑的订购了这本书,期望能够从这本书中获悉到有用的知识,来丰富一下自己面对这个领域时的贫乏困境,亦作为知识储备。
晕,这么薄!这是我拿到这本书后的第一反应。
真的!没有预料到这书会这么薄!原以为这本经典的书,会诸如《C++ Primer》、《The C++ Programming Language》、《Programming Windows》等这些著作那么厚。
而当翻看了几章后,觉得确实很经典,也明白了为什么这本书会“活”了25年。
于是,就诞生了我对这本书的第二感觉:薄而精!看来是需要自己多花些时间去慢慢的品味,这样才方可体味到最纯最美的底酝。
打住自己对这本书的侃侃而谈(怕跑题太远,拽不回来),还是关注一下软件测试这个领话题吧!软件测试,怎么说呢?就自身经历而言,确实如书上所说:测试依然是软件开发中的“黑色艺术”。
大学期间,计算机课程开的不少,没听说有专门开一门关于测试的课程。
所以,在学生阶段,测试就属于是个被抛弃掉的名词!毕业时,不是做软件就是去搞网络,没有听到一个同学去应聘测试的!工作中,有专门的测试组(或部门),就更不用自己怎么上心去研究了!如今的氛围就是:红的够红,黑的够黑!那叫一个“专”!哎,为什么不实行“两手都要抓,两手都要硬”的政策呢(一己之见,偏颇在所难免)?或许,我还不明白:“术业有专攻”的深刻含义吧!算了,最后还是谈谈对这本书的总观吧!1.该书是针对测试这一主题进行的实践探讨,而不是理论研究,顺便捎带了些对新的语言和过程的探讨;2.前言中提到了一个最为重要而又是长期、基本的指南:如何确保所开发的所有软件做了其应该做的,并且同样重要的是,未做其不应该做的?3.引言里指出一条著名的经验:即在一个典型的编程项目中,软件测试或系统测试大约占用50%的项目时间和超过50%的总成本。
《The Art of SoftWare Testing》读书笔记(3)_一次自我检测有创意!这是我对该书第一章的评价,也是唯一一次在看新书开篇时,能够把第一章给透透彻彻看完的。
为何?还不是实在不能恭维有些书籍在开篇就进行枯燥而繁多的总结性、介绍性的文字。
虽心里也清楚这些文字存在的重要性。
但每每,还总是先粗略瞄过,在通读全书后,才会再次认认真真的看那些文字(这时,才真的能感悟到“提纲携领”的中文含义啊)。
创意在于:它只通过展示一次自评价测试,就能吸引我的眼球,并涌出一种想继续向下读的冲动;更能引起对自身一些有关逻辑思维(考虑欠周全、缜密,存在盲点)、联想能力(需拓展思维,要富于联想与想像,即:思维“活”起来)、角度问题(要巧妙转换角度)等方面,所可能存在的不足进行深思。
当然,能够引起深思的缘故,还不是在于那个评价测试嘛!提起来,汗颜!依据所谓的测试用例(即:特定的数据集合)自测试后,发现自己只能考虑到11项(总14项)需要测试的关键点。
文尾,谈谈作者对“软件测试”这个概念的定义吧。
所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。
软件应当是可预测且稳定的,是不会给用户带来意外惊奇的。
《The Art of SoftWare Testing》读书笔记(4)_初次探究“软件测试是一项技术性工作,但同时也涉及经济学和人类心理学的一些重要因素”,这是该书第二章中最吸引我的话,耐人深思。
而对于该章的内容,我个人觉得可概括为以下三个方面:o心理学角度:驳斥了一些社会普遍存在的错误认识,并给出了测试的正确定义及在含义上进行了延伸。
(用写文章上常用的术语来说,是:先破后立。
)o经济学角度:验证软件测试不能够发现“所有”的错误。
(术语是:各个击破。
)o归纳了软件测试中的一些基本原则(术语是:归纳与演绎。
),及三个重要的测试原则:1.软件测试是为发现错误而执行程序的过程;2.一个好的测试用例具有较高的发现某个尚未发现的错误的可能性;3.一个成功的测试用例能够发现某个尚未发现的错误。
文尾,值得一提的是:在本章能明显感到作者侧重于从心理学角度来分析一些潜在的问题。
The Art of SoftWare Testing》读书笔记(5)_心理学视角解析(上)先谈谈从心理学角度所需要分析的问题。
在章节的开始,作者就明确的给予了一个认知:要成功地测试一个软件应用程序,测试人员也需要有正确的态度。
在某些情况下,测试人员的态度可能比实际的测试过程本身还要重要。
并且,分析了现在社会上普遍存在的两种“本末倒置”的错误认识。
•针对程序员:一开始就把“测试”这个术语的定义搞错了。
所以可想而知,作者肯定要先破其错误的根源和弊端,然后再立其正确的认知,为了能更深入的理解和在实践上的把握,作者又对正确的认知给予了进一步延伸的阐述;•针对项目经理:针对测试方面而言,对“成功的”和“不成功的”的理解认识上的错误。
文尾,值得一提的是:作者在这引荐一个病人去医生那里看病的例子,于是将一些绕人的关系和原理,刹那间弄的清晰易懂了。
看来恰当适宜的举例还是比枯燥的讲解概念间的区别与联系要容易的多,也生动的多,并且使人也能理解的更加深刻。
《The Art of SoftWare Testing》读书笔记(6)_心理学视角解析(中)上次谈到了两个错误认识,那就继续这个话题吧。
先分析与项目经理有关的这个错误认识吧。
因为这个因素可能会导致一些在测试问题上的根本性错误的认识。
作者主要是从“成功的”和“不成功的”这两个方面来剖析的:•指明了错误认识的本源:“成功的测试”是指没有发现错误的测试用例;而“不成功的测试”是指发现了某个新错误的测试。
•明确正确认识的本质:如果在测试某段程序时发现了错误,而且这些错误是可以修复的,就将这次合理的设计和由此得到有效执行的测试称为是“成功的”;并对如果在本次测试中可以最终确定再无其他可查出的错误,同样也被称作是“成功的”;而对未能适当地对程序进行检查,且在大多数情况下,未能找出错误的测试被称为是“不成功的”。
•引荐病人去找医生看病的这一生动的例子,加以引申理解并给予了结论:能发现新错误的测试用例不太可能被认为是“不成功的”,相反,能发现错误就证明它是值得设计的。
一个“不成功的”测试用例,会使程序输出正确的结果,但不能发现任何错误。
细想:如果规划的测试用例是能使程序输出正确的结果,但不能发现任何错误的话,那是多么的可怕阿。
那么测试就等于没有测试,或者是在徒劳。
而潜在的错误还依然潜在,这会开发人员跟用户来说,都是有不小的隐患的。
这才真正认识到:发现测试真的是一门需要去潜心研究的艺术。
不仅仅是为了我们开发人员自己,也为了用户,更为了将来软件能够更好的维护跟升级。
《The Art of SoftWare Testing》读书笔记(7)_心理学视角解析(下)接着,来谈谈程序员方面会产生的错误认识吧!这个方面可能在具体实践中显的更重要。
由于作者在开篇就先把三个错误认识给摆到读者的眼前;然后就立马表明了其正确的定义,并给予了分析和对错误认识的驳斥。
洋洒洒的写了许多,条理上未免会有些混乱。
因此,我就按照自己理解的来小结一下吧!首先,测试的正确定义是:测试是为发现错误而执行程序的过程。
该定义暗示了两层含义:•软件测试是一个破坏性的过程,甚至是一个“施虐”的过程。
(就自己的亲身经历而言,大部分的开发人员在测试期间,对测试人员或多或少都会暂时产生一点厌烦或恐惧的心态。
主要是会让开发人员的代码改的面目全非的,且这个过程是反反复复的。
)•对于一个特定的程序,应该如何设计测试用例(测试数据)、哪些人应该而哪些人又不应该执行测试。
(这是有关测试人员构成的问题。
就自己的亲身经历而言,这一点很重要,因为测试人员的态度要比测试的过程更为重要。
)然后,明确测试的正确含义后,探究了一下现今面临的三个错误认识并逐一给予了充分的驳斥。
•“软件测试就是证明软件不存在错误的过程”。
1.若目的仅是为了证明程序中不存在错误,就会在潜意识中倾向于实现这个目标;即,会倾向于选择可能较少导致程序失效的测试数据;若目标在于证明程序中存在错误,设计的测试数据就有可能更多地发现问题。
后者肯定比前者会更多地增加程序的价值。
2.心理上,对于证明不存在是一个不可能完成的任务,无论该工程多么小;但若是一个寻找错误的任务,是可以完成的。
就心理承受而言,也是更容易接受的。
•“软件测试的目的在于证明软件能够正确完成其预订的功能。
”1.心态上,不要本着只是为了证明程序能够正确运行而去测试程序,而应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都成立)。
这样测试程序时,才能够发现尽可能多的错误。
2.要清楚这样一个道理:每当测试一个程序,实质上是想为其增加一些价值。
通过测试来增加程序的价值,及是指测试提高了程序的可靠性或质量。