软件测试技术的研究现状-肖思博

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南林业科技大学计算机与信息工程学院《软件工程》论文

题目学生姓名指导教师学院专业班级完成时间软件测试技术的研究现状肖思博(20072101)

辛动军

计算机与信息工程学院

2007级通信工程*班

2010年11月5日

软件测试技术的研究现状

摘要

人们总是喜欢定过高目标,而恰当的定目标是非常重要的。如果我们的目标是证明程序没错,那我们肯定会选择出错率极低的数据来测试;相反,如果我们是要证明程序有错,那我们就会去找出错率高的数据来测试。后者会比前者搜集更多的数据来测试。

目录

第一章引言

第二章软件测试的概述

2.1 软件测试的定义

2.2 软件测试的发展史

2.3 软件测试的国内外现状

2.4 软件测试的发展趋势

第三章软件测试的流程

3.1 流程概述

3.2 测试流程

第四章软件测试的分类和方法

4.1 软件测试的分类

4.2 黑盒测试方法列举

第一章引言

开始论文之前,我们先来探讨下测试的定义。

程序测试很糟糕的一个主要原因是程序员最初就下错了定义。他们也许说:“测试就是证明错误不存在。”或者“测试目的就是标明程序功能实现正确。”或者“测试就是证明程序可以做它应该做的事”。

这些定义实在是与实际的南辕北辙。

测试应该是试图证明程序中存在错误,测试出越多错误越好。

正确理解测试的定义可以帮助你提高测试的工作效率。

人们总是喜欢定过高目标,而恰当的定目标是非常重要的。如果我们的目标是证明程序没错,那我们肯定会选择出错率极低的数据来测试;相反,如果我们是要证明程序有错,那我们就会去找出错率高的数据来测试。后者会比前者搜集更多的数据来测试。

测试的定义有很多暗示性的东西。比如说,它暗示了测试是一个破环性的程序,甚至是个残酷的程序,这正解释了为什么许多人觉得测试很难。我们多数人都希望事情圆满,而不是撕裂它,让它支离破碎。这也可以区分出,哪些人适合做测试,哪些人不适合。

测试定义的另一种补充解释是分析“成功的”和“不成功的”的用法——实际上,项目经理们经常把没发现错误的测试程序称作“成功的”,那些发现错误的测试程序反而被称为“不成功的”。

这当然又是完全搞反了。尽管如此,人们的思维仍然难以令找到错误的测试程序作为“成功的”。

想象一个病人去看医生,检查的结果的完全健康,事实上病人却病着,那这个医生当然会被责“无能”。我们应该把程序当作一个病人,把测试人员当作医生,那样,找出的问题越多,就越“成功”。

第三个关于测试定义的问题是诸如“测试就是证明程序可以做它应该做的事”类的想法。难道“程序可以做它应该做的事”就没错误了么?那如果程序不但做了应该做的事情,还做了不该做的事情呢?

作为总结,测试是一个破坏性的程序,以找错误为目的。当然,你最终还是希望通过测试来建立信心,证明程序做它该做的,绝不做它不该做的,但是这个目标最好建立在勤勤恳恳找错误的基础上面。

假如程序员十分肯定自己的代码是“完美无缺的”,那你应该尽量找出问题,证明它并非完美,而不是盲目的听从。

可见测试就是生活的一种写照,生活中的测试就是不断段纠错,完善人生的过程。

第二章软件测试的概述

2.1软件测试的定义

上面我们讨论了软件测试的定义问题,现在给出软件测试的准确定义。

软件测试是为了发现错误而执行程序甚至不用执行程序的过程。它不仅是软件开发阶段的有机组成部分,而且在整个软件工程(即软件定义、设计和开发过程)中占据相当大的比重。软件测试是软件质量保证的关键环节,直接影响着软件的质量评估。软件测试不仅要讲究策略,更要讲究时效性。验收测试作为软件测试过程的最后一个环节,对软件质量、软件的可交付性和软件项目的实施周期起到"一锤定音"的作用。

可见软件测试的目的是

(1) 为了寻找错误,并尽可能地为修正错误提供更多的信息

(2) 为了证明软件有错误,而不证明软件没有错误

(3) 通过软件测试来检查系统是否满足需求,这也是测试的期望目标。

那么为了能够成功的实施测试,发现软件中的错误,软件测试应该遵循一些原则:

1.)测试应该基于用户需求

2.)测试设计是关键。测试时间和资源是有限的,要避免冗余的测试和考虑到尽可能全面的情况。

3.) 应该尽早和不断的测试。

4.) 序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。

5.) 对测试错误结果要有一个确认的过程

6.) 要有合理的测试计划,不要希望在极短的时间内完成一个高水平的测试。

7.) 要注意回归测试的关联性,尽可能避免引入新的错误。

8.) 妥善保存测试过程文档,测试的重现性往往要靠测试文档。

2.2软件测试的发展史

软件测试是伴随着软件的产生而产生的。早期的软件测试较为狭隘,测试相当于“调试”,由开发人员自己完成这部分工作。通常是形成代码、产品基本完成时才进行测试,对测试的投入非常的少。直到1957年,软件测试才成为一种发现软件缺陷的活动。由于缺乏软件工程的概念,测试仍旧是开发之后的事情。

1972年在北卡罗来纳大学举行了首次软件测试正式会议,1975年John Good Enough和Susan Gerhart在IEEE上发表了“Toward a Theory of Test Data Selection”(测试数据选择原理)的文章,软件测试才被确定为一种研究方向。1979年,Glen ford Myers的《The Art of Software Testing》(软件测试艺术)是测试领域的第一本重要专著。在这本书中,Myers以及其同事们将软件测试定义为“测试是为发现错误而执行的一个程序或者系统的过程”。

到了20世纪80年代,软件测试不再单纯是发现错误的过程,而且包含了软件质量评价的内容。包含IEEE(Institute of Electrical and Electronic Engineers)标准、美国ANSI(American National Standard Institute)标准以及ISO(International Standard Organization)国际标准在内的各类标准相继被制定。1983年,Bill Hetzel在《Complete Guide of Software Testing》(《软件测试完全指南》)中指出“测试是以评价一个程序或系统属性为目标的任何一种活动,测试是对软件质量的度量”。

20世纪90年代,测试工具开始盛行。2002年,Rick何和Stefan在《Systematic Software Testing》(《系统的软件测试》)一书中将测试定义为“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程”。

最近20年来,软件测试技术随着计算机和软件技术的飞速发展取得了很大突破,包括V模型、W模型在内的测试模型被相继总结出来。同时,TMM(Testing Maturity Model)概念的出现标志着测试过程的改进。在单元测试、自动化测试、负载压力测试以及测试管理方面涌现了大量优秀的软件测试工具。

然而软件测试技术仍旧是落后于软件开发技术的发展速度,这使得软件测试面临着很大的挑战,主要体现在以下几方面:

1. 软件测试在国防现代化、社会信息化和国民经济化领域中的作用越来越重要,由此产生的测试任务越来越繁重。

2. 软件规模越来越大,功能越来越复杂,如何进行充分有效的测试成为难题。

3. 面向对象的开发技术越来越普及,而面向对象的测试技术却刚刚起步。

4. 对于分布式系统整体性能还不能进行很好的测试。

5. 实时系统来说,缺乏有效的测试手段。

相关文档
最新文档