基于白盒测试的软件测试技术开发 毕业论文.doc

上传人:椰子壳 文档编号:3922531 上传时间:2019-10-10 格式:DOC 页数:86 大小:1.21MB
返回 下载 相关 举报
基于白盒测试的软件测试技术开发 毕业论文.doc_第1页
第1页 / 共86页
基于白盒测试的软件测试技术开发 毕业论文.doc_第2页
第2页 / 共86页
基于白盒测试的软件测试技术开发 毕业论文.doc_第3页
第3页 / 共86页
基于白盒测试的软件测试技术开发 毕业论文.doc_第4页
第4页 / 共86页
基于白盒测试的软件测试技术开发 毕业论文.doc_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《基于白盒测试的软件测试技术开发 毕业论文.doc》由会员分享,可在线阅读,更多相关《基于白盒测试的软件测试技术开发 毕业论文.doc(86页珍藏版)》请在三一文库上搜索。

1、 毕业设计(论文)中文题目:基于白盒测试的软件测试技术开发 英文题目: Software Testing Technology Development Based on White-Box Testing 学 院:计算机学院专 业:计算机科学与技术学生姓名:XXX学 号:*指导教师:XXX 2011 年 6 月 1 日 题 目: 基于白盒测试的软件测试技术开发 . 适合专业: 计算机科学与技术 .指导教师(签名): 提交日期: 年 月 日学院: 计算机与信息技术学院 专业: 计算机科学与技术 . 学生姓名: XXX 学号: * .毕业设计(论文)基本内容和要求:填写说明:要求学生完成的略微细化

2、的研究内容、技术指标、基本要求等。一 研究内容本毕业设计主要是针对白盒测试的单元测试的技术开发,运用Eclipse平台上的JUnit单元测试框架,来研究如何编写单元测试用例,熟练掌握并使用运用Eclipse工具进行测试,并且把测试自动化。二 技术指标1.单元测试技术的研究2.理解JUnit内部工作原理3.掌握JUnit特性三 基本要求1. 了解软件测试具体内容2. 对完整的程序进行完全的单元测试3. 学会如何编写测试用例 毕业设计(论文)重点研究的问题:填写说明:可以是重点研究问题的简单罗列。重点研究问题:1. 软件测试的不同种类测试2. JUnit完整生命周期3. 引入组件4. 测试异常处理

3、5. 实际单元测试测试项目参与毕业设计(论文)应完成的工作:填写说明:是指学校规定的外文翻译及摘要、论文字数及规范化等要求以外,学生应该做的工作和提交的成果,包括查阅文献数量的要求、调研与调研报告、设计图纸、说明书、实验及实验报告、计算机软件、硬件电路等方面应该做的工作和要求。应完成的工作:1. 熟练掌握Java2. 学习软件单元测试的相关理论知识3. 充分调研和查阅各种有关软件测试和JUnit的文献。4. 学习如何编写测试用例,完成单元测试案例集和单元测试报告。参考资料推荐:填写说明:要求学生查阅资料的范围(是否指定由指导教师确定),必须遵照的国家标准,教师认为需要指定的参考资料。1. Sh

4、adi G. Alawneh, Dennis K. Peters:Specifications-Based Test Oracle with JUnit.2. Shadi G. Alawneh, B. Eng.: Test-Driven Development with Oracles and Formal Specifications.3.Vincent Massol : JUnit IN ACTION其他要说明的问题:4 按题 目: 基于白盒测试的软件测试技术开发 . 学院: 计算机信息与技术学院 专业: 计算机科学与技术 . 学生姓名: XXX 学号: * . 文献综述:填写说明:指根据

