您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 第6章 软件自动化测试
第6章软件自动化测试本章概述软件测试是一项艰苦的工作,工作量大,需要投入大量的时间和精力,而完全的手工测试已经满足不了软件开发的需求。软件自动化测试应运而生。软件自动化测试就是通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动地测试,目的是减轻手工测试的工作量,从而达到提高软件质量的目的。本章具体介绍了手工测试和自动化测试的区别,重点介绍了常用的自动化测试工具。第6章软件自动化测试6.1软件自动化测试概述6.2自动化测试的设计与开发6.3常用自动化测试工具简介6.4性能测试实例小结习题6.1软件自动化测试概述软件自动化测试是相对于手工测试而存在的,主要是通过所开发的软件测试工具、脚本(Script)等来实现,具有良好的可操作性、可重复性和高效率等特点。测试自动化是软件测试中提高测试效率、覆盖率和可靠性的重要测试手段,也可以说,测试自动化是软件测试不可分割的一部分。6.2自动化测试的设计与开发6.2.1自动化测试的产生及定义1.产生:测试软件是一项艰苦的工作,工作量很大,需要投入大量的时间和精力。据统计,测试工作会占用整个软件开发时间的40%,对于一些可靠性要求很高的软件,测试时间甚至占到总开发时间的60%。但是,我们知道,软件测试具有一定的重复性。通常,如果要测试某项特性,可能需要不止一次的测试,除了要检查前面的测试中发现的软件故障和缺陷是否得到了修复和改进,同时还要检查在修复过程中是否又引入了新的故障或者缺陷。而此后软件又不断的升级,还要进行很多次的重复测试,在这种情形下,软件自动化测试技术开始逐步产生,并不断的发展起来。2.定义:自动化测试就是希望通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动地测试,目的是减轻手工测试的工作量,从而达到提高软件质量的目的。6.2.2手工测试与测试自动化虽然测试自动化是软件测试不可分割的一部分,但自动化测试并不能完全取代手工测试,二者各有优缺点。表6-1显示了手工测试与自动化测试的比较结果。这个测试案例中包括1750个测试用例和700多个错误。测试步骤手工测试自动化测试通过使用工具改善测试的百分比测试计划的开发3240-25%测试用例的开发26211755%测试执行4662395%测试结果分析1175850%错误状态/更正检测1172380%产生报告961683%时间总和109027775%表6-1自动化测试和手工测试比较通过表6-1可以看出,自动化测试与手工测试在很多方面都有很大的不同,在执行测试和产生测试报告方面显得尤为突出。通常手工测试的目的着重于发现新的软件故障,而测试自动化的目的则着重于发现旧的软件故障。1.手工测试的优点:测试人员在进行手工测试时,具有创造性,可以举一反三,从一个测试用例想到另外一些测试用例,特别是可以考虑到测试用例不能覆盖的一些特殊的或边界的情况。同时,对于那些复杂的逻辑判断、界面是否友好,手工测试具有明显的优势。2.手工测试的缺点或局限性:①通过手工测试无法做到覆盖所有代码路径。②简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性。其工作量往往较大,却无法体现手工测试的优越性。③许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到。④在系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,也很难通过手工测试来进行。⑤在进行系统可靠性测试时,需要模拟系统运行十年、几十年,以验证系统能否稳定运行,这也是手工测试无法模拟的。⑥如果有大量的测试用例,需要在短时间内完成,手工测试几乎不可能做到。⑦测试可以发现错误,并不能表明程序的正确性。3.自动化测试的优点:①对程序的新版本运行已有的测试,即回归测试。②可以运行更多更频繁的测试。③可以进行一些手工测试难以完成或不可能完成的测试。④充分地利用资源。⑤测试具有一致性和可重复性。①测试具有复用性。②缩短软件发布的时间。③增强软件的可靠性。4.自动化测试的缺点:①并非所有的测试都可以用自动化测试来实现。②新缺陷越多,自动化测试失败的机率就越大。③技术问题、组织问题、脚本维护问题。④测试工具与其他软件的互操作性。6.2.3测试工具的运用及作用1.测试工具的运用(1)测试用例的生成用编程语言或更专业的脚本语言(如Perl、PHP、Java等)编写出的小程序来产生大量的测试输入,包括输入数据与操作指令。或同时也按一定的逻辑规律产生标准输出,输入与输出的文件名字按规定进行配对,使控制自动化测试及结果的核对易于操作。对于测试用例的命名,如果在项目的文档设计中做了统一规划的话,则软件产品的需求与功能的命名方法将会有利于后继开发过程的中间产品的命名分类。这样,对文档管理和配置管理都会带来很多方便,使得软件产品开发有条理,符合思维逻辑。(2)测试的执行与控制单元测试可能多用于单机运行,但对于系统测试或回归测试,则可能需要在多机网络环境下进行。利用自动化测试,无论是单机运行还是多机运行,主要的功能和作用是节约大量时间与人力、物力,提高效率并降低成本。对程序的反复修改、重新汇编和重新测试,如用手工方法所花费的时间都相当可观,利用软件测试工具就可节约了。对于系统测试或者回归测试这类涉及大量测试个案运行的情况,节约测试时间策略方法除了利用自动化工具外,就是如何充分利用一切硬件资源,将大量的测试个案分配到各台机器上同时去运行(并行方式),并将大量的系统测试运行安排在夜间和周末进行。(3)测试结果与标准输出的对比在设计测试用例时,必须考虑到如何能够易于对测试结果实现标准输出。输出数据量的多少及数据格式对比较的速度将会有直接的影响。另一方面,考虑输出数据与测试用例的目标逻辑对应性及易读性。通常需要写一些特殊的程序来执行测试结果与标准输出的对比工作,应为有的部分输出内容是不能直接对比的。例如,对运行的日期时间的记录、对运行的路径的记录以及测试数据的版本等。(4)不吻合测试结果的分析处理用于对测试结果与标准输出进行对比的自动化工具,往往也同时对不吻合的测试结果能够进行分析、分类、记录和报告工作。这里:①分析是找出不吻合的地方并指出错误的可能原因。②分类包括各种统计上的分项。例如,对应的源程序的位置、错误的严重级别(提示、警告、非实效性错误、时效性错误或其他分类方法)。③记录是分类的存档。④报告是主动地对测试的运行者及测试用例责任人通报出错的信息。最直接的通报方法是由自动化测试软件发出电子邮件给测试运行者和测试用例负责人。(5)测试状态的统计和报表的产生这是运用自动化测试所应完成的任务,目的是提高过程管理的质量,同时节约用于产生统计数据的时间。通常自动化测试工具均有此项功能。(6)自动化测试与开发中产品每日构件的配合自动化测试是整个开发过程中的一个有机部分。自动化测试要依靠配置管理来提供良好的运行环境,同时与开发中的软件构建紧密配合。通常,在开发的软件产品达到一定程度时,就要开始进行每日测试。这种方法能使软件的开发状态得到频繁更新,及早发现设计和集成中的故障与缺陷。(7)采用自动比较技术测试验证是检验软件是否产生了正确输出的过程,是通过在测试的实际输出与预期输出(例如,当软件正确执行时的输出)之间完成一次或多次比较来实现的。进行测试自动化工作时,自动比较就成为一个必须的环节。有计划地进行比较会比随意的比较有更高的效率和发现问题的能力。自动比较的内容可以是多方面的,包括基于磁盘输出的比较,如对数据文件的比较;基于界面输出的比较,如对显示位图的比较;基于多媒体输出的比较,如对声音的比较;还包括其他输出内容的比较。2.测试工具的作用自动化测试工具可以帮助开发人员和用户了解以下重要的信息:①确定系统最优的硬件配置:大量的硬件如何进行配置才能提供最好的性能。②检查系统的可靠性:整个系统在怎样的负载下能可靠运行,运行的时间有多久,系统的性能会如何变化。③检查系统硬件和软件的升级情况:软件和硬件对系统性能的影响有多大。④评估新产品:新的软件产品应当采用哪些新的硬件和软件才能支持运行。6.2.4自动化测试产生的问题对测试工具能够发挥的作用大家都已经很清楚了,但是在软件测试自动化的实施过程中还是会遇到许多问题,以下是一些比较常见的问题。1.不现实的期望2.缺乏测试的实践经验3.测试工具本身的问题影响测试质量4.存在安全性的错觉5.自动测试的维护6.3常用自动化测试工具简介随着人们对测试工作的重视以及测试工作的不断深入,越来越多的公司开始使用自动化测试工具。如果能够正确地选择和使用自动化测试工具,就会提高测试的效率和测试质量,降低测试成本。由于一些商用的自动化测试工具十分昂贵,因此在选择自动化测试工具时,要把各种因素考虑进去,只有这样才能做出正确的选择。6.3.1自动化测试工具的分类根据测试方法的不同,自动化测试工具可以分为白盒测试工具、黑盒测试工具和测试管理工具。这些工具主要是MercuryInteractive(MI)、Segue、IBM/Rational、Compuware和Empirix等公司的产品,而MI公司的产品占了主流。这些工具和软件开发过程中相关活动的关系如图6-1所示。图6-1测试工具与开发过程关系图1.白盒测试工具白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试工具的工作原理的不同,白盒测试工具又可以分为静态测试工具和动态测试工具。(1)静态测试工具静态测试就是在不执行程序的情况下分析软件的特性。因此,静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接、生成可执行文件。静态测试工具的代表有Telelogic公司的Logiscope软件、PR公司的PRQA软件。(2)动态测试工具动态测试直接执行被测程序以提供测试活动。因此,动态测试工具需要实际运行被测系统,并设置断点,向代码生成的可执行文件中插入一些监测代码,掌握断点这一时刻程序运行数据。动态测试工具的代表有Compuware公司的DevPartner软件、Rational公司的Purify软件。常见的白盒测试工具,如表6-2、表6-3所示。工具名支持语言环境简介JtestJava代码分析和动态类、组件测试JcontractJava实时性能监控以及分析优化C++TestC,C++代码分析和动态测试CodeWizardC,C++代码静态分析Insure++C,C++实时性能监控以及分析优化.test.Net代码分析和动态测试表6-2Parasoft白盒测试工具集工具名支持语言环境简介BoundsCheckerC++,DelphiAPI和OLE错误检查、指针和泄露错误检查、内存错误检查TrueTimeC++,Java,VisualBasic代码运行效率检查、组件性能的分析FailSafeVisualBasic自动错误处理和恢复系统JcheckMSVisualJ++图形化的线程和事件分析工具TureCoverageC++,Java,VisualBasic函数调用次数、所占比率统计以及稳定性跟踪SmartCheckVisualBasic函数调用次数、所占比率统计以及稳定性跟踪CodeReviewVisualBasic自动源代码分析工具表6-3Compuware白盒测试工具集2.黑盒测试工具黑盒测试工具适用于系统功能测试和性能测试,包括功能测试工具、负载测试工具、性能测试工具等。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。黑盒测试工具的代表有Rational公司的TeamTest、Compuware公司的QACenter。常见的黑盒功能测试工具,如表6-4所示。工具名公司名官方站点WinRunnerMercuryInteractive
本文标题:第6章 软件自动化测试
链接地址:https://www.777doc.com/doc-3803883 .html