当前位置:文档之家› 第一章 软件测试基础之软件测试(1.3)

第一章 软件测试基础之软件测试(1.3)


1983年,B.hetzel对软件测试的定义:以评价一个程 序或系统的属性为目标的任何一种活动;测试是对软 件质量的度量。
软件测试的定义(3)
明确提出软件 测试以检验是 否满足需求为 目标。
软件测试的定义(4)
2002年,测试的定义:使用人工或者自动手段来运行 或测试被测试件的过程,其目的在于检验它是否满足 规定的需求并弄清预期结果与实际结果之间的差别。 它是帮助识别开发完成(中间或最终版本)的计算机软 件(整体或部分)的正确度(correctness)、完全度 (completeness)和质量(quality)的软件过程。
软件测试的原则
(5) 80/20原则。测试实践表明,系统中80%左 右的缺陷主要来自20%左右的模块/子系统,因此应 当花较多的时间和代价测试那些具有更多缺陷数目 的程序模块/子系统。
(6) 设立独立的测试机构或委托第三方测试。 由于思维定势和心理因素等原因,开发工程师难以 发现自己的错误,同时揭露自己程序中的错误也是 件非常困难的事。因此,测试一般由独立的测试部 门或第三方机构进行,但需要软件开发工程师的积 极参与。
软件测试的侠义观点
G.J.Myers在《软件测试之艺术》(The Art of Software Testing)给出的软件测试定义, 是传统意义上的测试定义,即在代码完成后通 过运行程序或软件来查找程序代码或者软件系 统中的错误。这种传统意义上的测试主要是受 软件开发瀑布模型的影响,而且非常不利于保 证软件的质量。 主要原因是这种测试不能在代码完成前发现 软件系统在需求、设计等上的缺陷,图1-1-1的 统计表明这将导致后期的软件质量成本很高。
软件测试的对象
软件测试的时间(1)
软件生命周期
软件测试的时间(2)
软件测试的原则
软件测试从不同的角度出发会派生出两种不 同的测试原则。 从用户的角度出发,通过软件测试能充分暴 露软件中存在的问题和缺陷,从而考虑是否可 以接受该产品; 从开发者的角度出发,就是希望测试能表明 软件已经正确地实现了用户的需求,达到软件 正式发布的要求,以确立人们对软件质量的信 心。
软件测试的经济成本观点
“一个好的测试用例在于发现至今未发现的错 误”,这体现了软件测试的经济成本观点。软件测试 的成本一直是业界关注的问题之一。
根据辨证统一观点来看,不充分的测试是不负责任 的;过分的测试是一种资源的浪费,同样也是一种不 负责任的表现。在实际操作中的困难在于:如何界定 什么样的测试是不充分的,什么样的测试是过分的。
小插曲
你对软件测试的理解?
人们对软件测试的误解
好的测试人员不仅要掌握各种测试技术和测试工
具,还要具备丰富的编程经验和对BUG的敏感。
人们对软件测试的误解
人们对软件测试的误解
人们对软件测试的误解
软件测试不等于程序测试
软件测试应该涵盖整个软件 生命周期;
人们对软件测试的误解
人们对软件测试的误解
工程
引子:猎人打鸟