5、研究内容查阅大量的参考文献,通过文献的阅读写清该课题内容的国内外研究现状、基本研究方法、当前存在的问题、发展动向,进而引出开展本设计(论文)研究的内容、意义、必要性和价值等(页面大小可以根据字数多少调整)。一 国内外研究现状至今为止计算机系统已经经历了4个不同的发展阶段,但是人们仍然没有彻底摆脱软件危机的困扰,软件已经成为限制计算机系统发展的瓶颈。为了更有效地开发与维护软件,软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了计算机软件工程学。任何工程方法都必须以有组织的质量保证为基础,而软件开发过程中的测试则是软件工程中重要的质量控制手段之一。软件测试在软件的生命周

6、期中占据重要的地位,在传统的软件开发模式瀑布模型中软件测试在软件运行维护阶段之前。近来软件工程界渐渐的出现了一种新的观点,认为软件生命周期中每一个阶段都应该包含软件测试,尽早的发现软件缺陷并确保其得以修复。在软件比较发达的国家里,软件测试不仅早已成为软件开发的一个有机组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。以美国的软件开发和生产的平均资金投入为例,通常是:“需求分析”和“规划确定”各占3%,“设计”占5%,“测试”占15%,“投产和维护”占67%。测试在软件开发中的地位,由此可见一斑。1.国外现状与此同步的是,软件测试市场已成为软件产业中一个独特的时常。在美国硅谷地区,凡是

7、软件开发企业或是设有软件开发部门的公司,都有专门的软件测试单位,其中软件测试人员的数量相当于软件开发工程师的3/4。在这些公司或部门中,负责软件测试的质量保证经理的职位与软件开发的主管往往是平行的。据了解,在软件产业发展较快的印度,软件测试在软件企业中同样具有举足轻重的地位。(1) 美国软件业依然保持着依靠软件产品统治软件业发展的传统。毋容置疑, 在以操作系统工程、数据库为代表的基础软件层次,美国几乎垄断了全球的软件市场。而如今全球软件业发展到以网络互联、企业级应用、中间件为代表的新的时代,美国依然保持着行业领先位置。(2) 对美国来说,软件工厂的概念已经完全行程,以CMM为标志的适应大规模生

8、产的软件流程管理体系与质量管理体系已经非常完备,使软件行业真正成为制造业。几百名软件工程师有机地组织在一起为一个产品协同工作的事例已经非常普遍。2.国内现状目前,国内软件测试市场表现实在令人担忧。中国市场中的软件开发公司比比皆是,但软件测试公司则如凤毛麟角。主要是我国的软件测试技术的研究橡胶国外要晚,无论是在软件测试理论研究还是在软件实践上,和国外发达国家都有不少的差距。另外,软件开发企业在为软件开发支付费用后,就不希望再为软件的测试支付新的成本,而项目甲方则往往认为开发合格的软件是软件开发企业的责任。即使有些项目的开发方或委托方有意对软件进行第三方测试,也会考虑到在测试过程中往往需要软件开发

9、商提供源代码,担心其知识产权遭到侵犯。这是软件测试时常无法长大的一个重要原因。另外,软件开发企业严重缺乏专业的软件测试力量也是因素之一。二 基本研究方法软件测试是一个复杂的过程,通常包括以下的基本测试活动:(1)拟定软件测试计划:就是确定主要的目标、测试范围、系统功能和非功能性需求、测试环境、测试自动控制、测试结果分析计划、问题解决方案与报告计划、测试重用计划、系统恢复计划、活动时间表、测试结束标准。(2)编制软件测试大纲:它是软件测试的依据,明确详尽地规定了在软件测试中针对系统的每一项功能或特性所必须完成的基本测试项和测试完成的标准。(3)设计和生成测试用例:一般而言,测试用例是指为实施一次

