当前位置:文档之家› 软件测试技术的研究现状-肖思博

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

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

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

题目学生姓名指导教师学院专业班级完成时间软件测试技术的研究现状肖思博(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. 实时系统来说,缺乏有效的测试手段。

6. 随着安全问题的日益突出,信息系统的安全性如何进行安全有效的测试与评估,成为世界性的难题。

2.3软件测试的国内外现状

软件测试在软件较发达的国家(比如美国),已经发展成为一个独立的产业,主要体现在以下几个方面:

1. 软件测试在软件公司占有重要地位。在微软,一个项目组中测试工程师要远比编码工程师多,同样花在测试的时间也比花在编码的时间多。

2. 软件测试理论研究蓬勃发展。每年举办各种各样的测试技术年会,发表了大量的软件测试研究论文,引领软件测试理论研究的国际潮流。

3. 软件测试市场繁荣。美国有一些专业公司开发软件测试标准与测试工具,MI Compuware、MaCabe、Rational等都是著名的软件测试工具提供商,它们出品的测试工具已经占领了国际市场。

我国的测试技术起步于“六五”,随着软件工程的研究而逐步发展起来。1990年国家级的中国软件评测中心成立,测试服务逐步开展起来。

由于起步晚,因此无论在软件测试理论研究还是测试实践上,都和发达国家有较大的差距。主要体现在对软件产品化测试的技术研究还较为贫乏,从业人员少,测试服务没有形成足够的规模等方面。但是,随着我国软件产业的蓬勃发展及对软件质量的重视,软件测试也越来越被人们所看重,软件测试正逐步成为一个新兴的产业。

我国正迈入测试时代,主要体现在以下几个方面:

1. 我国著名软件公司都已经或着手建立独立的专职软件测试队伍。当然人员规模及比例无法和国外大公司相比,但毕竟在公司内部贯彻了独立的测试的意识。

2. 国家人事部和信产部2003关于职业资格认证第一次在我国有了“软件评测师”的称号,这是国家对软件测试职业的高度重视与认可。

3. 在信产部关于计算机系统集成资质以及信息工程系统工程监理资质的认证中,软件测试能力已经被定为评价公司技术能力的一项重要指标。

4. 2001年,信产部发布的部长5号令,实行了软件产品登记认证制度,规定凡是在我国境内销售的产品必须到信产部备案登记,且要经过登记测试。

5. 自2001年起,国家质检总局和信产部都通过测试对软件产品进行质量监

督抽查。

6. 国家各部委、各行业正在通过测试规范行业的健康发展,通过测试把不符合行业标准要求的软件拒之门外,对行业信息化的健康发展起了促进作用。

7. 用户对软件质量要求越来越高,信息系统验收不再走过场,而要通过第三方测试机构的严格测试来判定。

8. “以测代评”正在成为我国科技心爱你灌木则有支持的一项重要举措,如国家“863”计划对数据库管理系统、操作系统、办公软件、ERP等项目的经费支持,都是通过第三方测试机构科学客观的测试结果来决定的。

9. 软件测试正成为部分软件学院的一门独立课程,对我国软件测试人才的培养起到作用。

10. 第三方测试机构得到了蓬勃发展。近两年全国各地新成立的软件测试机构有十多家,测试服务体系已经基本确立。

由上可见,我国的软件测试行业正处在一个快速成长的阶段。随着时间推移,我们与发达国家的差距必然会逐步缩小。

2.4 软件测试的发展趋势

分析现今国内外的测试发展,可以看出有以下趋势:

测试工作将近一步前移,不仅仅是单元测试、集成测试、系统测试和验收测试,对需求的精确性和完整性的测试技术、对系统设计的测试技术将成为新的研究热点。

软件架构师、开发工程师、QA人员和测试工程师将进行更好的融合,他们之间是伙伴而非对立的关系,因为他们的工作相互促进相互借鉴。同时测试工程师也会尽早的介入整个工程,在软件定义阶段就要开发相应的测试方法,是的每一个需求定义都是可以测试的。

测试职业将得到充分的尊重。开发与测试人员既是矛盾体也是统一体。以前“没能力做开发就去测试”的观点已经被现在“只有高水平的开发者才能胜任测试工作”的观点所替代。

设置独立的软件测试部门将成为越来越多的软件公司的共识。测试部门将和开发、QA一样作为一个重要的独立部门存在。

测试外包服务将快速增长。软件测试外包将会和软件开发外包一样,成为全球化的一种趋势,可以利用职业测试专家队伍与机构为自己的产品进行测试,节

省测试费用。

第三章软件测试的流程

3.1流程概述

一般而言,软件测试从项目确立时就开始了,前后要经过以下一些主要环节:需求分析→测试计划→测试设计→测试环境搭建→测试执行→测试记录→缺陷管理→软件评估→RTM.

在进行有关问题阐述前,我们先明确下分工,一般而言,需求分析、测试用例编写、测试环境搭建、测试执行等属于测试开发人员工作范畴,而测试执行以及缺陷提交等属于普通测试人员的工作范畴,测试负责人负责整个测试各个环节的跟踪、实施、管理等。

说明:

1.以上流程各环节并未包含软件测试过程的全部,如根据实际情况还可以实施一些测试计划评审、用例评审,测试培训等。在软件正式发行后,当遇到一些严重问题时,还需要进行一些后续维护测试等。

2.以上各环节并不是独立没联系的,实际工作千变万化,各环节一些交织、重叠在所难免,比如编写测试用例的同时就可以进行测试环境的搭建工作,当然也可能由于一些需求不清楚而重新进行需求分析等。这就和我们国家提出建设有中国特色的社会主义国家一样,之所以有中国特色,那是因为国情不一样。所以在实际测试过程中也要做到具体问题具体分析,具体解决。

3.2测试流程

○1需求分析

需求分析(Requirment Analyzing)应该说是软件测试的一个重要环节,测试开发人员对这一环节的理解程度如何将直接影响到接下来有关测试工作的开展。

可能有些人认为测试需求分析无关紧要,这种想法是很不对的。需求分析不但重要,而且至关重要!

一般而言,需求分析包括软件功能需求分析、测试环境需求分析、测试资源需求分析等。

其中最基本的是软件功能需求分析,测一款软件首先要知道软件能实现哪些功能以及是怎样实现的。比如一款Smartphone包括VoIP、Wi-Fi以及Bluetooth等功能。那我们就应该知道软件是怎样来实现这些功能的,为了实现这些功能需要哪些测试设备以及如何搭建相应测试环境等,否则测试就无从谈起!

既然谈了需求分析,那么我们根据什么来分析呢?总不能凭空设想吧。

总得说来,做测试需求分析的依据有软件需求文档、软件规格书以及开发人员的设计文档等,相信管理一些规范的公司在软件开发过程中都有这些文档。

○2测试计划

测试计划(Test Plan)一般由测试负责人来编写。

测试计划的依据主要是项目开发计划和测试需求分析结果而制定。测试计划一般包括以下一些方面:

1.测试背景

a. 软件项目介绍;

b. 项目涉及人员(如软硬件项目负责人等)介绍以及相应联系方式等。

2.测试依据

a. 软件需求文档;

b. 软件规格书;

c. 软件设计文档;

d. 其他,如参考产品等。

3.测试资源

a. 测试设备需求;

b. 测试人员需求;

c. 测试环境需求;

d. 其他。

4.测试策略

a. 采取测试方法;

b. 搭建哪些测试环境;

c. 采取哪些测试工具以测试管理工具;

d. 对测试人员进行培训等。

5.测试日程

a. 测试需求分析;

b. 测试用例编写;

c. 测试实施,根据项目计划,测试分成哪些测试阶段(如单元测试、集成测试、系统测试阶段,α、β测试阶段等),每个阶段的工作重点以及投入资源等。

6.其他。

测试计划还要包括测试计划编写的日期、作者等信息,计划越详细越好了。

计划赶不上变化,一份计划做的再好,当实际实施的时候就会发现往往很难按照原有计划开展。如在软件开发过程中资源匮乏、人员流动等都会对测试造成一定的影响。所以,这些就要求测试负责人能够从宏观上来调控了。在变化面前能够做到应对自如、处乱不惊那是最好不过了。

○3测试设计

测试设计主要包括测试用例编写和测试场景设计两方面。

测试用例(checklist),是关于具体测试步骤的文档,它描述了测试的输入参数、条件及配置、预期的输出结果等,以判断被测软件的工作是否正常。从表现形式上而言,测试用例可以是纯文本的说明文档,也可以是用脚本语言或高级语言编写的一段代码。

测试用例文档由简介和测试用例两部分组成。简介部分编制测试目的、测试范围、定义术语以及测试背景等。测试用例部分逐一列示各测试用例,测试用例应当包括测试标识、测试用例名称、目标、测试条件、测试设置、输入数据要求、步骤、以及预期的结果等

一份好的测试用例对测试有很好的指导作用,能够发现很多软件问题。测试场景设计主要也就是测试环境问题了。

○4测试环境搭建

不同软件产品对测试环境有着不同的要求。如C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、unix、linux甚至苹果OS等,这些测试环境都是必须的。而对于一些嵌入式软件,如手机软件,如果我们想测试一下有关功能模块的耗电情况,手机待机时间等,那么我们可能就需要搭建相应的电流测试环境了。当然测试中对于如手机网络等环境都有所要求。

测试环境很重要,符合要求的测试环境能够帮助我们准确的测出软件问题,并且做出正确的判断。

为了测试一款软件,我们可能根据不同的需求点要使用很多不同的测试环境。有些测试环境我们是可以搭建的,有些环境我们无法搭建或者搭建成本很高。不管如何,我们的目标是测试软件问题,保证软件质量。测试环境问题,还是根据具体产品以及开发者的实际情况而采取最经济的方式吧。

○5测试执行

测试执行过程又可以分为以下阶段:

单元测试→集成测试→系统测试→出厂测试,其中每个阶段还有回归测试等。

从测试的角度而言,测试执行包括一个量和度的问题。也就是测试范围和测试程度的问题。比如一个版本需要测试哪些方面?每个方面要测试到什么程度?

从管理的角度而言,在有限的时间内,在人员有限甚至短缺的情况下,要考虑如何分工,如何合理地利用资源来开展测试。当然还要考虑以下问题:1.当测试人员测试的执行不到位、敷衍了事时该如何解决?

2.测试效率问题,怎样提高测试效率?

3.根据版本的不同特点是只做验证测试还是采取冒烟测试亦或是系统全面测试?

4.当测试过程中遇到一些偶然性随机问题该怎样处理?

5.当版本中出现很多新问题时该怎样对待?测试停止标准?

6.……

总之,测试执行过程中会遇到很多复杂的问题,还是那句话,具体问题具体

解决!本文不做过多阐述。

○6测试记录

缺陷记录总的说来包括两方面:由谁提交和缺陷描述。

一般而言,缺陷都是谁测试谁提交,当然有些公司可能为了保证所提交缺陷的质量,还会在提交前进行缺陷评估,以确保所提交的缺陷的准确性。

在缺陷的描述上,至少要包括以下一些方面内容:

序号标

预置条

操作步

预期结

实际结

严重程

测试

测试日

以上是描述一个bug时通常所要描述的内容,当然在实际提交bug时可以根

据实际情况进行补充,如附上图片、log文件等。

另外,一个版本软件测试完毕,还要根据测试情况出份测试报告,这也是所

要经过的一个环节。

○7缺陷管理

缺陷管理方面,很多公司都采取缺陷管理工具来进行管理,常见缺陷管理工具有Test Director、Bugfree等。

○8软件评估

这里评估指软件经过一轮又一轮测试后,确认软件无重大问题或者问题很少的情况下,对准备发给客户的软件进行评估,以确定是否能够发行给客户或投放市场。

软件评估小组一般由项目负责人、营销人员、部门经理等组成,也可能是由客户指定的第三方人员组成。

○9测试总结和测试维护

每个版本有每个版本的测试总结,每个阶段有每个阶段的测试总结,当项目完成RTM后,一般要对整个项目做个回顾总结,看有哪些做的不足的地方,有哪些经验可以对今后的测试工作做借鉴使用,等等。测试总结无严格格式、字数限

制。应该说,测试总结还是很总要的。

由于测试的不完全性,当软件正式release后,客户在使用过程中,难免遇到一些问题,有的甚至是严重性的问题,这就需要修改有关问题,修改后需要再

次对软件进行测试、评估、发行。

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

4.1 软件测试的分类

前面我们讲到了软件测试的流程,了解了测试是一项复杂的系统工程,同样从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。

1、要执行被测软件的角度

按是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。(我认为主要是让测试人员对编译器发现不了的潜在错误进行分析,如无效的死循环,多余的变量等),而动态测试则通过运行被测试软件来达到目的。

2、按阶段划分:

□1单元测试

单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。因此应用系统有一个设计很好的体系结构就显得尤为重要。

一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。

□2集成测试

集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。

□3系统测试

系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。

□4验收测试

验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。

□5回归测试

回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。这里,修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性。

□6 Alpha 测试:在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。

□7 Beta 测试:当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。

3、按测试方法划分:

□1白盒测试

白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从

检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。

白盒测试的工具有Junit Framework,Jtest等。

□2黑盒测试

黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。

“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

黑盒测试也可以借助一些工具,如WinRunner,QuickTestPro,Rational Robot等。

4.2 黑盒测试方法列举

黑盒测试是软件测试人员常用的一种的方法,由于不涉及代码,虽然现在有很多自动化功能的测试工具,但对大多初级软件测试人员来说,就需要一遍遍的去测试程序的功能,好的方法定能够提高测试的效率,下面介绍几种常用的黑盒测试法。

1.等价类划分法

是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法。

如我们要输入一个学生的成绩范围是0~100,我们不可能一个个的去穷举测试,那么我们首先要划分等价类,就是要把可能输入的数据分类,在只考虑整数的情况下我们可以分为:小于0,大于等于0小于等于100,大于100三类。第一类和第三类属于无效等价类,只有第二类属于有效等价类,我们就可以用-1,90,123这三个数来覆盖所有的等价类。

2.边界值法

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

还是上面的例子,0和-1,100和101就是上述等价类的边界。

3. 错误推测法

错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.

错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例.

例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

除了上述方法之外还有因果图法,判定表驱动分析方法,正交实验设计方法,功能图分析方法等等。

参考文献

参考书籍:

1、Ron Patton 《软件测试》机械工业出版社2002

2、张克东等《软件工程与软件测试自动化教程》电子工业出版社2002

3、Dustin,E.《软件自动化测试:引入、管理与实施》电子工业出版社2003

4、James A. Whittaker 《实用软件测试指南》电子工业出版社2003

5、Zadrozny 《J2EE性能测试》电子工业出版社2003

6、Jones,C.《软件评估、基准测试与最佳实践》机械工业出版社2003

7、Edward Kit 《软件测试过程改进》机械工业出版社2003

8、Hung Q.Nguyen 《Web应用测试》电子工业出版社2003

9、Robert V.Binder《面向对象系统测试模型视图与工具(影印版)》

10、Rakitin,S.K.《软件验证与确认的最佳管理办法》电子工业出版社2002

11、麦格雷戈《面向对象的软件测试》机械工业出版社2002

软件测试的起源与发展

软件测试的起源与发展 软件测试的概念与定义 软件测试是伴随着软件的产生而产生的。早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。 直到1957年,软件测试才开始与调试区别开来,作为一种发现软件缺陷的活动。由于一直存在着“为了让我们看到产品在工作,就得将测试工作往后推一点”的思想,潜意识里对测试的目的就理解为“使自己确信产品能工作”。测试活动始终后于开发的活动,测试通常被做为软件生命周期中最后一项活动而进行。当时也缺乏有效的测试方法,主要依靠“错误推测ErrorGuessing”来寻找软件中的缺陷。因此,大量软件交付后,仍存在很多问题,软件产品的质量无法保证。 到了20世纪70年代,这个阶段开发的软件仍然不复杂,但人们已开始思考软件开发流程的问题,尽管对“软件测试”的真正含义还缺乏共识,但这一词条已经频繁出现,一些软件测试的探索者们建议在软件生命周期的开始阶段就根据需求制订测试计划,这时也涌现出一批软件测试的宗师,BillHetzel博士就是其中的领导者。1972年,软件测试领域的先驱BillHetzel博士(代表论著《TheCompleteGuidetoSoftwareTesting》),在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。在1973年,他首先给软件测试一个这样的定义:“就是建立一种信心,认为程序能够按预期的设想运行。Establishconfidencethataprogramdoeswhatitissupposedtodo.”后来在1983年他又将定义修订为:“评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。软件测试就是以此为目的的任何行为。Anyactivitiesaimedatevaluatinganattributeorcapabilityofaprogramorsystem.”在他的定义中的“设想”和“预期的结果”其实就是我们现在所说的用户需求或功能设计。他还把软件的

关于软件测试行业现状的调查报告

华北电力大学科技学院 调研报告| | 实验名称软件测试行业现状调查报告 课程名称软件测试 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:

软件测试行业现状调查报告 中国软件测试的发展及现状分析: 一、软件测试的发展及现状分析: 中国的软件测试技术研究主要是随着软件工程的研究而逐步发展起来的,但是由于起步较晚,与国际先进水平相比差距较大,故仍处于起步阶段。随着我国软件产业的蓬勃发展以及对软件质量的重视,软件测试也越来越被软件企业所重视,软件测试正在逐步成为一个新兴的产业。从目前来看,可主要从四个方面来分析我国测试行业的现状。 1) 软件测试重要性和规范性不断提高通过测试把不符合行业标准的软件挡在门外,对行业信息化的健康发展起到了很好的促进作用。在信息产业部关于计算机系统集成资质以及信息系统工程监理资质的认证中,软件测试能力已经被定为评价公司技术能力的一项重要指标。 2) 从手工向自动化测试方式的转变传统的项目测试还是以手工为主,测试人员根据需求规格说明书的要求,与测试对象进行“人机对话”。大量的手工增加了项目人力成本和沟通成本、低效率以及高差错率,针对企业的网络应用环境需要支持大量用户和复杂的软硬件应用环境,这样测试的工作量也越来越大,自动化测试及管理已经成为项目测试的一大趋势。自动化测试通过测试工具和其他手段,按照测试工程师的预定计划对软件产品进行自动的测试,它能够完成许多手工无法完成或者难以实现的测试工作,更好地利用资源,将繁琐的任务赋自动化方式,从而提高准确性和测试人员的积极性。正确、合理地实施自动化测试,能够快速、全民地对软件进行测试,从而提高软件质量、节省经费,缩短产品发布周期。 3) 测试人员需求逐步增大,素质不断提高随着 IT 业的迅猛发展,软件外包服务已成为继互联网和网络游戏后的第五次全球浪潮。由于外包对软件质量要求很高,国内软件企业要想在国际市场上立足,就必须重视软件质量,而作为软件质量的把关者,软件测试工程师日渐“走俏”。目前在国内 120 万软件从业人员中,真正能担当软件测试职位的不超过 5 万,而目前高等教育中专业的软件测试教育近于空白,独立开设软件测试课程的高校非常少,这就形成测试人才紧缺、需求不断增大的现象。据分析,目前国内软件测试的人才需求缺口超过 20 万人。因此软件企业开始加强和重视测试人员的选拔、培养和知识培训。一方面,对测试人员的素质和要求逐步提高,测试人员不仅应掌握相关计算机知识背景、软件工程基本知识、熟悉项目编程语言、熟悉项目技术架构及需求内容,而且要求工作有责任感、独立分析能力及团队精神等方面;另一方面,软件企业为测试人员提供进一步的知识培训机会,以应对各种项目的复杂情况。 4) 测试服务体系初步形成随着用户对软件质量的要求越来越高,信息系统验收不再走过 场,而要通过第三方测试机构的严格测试来判定。“以测代评”正在成为我国科技项目择优支持的一项重要举措,比如国家“863”计划对数据库管理系统、操作系统、办公软件等项目的经费支持,都是通过第三方测试机构科学客观的测试结果来决定。随着第三方测试机构的蓬勃发展,在全国各地,新成立的软件测试机构达 10 多家,测试服务体系已经基本确立起来。 二、软件测试行业对从业人员的技术要求 相对于其他软件工程人员,软件测试工程师的知识面应该非常宽广,但最重要的品质应该是能够在第一时间内接受新技术。 1、职场人对于软件测试行业认知度一般调查显示,职场人对于软件测试行业认知度一般。选择非常了解的只有 8.8%,可见,对于该行业了解程度高的职场人不足一成。选择“知道一些”的不足四成,其余超过半数的职场人都选择不了解甚至没听说过。可见,软件测试行业作为一个新兴行业还没有受到广泛的社会认知,