来回答一个问题:如果树上有10只鸟, 开枪打死1只,还剩几只? …
软件测试的发展史
软件测试是什么?
软件测试的定义(1)
软件测试的定义(2)
1979年,G.J.Myers对软件测试的定义:程序测试 是为了“发现错误”而执行程序的过程。
测试误区总结
误解:测试要执行所有可能的输入;
在实际测试中,穷举测试工作量太大,实践上
行不通; 寻找最小最重要的用例集合成为精简测试复杂 性的一条必经之道。
测试:找错误(证明程序有错) 调试:改错误(使程序正确)
误解:调试和测试是一样的。 误解:软件测试就是运行一下软件,看看结果对不对。 误解:好的测试一定要使用很多的测试工具。
在目前软件测试技术状况下,唯一可用的答案是: 制定最低测试通过标准和测试内容,然后具体问题具 体分析。对于相对复杂的产品或系统来说,零缺陷是 一种理想,应在测试成本范围内进行更充分的测试和 更全面的质量评估。
软件测试的目的
软件测试的目的
软件测试的目标之一是尽快尽早地找到至今没有被发现的缺陷, 而不是确保没有缺陷。主要原因有: (1) 测试的覆盖率几乎不可能达到100%,即软件测试不可能 穷举所有的测试用例,不能将程序中的所有路径测试一遍; (2) 去除现有的缺陷可能会产生新的缺陷,同时系统的需求 总是不断在变化,这种需求的不稳定性也将带来新的缺陷; (3) 测试工程师对产品的理解不能完全代表用户的理解,由 于两者之间的差异,故意味着可能存在测试工程师没有发现的缺 陷; (4) 测试的模拟环境不能完全代表用户的实际使用环境,由 于两者之间的差异,故意味着可能存在测试工程师没有发现的缺 陷。
3.80%的错误是由20%的部件引起的
4.80%的延期或返工是由20%的变更造成的 5.80%的系统资源是由20%的部件消耗的 6.80%的进度是由20%的人完成的
软件测试的原则
软件测试的原则
软件测试的原则
(1) 可追溯性。所有的测试都应追溯到用户需求。软 件测试揭示软件的缺陷,一旦修正这些缺陷就能更好地满 足用户需求;如果软件实现的功能不是用户所期望的,将 导致软件测试和软件开发做了无用功,这种情况在软件开 发和软件测试中时有发生。 (2) 尽早开展预防性测试。测试工作进行得越早,越 有利于提高软件的质量和降低软件的质量成本,这是预防 性测试的基本原则。由于软件的复杂性和抽象性,在软件 生命周期各阶段都可能产生错误,所以不应把软件测试仅 仅看做是软件开发的一个独立阶段,而应当把它贯穿到软 件开发的各个阶段中。在需求分析和设计阶段就应开始进 行测试工作,这样才能尽早发现和预防错误,杜绝某些缺 陷和错误,尽量避免将软件缺陷遗留到下一个开发阶段,
软件测试的原则
缺 陷 存 在 放 大 趋 势
问题发现越早,解决问题的代价就越小。
软件测试的原则
软件测试的原则
软件测试的原则
软件测试的原则
软件测试的原则
软件测试的原则
软件测试的原则——80/20原则
测试实践表明,系统中80%左右的缺陷主要 来自20%左右的模块/子系统。
1.80%的工程量用在20%的需求上(关键需求) 2.80%的开发成本花费在20%的部件上
改正一个缺陷的相对成本示意图
软件测试的广义观点
为了尽早发现问题,降低软件质量成本,可将传 统的软件测试范围延伸到需求评审、设计评审、代 码评审等活动中。根据广义观点,软件测试可分为 静态测试和动态测试。 静态测试主要的活动是评审,即通过对需求、设 计、代码和其他软件开发文档的评审来检验相应的 内容是否满足用户的需求,由于静态测试不需要运 行软件或程序,故具有静态特性特征。 动态测试是通过运行软件或程序来发现存在的问 题,由于是在运行过程中发现问题,故具有动态性 特征。
提高软件质量。
软件测试的原则
(3) 投入/产出原则。根据软件测试的经济成本观点, 在有限的时间和资源下进行完全测试找出软件所有的错 误和缺陷是不可能的,也是软件开发成本所不允许的, 因此软件测试不能无限进行下去,应适时终止。即不充 分的测试是不负责任的;过分的测试是一种资源的浪费, 同样也是一种不负责任的表现。因此在满足软件预期的 质量标准时,应确定质量的投入/产出比。 (4) 回归测试。由于修改了原来的缺陷,将可能导致 新的缺陷产生。因此修改缺陷后,应集中对软件的可能 受影响的模块/子系统进行回归测试,以确保修改缺陷 后不引入新的软件缺陷。
软件测试的定义
从上面的定义可以看出,软件测试的内涵在不断丰富, 对软件测试的认识在不断深入。要完整理解软件测试, 就要从不同角度去审视。软件测试就是对软件产品进 行验证和确认的活动过程,其目的就是尽快尽早地发 现软件产品在整个开发生命周期中存在的各种缺陷, 以评估软件的质量是否达到可发布水平。软件测试是 软件质量保证的关键元素,代表了需求规格说明书、 设计和编码的最终检查。
软件测试的辩证统一观点
G.J.Myers给出的软件测试定义,被软件测试业 界认可,并经常被引用,但由于属于软件测试的狭义 范畴。后来G.J.Myers进一步提出了程序测试的3个重 要观点: (1) 测试是为了证明程序有错,而不是证明程序 无错; (2) 一个好的测试用例在于它发现至今没有发现 的错误; (3) 一个成功的测试是发现了至今未发现的错误 的测试
相关主题