10、测试而向被测系统提供的输入数据、操作或各种环境设置以及被测系统的期望输出。测试用例控制着软件测试的执行过程,它是对软件测试大纲中每一个测试项的进一步实例化。(4)实施测试:软件测试的实施阶段由一系列测试周期组成,在每个测试周期中,软件测试工程师将根据预先编制好的测试大纲和准备好的测试用例,通过执行被测软件,对其进行测试。(5)分析测试结果:在执行软件测试的过程中,收集通过与未通过的测试用例。后者将触发纠错过程。测试与纠错通常是反复交替进行的,当时用专业测试人员时,测试与纠错甚至是平行进行的,从而压缩总的开发时间,测试结果分析可生成软件问题报告供有关人员参考或作进一步分析。三 当前的问题和发展动

11、向国际的测试领域已基本成熟,而我国的测试领域才刚刚开始。我们有很多的东西要去学习。如何更好地将软件项目管理和软件质量保障(软件测试)结合起来,让项目管理带动软件测试业的发展和成熟,应该是项目管理中不可缺少的一部分。当今快速发展的企业信息化进程导致软件测试面临复杂性、协调性和变化3个方面的技术挑战,同时对测试人员综合素质的要求也在不断提高。软件测试面临着技术发展的挑战与测试工程师素质的挑战。四 研究的内容、意义、必要性和价值软件测试在软件开发过程中变得越来越重要。为了适应开发技术的发展以及开发效率的需要,自动化测试已逐渐称谓测试的发展方向。本次选题是为了充分掌握测试方面的知识,通过对面向对象技术

12、的分析,将自动化测试的原理和方法与测试的实践联系起来,在项目中使用自动化测试技术以缩短项目开发周期,提高软件的质量。单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与其他部分隔离的情况下进行测试。单元测试的主要目的是验证代码实现人所书写的编码是依据其所设想的方式执行而产出符合预期值的结果。将自动化的技术引入到单元测试之中来,自动单元测试通过提供测试用例的自动回放、比较等机制,实现单元测试的批量自动运行。使用自动化技术能够大大的降低开发的时间和人力成本。JUnit是一个开源的java测试框架,它是XUint测试体系架构的一种实现。在JUnit单元测试框架

13、的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。所以这些目的也为什么使用模式的根本原因。主要参考文献:填写说明:指从开题到撰写文献综述期间所阅读过的所有文献资料的列表,要按照参考文献的标准写法列出,即写明作者、论文题目(书名)、杂志名称(出版社)、发表(出版)时间等(页面大小可以根据字数多少调整)。1. 郁莲。软件测试方法与实践。清华大学出版社。2008,11。2. 王东刚。软件测试与JUnit实践。人民邮电出版社.2004,1。3. Vincent Massol。

14、JUnit IN ACTION(中文版)。电子工业出版社。2005,1。4. 耿祥义。JAVA2实用教程(第三版)。清华大学出版社。2006,8。5. 李英军译。设计模式:可复用面向对象软件的基础。机械工业出版社。2000,9。6. 阎宏。JAVA与模式。电子工业出版社。2002,10。7. 单元测试。程序员。2002年7期。8. 刘兵。JUnit设计模式分析。程序员。2003年6期。9. 隋智泉。一种改进的单元测试JUnit框架。开发研究与设计。2007。10. 高如莎。一种软件单元测试策略。专题技术与工程应用。2007,37。11. 陈计喜,姜丽红。自动化功能测试的方法与实现。计算机工程。

15、2004,168-169。12. PARTUM. From Regression Testing to Regression Benchmarking.13. Shadi G. Alawneh, Dennis K. Peters:Specifications-Based Test Oracle with JUnit.14. Shadi G. Alawneh, B. Eng.:Test-Driven Development with Oracles and Formal Specifications.15. Garlan D, Perry D E:Introduction to the Spec

16、ial Issue on Software Architecture IEEE Transactions on Software Engineering.1995,269-274.16. Kaner, Cem, Bach, James etal: Lessons Learned in Software Testing.John Wiley&Sons.2001.17. JACOBSONV C, CONTROL. America Computer Communication Review. Beijing: Publish House of Electronics Industry.200318.