软件测试技术知识点

一、软件测试的定义 软件测试是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 1.软件测试与调试的区别? (1)测试是为了发现软件中存在的错误;调试是为证明软件开发的正确性。 (2)测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。 (3)测试是有计划的,需要进行测试设计;调试是不受时间约束的。 (4)测试经历发现错误、改正错误、重新测试的过程;调试是一个推理过程。(5)测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。 (6)测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。 (7)大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。 2.对软件测试的理解?

软件测试就是说要去根据客户的要求完善它.即要把这个软件还没有符合的或者是和客户要求不一样的,或者是客户要求还没有完全达到要求的部分找出来。 (1)首先要锻炼自己软件测试能力,包括需求的分析能力,提取能力,逻辑化思想能力,即就是给你一个系统的时候,能够把整个业务流程很清晰的理出。 (2)学习测试理论知识并与你锻炼的能力相结合。 (3)想和做。想就是说你看到任何的系统都要有习惯性的思考;做就是把实际去做练习,然后提取经验。 总结测试用例,测试计划固然重要,但能力和思想一旦到位了,才能成为一名合格的软件测试工程师。 二、软件测试的分类 1.按照测试技术划分 (1)白盒测试:通过对程序内部结构的分析、检测来寻找问题。检查是否所有的结构及逻辑都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。--结构测试 (2)黑盒测试:通过软件的外部表现来发现错误,是在程序界面处进行测试,只是检查是否按照需求规格说明书的规定正常实现。--性能测试 (3)灰盒测试:介于白盒测试与黑盒测试之间的测试。

