1、1.2 自动化测试的概念 12 软件自动化测试的定义、流程框架 12.1 软件自动化测试的定义 12.2 软件自动化测试的流程 12.3 软件自动化测试的框架 23 软件自动化测试的优缺点 33.1 自动化测试的优点 33.2 自动化测试的缺点 44 软件自动化测试工具的种类及其前置条件 54.1 自动化测试工具的种类 54.2 何时适合引入自动化测试 65 使用QTP实现自动化测试的整个流程(登录QQ邮箱网站) 65.1 录制测试脚本 65.2 编辑测试脚本 105.3 运行调试测试脚本 115.4 分析测试脚本 14注释 17参考文献 18致 谢 191 自动化测试的产生及其概念一款软件的
2、生命周期包括了开发和测试两大模块,而测试一般都是由手工进行操作的,但是手工操作会产生一些避免不了的错误,而这个时候就适当的引入了自动化测试这一概念及其操作,用自动化来代替手工测试,避免错误的产生,下面就分析下软件自动化测试的概念和产生条件。1.1 自动化测试产生的原因(1)回归测试1,重复单一的数据录入或是击键等测试操作造成了不必要的时间浪费和人力浪费;(2)测试人员对程序的理解和对设计文档的验证通常也要借助于测试自动化工具;(3)采用自动化测试工具有利于测试报告文档的生成和版本的连贯性;(4)自动化工具能够确定测试用例的覆盖路径,确定测试用例集对程序逻辑流程和控制流程的覆盖。1.2 自动化测
3、试的概念自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程2。2 软件自动化测试的定义、流程框架众所周知,一款产品的上线肯定是离不开前期的软件测试,软件测试就是用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满族规定的需求,它是为了发现错误而执行程序的过程,其中自动手段是说软件自动化测试,那么什么是软件自动化测试呢,它的流程、框架又是怎样的呢,下面让我们详细的介绍下。2.1 软件自动化测试的定义软件自动化测试是指测试活动无需用户干预,测试人员只需要开发出测试脚本,就可以自动执行的测试程序。这些测试脚本通常是用来验证软件产品中的功能子集代码和数据,它可以是用来测试某个特定
4、类方法(通常称为单元测试),也可以是用来测试程序功能性的集成测试(功能测试)。简而言之,可以理解为软件自动化测试是以程序测试程序、以代码代替思维、以脚本的运行代替手工测试的一种测试。2.2 软件自动化测试的流程(1)测试计划(可选)与以前的测试计划过程一致,只是在原来的测试计划中,添加对项目实施自动化测试所需的资源、测试范围、测试进度的描述。该过程产出物为测试计划。(2)自动化测试用例设计根据测试计划、软件爱你需求规格说明书、系统测试用例设计出针对自动化测试的测试用例。测试有课的粒度精确到单个功能点或流程,对于各个功能点的业务规则,通过对脚本添加相应的检查点来进行测试。该过程的产出物是自动化测
5、试用例3。(3)自动化脚本设计(可选)根据软件需求规格说明书、自动化测试用例、系统原型、系统设计说明书编写自动化脚本设计说明书,其主要内容包括:分析当前项目,设计出适合的脚本基本架构,针对特殊自动化测试用例设计可行的脚本编写方法,设计特殊检查点的实现方式,并对潜在的技术难点提出解决方案,该过程的产出物是自动化脚本设计说明书。(4)自动化脚本编写根据软件需求规格说明书、自动化测试用例、系统原型、自动化脚本设计说明书,录制、调试、编写各个功能点的自动化测试脚本,并添加检查点,进行参数化,该过程还需要编写数据文件处理脚本、日志文件处理脚本、数据库处理脚本、公共检查点处理脚本等等。该过程的产物是各个功
6、能点的自动化测试脚本和其他公共处理脚本。(5)自动化测试数据设计根据软件需求规格说明书、自动化测试用例设计出对各个功能点和相关业务规则进行测试的输入数据和预期输出,填写入对象的数据文件中。该过程的产出物是各个功能点的数据文件4。(6)自动化测试执行搭建好测试环境。根据自动化测试用例,执行自动化脚本,对 进行自动化测试,并自动记录测试结果到日志文件中。(7)自动化测试结果分析对测试结果文件中报告错误的记录进行分析,如果确实是由于被测系统的缺陷导致,则提交缺陷报告。对自动化测试的结果进行总结,分析系统存在的问题,提交测试报告。(8)自动化测试脚本维护(可选)如果系统发生变更时,对自动化测试脚本和相
7、关文档包括自动化测试用例、自动化脚本设计说明书进行维护,以适应变更后的系统5。2.3 软件自动化测试的框架所谓自动化测试框架,即是应用于自动化测试所用的框架。按照框架的定义,自动化测试框架要么是提供可重用的基础自动化模块,如:selenium、watir等,他们主要提供最基础的自动化测试功能,比如打开一个程序,模拟鼠标和键盘来点击或操作被测试的对象,最后验证被测对象的属性判断程序的正确性;要么是可以提供自动化测试执行和管理功能的架构模块,如:robot、STAF等,他们本身不提供基础的自动化测试支持,只是用于组织、管理和执行那些独立的自动化测试用例,如:robot框架就可以集成selenium
8、框架。所以自动化测试框架的定义为:有一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合6。3 软件自动化测试的优缺点随着软件规模越来越大,软件越来越复杂,手工测试已经不能完全满足软件测试的要求,所以产生了软件自动化测试,当然,任何事物都有两面性,一面是优点,而另一面就是缺点,不完善的地方,自动化测试也不例外,下面就详细的分析下是什么造成了软件自动化测试的优缺点。3.1 自动化测试的优点目前,在软件测试行业里面,单单靠传统的手工测试已不能满足现在的测试需求,手工测试逐渐被自动化测试所代替。原因在于手工测试无法保证测试的科学性和严密性。具体原因如下:(1)测试人员
9、除了测试之外,还要编写测试计划、测试报告等大凉文档,还要对各个版本的测试结果进行总结整理,会变得力不从心;(2)为了保证软件在开发周期中顺利完成,很难在每个版本都进行全面的测试;(3)如果软件开发人员修改软件缺陷需要很长的时间,测试人员就会缺乏对软件进行验证的时间;(4)测试过程中发现的BUG,只是测试人员记录在文档中,没能提供一个平台来管理它,所提没有人来跟踪缺陷修改的进度7;(5)测试人员不断地重复同一测试,会产生厌倦,这样导致测试的标准每一个版本都不一样,从而使得测试时间越来越长,而测试准确度却越来越低。上面提出的手工测试的问题大部分可以通过引用自动化测试来解决。自动化测试的优点如下:(
10、1)能够是对新版本进行回归测试的开销达到最小。软件发布一个新的交付包,基本上是增加一个新的功能,原有的功能和界面都不动,但是,在对新版本进行测试时,为了避免新增功能对原来功能有影响,对软件进行全面的测试还是有必要的。原有功能的测试这是就可以用自动化测试来代替手工测试,减少测试的开销。(2)有利于在更短的时间内完成更多的测试。自动化测试有计算机来完成,而计算机具有更高效的计算能力,这样自动化测试能在更短的时间内完成更多的测试工作,这也就大大缩短了测试的时间。(3)可以完成一些手工测试不能或难以完成的测试。对于一些非功能性方面的测试,如性能测试、多用户同时操作测试、兼容性测试、压力测试等,几乎不可
11、能由手工测试来完成,但自动化测试则就不同了,他能方便地执行这些测试,比如压力测试,使用自动化测试工具就可以模拟来自很多个用户的同时操作,并不断地加大用户数,已得到系统最大能承担的负载【8】。(4)自动化测试在每次测试时,标准是一致的,而且还可以重复。自动化测试运行时,每次执行的脚本都是相同的,所以进行的是重复测试,这样就使得每次测试的标准是一致的,手工测试这很难做到这点,另外,有些测试可能需要在不用的操作系统会使用不用的数据库,并在不同的硬件配置下执行,手工测试根本不肯能做到。而自动化测试就不同了,它可以确保测试过程与开发需求的一致性。(5)自动化测试可以更好地利用人力资源以及时间。将一些重复
12、的手工测试任务自动化,可以将测试人员解放出来,这样,他们可以把更多的时间投入到测试用例的编写以及必要的手工测试当中。另外,好的自动化测试能够完全自动地运行,这样就可以利用周末和晚上的时间执行自动化测试,也会大大减少测试时间【9】。(6)测试的复用性高。在理想的自动化测试机制下,当测试软件发生改变,不需要重写测试脚本,只要对测试脚本进行小的改动就可以再次使用,测试脚本具有很高的复用性,这也大大降低了维护测试脚本的开销。(7)执行自动化测试,可以大大缩短开发周期。在测试中引入自动化测试后,一些以前需要重复执行的手工测试可以在更短的时间内完成,大大缩短了测试执行的时间,从而缩短了软件开发的时间。(8
13、)增加软件可信度。强有力的执行自动化测试后,可以大大减少软件存在的缺陷,从而提高了软件质量,相应的,软件发布时的可信度也会提高。3.2 自动化测试的缺点如上所述,软件自动化测试有很大的优势,而且自动化测试也正在代替手工测试,但自动化测试并不是十全十美的,他也有一定的局限性,主要表现在以下几个方面:(1)自动化测试不能完全全带手工测试:在一些情况下,手工测试比自动化测试更为简单,能更为有效的完成测试,这是如果采用自动化测试,反而会增加测试的开销,所以自动化测试不可能也没必要取代手工测试来完成所有的测试任务。(2)手工测试比自动化测试发现的缺陷更多:实践证明,软件的缺陷越多,自动化测试失败的概率就
14、越大。适合重复测试,是自动化测试最大的特点,而发现更多新缺陷则是手工测试的主要目的。而且对于回归测试而言,主要目的是为了确保修改没有影像到以前的功能,确保修改是正确的,这种测试巨幅不会发现新的缺陷。测试专家James Bach总结出:85%的缺陷靠手工发现,而自动化测试只能发现15%的缺陷【10】。(3)自动化测试对测试质量的依赖性极大:自动化测试执行成功,仅仅代表测试输出的结果与期望结果相同,自动化测试的有效性在很大的程度上依赖于自动化测试的本身的质量,确保测试的质量往往比自动化测试更为重要,对测试软件进行必要的检测是非常重要的。(4)自动化测试不能提高有效性:在运行同样的测试用例时,自动化
15、测试并不能保证更高的有效性,只可以提高测试效率。但在提高测试效率的同时,它也可能对测试进展有反作用,因为测试的有效性主要取决于测试用例的好坏,而并非测试所采用的手段。(5)自动化测试可能会制约软件的开发:当软件发生较大的变化时,对自动化测试的影像,相对于手工测试来说,会更大一些,软件的某一部分发生改变有可能使自动化测试也要进行全面修改。但是设计和实施自动化测试,与手工测试相比,开销要大很多而且需要对其进行维护,所以在软件修改时,就会考虑是不是会对自动化测试造成较大的影响,从而就会间接限制软件的开发及其功能修改。(6)软件自动化测试本身没有想象力:自动化测试是计算机通过自动化测试工具来进行,测试
16、程序也只是按照测试脚本飙血的运行机制来运行。在手工测试时,测试人员可以直接判断结果正确与否,但是自动化测试在大部分情况下还需要人工对测试结果进行判断。如果遇到网络连接中断之类的意外事件,手工测试可以人为的进行检测并处理,但是自动化测试则不同,一般会直接导致测试的终止。总之,自动化测试的有点和效益是显而易见的,但也不能忽略它的缺点,只有对其进行合理的规划和有效的实施,才能获益【11】。4 软件自动化测试工具的种类及其前置条件软件自动华测试工具是实现软件自动化测试必不可少的关键,因此,选择一个优秀的、适合自己的测试项目实际情况的测试工具是实现成功自动化测试的第一步。下面具体介绍下自动化测试工具的分
17、类,以及如何选择一个合适的自动化测试工具,并且介绍自动化测试工具的基本原理。4.1 自动化测试工具的种类测试工具的种类很多,有用于管理测试的,有帮助实现测试自动化的,有开源的,有免费共享的。软件测试工具按照用途,可大致分成一下几类:(1)测试管理工具:测试管理工具,是指用工具对软件的整个测试输入、执行过程和测试结果进行管理的过程。可以提高回归测试的效率、大幅度提升测试时间、测试质量、用例复用、需求覆盖等。目前市场上主流的软件测试管理工具有:TestCenter(泽众软件出品)、TestDirector(MI公司TD,8.0后改成QC)、TestManeger(IBM)、QADirector(c
18、ompuware)、TestLink(开源组织)、QATrag(开源组织)。测试管理包含的内容有:测试框架、测试计划与组织、测试过程管理、测试分析与缺陷管理。(2)自动化功能测试工具:Rational Robot是业界最顶尖的功能测试测试测试测试工具,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。Win Runner是一种企业级的用于检验应用程序是否如期运行的功能性测试工具;QuickTest Professional 是一个功能测试自动化工具,主要应用在回归测试中,QuickTest可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括
19、:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。(3)性能测试工具并发性能测试是在客户端执行的黑盒测试,一般不采用手工方式,而是利用工具采用自动化方式进行。目前,成熟的并发性能测试工具有很多,选择的一句主要是测试需求和性能价格比。著名的并发性能测试工具有QALoad、LoadRunner、Benchmark Factory和Webstress等。这些测试工具都是自动化负载测试工具,通过可重复的、真实的测试,能够彻底地度量应用的可扩展性和性能,可以在整个开发生命周期、跨越多种平台、自动执行测试任务,可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试。(4
20、)单元测试工具常用的单元测试工具分为:静态测试工具和动态测试工具。静态测试工具:静态分析工具(例如PC-Lint针对C/C+的静态代码检测工具,可以检查出一般的语法错误和完全符合语法要求,但是很可能是错这两种情况)12。动态测试工具:JUnit Framework、IBM Rational Purecoverage、IBM Rational Purify、IBM Rational Quantify(5)白盒测试工具:Telelogic、C+ Test、McCabe IQ(6)测试用例设计工具:TestCente4.2 何时适合引入自动化测试纵观软件的生命周期,到底要符合什么样子的要求条件才可以
21、使用自动化进行测试呢,从而减少手工测试的人力、物力、财力。总结后发现大概要符合以下几点:(1)项目周期长,系统版本不断;(2)需求变更不频繁13;(3)系统中的测试对象基本可以正常识别;(4)系统中不存在大批量第三方控件;(5)需要反复测试,如可靠性测试需要进行上千次的系统测试。5 使用QTP实现自动化测试的整个流程(登录QQ邮箱网站)QTP的基本共跟那个包括量大部分:一部分是提供给初级用户的关键字视图;另一部分是提供给熟悉VBScript脚本编写的自动化测试工程师使用的专家视图。但是,并没有严格的区分,在实际的自动化测试项目中完全可以两者结合着使用。使用QTP进行自动化测试的基本过程与使用其
22、他自动化测试工具进行自动化测试的过程基本是一致的,一般包括以下四个步骤:5.1 录制测试脚本利用QTP先进的对象识别、鼠标和键盘监控机制来录制测试脚本,测试人员只需要模拟用户的操作,像执行手工测试的测试步骤一样操作被测试应用程序的界面即可。我们使用QuickTest录制一个测试脚本,在QQ邮箱的网页上进行登录与退出的操作。(1)执行QuickTest并开启一个全新的测试脚本。开启QuickTest,在“Add-in Manager”窗口中选择“Web”选项,点击“OK”关闭“Add-in Manager”窗口,进入QuickTest Professional 主窗口。图5.1 QTP主窗口(2
23、)选中“TestRecord”或者点选工具栏上的“Record”按钮。打开“Record and Run Settings”对话窗口:图5.2 Record and Run Settings对话窗口(3)在“Web”标签页选择“Open the following browser when a record or run session begins”(4)在“Type”下拉列表中选择“Microsoft Internet Explorer”为浏览器的类型;在“Address”中添加“ 这样,在录制的时候,QuickTest会自动打开IE浏览器并连接到QQmai网站上。(5)切换到“Windo
24、ws Application” 标签页,如下图所示:图5.3 Windows Application窗口如果选择“Record and run test on any open Windows-based application”单选按钮,则在录制过程中,QuickTest会记录你对所有的Windows程序所做的操作;如果选择“Record and run on these application(opened when a session begins)”单选按钮,则在录制过程中,QuickTest只会记录对那些添加到下面“Application details”列表框中的应用程序的操作14
25、。选择第二个单选按钮。因为我们只是QQ邮箱网站进行操作,不涉及到Windows程序,所以保持列表为空。(6)点击“确定”按钮,开始录制了,将自动打开IE浏览器并连接到QQ邮箱网站上。图5.4 QQ邮箱登录窗口(7)登录QQ邮箱网站,在用户名和密码输入注册时使用的账号(2831732324)和密码(test123),点击“登陆”,进入“QQ邮箱”网页。图5.5 QQ邮箱主界面(8)在QQ邮箱网页下,点击“退出”,退到QQ邮箱登陆界面。图5.6 退出QQ邮箱(9) 停止录制,在QuickTest工具列上点击“Stop”按钮,停止录制。到这里已经完成了登陆到退出QQ邮箱的整个过程,并且QuickTest已经录制了从按下“Record”按钮后到“Stop”按钮之间的所有操作。(10)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1