17、 MCCONNELLS:Software Project Survival Guide. Microsoft Press.1998,5.19. MCCONNELL S:Best Practices Daily Build and Smoke Test. IEEE Software.20. CRMK: Improving the Maintainability of Automated Test Suites.21. Kent Beck: Extreme programming explained.研究方案:填写说明:写明研究所用的理论基础、研究方法、研究步骤、预期成果(效果)等。(页面大小可以

18、根据字数多少调整)软件测试在软件生命周期中占有重要地位,这一点被越来越多的软件研发机构认识到。软件测试作为软件质量保证的重要手段之一,随着面向对象技术的出现,传统的测试理论和方法早已不能满足新技术的需要。随着软件规模以及复杂度的提升,测试的工作复杂度和强度也在不断的提升。面对这些问题,软件工作者将自动化技术引入到面向对象的单元测试之中,以此来提高软件测试的质量和效率。在软件生命周期中,测试工作量会占到整个开发周期的40%到60%,可见一种高效率、高质量的测试方法对软件开发来说是多么的重要。软件测试一般分为手工测试和自动测试,软件自动测试技术是当前软件界的研究热点之一。我国软件自动化测试的研究尚

19、未完善,因此对软件自动化测试的研究和应用具有十分重要的研究和使用价值。毕业设计(论文)进度安排:序号毕业设计(论文)各阶段内容时间安排备注1.调研和查阅各种有关软件测试和JUnit的文献03.01-03.102.研究白盒测试技术以及白盒测试现状03.11-03.203.学习基于JAVA的单元测试框架JUnit03.21-04.044.学习JAVA编程,编写各类算法,应用JUnit测试分析算法的性能04.04-04.205.在公司实习参与项目中的单元测试04.21-5.206.撰写毕业论文05.21-6.1指导教师意见:填写说明:查阅资料是否全面,提出的研究方案和计划进度是否可行,还有什么需要注

20、意和改进的方面,是否同意按学生提出的计划进行等。指导教师签名: 审核日期: 年 月 日7中文摘要 随着计算机所控制的对象复杂度不断提高和软件功能的不断加强,软件的规模也在不断的增大。为了保证所提交的软件产品能够满足客户的需求,以及软件的可靠性,必须对所开发的软件产品进行系统而全面的测试。白盒测试也称结构测试或逻辑驱动测试。它是基于分析程序内部如何工作和分析程序的结构的一种测试。白盒测试的相关技术有分支覆盖、路径覆盖等。它和黑盒测试是相对应的。本设计主要是应用Eclipse平台中的JUnit,进行软件测试中的单元测试。通过学习软件测试的基本理论,在分析实际测试需求的基础上,对项目磁浮列车运行控制

21、系统中的区域控制软件(MATC_ZC)中的部分模块进行单元测试。使用该测试系统解决了磁浮列车运行控制系统中的区域控制软件中单元测试,实现了测试的自动化。关键词:自动化测试 JUnit 白盒测试1AbstractThe scope of software has been enlarging as the controlled objects of computer become more complicated and software function is continually enhanced. Thus, the developed soft ware products must b

22、e systematically and thoroughly tested so as to ensure its reliability and satisfy customers.White-box testing, also known as structural testing or logical drive test, Testing based on an analysis of internal workings and structure of a piece of software. Includes techniques such as Branch Testing a

23、nd Path Testing. Contrast with Black Box Testing.This design is mainly applied in JUnit of the Eclipse platform, for unit testing in software testing. By learning the basic theory of software testing, requirements analysis, the problem of unit test in the project Maglev Automatic Train Control softw

24、are (MATC_ZC) can be solved and test efficiency improvement.Key words:Automated test JUnit White-box testing1 目 录目 录1第一章 绪论41.1 论文选题背景和意义41.2 任务概述51.3 论文的内容安排6第二章 软件测试概述72.1 软件测试定义72.2 软件测试模型82.2.1 瀑布模型82.2.2 V模型102.2.3 V&V模型112.3 软件测试基本方法122.3.1 黑盒测试122.3.2 白盒测试132.3.3 灰盒测试142.4 软件测试的阶段152.4.1 单元测试