软件测试现状及前景

一.软件测试背景 1.软件测试的基本情况 据国家权威部门统计,中国软件人才缺口超过100万人,其中很大一部分为软件测试人才,缺口达到30-40万。但由于软件测试的重要性是近两年才被充分认识到的,高校教育和企业培养都还没有跟上,致使软件测试需求严重供不应求。 软件测试的需求为什么像雨后春笋一样?这种现象是符合我国软件产业发展的。在我国,软件产业的兴起和发展也就是这短短十几年。在前面的兴起和发展壮大阶段,一般的软件公司都是重开发轻测试,甚至存在把测试工作都放在用户那里去做的错误思想;追求眼前功能的实现,开发软件追求“短”、“平”、“快”。不太考虑性能和功能的优化。软件产业发展到今天,如果还是用以前的思路、办法(公司里绝大部分、甚至全部都是开发人员在做产品,只要能做出来可以用就行),企业的产品肯定没有竞争力,从而导致这样的软件企业生存极其困难。正是因为这个原因,软件测试以往一直被中小IT企业所忽视,只有一些知名企业才有专门的软件测试人员。现在,更多的国内企业认识到测试的重要性,但是由于国内测试人才的储备相对较少,并且建立软件测试部门需要很大成本,所以软件测试外包是国内软件企业的最佳选择。 2.软件测试的重要性 项目软件编制质量的高低关键取决于软件测试工作的严密。软件测试工作不但保证了软件质量,而且降低了日后维护成本,也提高了企业信誉和实力。软件测试主要是根据项目制定测试计划,确定测试用例和测试方法,记录测试数据,分析测试结果,完成测试报告,以便软件开发人员进一步调试。 二.软件测试行业现状 我国的软件测试技术研究起步于“六五”期间,主要是随着软件工程的研究而逐步发展起来的。由于起步较晚,与国际先进水平相比差距较大。随着我国软件产业的蓬勃发展以及对软件质量的重视,软件测试也越来越被软件企业所重视,软件测试正在逐步成为一个新兴的产业。从目前来看,可主要从四个方面来分析我国测试行业的现状。 1.软件测试重要性和规范性不断提高 国家各部委、各行业正在通过测试来规范软件行业的健康发展,通过测试把不符合行业标准的软件挡在门外,对行业信息化的健康发展起到了很好的促进作用。在信息产业部关于计算机系统集成资质以及信息系统工程监理资质的认证中,软件测试能力已经被定为评价公司技术能力的一项重要指标。2001年信息产业部发布的部长5号令,实行了软件产品登记制度,规定凡是在我国境内销售的产品必须到信息产业部备案登记,而且要经过登记测试。同年起,国家质检总局和信息产业部每年都通过测试对软件产品进行质量监督抽查。国家人事部和信息产业部2003年关于职业资格认证第一次在我国有了“软件评测师”的称号,这是国家对于软件测试职业的高度重视与认可。 2.从手工向自动化测试方式的转变

