软件自动化测试研究.docx
《软件自动化测试研究.docx》由会员分享,可在线阅读,更多相关《软件自动化测试研究.docx(12页珍藏版)》请在冰豆网上搜索。
软件自动化测试研究
《软件测试技术》结课论文
软件自动化测试研究
姓名:
XXX
学号:
学院:
专业:
软件自动化测试研究
摘要:
软件自动化测试就是执行某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手工测试步骤,完成全自动或半自动测试。
本文主要就软件自动化测试的概念、测试工具、前提条件、适用场合、选型原则、测试过程、脚本编写以及测试运行进行了详细介绍。
旨在通过自动化测试的执行,能够节省人力、时间或硬件资源,提高测试效率。
关键词:
自动化测试;程序设计语言;手工测试;全自动测试
TheStudyofautomatedtestingsoftware
Abstract:
Softwaretestautomationistoperformsomekindofautomatictestprogramcompiledprogramminglanguage,softwarecontroltestexecution,manualtestingsimulationsteps,automaticorsemi-automatictesting.Thisreviewfocusesontheconceptofsoftwaretestautomation,testtools,aprerequisitefortheoccasion,theprincipleofselection,testing,scriptingandtestrundescribedindetail.Aimstoperformautomatedtestingcansavemanpower,timeorhardwareresources,improvetestefficiency.
Keywords:
Automatedtest;Programminglanguage;Manualtest;AutomaticTest
引言
计算机的诞生和发展,使得软件开发和软件测试应运而生。
随着软件产业化的发展,人们对软件的质量、成本和进度提出了更高的要求。
如今,因为软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发中出现错误或缺陷的机会越来越多。
同时,由于人们对于软件质量的重视程度越来越高,就导致了软件测试在软件开发中的地位越来越重要。
软件测试是目前用来验证软件是否能够完成所期望的功能的唯一有效的方法。
软件测试一般分为手工测试和自动化测试。
软件规模的扩大给测试工作带来了很多问题,手工测试的速度太慢,效率太低。
自动化测试可以高效的完成一些重复性测试;降低了人为因素对测试过程的干扰;排除了测试的随机性和盲目性;降低冗余,减少遗漏等。
软件自动化测试就是执行某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手动测试步骤,完成全自动或半自动测试。
其目的在于缩短测试周期,增强对软件性能方面的测试能力等,从而达到保证软件质量并使软件能够提前上线。
1软件自动化测试概念
1.1软件测试
软件测试是描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。
软件测试的经典定义是:
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
1.2软件自动化测试
通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。
在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
并且,软件测试的工作量很大。
据统计,测试会占用到40%的开发时间。
一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%。
而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合代替人工去完成这样的任务。
软件自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具,脚本等来实现,具有良好的可操作性,可重复性和高效率等特点。
自动化测试的本质是用程序测试程序,利用编写的测试软件对待测试软件进行自动测试。
自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。
自动化测试的目的在于发现老缺陷。
而手工测试的目的在于发现新缺陷。
测试自动化涉及到测试流程、测试体系、自动化化编译、持续集成、自动发布测试系统以及自动化测试等方面整合。
也就是说要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。
首先公司从资金、管理上支持,其次要有专门的测试团队去建立适合自动化测试的测试流程、测试体系;其次就是把原代码从受控库中取出、编译、集成、发布可运行系统、进行自动化的单元测试和自动化的功能测试的过程。
2.软件自动化测试工具
2.1功能自动化测试工具
(1)QTP
QTP是QuickTestProfessional的简称,是一种自动测试工具。
使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。
因此在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。
QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。
它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。
其中包括:
创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。
(2)WinRunner
MercuryInteractive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
企业级应用可能包括Web应用系统、ERP系统、CRM系统等等。
这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。
如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。
(3)AdventNetQEngine
AdventNetQEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、Web性能测试、Java应用功能测试、JavaAPI测试、SOAP测试、回归测试和Java应用性能测试。
支持对于使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、传统客户端/服务器等开发的应用程序进行测试。
此工具以Java开发,因此便于移植和提供多平台支持。
(4)SilkTest
SilkTest是业界领先的、用于对企业级应用进行功能测试的产品,可用于测试Web、Java或是传统的C/S结构。
SilkTest提供了许多功能,使用户能够高效率地进行软件自动化测试。
这些功能包括:
测试的计划和管理;直接的数据库访问及校验;灵活、强大的4Test脚本语言,内置的恢复系统(RecoverySystem);以及具有使用同一套脚本进行跨平台、跨浏览器和技术进行测试的能力。
(5)QARun
QARun的测试实现方式是通过鼠标移动、键盘点击操作被测应用,即而得到相应的测试脚本,对该脚本可以进行编辑和调试。
在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,换句话说就是在插入检查点的同时建立期望值。
在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。
通常,检查点在QARun提示目标系统执行一系列事件之后被执行。
检查点用于确定实际结果与期望结果是否相同。
(6)TestPartner
TestPartner是一个自动化的功能测试工具,它专为测试基于微软、Java和Web技术的复杂应用而设计。
它使测试人员和开发人员都可以使用可视的脚本编制和自动向导来生成可重复的测试,用户可以调用VBA的所有功能,并进行任何水平层次和细节的测试。
TestPartner的脚本开发采用通用的、分层的方式来进行。
没有编程知识的测试人员也可以通过TestPartner的可视化导航器来快速创建测试并执行。
通过可视的导航器录制并回放测试,每一个测试都将被展示为树状结构,以清楚地显现测试通过应用的路径。
(7)TelelogicTAU
TAU第二代包含三个最新的、最强大的技术用来加速大规模软件开发和测试:
统一建模语言(UML)及它的许多最新修订版本中的特性,UML2.0;功能强大的测试语言TTCN-3和新的构造系统的方法;ModelDrivenArchitecture(模型驱动构架)。
这三个新的业界标准结合成TAU的已经过认可的软件开发平台,形成了一个系统,一个一流的稳定可靠的工具解决方案。
TAU第二代是系统与软件开发解决方案的一个突破,它把业界从使用了太长时间的手工、易出错、以代码为中心的方法中释放出来,自然而然地迈向下一步,一个更加可视化、自动化及可靠的开发方法。
TelelogicTAU/Tester是基于通用测试语言TTCN-3,用于自动化的系统和集成测试的强大工具。
TAU/Tester以现代化的开发工具为基础,提供高层测试功能,支持整个测试生命周期,加速自动化测试。
TAU/Tester可使用户特别关注于测试的开发,因为TTCN-3语言是独立于开发语言或测试设备的,且是抽象和可移植的。
(8)AutoRunner
AutoRunner是黑盒测试工具,可以用来完成功能测试、回归测试,可以提高测试效率,降低测试人工成本。
产品可以对以下类型对象进行GUI功能性测试:
a)Windows类型对象,一般为用C++/Delphi/VB/VFP/PB/.NetForm等技术开发的桌面程序。
b)IE网页对象,一般性的网站,比如大的门户类网站。
c)Java对象,一般为用AWT/Swing/SWT等技术开发的桌面程序。
d)Flex对象,网页的内容是用Flex开发的。
e)Silverlight对象,网页的内容是用Silverlight开发的。
f)WPF对象,一般为用WPF技术开发的桌面程序。
g)QT对象,一般为用QT技术开发的桌面程序。
(9)Holodeck
Holodeck是一种强大的故障植入软件测试工具,在监视攻击的应用程序的权力的同时,并记录一切应用程序,包括每一个函数调用、注册表项、一块读取或写入数据。
2.2性能自动化测试工具
(1)QALoad
Compuware公司的QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。
QALoad是QACenter性能版的一部分,它通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能。
QACenter汇集完整的跨企业的自动测试产品,专为提高软件质量而设计。
QACenter可以在整个开发生命周期、跨越多种平台、自动执行测试任务。
(2)SilkPerformer
SilkPerformer是一种在工业领域最高级的企业级负载测试工具。
它可以模仿成千上万的用户在多协议和多计算的环境下工作。
不管企业电子商务应用的规模大小及其复杂性,通过SilkPerformer,均可以在部署前预测它的性能。
可视的用户化界面、实时的性能监控和强大的管理报告可以帮助人们迅速的解决问题,例如加快产品投入市场的时间,通过最小的测试周期保证系统的可靠性,优化性能和确保应用的可扩充性。
(3)LoadRunner
LoadRunner是一种较高规模适应性的、自动负载测试工具,它能预测系统行为,优化性能。
LoadRunner强调的是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助人们更快的确认和查找问题。
此外,LoadRunner能支持最宽范的协议和技术,为每人的特殊环境,量身定做地提供解决方案。
(4)WebRunner
WebRunner是RadView公司推出的一个性能测试和分析工具,它让Web应用程序开发者自动执行压力测试。
Webload通过模拟真实用户的操作,生成压力负载来测试Web的性能,用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量Web应用程序在真实环境下的性能。
3前提条件
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。
通常需要同时满足以下条件:
(1)需求变动不频繁
测试脚本的稳定性决定了自动化测试的维护成本。
如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。
此时便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。
(2)项目周期足够长
自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。
如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
(3)自动化测试脚本可重复使用
如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段了。
另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。
比如性能测试、配置测试、大数据量输入测试等。
4适用场合
通常适合于软件测试自动化的场合包括:
(1)回归测试,重复单一的数据录入或是击键等测试操作造成了不必要的时间浪费和人力浪费;
(2)测试人员对程序的理解和对设计文档的验证通常也要借助于测试自动化工具;
(3)采用自动化测试工具有利于测试报告文档的生成和版本的连贯性;
(4)自动化工具能够确定测试用例的覆盖路径,确定测试用例集对程序逻辑流程和控制流程的覆盖。
随着测试流程的不断规范以及软件测试技术的进一步细化,软件测试自动化已经日益成为一支不可忽视的力量。
能否借助于这支外在力量以及如何借助于这支力量来规范企业测试流程、提高特定测试活动的效率,正是当今所要讨论的话题。
目前,软件测试自动化的研究领域主要集中在软件测试流程的自动化管理以及动态测试的自动化(如单元测试、功能测试以及性能测试方面)。
在这两个领域,与手工测试相比,测试自动化的优势是明显的。
首先自动化测试可以提高测试效率,使测试人员更加专注于新的测试模块的建立和开发,从而提高测试覆盖率;其次,自动化测试更便于测试资产的数字化管理,使得测试资产在整个测试生命周期内可以得到复用,这个特点在功能测试和回归测试中尤其具有意义;此外,测试流程自动化管理可以使机构的测试活动开展更加过程化,这很符合CMMI过程改进的思想。
根据OppenheimerFunds的调查,在2001年前后的3年中,全球范围内由于采用了测试自动化手段所实现的投资回报率高达1500%。
5选型原则
然而存在优势是否就一定意味着选择自动化测试方案都能为企业带来效益回报呢?
也不尽然,任何一种产品化的测试自动化工具,都可能存在与某具体项目不甚贴切的地方。
再加上,在企业内部通常存在许多不同种类的应用平台,应用开发技术也不尽相同,甚至在一个应用中可能就跨越了多种平台;或同一应用的不同版本之间存在技术差异。
所以选择软件测试自动化方案必须深刻理解这一选择可能带来的变动、来自诸多方面的风险和成本开销。
以下给出企业用户进行软件测试自动化方案选型的参考性原则,它包括以下六个方面的建议:
(1)选择尽可能少的自动化产品覆盖尽可能多的平台,以降低产品投资和团队的学习成本;
(2)测试流程管理自动化通常应该优先考虑,以满足为企业测试团队提供流程管理支持的需求;
(3)在投资有限的情况下,性能测试自动化产品将优先于功能测试自动化被考虑;
(4)在考虑产品性价比的同时,应充分关注产品的支持服务和售后服务的完善性;
(5)尽量选择趋于主流的产品,以便通过行业间交流甚至网络等方式获得更为广泛的经验和支持;
(6)应对测试自动化方案的可扩展性提出要求,以满足企业不断发展的技术和业务需求。
6过程
自动化测试与软件开发过程从本质上来讲是一样的,无非是利用自动化测试工具(相当于软件开发工具),经过对测试需求的分析(软件过程中的需求分析),设计出自动化测试用例(软件过程中的需求规格),从而搭建自动化测试的框架(软件过程中的概要设计),设计与编写自动化脚本(详细设计与编码),测试脚本的正确性,从而完成该套测试脚本(即主要功能为测试的应用软件)。
(1)自动化测试需求分析。
当测试项目满足了自动化的前提条件,并确定在该项目中需要使用自动化测试时,我们便开始进行自动化测试需求分析。
此过程需要确定自动化测试的范围以及相应的测试用例、测试数据,并形成详细的文档,以便于自动化测试框架的建立。
(2)自动化测试框架的搭建。
所谓自动化测试框架便是像软件架构一般,定义了在使用该套脚本时需要调用哪些文件、结构,调用的过程,以及文件结构如何划分。
而根据自动化测试用例,我们很容易能够定位出自动化测试框架的典型要素:
a.公用的对象
不同的测试用例会有一些相同的对象被重复使用,比如窗口、按钮、页面等。
这些公用的对象可被抽取出来,在编写脚本时随时调用。
当这些对象的属性因为需求的变更而改变时,只需要修改该对象属性即可,而无需修改所有相关的测试脚本。
b.公用的环境
各测试用例也会用到相同的测试环境,将该测试环境独立封装,在各个测试用例中灵活调用,也能增强脚本的可维护性。
c.公用的方法
当测试工具没有需要的方法时,而该方法又会被经常使用,我们便需要自己编写该方法,以方便脚本的调用。
d.测试数据
也许一个测试用例需要执行很多个测试数据,我们便可将测试数据放在一个独立的文件中,由测试脚本执行到该用例时读取数据文件,从而达到数据覆盖的目的。
在该框架中需要将这些典型要素考虑进去,在测试用例中抽取出公用的元素放入已定义的文件,设定好调用的过程。
7脚本编写
该编写过程便是具体的测试用例的脚本转化。
初学的自动化测试人员均会使用录制脚本到修改脚本的过程。
但专业化的建议是以录制为参考,以编写脚本为主要行为,以避免录制脚本带来的冗余、公用元素的不可调用、脚本的调试复杂等问题。
8测试运行
事实上,当每一个测试用例所形成的脚本通过测试后,并不意味着执行多个甚至所有的测试用例就不会出错。
输入数据以及测试环境的改变,都会导致测试结果受到影响甚至失败。
而如果只是一个个执行测试用例,也仅能被称作是半自动化测试,这会极大的影响自动化测试的效率,甚至不能满足夜间自动执行的特殊要求。
因此,脚本的测试与试运行极为重要,它需要详查多个脚本不能依计划执行的原因,并保证其得到修复。
同时它也需要经过多轮的脚本试运行,以保证测试结果得一致性与精确性。
自动化测试引入的原因是就把软件测试人员从枯燥乏味的机械性手工测试劳动中解放出来,以自动化测试工具取而代之,使测试人员的精力真正花在提高软件产品质量本身。
9小结
自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。
本文主要对软件自动化测试的概念、测试工具、前提条件、适用场合、选型原则、测试过程、脚本编写以及测试运行进行了详细介绍,以加深对自动化测试的理解,为节约人力、提高软件质量做出贡献。
参考文献
[1]王艳秋,燕孝飞.软件自动化测试初探[J].计算机与网络,1-33.
[2]许瀚青,姚砺.基于Watir框架的Web自动化测试[J].科技创新与应用,2015,(20):
168-171.
[3]李真辉,陈闻宇,徐彦之.基于CI的Web自动化测试平台设计[J].科技导报,2015,33(9):
78-82.
[4]马朝霞.基于Web应用软件测试内容及方法的研究[J].质量与安全,2015,15:
193-195.
[5]干晓鸣.软件自动化测试的合理应用[J].计算机应用与软件,2010,27(8):
172-174
[6]邓青华.软件自动化测试工具研究[J].软件导刊,2011,10
(1):
57-59
[7]宋波,张忠能.基于系统功能测试的软件自动化测试可行性分析[J].科技创新与应用,2005,22(12):
31-33.