25、152.4.2 集成测试172.4.3 系统测试172.4.4 验收测试182.5 测试用例18第三章 JUnit框架213.1 单元测试框架213.1.1 测试的自动化213.1.2 测试驱动开发233.2 JUnit简介243.2.1 JUnit单元测试的优点243.2.2 JUnit核心类25第四章 基于JUnit自动化测试294.1 MATC_ZC项目简介294.2 单元测试技术314.2.1 边界值测试324.2.2 等价类测试324.2.3 错误推测法324.2.4 逻辑覆盖法334.3 自动化测试流程334.4 单元测试流程354.4.1 前期准备354.4.2 编写测试案例集4

26、14.4.3 执行测试434.4.4 测试报告文档填写454.5 测试总结474.5.1 测试运行过程的观看474.5.2 略过一个测试484.5.3 让JUnit创建Test Suite484.5.4 测试一个没有返回值的方法49第五章 总结51致 谢52参考文献53附 录55附录1 英文原文55附录2 翻译67第一章 绪论1.1 论文选题背景和意义在高度信息化的今天,信息技术已经成为社会发展的第一生产力,软件则是信息技术中最重要的组成部分。近年来,软件产业在很多国家都成为了国民经济的主导产业。但随着软件的规模和复杂性的大幅度提升,软件不可靠性的矛盾也变得日益突出,因此如何保证软件的质量成为

27、了必须解决的问题。在过去,由于需求和认识等方面的原因,更多的人只是关注软件开发,而软件测试一直没有得到足够的重视,发展比较缓慢。随着软件质量保证理论与技术的快速发展,软件测试逐渐受到越来越多的重视,并正在形成一种产业,从业人员的数量也在大幅度增加。目前,国内软件测试市场表现实在令人担忧。中国市场中的软件开发公司比比皆是,但软件测试公司则如凤毛麟角。主要是我国的软件测试技术的研究橡胶国外要晚,无论是在软件测试理论研究还是在软件实践上,和国外发达国家都有不少的差距。另外,软件开发企业在为软件开发支付费用后,就不希望再为软件的测试支付新的成本,而项目甲方则往往认为开发合格的软件是软件开发企业的责任。

28、即使有些项目的开发方或委托方有意对软件进行第三方测试,也会考虑到在测试过程中往往需要软件开发商提供源代码,担心其知识产权遭到侵犯。这是软件测试时常无法长大的一个重要原因。另外,软件开发企业严重缺乏专业的软件测试力量也是因素之一。随着信息技术的快速发展,软件测试工作也变得越来越繁重,如果测试工作人员仍然使用传统单一的手工测试方法,将很难保证测试工作的进展和效率。传统的手工测试方法面临着巨大的挑战,应用自动测试工具将是一种必然的趋势。通过使用自动化测试工具,测试人员只要根据测试需求完成测试过程中锁需要的行为,由自动化测试工具自动生成测试脚本,通过对测试脚本的简单修改,便可以用于以后类似功能的测试。

29、本次选题是为了充分掌握测试方面的知识,将自动化测试框架技术的原理、方法与实践相结合起来,在项目中使用自动化测试技术以缩短项目的开发周期,提高软件测试的效率。1.2 任务概述本毕业设计主要包括了基本理论知识的学习和实践两部分,在理论指导的实践下进行项目的单元测试实践。起初的阶段要学习有关Java,软件工程,软件测试等方面的知识,主要学习白盒测试和单元测试的相关理论知识。在学习了相关知识后,进行JUnit软件的使用,熟练了软件的操作后,我在实习公司参与了项目磁浮列车运行控制系统中的区域控制软件(MATC_ZC_PC5260)的单元测试部分,对该软件的部分模块(总计3817行)代码进行单元测试。在实