我国软件测试技术研究现状及对策分析

我国软件测试技术研究现状及对策分析 摘要軟件测试技术应用研究本质在于提高软件测试准确性,解决软件开发管理缺陷,确保软件测试数据的真实可信。现阶段我国的软件测试技术应用主体状况良好,在技术应用细节及技术研发管理方面仍需努力。对此本文将针对我国软件测试技术研究现状及问题,提出部分软件测试研究技术管理方案,进而为后续阶段软件测试技术高效化及全面化应用提供理论参考内容。 关键词软件测试;技术;研究;现状;对策 1 软件测试技术应用现状 现阶段我国的软件测试技术应用种类繁多,涉及测试内容涵盖软件测试的各个方面,基础性测试工作的开展总体上符合软件测试及应用需求,对于软件测试技术应用也逐步趋于完善。但在细节化控制及软件测试规范方面,仍存一定的实际性问题。综合现有的软件测试情况,软件测试应用结构主要范围三个方面,首先是企业方面,其次是人员方面,第三是技术规范方面,其中人员方面在软件测试应用中起到主导作用,是现阶段软件测试应用现状改善的核心关键。 1.1 软件测试企业现状 企业对于软件测试技术应用商业化较为严重,相关的软件测试项目未能考虑软件使用适应性及兼容性问题,仅将软件检测做出体系化商品进行业务销售,相关企业制定的软件测试管理标准也并不统一,从而形成软件测试市场杂乱不堪的景象,对于软件测试工作的规范化管理产生不良影响。 1.2 软件测试人员现状 在软件测试人员方面,我国现有的软件测试人才储备数量相对较高,远超欧美等发达国家,但在人才技术应用专业性方面,却存在一定的差距,部分企业在软件测试人员的培训方面投入相对较低,未能充分的发挥软件测试的多岗协调优势,继而使软件测试人员对于相关专业技能的掌握出现偏差,难以按照严格的软件测试标准执行软件测试管理方案。 1.3 软件测试管理现状 软件测试管理的目的在于提高软件测试规范性,降低软件测试误差,确保软件测试数据结构的真实性。软件测试管理涉及内容较多,企业对于软件测试管理工作实际重视程度不高,使软件测试管理工作进行始终无法达到规范化管理标准,进而造成软件测试结构误差严重,对软件的实际应用影响颇深[1]。 2 软件测试技术应用问题

