您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 基于selenium的web自动化测试
基于Selenium的Web自动化测试1绪论1.1引言网络时代的到来和迅速普及,为软件产业带来了一场革命性的变化,基于Web的应用系统已经开始逐步取代原来的单机版应用系统,成为当前和未来的软件系统开发和实施的主流。现在的Web应用系统结合了商业、数据库以及企业的运用,因此,对于Web应用系统的要求也愈来愈严格,它必须具备高度的扩展性,合理的执行效率,以及全天候安全强固的执行环境。也就是说,现在Web应用系统必须能够安全及时地服务大量的客户端用户,又能够长时间安全稳定地运行。而且由于interent的开放性和易访问性,在Web应用系统商业应用领域的竞争非常激烈。用户对网站的期望很高,如果网站无法做到快速加载、正确显示信息、即时反应并提供直观的浏览与简易的交互功能,用户就有可能转换门庭,去别的网站。因此,Web应用的测试至关重要。但是由于Web应用系统具有分布、异构、并发和平台无关的特性,因而Web应用系统的测试要比普通程序的测试要复杂的多。从功能测试角度看,与传统的应用软件相比,Web应用系统的独特之处主要有以下几点:1.Web应用系统的组成实体多种多样。就HTML文档而言,用不同语言编写的脚本,各式各样的样式表及组件使得Web应用系统难以理解和测试。2.Web应用系统中有大量的导航链接,确保系统能够根据用户的选择准确地显示用户需要的内容是Web测试的重要方面。3.Web应用系统通过会有大量的Cookie等技术来保存用户的状态信息,确保系统对这些状态信息的正确管理也是Web测试的重要挑战。4.Web应用系统的客户端及操作系统的多样性导致的兼容性问题,要求对各个环境进行测试。5.Web应用系统客户端内容及结构更新快,新功能的不断加入不仅要对新加入功能进行测试,而且还要对原有功能进行回归测试。基于selenium的Web自动化测试第2页(共35页)6.Web应用系统开发技术层出不穷,如AJAX,XML,JSP/ASP等等,每种技术都有各自的特点,测试也要根据相应的技术进行以提高测试效率。相对于传统软件而言,基于Web应用系统的测试工作要求相对来说更高,测试工作更严峻,如果单靠手工去进行测试,是远远不够的,必须引入自动化测试方法。1.2Web应用系统功能测试自动化研究在实际测试工作中,自动化测试的难点在于:1.测试用例。测试用例是手工测试与自动化测试的基本,自动化测试效率的高低与测试用例的设计的好坏有着直接的关系。2.自动化测试用例的选取。哪些测试用例适合用来进行自动化呢?只有选取那些重复性高,手工测试无法实现或自动化测试比手工测试效率更高的测试用例进行自动化,才能更好的提高自动化测试的效率。但是如何确定测试用例符合这些标准又是一个值得讨论的问题。3.自动化测试脚本的健壮性。Web应用系统的表现层的内容与结构的易变性经常会导致测试脚本失败,而后又需要维护,这样大大降低了自动化测试的效率。目前,对于Web应用系统的功能测试基本上都是采用“录制一回放”的模式来生成测试脚本,即测试人员用自动化测试工具将手工执行的测试过程录制成测试脚本,然后根据需要修改测试脚本,接着执行测试脚本,如果测试脚本执行失败,分析失败的原因,如果是测试脚本的问题,就需要对测试脚本进行维护。对于元素的定位地址,目前很多的自动化测试工具一般或使用DOM,或使用XPath表达式来表达页面元素的定位信息,如://ul[@,class='in']/LI[1]/a,可读性差,测试人员需要到页面中去定位该元素才能了解该元素代表什么。而且元素的定位信息遍布于测试脚本中,一旦该元素的定位信息有所改变,就需要首先找出使用到该元素的测试脚本,并逐一更新定位信息。我们需要对页面元素的定位信息进行统一管理,使用一个有意义的名称去标识被测页面元素,对每一个页面元素的定位信息应只有一个单一的入口点,并通去一定的定位逻辑动态的生成页面元素的定位信息。绪论第3页(共35页)1.3研究内容和组织结构本文针对Web应用系统的特点,首先介绍了软件测试的方法及Web应用系统测试方法,自动化测试及其应用,根据自动化测试工作中出现的页面元素定位难的问题,基于开源自动化测试工具Selenium,提出了一套解决方案selenium+junit框架,以解决web自动化测试的问题。本文的组织结构如下:第一章,简述了Web应用系统自动化测试的背景知识及其现状,并介绍本文的研究内容。第二章,首先介绍了软件测试的基本概念,并分析了Web应用程序的特点,及Web应用程序测试的主要方法。第三章,首先介绍了软件测试自动化的基本概念,并就Web应用程序的特点分析了自动化测试与手工测试的不同。然后介绍自动化测试工具的选择及应用。第四章,首先介绍了开源功能测试工具Selenium及如何有效使用该工具,然后构建Selenium+Junit框架进行自动化测试。第五章,对本论文的研究进行总结,讨论了它的可取与不足之处,指出进一步研究的方向。基于selenium的Web自动化测试2软件测试概述2.1什么是软件测试2.1.1软件测试的定义所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。软件应当是可预测且稳定的,不会给用户带来意外惊奇。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的文档和程序最终复审,是软件质量保证的关键步骤。如果给软件测试下定义,可以这样讲:测试是为了发现错误而执行程序的过程,也就是说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据或操作及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。软件测试是为了发现程序中的错误,是一个找错的过程;软件测试的过程亦是程序运行的过程;程序运行需要数据,为测试而设计的数据或辅助程序称为测试用例。值得指出的是,不能保证通过测试的程序一定正确,测试只能找出程序中的错误,而不能证明程序无错。有时可以认为,软件运行期间测试活动从未间断,只是在软件交付之后,将由用户来继续扮演测试角色而已。2.1.2软件测试的目标对于软件测试,基于不同的立场,存在着两种完全不同的测试目标。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品;而从软件开发人员的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件产品已正确地实现了用户的要求,确立人们对软件质量的信心;因此,他们会选择那些导致程序失效概率小的测试用例,回避那些易于暴露程序错误的测试用例;同时,也不会着意去检查、排除程序中可能有的副作用。显然,这样的测试对完善和提高软件质量是毫无价值的。由于,程软件测试概述第5页(共35页)序中往往存在着许多预料不到的问题,可能会被疏漏,许多隐藏的错误只有在特定的环境下才有可能暴露出来;如果不把着眼点放在尽可能查找错误这样一个基础上,这些隐藏的错误和缺陷就查不出来,会遗留到程序运行阶段中去。如果从用户的角度考虑,替他们着想,就应当把测试活动的目标对准揭露程序中存在的错误;在选取测试用例时,需要考虑那些深层次意义下才可能发现程序错误的数据。有些测试专家认为软件测试的范围应当包括得更广泛些。认为软件测试不仅要考虑正确性以,还应当关心程序的效率、健壮性等因素,并且应该为程序调试提供更多的信息。20世纪70年代中期以来,形成了软件生命期概念。这时人们对于软件测试的认识更广泛,也更深刻了,这对于软件产品的质量保障以及组织好软件开发工具有着重要的意义。这时,对软件质量的判断决不只限于程序本身,而是整个研制过程。2.1.3软件测试的原则测试是一项非常复杂的、创造性的和需要高度智慧的挑战性的工作。测试一个大型程序所要求的创造力,可能要超过设计那个程序所要求的创造力。软件测试中很重要的一个方面是人的心理问题,一些直观上看是很显而易见的至关重要的原则,总是被人们忽视。确定预期输出(或结果)是测试情况必不可少的一部分,如果事先无法肯定预期的测试结果,往往会把看起来似是而非的东西当成正确的结果。必须提倡用事先精确对应的输入和输出结果来详细检查所有的输出。程序设计机构不应测试自己的程序,程序员也应避免测试自己的程序。软件测试的出发点是找错误,要让程序设计机构和程序员在测试自己的程序时持否定的态度是困难的。除了这个心理学问题外,还要注意:程序中可能包含由于程序员对问题的叙述或说明的误解而产生的错误。如果是这种情况,让程序员测试自己的程序时往往是不能发现问题的。以上的看法并不意味着程序设计机构或程序员不能调试自己的程序,而是强调,由第三方来进行程序测试会更有效、更成功。一般而言,测试计划可以在需求分析完成后开始,详细的测试用例定义可以在设计模型被确定后立即开始,因此,所有测试可以在任何代码被基于selenium的Web自动化测试第6页(共35页)编写前进行计划和设计。Pareto原则应用于软件测试。Pareto原则意味着测试发现的错误中的80%很可能集中在20%的程序模块中。测试应从“小规模"开始,逐步转向“大规模”。即从模块测试开始再进行系统测试。穷举测试是不可能的,因此,在测试中不可能覆盖路径的每一种组合,然而,充分覆盖程序逻辑,确保覆盖程序设计中使用的所有条件是有可能的。为达到最佳的测试效果,提倡由第三方来执行测试。2.1.4软件测试的对象软件测试并不等于程序测试。软件测试应当贯串于软件定义与开发的整个期间;因此,需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,诸如:需求规格说明、概要设计规格说明、详细设计规格说明和原程序等,都应成为软件测试的对象。软件测试不应仅局限在程序测试点的狭小范围内,而置其它阶段的工作于不顾。2.2软件测试的基本方法软件测试方法可根据测试过程中是否发生状态变化分为两大类:动态测试和静态测试方法;又可根据对测试对象了解的程度,分为黑盒测试和白盒测试两类。2.2.1静态和动态的方法根据程序是否运行,测试可分为静态测试和动态测试。静态测试就是静态分析,对模块的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和仿真运行。静态测试采用人工检测和计算机辅助静态分析手段进行检测,只进行特性分析。静态测试包括对软件产品的设计规格说明书的审查,对程序代码的阅读、审软件测试概述第7页(共35页)查等。静态分析的查错和分析功能是其它方法所不能替代的,已被当做一种自动化的代码校验方法。动态测试是通过观察代码运行的动作,来提供执行跟踪、时间分析,以及测试覆盖度方面的信息。动态测试通过真正运行程序发现错误。通过有效的测试用例,对应的输入/输出关系来分析被测程序的运行情况。不同的测试方法各自的目标和侧重点不一样,在实际工作中,应将这两种方法结合起来运用,以达到更完美的效果。2.2.2黑盒测试和白盒测试根据测试是针对系统的内部结构还是针对具体实现算法的角度来进行,分别称为白盒测试和黑盒测试。1.黑盒测试法黑盒测试,也称功能测试或数据驱动测试。它不管程序内部结构是什么样的,只是从用户出发,根据产品应该实现的实际功能和已经定义好的产品规格,来验证产品应该具有的功能是否实现,每个功能是否都能正常使用,是否满足用户的要求。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对程序接口和用户界面进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试主要用于发现以下情况:是否有不正确或遗漏了的功能;在接口上,能否正确地接受输入数据,能否产生正确的输出信息;访问外部信息是否满足要求;性能上是否满足要求;界面是否错误,是否不美观;初始化和终止错误。黑盒测试方法主要用于软件确认测试。其具体方法有等价类划分、边界值分析、因果图、错误猜测法等。基于selenium的Web自动化测试第8页(共35页)黑盒测试方法着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功
本文标题:基于selenium的web自动化测试
链接地址:https://www.777doc.com/doc-5970871 .html