30、习过程中,参与了航天软件测评中心的培训,并且为了能够负责的独立完成MATC的测试,学习了很多有关列车控制方面的知识。1.3 论文的内容安排第一章 绪论。针对软件测试自动化进行介绍,由此引出选题背景及意义。第二章 软件测试概述。主要大致介绍了软件测试的相关理论知识,先介绍了软件测试的模型,然后说明了软件测试的基本方法和阶段。第三章 JUnit框架。 详细介绍了JUnit自动化框架的基本知识。第四章 基于JUnit自动化测试。 针对在实习过程中参与的项目MATC_ZC,设计测试用例,列举了测试流程,并在最后总结了测试技术和经验。第五章 结论。该章为全文总结部分。第二章 软件测试概述2.1 软件测试

31、定义软件测试在软件开发过程中,是一个重要的组成部分。软件测试用来确认一个程序的品质,以及软件的性能是否复合开发前所提出的要求。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终评审,是保证软件质量的关键步骤。G.J.M Grenford J.Myers在The Art of Software Testing一书中给出了软件测试的经典定义:1) 软件测试是为了发现错误而执行程序的过程;2) 测试是为了检验出程序中的错误或缺陷,而不是证明程序无错;3) 一个好的测试用例是在于它能发现至今为止尚未发现的错误;4) 一个成功的测试是发现了至今为止尚未发现的错误;在IEEE标准610.

32、12(1990)给出了2个更为规范、约束的测试定义:1) 在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价;2) 分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价这个软件项的特性;IEEE 610.12标准的定义拓展了Myers的定义。IEEE 610.12标准的定义2)并不要求运行程序作为测试过程的一部分,静态验证的一些方法可作为测试手段。定义1)被称为动态测试,而定义2)被称为静态测试。软件是由文档、数据以及程序等部分组成,软件测试应该对于软件形成过程的文档、数据,以及程序进行测试。定义2)的技术可以应用于非程序的部分。2.2 软件测试模型2.2.1 瀑布

33、模型瀑布模型是1970年由温斯顿罗伊斯(Winston Royce)提出的,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落,如下图2.1。可行性研究与计划设计需求分析编码测试运行维护图2.1瀑布模型为项目提供了按阶段划分的检查点,当前一阶段完成后,只需要去关注后续阶段,并且可以在迭代模型中应用瀑布模型

34、。但是瀑布模型依赖于早期进行的唯一的一次需求调查,不能适应需求的变化,由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程,风险往往会在后期的开发阶段才显露出来,因而失去及时纠正的机会。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果通过,则结果作为下一项活动输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,不适合现代的软件开发模式,几乎被抛弃,其主要问题在于:1) 各个阶段的划分完全固定,增加了工作量,开发模型是

35、线性的,用户等到整个过程的末期才能见到成果,增加了开发的风险;2) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。2.2.2 V模型V模型是最具有代表性的测试模型。V模型最早是由Paul Rook在20世纪80年代后期提出的,V模型在英国国家计算中心文献中发布,旨在改进软件开发的效率和效果。V模型是瀑布模型的变种,它反映了测试活动与分析和设计的关系,如下图2.2。验收测试需求分析系统测试规格说明书书集成测试概要设计单元测试程序设计编码图2.2在传统开发模型中,比如瀑布模型,通常把测试过程作为在需求分析、概要设计、详细设计和编码全部完成之后的一个阶段,尽管有时测试工作会占用

36、整个项目周期一半的时间,但仍认为测试只是收尾。V模型的局限性是,它把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现。优点是,它强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试。2.2.3 V&V模型用户需求V&V验收测试准备V&V模型由Evolutif公司提出,解决了V模型的不足。相对于V模型,增加了软件各开发阶段中应同步进行的验证和确认活动。模型由两个V字型模型组成,分别代表测试与开发过程,如下图2.3。交付用户需求需求分析与设计V&V系统测试准备验收测试实施需求