软件测试发展方向

软件测试职业发展方向 最近准备研究一下软件测试职业的发展方向,一是增长自己的知识,二是为自己的职业规划做个参考,在网上找到一篇很好的东东,将它整理了一下,放上来吧,以备以后查看。 软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。 测试初级阶段: 测试工程师,属于软件测试职业生涯的初级域,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。 管理+技术路线: 首先是常规路线,这条发展路线要求管理与技术并重,因为软件测试的行业特点决定了这个因素:测试工程师向上晋升到测试主管、测试经理、测试总监,直至咨询域的更高方向! 测试主管是企业项目级主管,对于中小型软件公司也可以是企业级主管,属于中级发展域,适用范围是2到5年职业经验的测试从业者。其工作内容是根据项目经理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。严格来说,这个级别更多属于测试的设计者,因为企业的测试流程搭建是由更高级别的测试经理或相关管理者来做的,测试主管负责该流程的具体实施;而更多的工作,是思考如何对软件进行更加深入、全面的测试。测试主管比较有创造性的工作内容就是测试设计,而恰恰很多公司忽略了或没有精力来执行此工作内容!应该说,在一个企业里做了3年左右测试工作的人员,很容易晋升到该职位,而之所以晋

升,是与个人测试技术的过硬、测试方法的丰富,加上对测试流程的监控力与执行力的职业素质息息相关! 测试经理是更高级别的测试管理者,属于高级测试方向域。对于大中型软件公司,该职位尤为重要,并且对其职业要求也比较高,一般适合4到8年的测试从业者,在管理与技术能力双双比较成熟的情况下,可以结合具体环境晋升到该级别。测试经理负责企业级或大型项目级总体测试工作的策划与实施。测试经理除了需要统筹整个企业级或项目级测试流程外,还要对于不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导与解决思路,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试;另外,一些企业里,测试经理还需要与客户交流与沟通,负责部分的销售性或技术支持性工作。 测试总监,属于常规发展路线的最高域,该职位一般在大型或跨国型软件企业,或者专向于测试服务型企业有所设立,一般设立测试总监的企业,该职位都相当于CTO或副总的级别,是企业级或集团级测试工作的最高领导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。而其职业要求,也是技术与管理双结合。 技术路线: 技术路线中级域: 技术路线,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师;前三者适用于通用软件测试领域,认证测试

国内软件测试现状分析及对策

龙源期刊网 https://www.doczj.com/doc/ae13788495.html, 国内软件测试现状分析及对策 作者:邓伟伟,管群 来源:《电脑知识与技术》2009年第34期 摘要:现代社会是一个信息化社会,而高质量的软件构成了信息化的基础。我国加入WTO 后,面对全球信息化浪潮,国内软件测试行业的弊病逐步显露出来。在引用51Testing软件测试网的一些调查数据的基础上,指出了国内软件测试的一些现状,对现状进行了分析,并给出了相应的解决之道,最后对我国的软件测试行业进行了总结和展望。 关键词:软件测试;软件质量;测试工具;规范化;能力成熟度模型 中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)34-9692-03 Analysis and Solutions on the Status of the Domestic Software Testing DENG Wei-wei, GUAN Qun (Computer College, Sichuan University, Chengdu 610064, China) Abstract: Modern society is an information-based society, and high-quality software constitutes the basis of the information. Since China's accession to the WTO, in the face of the wave of global information, the drawbacks of the domestic industry of software testing gradually revealed. On the basis of survey data on the 51Testing software testing network, the author pointed out some of the status in domestic software testing, and analyzed the status, then got the corresponding solutions, finally summaried and outlooked the domestic industry of software testing. Key words: software testing; software quality; testing tools; standardized; capability maturity model(CMM) 什么是软件测试[1]?IEEE在1983年是这样定义的:由人工或自动方法来执行或评价系统或系统部件的过程,以验证它是否满足规定的需求,或识别出期望的结果和实际结果之间的差别。它是软件工程的一部分,它随着软件开发应运而生,并随着软件开发的产业化而受到重视。简言之,软件测试就是不断发现Bug,并不断修正的过程。世界上第一个计算机Bug如图1所示。 目前,我国的软件测试行业较欧美国家的差距还比较大,这里面原因很多。我国的软件行业起步晚,这是一个不争的事实,所以在很多方面没有做到标准化和规范化;除此之外,软件质量低下也是一个重要的原因。计算机和软件行业的发展日新月异,加入WTO后,我国的软件行业面临 前所未有的挑战——如何进一步提升我国软件行业的生产水平和软件质量,与世界接轨?照理说,在这个大背景下,软件测试理应受到越来越多的重视。然而在我国事实真的如此吗?或者说即使很多软件企业有了这样的意识,它们付诸行动了吗?

软件测试工程师市场需求

根据有关职位统计资料显示,在国外大多数软件公司,1个软件开发工程师就需要辅有2个软件测试工程师。目前,软件测试自动化技术在我国则刚刚被少数业内专家所认知,而这方面的专业技术人员在国内更是凤毛麟角。根据对近期网络招聘IT人才情况的了解,许多正在招聘软件测试工程师的企业很少能够在招聘会上顺利招到合适的人才。 随着中国IT行业的发展,产品的质量控制与质量管理正逐渐成为企业生存与发展的核心。从软件、硬件到系统集成,几乎每个中大型IT企业的产品在发布前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业软件人才来完成。而软件测试工程师就是其中之一,目前已成为各类科技企业紧急征召的重要对象。 据了解,由于软件测试工程师处于重要岗位,所以必须具有电子、电机类相关专业知识背景,并且还应有两年以上的实际操作经验。他们应熟悉中国和国际软件测试标准,熟练掌握和操作国际流行的系列软件测试工具,能够承担比较复杂的软件分析、测试、品质管理等任务,并能独立担任测试、品质管理部门的负责人。一般情况,软件测试工程师可分为测试工程师、高级测试工程师和资深测试工程师三个等级。 在具体工作过程中,测试工程师的工作是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。对软件测试工程师而言,必须具有高度的工作责任心和自信心。任何严格的测试必须是一种实事求是的测试,因为它关系到一个产品的质量问题,而测试工程师则是产品出货前的把关人,所以,没有专业的技术水准是无法胜任这项工作的。同时,由于测试工作一般由多个测试工程师共同完成,并且测试部门一般要与其他部门的人员进行较多的沟通,所以要求测试工程师不但要有较强的技术能力而且要有较强的沟通能力 而事实上,在国外许多国家的软件公司,软件测试工作已经逐渐演变成一门独立的科学,包括了配置方案、测试机制、跨平台策略和产品性能、稳定性等独立区域的知识模块。 同时,软件测试员需要参与包括需求分析—设计—编码等所有软件开发环节,尽可能地发现每个环节可能存在的Bug。“这是一个要求非常高的职业。”郑人杰说。因此国外的软件测试工程师基本上都是由从业多年的开发工程师转变而来。 不过,现在软件测试的重要性已经逐渐获得认可。根据51testing提供的一份调查报告,目前近91%的国内软件企业配备了测试队伍,更多的企业通过软件测试来提高自身的软件产品质量。总体上,69%的企业认为通过测试后软件质量得到很好提高。 而所有的招聘网站都开始发布同样的信息:软件测试工程师供不应求,企业招聘不到合格的人才。智联招聘一篇文章称,“从入门级的初级测试工程师到高级测试工程师以及项目Leader全线短缺”。 国家劳动和社会保障部也在3月份发布信息,称未来几年软件测试员这一职位,将会产生大量的市场需求。 国家应用软件产品质量监督检验中心副主任吴铸成告诉记者,国外小一些的软件企业,软件开发与测试人员之比基本上是1:1。微软公司是1:2,windows2000 操作系统在研发过程中甚至使用了250名项目经理、1700名软件开发工程师、3200名软件测试工程师。

