浅谈软件自动化测试技术
作者:李明泽
来源:《科教导刊·电子版》2016年第31期
摘 要 本文基于软件自动化测试的特点,系统地介绍了自动化测试的相关概念、测试步骤、前提条件、测试工具等方面的知识,阐述了自动化测试的测试过程,并分析了自动化测试的优缺点。以便测试管理人员选择适当的测试自动化工具,合理规范地进行自动化测试。 关键词 软件测试 软件自动化测试 测试用例 1软件测试的相关概念
软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。 2软件测试的步骤及前提条件 2.1软件测试的步骤
软件测试分为五步,依次为单元测试、集成测试、确认测试、系统测试和验收测试。 2.2自动化测试的前提条件
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。通常需要同时满足以下条件:
(1)需求变动不频繁。测试脚本的稳定性决定了自动化测试的维护成本。
(2)项目周期足够长。自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。
(3)自动化测试脚本可重复使用。如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段了。
龙源期刊网 http://www.qikan.com.cn
另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。比如性能测试、配置测试、大数据量输入测试等。 3自动化测试的工具 3.1 QTP
QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。 QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。
3.2 WinRunner
Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。 企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。 3.3 Rational Robot
是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 3.4 AdventNet QEngine
AdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、web性能测试、Java应用功能测试、Java API测试、SOAP测试、回归测试和Java应用性能测试。支持对于使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、传统客户端/服务器等开发的应用程序进行测试。此工具以Java开发,因此便于移植和提供多平台支持。
龙源期刊网 http://www.qikan.com.cn
3.5 SilkTest
是业界领先的、用于对企业级应用进行功能测试的产品,可用于测试Web、Java或是传统的C/S结构。SilkTest提供了许多功能,使用户能够高效率地进行软件自动化测试。这些功能包括:测试的计划和管理;直接的数据库访问及校验;灵活、强大的4Test脚本语言,内置的恢复系统(Recovery System);以及具有使用同一套脚本进行跨平台、跨浏览器和技术进行测试的能力。 3.6 QA Run
QARun的测试实现方式是通过鼠标移动、键盘点击操作被测应用,即而得到相应的测试脚本,对该脚本可以进行编辑和调试。在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,换句话说就是在插入检查点的同时建立期望值。在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。通常,检查点在QARun提示目标系统执行一系列事件之后被执行。检查点用于确定实际结果与期望结果是否相同 3.7 Test Partner
是一个自动化的功能测试工具,它专为测试基于微软、Java和Web技术的复杂应用而设计。它使测试人员和开发人员都可以使用可视的脚本编制和自动向导来生成可重复的测试,用户可以调用VBA的所有功能,并进行任何水平层次和细节的测试。TestPartner的脚本开发采用通用的、分层的方式来进行。没有编程知识的测试人员也可以通过TestPartner的可视化导航器来快速创建测试并执行。通过可视的导航器录制并回放测试,每一个测试都将被展示为树状结构,以清楚地显现测试通过应用的路径。 3.8 Telelogic TAU
TAU第二代包含三个最新的、最强大的技术用来加速大规模软件开发和测试:统一建模语言(UML)及它的许多最新修订版本中的特性,UML2.0;功能强大的测试语言TTCN-3和新的构造系统的方法:Model Driven Architecture(模型驱动构架)。 4自动化测试的过程 4.1自动化测试需求分析
当测试项目满足了自动化的前提条件,并确定在该项目中需要使用自动化测试时,我们便开始进行自动化测试需求分析。此过程需要确定自动化测试的范围以及相应的测试用例、测试数据,并形成详细的文档,以便于自动化测试框架的建立。 4.2自动化测试框架的搭建
龙源期刊网 http://www.qikan.com.cn
所谓自动化测试框架便是像软件架构一般,定义了在使用该套脚本时需要调用哪些文件、结构,调用的过程,以及文件结构如何划分。
而根据自动化测试用例,我们很容易能够定位出自动化测试框架的典型要素: 4.2.1公用的对象
不同的测试用例会有一些相同的对象被重复使用,比如窗口、按钮、页面等。这些公用的对象可被抽取出来,在编写脚本时随时调用。当这些对象的属性因为需求的变更而改变时,只需要修改该对象属性即可,而无需修改所有相关的测试脚本。 4.2.2公用的环境
各测试用例也会用到相同的测试环境,将该测试环境独立封装,在各个测试用例中灵活调用,也能增强脚本的可维护性。 4.2.3公用的方法
当测试工具没有需要的方法时,而该方法又会被经常使用,我们便需要自己编写该方法,以方便脚本的调用。 4.2.4测试数据
一个测试用例需要执行很多个测试数据,我们便可将测试数据放在一个独立的文件中,由测试脚本执行到该用例时读取数据文件,从而达到数据覆盖的目的。 5软件自动化测试的优缺点 5.1软件自动化测试的优点
测试活动自动化在许多情况下可提供其最大价值,如对软件进行的功能性测试,是测试系统在做什么,这些测试可以明确知道应该在什么情况下输入什么,会有什么样的输出。通过自动化测试,可以使某些测试任务提高执行效率,除此之外,还有以下优点:
(1)对程序的回归测试更方便。软件测试实行自动化进程是因为测试工作的需要,更准确地说是回归测试和系统测试的需要。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率,缩短回归测试时间。
龙源期刊网 http://www.qikan.com.cn
(2)可以执行一些手工测试困难或不可能进行的测试。比如,对于大量用户的测试,不可能同时让足够多的测试人员同时进行测试,但是却可以通过自动化测试模拟同时有许多用户,从而达到测试的目的。
(3)更好地利用资源。将繁琐的任务自动化,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例。有些测试不适合于自动测试,仅适合于手工测试,将可自动测试的测试自动化后,可以让测试人员专注于手工测试部分,提高手工测试的效率。
(4)测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。
(5)测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。
(6)此外,手工不能做的事情,自动化测试能做,如负载、性能测试等。 5.2软件自动化测试的缺点
在软件测试自动化的实施过程中会遇到许多误区,比较普遍的有如下几种:
(1)不正确的观念或不现实的期望。一般来说,人们对新技术的解决方案常常深信不疑,认为可以解决面临的所有问题,对测试工具也不例外。事实上,如果期望不现实,无论工具如何,都满足不了期望。
(2)希望测试发现大量新缺陷。测试运行第一次时最有可能发现新缺陷。如果测试已经运行,再次运行相同的测试发现新缺陷的概率就小得多。
(3)安全性错觉。如果自动化测试没有发现任何缺陷,并不意味着软件没有缺陷,可能测试设计本身就有缺陷。并且,测试覆盖率也不会达到百分之百。
(4)自动化测试的维护性。当软件修改后,通常也需要修改部分测试,这样必然导致对自动化测试的修改,所以在自动化测试的设计和实现时,要防止自动化测试带来的好处被高维护成本所淹没。
(5)测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。 6自动化测试的意义
龙源期刊网 http://www.qikan.com.cn
自动化测试引入的原因是就把软件测试人员从枯燥乏味的机械性手工测试劳动中解放出来,以自动化测试工具取而代之,使测试人员的精力真正花在提高软件产品质量本身。 总之,软件自动化测试还不能解决所有的测试问题,因此,在进行自动化测试前,首先要建立一个对软件测试自动化的认识观。软件测试工具能提高测试效率、覆盖率和可靠性等,但软件测试的自动化过程是一个渐进的过程,并不需要一开始就对所有的测试实施自动化,也通常也是不现实的。自动化测试虽然具有很多优点,但它只是测试工作的一部分,是对手工测试的一种补充。因此,如何合理地规范自动化测试,选择适当的测试自动化工具,是测试管理人员必须解决的问题。 参考文献
[1] 贺平.软件测试教程[M].北京:电子工业出版社,2005.
[2] 殷广丽.软件测试管理与测试应用案例[D].山东大学硕士学位论文,2005(10). [3] 张利.电子商务设计师教程[M].北京:清华大学出版社,2015.
因篇幅问题不能全部显示,请点此查看更多更全内容