37、分析与系统设计系统测试集成集成测试概要设计V&V集成测试准备概要设计详细设计单元测试编码图2.3W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。如果测试文档能尽早提交,那么就有了更多的检查和检阅的时间,这些文档还可用于评估开发文档。另外还有一个很大的益处是,测试者可以在项目中尽可能早地

38、面对规格说明书中的挑战。这意味着测试不仅仅是评定软件的质量,还可以尽可能早地找出缺陷所在,从而帮助改进项目内部的质量。参与前期工作的测试者可以预先估计问题和难度,这将可以显著地减少总体测试时间,加快项目进度。根据W模型的要求,一旦有文档提供,就要及时确定测试条件,以及编写测试用例,这些工作对测试的各级别都有意义。当需求被提交后,就需要确定高级别的测试用例来测试这些需求。当概要设计编写完成后,就需要确定测试条件来查找该阶段的设计缺陷。2.3 软件测试基本方法2.3.1 黑盒测试黑盒测试注重测试软件的功能性需求,即黑盒测试需要软件工程师输入条件集来检测程序所有功能需求。黑盒测试不是白盒测试的替代品

39、,而是配合白盒测试发现其他类型的错误。黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可

40、能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。2.3.2 白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。“白盒”法全面了解程序内部逻辑结构、对所有逻

41、辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。2.3.3 灰盒测试灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出

42、是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。灰盒测试结合了白盒测试和黑盒测试的要素.它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。灰盒测试是由方法和工具组成,这些方法和工具取材于应用程序的内部知识盒与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在测试人员视野之外的信息设计测试。2.4 软件测试的阶段分阶段测试是一种基本的测试策略。最初,测试着重于每一个单独的模块,以确保每一个模块都能正确执行,

43、因此称为单元测试。单元测试大量使用白盒测试技术,检查每一个控制结构的分支以确保完全覆盖和最大可能的错误检查。接下来,模块必须装配火集成在一起形成完整的软件包,集成测试解决的是功能验证与程序构造的双重问题。在软件集成完成之后,一系列高级测试就开始了。从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试和验收测试。下面以本次选题主要设计的单元测试,为主要介绍对象。2.4.1 单元测试单元测试是对最小的软件设计单元(模块或源程序单元)的验证工作。从更专业的角度看,应该是把一个单元理解成一个应用程序中最小的可测部分。在面向过程的设计(Procedural Design)中,一个单元是一

44、个是单独的程序、函数、过程。而在面向对象的设计(Object Oriented Design)中,最小的单元永远是类,可能是基/父类、抽象类或派生/子类。本次选题就是针对单元测试,如果想要不增加人力投入,不改变开发流程,不延长项目时间,不提高管理成本的较大幅度地提高软件产品的质量、降低开发测试和后期维护的成本,那么,单元测试可能是最好的选择。简单的说,单元测试的效益主要表现在:1) 保证局部代码的质量。单元测试在隔离的前提下,分别对各个代码单元进行测试,能够达到其他测试不可能达到的测试完整性,从而保证了局部代码的质量。只有局部代码的质量得到了保证,代码的整体质量才可能得到保证。2) 保证代码的整体结构良好。要对代码进行单元测试,最起码的前提是代码能够隔离,也就是说,要具有一定的可测性,因此,单元测试是一种有效的约束机制,这种机制将保证代码具有良好的整体结构。例如,如果把业务代码直接写在界面类中,将很难进行单元测试,随意的不合理的紧耦合也会造成难于测试,单元测试使这些不好的特性得于及时发现,从而很容易进行修正。可以说,可测性是高质量代码最重要的特性,不具有可测性,也就无法衡量代码的正确性,而有了可测性,也就在一定程度上保证了代码的可扩展性、可复用性。3) 单元测试使排除代码错误的成本最小化。排除错误的代价随着时间的推移呈指数级数上升,并且,有很多细小的代码错误

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1