软件测试技术发展综述报告

综述报告 报告题目:_软件测试技术发展现状综述__ 学生姓名: 学号:_ _ 专业:软件工程 导师: 2014年3月

软件测试技术发展现况综述 摘要:从世界上第一行程序代码被编制出来,实际上软件测试问题就已经出现了。随着软件复杂度的增加,软件测试的重要性逐渐引起了人们的重视。本文基于此,阐述了计算机软件测试技术的发展历程、国内外软件测试行业发展现状、软件测试的方法和过程以及发展趋势等方面。 关键字:软件测试软件测试技术发展趋势 引言 随着社会的不断进步和计算机科学技术的飞速发展,计算机及软件在国民经济和社会生活等方面的应用越来越广泛和深入。作为计算机的灵魂,软件在其中起着举足轻重的作用。软件的失效有可能造成巨大的经济损失,甚至危机人的生命安全。软件开发的各个阶段都需要人的参与。因为人的工作和通信都不可能完美无缺,出现错误是难免的。与此同时,随着计算机所控制的对象的复杂程度不断提高和软件功能的不断增强,软件的规模也在不断增大。人们在软件的设计阶段所犯的错误是导致软件失效的主要原因。软件复杂性是产生软件缺陷的极重要的根源。 作为软件工程重要组成部分的软件测试是软件质量的有力保证。软件测试对于软件质量的重要意义,不仅仅在于发现软件系统中存在的错误,更体现在经过各种测试技术和方法对软件产品进行测试后,可以提高对软件质量的信心。因为无法预知软件中究竟会有多少错误存在么,所以即使在测试后仍然无法保证软件系统中不在存在错误。但是,通过软件测试,能够对软件系统出错的可能性以及错误可能导致后果的严重程度能有准确的估量。同样,通过测试可以将存在错误的几率限制于可以接受的程度之下。这些都大大提高了软件质量的可靠性,增加了对软件产品的信心,尤其是对于涉及到高安全性、高可靠性的软件系统。 软件测试概述 一、软件测试的定义 对软件测试的定义长期以来就存在着很多不同的观点: 1.网络词典中软件测试被定义为“软件测试是一个过程,用于确定开发的软件系统的正确性,完备性以及软件的质量。实际上,软件测试无法绝对保证软件的正确性,这种保证只能通过形式化的验证来实现。软件测试能够发现错误,却无法证明软件中不再存在错误”。 2.软件测试是对系统或程序的执行以期发现其中的错误。 3.软件测试是任何以衡量程序或系统的属性和能力为目标的活动,并且用以确定这些活动是否得到预期的结果。 4.IEEE提出的软件工程标准术语中,对软件测试的定义为“对软件系统或软件系统组件进行检测和评估的过程,通过人工或自动的方式来验证是否满足了特定的规定和需求,确认实际运行结果与所期望的运行结果之间的差异”。

软件测试国内外发展现状

一、软件测试介绍: 软件测试的必要性已经完全为业内决策人士所接收。这是因为软件工业已经发展到了与其他主要工业相当的规模。经过十几年的发展,少数天才们手工作坊的世界已经转化为大工业生产的天下。由于JAVA的流行,我们更看到了组装生产线的模式。 在工业生产的传统行业里,测试是生产的有机组成环节,各道工序的测试、组装测试、出厂测试及致破坏性试验是生产目的实现的重要保证。 软件测试和硬件测试在实现上没有真正意义上的区别,在虚拟空间上的实现也不是软件测试独有的特征。 软件测试过程的主要部分在于模拟用户对软件产品的使用过程:1、模拟最终用户通过WEB、GUI对软件的使用。(具体软件会有很多功能。另外测试还要模拟用户的误操作,好的软件系统应该能够应付误操作。) 2、模拟用户方操作系统,数据库、网络管理专家对软件进行安装、设置、移植(Installation,Configuration and Migration)。 3、模拟用户方软件程序员应用编程界面调用各种功能。(目前相当多的出厂软件产品不是可执行程序,而是API。) 4、模拟用户对软件使用说明的使用。 软件测试的另一个方面是针对用户在正常使用软件可能遇到的麻烦进行测试、分析(High Avaiablility Test、Performance Test)。 贯穿始终的测试活动则包括软件设计文档评估、测试规划、测试结果报告。 软件测试是软件质量控制(QC,QA)的具体实现环节。把软件测试有效地组织进软件的生产流程,是软件质量控制规划的主要内容。 质量控制是控制的一种;符合控制系统的一般规律。多重小闭环反馈控制是一种控制精度高并且对控制系统各模块品质要求低的一种控制方案。这种控制模式应用到软件生产上,就形成了对软件生产的分阶段测试。它最大限度的减少了开发者个人因素对软件生产的影响。这正是以北美为基地的大多数主要成规模软件生产商所引用的RUP (Rational Unified Process)。 目前市场上流行大量的测试软件,较为有效的主要应用在Unit Test,Intergration Test,Regression Test 和Performance Test 等几个方面。 在Unit Test and Intergration T est 方面,在网络上有免费的“软件测试工具包”可以帮助测试人员结构测试框架,用于测试JAVA API.使用者要求具备WebLogic,Websphere,TomCat或其它WEB 服务器平台软件的知识。 在Regression Test 方面,市场上有众多的capture-playback 类型的测试软件如Win Runner,Rational Robot,Rational JRobot,etc. 这类工具易学易用。要想使用这类工具实现测试目的,使用者依然需要

软件测试的发展的现状与前景

软件测试的发展现状与前景 一、软件开发中出现错误或缺陷的机会越来越多。 市场对软件质量重要性的认识逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。但是,现实情况是,与软件编程比较,软件测试的地位和作用,还没有真正受到重视,对于很多人(甚至是软件项目组的技术人员)还存在对软件测试的认识误区,这进一步影响了软件测试活动开展和真正提高软件测试质量。 (1)误区之一:软件开发完成后进行软件测试 人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。 (2)误区之二:软件发布后如果发现质量问题,那是软件测试人员的错 这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。 (3)误区之三:软件测试要求不高,随便找个人多都行 很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。 (4)误区之四:软件测试是测试人员的事情,与程序员无关 开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。 (5)误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试 这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为

软件测试工程师职业规划及计划

软件测试工程师职业规划及计划软件测试工程师职业规划及计划 由于国内软件测试行业目前的发展迅速、需求旺盛,在国内的软件测试职位晋升一般要比国外快,但因行业本身太年轻,大家对软件测试中软件测试职业的发展了解不够,从而导致许多有志在此发展的年轻人举步不前。所以下面介绍一下海外公司成熟的软件测试行业职位分布情况,我国一些在软件测试行业中处于前端的公司与之也相仿,这可以作为软件测试职业规划的参考,给新人一个导向。 第一阶段:(测试员)初级测试工程师 自身条件:初入行具备计算机专业学位或一些手工测试经验的个人。 具体工作:执行测试用例,记录bug,并回归测试,通过qtp等测试工具录制回归测试脚本,并执行回归测试脚本。 学习方向:开发测试脚本并且开始熟悉测试生存周期和测试技术。 第二阶段:(测试工程师)程序分析员 自身条件:有1~2年工作经验的测试工程师或程序员。具有初步的自动化测试能力,完善自动化测试脚本软件测试工程师职业规划及计划。 具体工作:设计和编写测试用例,编写自动测试脚本程序且担任测试编程初期的领导工作。

学习方向:拓展编程语言、操作系统、网络与数据库方面的技能。 第三阶段:(高级测试工程师)程序分析员 自身条件:有3~4年经验的测试工程师或程序员。具有一定的行业业务知识,储备系统分析员的能力软件测试工程师职业规划及计划。 具体工作:帮助开发或维护测试或编程标准与过程,分析软件需求,获得测试需求。确定测试需求相应的测试方法,获得测试策略方案。参与同行的评审(软件需求,软件测试计划等),并为其它初级的测试工程师或程序员充当顾问。 学习方向:继续拓展编程语言、操作系统、网络与数据库方面的技能。 第四阶段:测试组负责人 自身条件:有4~6年经验的测试工程师或程序员具有丰富的行业业务知识,具有系统分析员的能力,专长性能测试软件测试工程师职业规划及计划。 具体工作:负责管理1~3名测试工程师或程序员。集中于技能方面,担负一些进度安排和工作规模/成本估算职责。分析性能瓶颈的原因,为开发团队提供bug解决策略。 学习方向:性能测试,测试技能 第五阶段:(资深安全或性能测试工程师)测试/编程高级负责人

对软件测试的认识及未来的发展

软 件 测 试 课 程 论 文 对软件测试的认识及未来的发展

对软件测试的认识及未来的发展 一、软件测试的定义 经过了多年软件开发实践,软件测试的重要意义逐渐被人们普遍认识。然而究竟什么是软件测试,这一基本概念很长时间以来存在着不同的观点。1973年W.Hetzel曾经指出,测试是对程序或系统能否完成特定任务建立信心的过程。1983年IEEE提出的软件工程标准术语中给软件测试下的定义是:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”G.J.Myers则持另外观点,他认为:“程序测试是为了发现错误而执行程序的过程。”至今,对于软件测试所有定义中比较完善的是软件测试是分析某个软件项以发现显存和需要的条件之差别并评价此软件的特性。 二、软件测试的基本原则 Bill Hetzel在他的《The Complete Guide to Software Testing》一书中讲述了六条原则。所谓测试的原则就是测试过程中内部规律的具体体现,是已经被公认的。这些原则可以帮助我们理解测试的意义。 原则1:穷尽测试是不可能的。 原则2:测试工作具有创造性但很困难。 原则3:测试旨在防止错误的发生。 原则4:测试是有风险的。 原则5:测试需要有计划性。 原则6:测试需要有独立性。 三、软件测试的分类 从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。 1、要执行被测软件的角度 按是否需要执行被测软件的角度,可分为静态测试和动态测试。 静态测试是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。其中包括代码测试、界面测试和文档测试3个方面。对于代码测试,主要测试代码是否符合相应的标准和规范。对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。对于文档测试,主要测试用户手册和需求说明是否符合用户的实际要求。 动态测试是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。 所以,我们判断一个测试属于动态还是静态测试,唯一的标准就是看是否运行程序。 2、按阶段划分:

《软件测试技术基础教程》习题解答

第一章软件测试理论 一、选择题 1. 软件测试的目的是 C 。 A.表明软件的正确性B.评价软件质量 C.尽可能发现软件中的错误D.判定软件是否合格 2. 下面关于软件测试的说法, A 是错误的。 A.软件测试是程序测试 B.软件测试贯穿于软件定义和开发的整个期间 C.需求规格说明、设计规格说明都是软件测试的对象 D.程序是软件测试的对象 机进行的,大多数测试的目的是为了证明系统可以正常运行。 到了20世纪70年代以后,很多测试理论和测试方法应运而生,逐渐形成了一套完整的体系。在产业界,从20世纪70年代后期到20世纪80年代中期,很多软件企业成立了QA 或者SQA部门。后来QA的职能转变为流程监控(包括监控测试流程),而测试(Testing)则从QA中分离出来成为独立的组织职能。 到了20世纪80年代初期,一些软件测试的基础理论和实用技术开始形成,软件测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容。软件测试已有了行业标准(IEEE/ANSI )。 在我国,软件测试目前还没有形成一个真正的产业,尚处于起步阶段。 但是,在国内,现在在软件测试行业中各种软件测试的方法、技术和标准都还在探索阶

段。 总之,国内软件测试行业与一些发达国家相比还存在一定的差距。 2. 简述软件缺陷在不同阶段发现错误修复的费用。 参考答案: 软件缺陷造成的修复费用随着时间的推移呈指数级地增长,如下图所示。 3.简述软件测试的复杂性。 参考答案: 软件测试的复杂性体现在: ?不可能对程序实现完全测试。 ?杀虫剂现象,即为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各个部分进行不断测试,以避免被测试软件对单一的测试程序具有 免疫力而使软件缺陷不被发现。 ?软件测试的代价不容易掌握,因为随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷数量降低到某一数值之后将没有明显的变化,寻求最优测试点,掌握好 测试工作量是至关重要的。 ?在实际操作过程中,测试人员要进行正确的判断,合理的取舍,根据风险分析来决定哪些故障需要修复,哪些故障可以不修复,即并不是所有的软件缺陷都需要被修 复。 4.对软件测试的经济性进行总结和分析 参考答案: 软件测试是软件生命期中费用消耗最大的环节。测试费用除了测试的直接消耗外,还包括其他的相关费用。影响测试费用的主要因素有: (1)软件的功能,软件产品需要达到的标准决定了测试的数量。对于那些至关重要的系统必须进行更多的测试。 (2)目标用户的数量,一个系统的目标用户数量的多少也在很大程度上影响了测试必要性的程度。 (3)潜在缺陷造成的影响 在考虑测试的必要性时,还需要将系统中所包含的信息价值考虑在内。因此我们应该从经济方面考虑,投入与经济价值相对应的时间和金钱去进行测试。 (4)开发机构的业务能力 一个没有标准和缺少经验的开发机构很可能会开发出充满错误的软件系统。而一个建立了标准和有很多经验的开发机构开发出来的软件系统中的错误将会少很多。 (5)测试的时机

浅谈软件测试行业的现状和前景

浅谈软件测试行业的现状和前景 摘要:软件测试在整个软件开发中占据了一半或一半以上的工作量,而且具有很高的组织管理和技术难度。搞好软件测试,是保证软件质量的关键步骤,是分析软件可靠性的重要依据。 关键词:软件测试;背景;行业现状;前景; 随着信息技术的发展与普及,人们在不同的场合都有可能会使用软件,如计算机、打印机、手机、银行等。但在使用软件的过程中,软件的效果却不尽人意。为了确保软件的质量,整个软件测试业界已经逐渐认识到测试的重要性,软件测试已经成为IT领域的黄金职业。 一、软件测试背景 (一)软件测试的起源 1961年,一个简单的软件错误导致美国大力神洲际导弹助推器的毁灭。这个简单但是昂贵的错误,致使美国空军强制要求在以后所有的关键发射任务中,都必须进行独立的验证,从此建立了软件的验证和确认方法论。软件测试也从那时候开始兴起。 (二)软件测试的基本情况 “现阶段,我国软件测试基础人才不足,已成为制约我国软件产业发展的瓶颈。”中国软件协会秘书长胡昆山说。据国家权威部门统计,中国软件测试人才缺口高达30多万,并且仍在以每年20%的速度增加。但由于软件测试的重要性是近两年才被充分认识到的,高校教育和企业培养都还没有跟上,致使软件测试人才的极度匮乏,出现跑步上岗、快速提升的状态。 在我国,软件产业的兴起和发展处于“婴儿”阶段。国内公司都只注重软件开发,而认为软件测试不重要,没什么技术含量,找一些用户,对照需求尽力去测试就行了,不考虑软件的整体性能和功能,导致软件测试以往一直被中小型IT企业所忽视。随着软件的市场的扩大,更多的国内企业也开始认识到软件测试的重要性,但是由于国内测试人才的储备相对较少,也没有人确切地知道它应该怎样发展,所以,软件外包已成为国内软件产业发展的一个重要趋势。 二、软件测试行业现状 在国内,虽然软件测试处于起步阶段,发展不如想象中的那么好,但是前景是光明的,因为软件测试开始得到越来越多人的重视,像测试培训机构、各种软件测试网站的增多,软件市场的扩大,软件测试已成为IT中的一个重要行业。 (一)软件测试规范性和重要性不断提高 工业和信息化部软件与集成电路促进中心主任助理刘龙庚在接受CSIP网站采访时说:政府主管部门很重视软件产品的质量,2001年信息产业部发布的部长5号令,实行了软件产品登记制度,规定凡是在我国境内销售的产品必须到信息产业部备案登记,而且要经过登记测试。同年起,国家质检总局和信息产业部每年都通过测试对软件产品进行质量监督抽查。国家人事部和信息产业部2003年关于职业资格认证第一次在我国有了“软件评测师”的称号,这是国家对于软件产品质量以及保障软件产品质量的软件测试职业的高度重视与认可。也就是说,在国家的政策与各部门的大力支持下,我国的软件产品会更加合法化,对软件测试的重视性也与日俱增。 (二)国内测试行业现状 关于国内软件测试的现状,2011年4月发布的《2007年度软件测试行业专项调查报告》中,有几个数据表明软件测试受到越来越多企业的重视。 1.软件测试重要性。调查结果表明, 68.2%的企业认为软件测试非常重要,必须设立专门的测试部门,与开发有同等重要的地位;31.8%的企业认为软件测试比较重要,而认为软件

软件测试求职简历

软件测试求职简历 基本资料 姓名: 性别:女 年龄:23 婚姻状况:未婚 籍贯:南京 现所在地:南京 求职意向 工作经验:应届毕业生 意向岗位:软件测试工程师/测试员;网页设计与制作 求职类型:全职 期望月薪:2001~4000元 到岗时间:随时到岗 期望工作地点:南京 从事行业:计算机业、互联网、电子商务;政府公用事业、社区服务;金融业(投资、保险、证券、银行、基金) 自我评价 1、天性乐观。开朗。好动。随和,善于交际与各类人士能和睦相处。

2、做事认真。负责。细致,很强的观察分析水平,自我独立解决 问题水平强。 3、接受水平和适合水平强,好学上进,自信不怕困难,勇于挑战! 4、良好的团队合作精神! 期望在工作中持续学习进取,努力创造价值,与企业共同成长。 诚恳的希望能给我机会,本人将会尽心尽职的发挥特长为公司的发展 做出贡献,用认真踏实的态度来证明自己 教育经历 2021年9~2021年7南京理工大学 专业:计算机科学与技术 学历:本科 获得证书:三等奖学金,英语四级 课程描述: C语言程序设计、C++程序设计、JAVA程序设计、数据库系统、计 算机操作系统、LINUX操作系统原理与应用、嵌入式系统原理及接口技术、Android应用程序开发、计算机网络、TCP/IP网络与协议、计算 机组成原理、微机原理与接口技术、Web数据库、网络编程与开发技术、汇编语言、实用软件工程、计算机网络安全等等。 工作经验 ××××计算机公司(2021年11月~2021年5月) 公司性质:私营企业 行业类别:计算机行业 担任职位:软件测试员

工作描述:公司软件测试 语言水平 语言类别:英语:一般 项目经验 网上购书系统(2021年8月~2021年9月) 开发工具:Myeclipse+oracle+HTML 项目描述:就是类似淘宝网的一家小店铺,有卖家和卖家两种用 户登入,实现了基本的增、删、改、查,买家能够实行对图书的购买。 责任描述:主要负责界面的美化和软件的测试。 图书馆管理系统(2021年5月~2021年6月) 开发工具:Dephi7MySQL 项目描述:图书馆管理系统分为两种用户管理员和读者,管理员 能够对图书实行增、删、改、查,也能够对读者的信息实行增、删、改、查,其中还增加了订购图书和验收的功能!读者能够查看自己的 信息并能够修改自己的密码,读者能够查看自己所借过得书和图书馆 所拥有的书,我还对读者借书实行了一定的限制,比如读者最多能借 五本,卡上的余额不足不能再实行借书。 责任描述:基本上除了部分代码,其他都是在责任范围 基于Android无线点餐系统的设计与实现(2021年11月~2021年 5月) 开发工具:Eclipse+MyEclipse+MySQL 项目描述:(1)系统登录功能。 (2)菜单管理。

相关主题
文本预览
相关文档 最新文档