




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3测试自动化工具Octopus框架设计作 者 赵椿玉 日 期 2011年10月 版 本 初稿摘要本自动化工具主要用于质量部软件测试工作。辅助系统功能测试进行自动化执行,快速实现自动化测试用例,减少测试回归成本,提高工作效率。也可用于开发人员进行本地系统自测,提高开发人员自测效率。本论文主要针对自动化工具的需求分析,系统设计,实现等方面进行论述。结合开源框架Selenium和Servlet技术,使用MySQL,通过Selenium Grid进行远程请求服务器,实现任务分发和执行,使用资源池人工分发实现用例并发执行,动态生成测试结果和记录系统日志,形成B/S架构的自动化测试工具Octopus。主要
2、特点:系统轻量,不需要安装客户端,通过网站访问,新增和修改测试用例,启动用例执行。测试用例统一使用xml格式编写,在执行过程进行数据解析,生成命令,对象,操作属性列表,顺序执行。通过Selenium原理操作JS页面,实现测试用例自动执行,并实时生成测试报告。适用情况:1、 公司系统中稳定的核心模块,在系统更新后需要进行核心业务确认,避免因为更新操作影响核心业务造成不必要的损失。2、 新开发的软件功能,需要定义好操作对象的属性,操作步骤,即可进行测试用例设计。即可实现自动化测试,提高工作效率,缩短测试时间,提高回归覆盖率。3、 对系统代码更新的情况,在测试阶段无法估计影响范围,使用全业务自动化回
3、归,实现最大范围的覆盖,降低因代码更新而造成其他业务功能失败。4、 实现系统每日构建。根据测试报告,分析评估更新影响范围。快速发现bug。保证已有业务功能正常。本文首先是对目前国内主流自动化情况进行分析,总结优缺点,针对分析结果,提出解决方案,并形成此系统设想。接下来根据公司业务现状,内部需求设计实现方案,进行项目规划。然后是根据规划进行系统实现,达到系统预期效果。最后归纳总结,结合本系统实现后的情况进行进一步优化设想和进一步的猜想。关键字:Octopus,自动化测试,Selenium,B/S架构目录第一章 绪 论5第二章 需求分析16第三章 系统设计27第四章 系统设计实现44第五章 总结和
4、展望55致 谢57参考文献589第一章 绪 论1.1背景1.1.1 公司背景简介本公司属于第三方支付公司,主要业务是进行网上支付交易,为商家和消费者提供专业电子支付解决方案和服务。因此系统每天将会产生大量交易数据,涉及资金交易等敏感数据,为了满足客户的需求,新业务开放,bug修改以及各银行系统的升级。每天会定时对系统进行更新,必须保证系统更新不会对系统核心业务造成影响,保证客户资金安全,交易正常。不能因更新或系统缺陷对交易过程,资金等造成任何损失。1.1.2 自动化需求来源随着计算机技术的发展,软件在整个社会生活中的重要性变得越来越高,软件测试的重要性亦随之变得日益突出.在传统手工测试已不能满
5、足软件测试需要的情况下,自动化测试技术孕育而生.软件自动化测试就是希望能够通过辅助工具或其它方法,让测试按照预定计划自动进行,从而达到减轻手工测试劳动量、提高软件质量的目的.。而公司的每日更新操作,必须对系统已有业务进行完全回归,保证业务不受影响,在业务功能不断增加,测试资源缺乏,回归测试枯燥的情况,开展自动化测试工作成为必然的趋势。1.1.3 自动化测试优势简要说明自动化测试的优势,以充分的理由阐述,自动化测试工作是解决手工软件测试的最好解决方案。也是支付行业,涉及敏感数据软件必不可少的一项技术。1、自动化提高测试质量每一次版本的更新,都会对系统产生一定的影响,自动化测试能节省大量的重复手工
6、操作,保证测试用例的一致性,避免了人为因素的干扰。从而提高软件测试的质量。2、自动化提高测试效率,缩短工作时间对于大规模的软件系统,上千上万个功能点,如果进行人工测试非常耗时间,对于繁琐的测试,测试效率必然会相当低下,而自动化测试可以较好的执行频繁的测试用例,合理利用测试工具,减轻测试工程师的手工测试工作,有效的保证测试质量并缩短测试时间。3、提高覆盖率自动化执行,大大缩短的测试时间,于此同时,可以进行更多的测试用例,保证能覆盖的功能点都能进行覆盖,提高覆盖率。 4、更好的重现软件缺陷的能力自动化测试脚本的一致性和可重复性,而这种一致性人工很难做到,自动化用例脚本的一致性就能更好的发现和定位缺
7、陷。5、更好的利用资源理想的自动化测试能够按照计划完全自动化地运行,所以在夜间执行自动化测试,次日查看测试报告,能更好的节约和利用资源。6、保证核心业务交易正常对于支付行业来说,核心业务随时都有客户使用,所以核心业务必须时刻正常运行,自动化测试能最大粒度的保证核心业务的正常运行,也保证系统的稳定性。1.1.4 自动化测试误区自动化测试工作的开展,也不能解决所有问题,自动化测试只是测试的一种辅助手段,需要明确自动化测试如下几点,才能更好的开展自动化工作,确保领导和相关人员对自动化测试正确理解和合理期望。1、工具是万能的自动化工具并不是万能的,不可能完成所有的测试工作,自动化工具也不能自动生成测试
8、用例。在前期,测试用例设计,测试脚本设计,后期的测试结果分析,这些都是需要人工主导。自动化测试永远不能代替手工测试。2、一种工具可以用于所有的测试每种工具都可能适用于特定的环境,适用于不同的测试对象,一种工具是不可能覆盖所有的测试需求,一般情况下,需要利用多种测试工具,或者开发适用于本业务的自动化测试框架才能达到自动化测试的目的。3、能使工作量大幅度减少自动化测试工具是不会马上减少测试工作,相反,在大多数情况下,前期投入是非常的大,只有合理运用自动化工具,并得到一定积累,才能有效的减少对整个自动化工作的时间投入。4、实现100%覆盖自动化工具是不能100%覆盖测试用例,不是所有的测试都可以适用
9、自动化实现,例如,开发周期很短,回归次数很少。也不是所有的测试用例都能使用自动化实现,例如:验证码、声控、光学等。5、自动化工具容易使用自动化测试不可能通过简单的录制回放就能达到自动化测试效果的。必须考虑捕捉的操作是否正确,是否能适用于回放,测试数据的动态变化,测试结果的统计,以及脚本编辑是否合理都会影响到测试结果。一个简单上手的测试工具,工具本身必然强大。而强大的测试工具,需要投入更多的技能,更多的培训。6、自动化测试能发现大量的新缺陷自动化测试主要用于保证系统正常业务不受影响,反复执行已有的测试用例,所以只能发现原来的缺陷,自动化测试常用于回归测试,而大量的新业务,未形成自动化测试脚本的业
10、务还必须得依赖手工测试。1.2 软件测试自动化基本概念自动化测试就是通过测试工具或者其他手段,能够按照预定计划对软件系统进行自动化的测试,它是软件测试的一个重要组成部分,能够完成许多手工测试无法完成或者难以实现的一些测试工作。自动化测试是相对于手工测试而言的,是通过工具执行测试用例。所以称之为自动化测试。软件测试自动化涉及到测试流程,测试体系,自动化编译,自动化测试等多方面的整合。1.2.1自动化测试适用场景开展自动化测试工作必须先明确适用环境,适用对象,不是所有的测试都有必要实现自动化测试。自动化测试适用于功能趋于稳定,并且可能会存在多次回归测试的情况下。自动化测试适用场景1、项目大于3个月
11、,资源有余。2、界面功能趋于稳定。3、人工无法完成的大数据量测试。 4、系统执行有明确的预期结果。5、系统人机交互界面能被工具识别。6、稳定核心业务的回归测试。7、资源满足(工具,技术,人员)。1.2.2自动化测试命门自动化测试的命门:维护成本我们可以用一个公式来计算自动化测试的实施成本:自动化实施成本=前期的开发成本+后期的维护成本前期开发成本基本趋于稳定,可以预估。后期维护成本,因变更的不确定性。则无法预估。所以最大的成本在后期维护。主要有两个方面:1. 产品的变更引起自动化测试脚本的变更UI自动化测试最常见的问题就是页面的变更,因为UI自动化测试脚本的内容是依赖于产品界面的,如果界面变化
12、,将必须进行脚本维护。2. 运行环境的随机事件引起脚本健壮性的问题支付行业系统均与银行系统有关,如果银行系统发生变化,自动化脚本就可能需要维护。在B/S架构的UI自动化测试中,主要不确定因素有:Ø 运行环境中其他因素的干扰,如银行响应超时,Web页面的展现速度,从而导致脚本的超时错误。Ø 浏览器版本的影响,升级后可能造成页面元素不识别问题。Ø 浏览器弹出框的影响。Ø Web Server的性能不稳定导致的问题。1.2.3自动化测试与手工测试比较I 对于已经稳定系统自动化测试的意义在于保证产品的稳定性,而手工测试则是在产品稳定满足的基础上,负责验证容错性,
13、安全性等非核心功能,两者各司其职,互补长短。II 对于开发中的系统自动化测试主要保证已有系统功能的正确性,每次集成后的回归测试,及需要大数据量或者大量重复测试的部分。而对于新开发的功能需要进行手工测试,保证正确性后才能进行自动化设计。1.2.4测试自动化开展流程对于公司级别的自动化工作,开展流程如下图所示:图1-1自动化测试开展流程测试人员提出自动化需求,自动化开发人员根据自动化测试适用场景评估自动化可行性。如果可行则由测试人员设计测试用例,通过评审后,进行自动化脚本开发。开发完成后,测试人员验收,验收通过后投入使用。如不满足自动化测试可行性,则不进行开发,结束流程。1.3 相关技术简介1.3
14、.1 SeleniumSelenium是一款基于Web应用程序的开源测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它支持GoogleChrome、Opera、Firefox、IE、Mozilla等众多浏览器。它同时支持JAVA、C#、Ruby、Python、PHP、Perl等众多的主流语言。特点:Ø 开源、轻量Ø 运行在多种浏览器中Ø 简单灵活、支持很多种语言Ø IED提供录制功能Ø 灵活性高Ø 高速1.3.2 Selenium GridSelenium的插件,提供多种执行机制。允许同时并行地、在不同的环
15、境上运行多个测试任务,极大地加快Web 应用的功能测试。实现原理如下图所示:图 1-2 Selenium Gird 实现原理(资料来源:/)Selenium Grid是提供了一个Hub,类似于一个用于控制测试的远程控制器,但以显式地将测试请求发送到一个或多个机器上,将的某个有效的Selenium-RC进行实例化。这个Selenium Hub负责以下这些事情:Ø 将一个SeleniumRC显式地分配给一个具体的测试Ø 限制在每个RC最大并发测试数Ø 将测试屏蔽在一个实际的网格结构之外。1.3.3其他成熟技术A、TomcatTo
16、mcat 是一个轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你使用Apache Tomcat运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。B、MySQLMySQL是一个小型关系型数据库管理系统,是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查
17、询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。其体积小、速度快、总体拥有成本低,开放源码这一特点,为本次开发提供很好的数据库支持。C、B/SB/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构属于一种“瘦”客户端,大多数或主
18、要的业务逻辑都存在于服务器端。因此,B/S 结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。1.4 结构如下将对本文的结构进行一个简要的说明:第一章:简介自动化发展趋势和相关技术。第二章:对国内现有自动化框架进行简述,并分析其优缺点和使用领域。再将结合本公司业务得出一套使用于本公司本行业的自动化框架构想。第三章:对构想的自动化框架进行需求分析,进行详细的系统设计。第四章:根据系统设计进行自动化框架实现。第五章:对此自动化工具进行总结和进一步展
19、望优化构想。16第二章 需求分析2.1现状2.1.1国内支付行业自动化现状软件测试发展快速进行,自动化测试成为软件测试必然趋势,自动化工具也出现了很多,下面对市场主要流行的自动化工具进行说明。1、QTP自动化测试技术在国内也刚开始,很多小公司测试资源不足,也就没有精力投入自动化测试工作。在测试人员充足的情况下,才会涉及到自动化测试。自动化测试在前期投入比较大,对技术要求也比一般测试人员高。从公司的投入和人员方面都可能会是一个瓶颈,自动化测试覆盖范围还是比较小,大部分公司都是处于起步阶段。国内最流行的测试工具是QTP如:中国农业银行。市场40%左右,QTP是QuickTest Professio
20、nal的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。优点:Ø 趋于成熟的自动化工具,入手简单,有成熟的培训机构。Ø 支持录制回放功能。 Ø 功能强大,使用于多种系统。缺点:Ø 一个脚本只支持相同环境下回放功能。很难满足兼容性测试。Ø 需要安装庞大的客户端,必须在指定环境下运行。Ø 采用对象识别方式,对象识别的支持还是有些欠缺。Ø 维护成本大,需要专业维护。
21、Ø 工具价格昂贵。2、TestCompleteTestComplete 一款自动化工具,价钱便宜,支持web测试,如用友,市场10%左右3、SeleniumSelenium 开源自动化工具,如:支付宝 市场20%左右。关于此工具的介绍,请查看1.3.14、其他如Rational,E-Test Suite,Watir,WebKing,Tellurium等适用于不同的系统的自动化框架。在此就不做详细介绍。2.1.2第三方支付产品特点第三方支付行业与项目类系统有很大的不同,系统已经投入使用,主要是新功能开发和线上系统维护。主要特点:1、更新频繁为满足客户需求,和各银行接口的变动,新功能上线
22、,已有系统bug修改等。所以需要对系统进行频繁的更新操作,每天均有上线操作,进行系统更新。2、快速响应:市场需求必须在最短时间内响应,银行系统切换等,在不影响交易的情况下,必须进行快速响应。满足市场需求,也需要快速实现需要功能,这样才能更好的占有市场。3、安全性:主要是涉及大量敏感数据,需保证数据安全性。4、正确性:涉及客户资金交易,必须保证交易过程的正确性。5、兼容性涉及多浏览器,主流IE6,IE7,IE8,Firefox,必须保证市场主流浏览器能正常使用,满足不同环境需求。2.1.3第三方支付自动化需求自动化需求完全来源于第三方支付的特点。1、频繁更新,只要代码发生改变,就可能会影响其他代
23、码,所以更新后必须对已有业务进行回归测试,保证已有业务不受影响。一旦影响了其他业务,可能会造成不可预知的后果和巨大的损失。2、市场需求需要在最短时间内响应。当市场需求急迫的情况下,进行人工回归会占用大量的资源,一旦市场需求功能实现,将会快速上线。为保证线上已有系统正常,必须进行自动化测试。3、涉及大量敏感数据,交易金额等。系统每次更新就需要保证业务正常,交易金额正确。由于人为操作失误导致的金额验证错误或者测试遗漏时而发生。而自动化测试将对需要校验的金额进行有效的验证,通过自动脚本执行来屏蔽人为操作风险。4、涉及多系统多浏览器兼容,系统本身业务较多,回归工作量很大,对多系统多浏览器的回归测试更是
24、枯燥和漫长。而自动化测试可以很好的解决此问题。2.1.4本公司自动化系统目标现状:公司的自动化测试工作为初级阶段,投入资源不足,对自动化测试了解的也不够深入。对自动化测试带来的效益没有明确的数字衡量,所以只能从探索阶段进行。自动化目标:快捷、轻量、兼容性、方便。快捷:实现快速执行和脚本快速开发及维护。实现测试用例快捷,因系统本身更新频繁,所以对自动化测试用例的维护必须快速响应。因涉及到交易,在服务器切换时,需要在指定时间内完成所有关键业务的自动化执行,避免长时间系统维护。轻量:自动化工具执行效率高,工具本身资源利用低。兼容性:B/S系统必须满足Web端的正常使用,满足不同操作系统下不同浏览器的
25、正常运行。所以兼容性是必不可少。工具实现的自动化脚本需要在多环境下能回放。方便:使用和维护方便。前期自动化测试工作,不会投入太多的人力和技术,要推广自动化必须在现有测试人员可培训技术的基础上进行实现。工具不需要复杂的操作或者培训,即可让大部分人员使用该系统执行自动化测试。2.2自动化框架模型形成要实现测试自动化,光靠自动化工具简单的录制回放是不行的,需要搭建一个实用的测试自动化框架,以下是经过分析形成公司测试自动化框架的过程。2.2.1自动化系统需求根据上述目标和支付行业的特性,现有产品内工具不能满足此需求。如下将结合实际情况,逐步分析,形成一套适用的自动化测试工具。1. 频繁更新:系统的频繁
26、更新,需要使自动化测试脚本能更好的维护,能快速适应更新操作,否则维护成本将会很大。要求:以最少的元素准确定位操作。2. 对多浏览器的兼容性对于兼容性,要求测试用例一次设计,就能在多浏览器,多系统的环境下运行,QTP是不能实现的,他通过对象定位,而对应不同浏览器的对象属性有可能就不同,所以使用QTP将会维护多套脚本。选择Selenium,他使用页面元素id,name或者Xpath定位,而这些元素在不同的浏览器上是固定的,本公司系统使用java开发,Selenium也是使用java实现,能更好的结合到本公司系统中,Selenium原理使用给js中元素赋值的原理实现自动执行。能够满足一次设计,多浏览
27、器回放的要求。3. 测试脚本的复用性对公司业务,主要是交易,而交易流程基本相同,大多测试主要测试各个银行接口是否正常,所以,主要是测试数据不同,流程相同,这样为了提高用例复用性,要求将可以复用的脚本进行封装调用。Selenium 不能友好的实现此功能,Selenium使用junit框架,测试用例不便于直接维护,也不便于一般测试人员使用。需要在Selenium的基础上进行二次开发,设计一种能适用于一般测试人员看懂,修改,执行的测试用例表现形式。用例使用XML文本是比较简单也比较通用的语言,可以定义标签,自动化执行的每个操作最多设计到三重属性:操作、操作对象、值。这样xml就能更好的表现操作步骤。
28、4. 测试结果输出Selenium 只是一个开源的自动化工具,没有适用于本公司的完善框架,测试结果将需要结合业务,动态生产不同模式的测试用例。可以通过java实现测试结果报告。综上所述:要满足公司对自动化的要求,本次自动化工具实现将结合Selenium实现一套B/S架构的自动化工具。2.2.2功能需求根据公司业务,对自动化工具的功能需求如下:1. 用例定制执行:在多个用例的情况下,可以按照需求,选择性的执行测试用例。2. 用例维护:能直接对用例脚本进行增删改,而不需要重新部署。3. 测试执行报告:每个用例执行完成后,生成指定的测试报告。4. 测试结果邮件功能:在一次自动化任务执行结束后,将最终
29、测试报告以邮件方式发送给指定测试人员。5. 测试并发进行:多个自动化测试用例能并发执行,互不影响。6. 系统日志功能:实时记录操作记录,将日志存放到数据库,方便缺陷跟踪和问题排查。2.2.3框架设计根据需求的模块说明对整个系统进行结构说明,系统分三层:展现层:直观的界面,用于测试人员的所有操作,包括:初始化参数、定制测试用例、测试用例编辑、查看测试结果、查看执行日志等页面。控制层:主要接收参数,对测试用例的解析、对测试结果的分析等。执行层:接收控制层参数执行测试用例和多个支撑组件的功能实现。2.2.4展现层主要面对自动化使用者(测试人员,自动化执行人员)实现数据输入和输出功能。功能展现:测试用
30、例文档、测试控制文档、测试结果报告、测试过程日志。功能说明:a) 测试数据管理:测试用例管理(增删改)、控制执行文件。b) 控制执行文件内容:执行业务名称、执行业务顺序、多线程执行、执行开始时间、执行触发条件、测试报告模式和邮件地址。c) 测试结果报告。d) 测试过程日志。2.2.5控制层主要用于数据解析、测试结果分析。如下图所示:图2-1 控制层结构提供功能:测试数据文件解析、测试控制参数解析、测试结果分析、测试结果整理。功能说明:a) 数据解析接口:解析测试数据XML文件、解析任务执行控制参数。b) 测试结果分析模块:分析测试结果、比对测试实际测试结果与预期结果。 2.2.6执行层 主要执
31、行测试用例,也包括一些支持组件,如下图所示:图2-2 执行层结构各个模块说明:A、功能测试模块:1、初始化测试环境:根据初始化参数,初始化测试环境,主要是浏览器,2、测试用例执行:将解析完的测试用例,按照序列顺序执行。B、支持组件模块:为自动化框架提供支持功能模块1、用例维护:用于用例的增删改操作。2、报告定制:在测试用例执行完成后,按模板生成测试报告。3、邮件服务:在一次自动化执行完成后,使用邮件服务,将测试报告发送到指定用户。4、日志功能:记录系统的操作日志,包括:脚本执行,测试用例编辑,报告生成等系统操作。2.3 执行流程框架执行流程如下图所示:图2-3 框架执行流程流程简介:测试人员发
32、起测试用例请求:请求中包括测试用例和配置测试用例参数。配置测试用例参数包括:服务器地址、浏览器、测试地址、并发执行等。各执行流程说明:1、 执行控制文件:根据所传送的参数,初始化测试环境,控制执行层执行测试用例。2、 控制用例执行:将参数请求发送给执行层,根据参数执行测试用例。3、 测试数据:执行层执行测试用例,从数据库中读取测试数据给控制层,解析后发送给执行层执行。4、 临时数据:在执行过程中,需要临时保存的测试数据存放在数据库中。5、 日志文件:将一个测试用例执行完成后的测试文件存放在数据库中。6、 测试结果:每个测试用例执行完成后,将测试结果存放在数据库中。7、 测试结果:一个测试用例测
33、试完成后,动态生成测试报告,测试数据从数据库中读取。8、 测试报告:将生成的测试报告发送到展现层。整个流程执行完毕。2.4小结本章分析市场,结合第三方支付的特点,形成了一套适用于公司需求的自动化框架,主要从框架组成,模块结构进行说明,包括各个模块需要实现的功能,组成部分,执行流程等,本章只是一个框架的结构,对于具体实现,工具选择没有涉及到,框架勾画出一个蓝图,告诉我们需要做什么,要达到什么效果。接下来一章就是详细设计,我们选择什么样的工具去取支撑,做成什么样的系统。27第三章 系统设计本章将对由需求而来自动化框架进行详细设计,针对框架中各个模块的具体实现,进行详细说明。主要包括:模块功能,模块
34、结构,实现技术。3.1系统分析根据以上一章节的阐述,本系统实现构想如下:1、 采用BS架构,测试人员通过浏览器发送请求、进行测试用例维护、查看测试报告、日志等功能。2、 使用开源自动化工具Selenium内核,进行二次开发,满足快速,多浏览器回放需求。3、 使用MySQL数据库保持测试用例、测试结果、临时测试数据、测试日志文件。4、 采用XML进行测试用例设计。语法简单,使用直观方便。5、 使用本公司邮件服务系统,方便内部邮件发送。6、 采用Windows 服务器,方便服务器端多浏览器回放。7、 系统支持并发,串行,服务器端执行,客户端执行。根据以上分析,如下进行详细的系统设计。3.2系统设计
35、本自动化工具将命名为Octopus,以下将以Octopus代替此自动化工具。Octopus系统结构:如下图所示:图3-1 系统结构图系统结构包括:页面展示:执行用例页面、编辑用例页面、测试结果查看页面、日志查看页面。具体页面功能将在下面进行详细说明。系统主体:数据解析、测试报告生成、核心容器(用于执行测试用例)、邮件系统功能。数据库:测试用例、测试结果、临时测试数据、日志文件等功能。用例执行流程图如下图所示:图3-2 用例执行流程对执行流程说明:测试人员在页面请求执行测试用例系统将请求发送到核心容器解析测试数据访问数据库解析测试用例调用Selenium服务执行测试用例记录日志记录测试结果生成测
36、试报告。3.3模块设计如下将对系统模块中的各个模块功能进行详细设计说明。包括系统设计中支撑模块。3.3.1核心容器核心容器:主要用于对测试脚本的解析,并动态执行测试用例,结合Selenium的技术实现。实现技术:Selelnium提供多种编程语言,而核心服务包只有一个,可以对核心包进行二次封装,形成一套适用于xml语言的B/S自动化系统。在将Selenium提供的API进行重载,或者封装成新的API,用于脚本命令执行。3.3.2用例脚本设计测试用例设计规范,统一用例格式。便于系统解析和用例设计,用例模板xml语言。<ROOT> <step1 description="
37、;对脚本执行的初始" > <operate>操作</operate> <object>对象</object> <value>值</value></step1></ROOT>本系统使用步骤级处理测试过程,故每个步骤均有三个参数:操作,对象,值。操作: 中填写需要进行的操作命令,及对对象的处理。对象:填写需要处理的对象,使用对象的唯一表示,如name或者id 也可以使用xpath抓取方式:1、使用Selenium的IDE进行录制抓取。2、使用xpath分析工具抓取。值:对对象赋值。如填入
38、的卡号,金额等操作。注意事项:如果操作只有对象没有值,则去掉<value></value>标签。如果操作没有对象,只有值,则去掉<object></object>标签。标签顺序不能进行改变。Step步骤级不能有重复标签。否则将不会解析重复step标签。Step步骤级中的description是对当前步骤的注释,编译过程不解析,可选。操作命令:I 直接适用的API直接适用的api 主要是由Selenium提供的一些简单操作,这些操作命令可以直接使用。II 二次封装API二次封装的api主要是由于Selenium所提供的api不能满足测试业务使用,或
39、者不能完成一个简单的操作等,将这些重新定义方法,方法中包含一个或者多个Selenium语句和一些算法等。测试用例解析:测试用例通过如上设计规范,系统将解析成可执行的用例序列。采用map存储模式,核心容器通过map按顺序循环执行测试脚本。3.3.3用例脚本管理设计测试用例使用xml格式设计,脚本管理包括测试用例的添加,测试用例的修改,删除等操作,展现形式均为网页形式,测试人员通过访问指定网页,程序从数据库中动态读出或写入数据。测试用例添加页面:原型如图:图3-3 用例添加页面页面说明:作者:用例设计者业务名称:用例名称简介:对用例的简要说明,主要包括用例数据,使用范围,测试功能等。用例属组:用例
40、所属组,方便用例查询,归类到不同组,也方便选择执行。按业务和产品线分组。XML:用例正文。编辑状态:用例描述用例是否可以编辑,是:可以编辑,否:不可以编辑。测试用例编辑页面原型如图:图3-4用例编辑页面页面说明:用例id:测试用例的唯一标示,可以在执行页面进行查看。编辑状态:标示是否可以编辑,1为不可编辑,0为可编辑。依赖用例创建的是否可删除。操作类型:选择操作类型,提供两种操作类型,删除和修改。3.3.4用例执行模块设计测试用例,采用页面触发,选择所要执行的测试用例,请求服务器执行,服务器根据所传输的参数,进行解析,并调用测试用例执行。分组页面原型如图:图3-5 用例分组页面按不同的类型的用
41、例进行分组,各组负责不同的产品线,按组进行分类,测试环境和生成环境各不相同,模块用例组用来查询所有可以复用的模块,方便调用的模块,相当于汽车的各种可使用的零件。执行页面原型如图:图3-6 用例执行页面页面说明:1、选择需要执行的测试用例。2、配置启动参数:主机: 测试用例所要提交到的服务器地址。端口:用例执行测试用例的端口,服务器开启多个端口,支持不同用户同时使用,以支持并发执行测试用例。浏览器:测试用例回放使用的浏览器,一个用例支持多种浏览器回放执行。开始网址:测试用例起始网站,用于初始化浏览器。报告邮件:将测试结果发送到指定用户邮箱中。启动开始:发送请求,执行所选择的测试用例。3.3.5测
42、试报告模块设计报告模块通过网页形式展示,在测试用例执行完成后,实时生成测试报告,包括:测试通过数,测试失败总数,测试结果详情。可配置的进行邮件发送到指定测试人员。数据流图如图所示:图3-7测试报告生产数据流数据流说明:1. 启动执行。2. 执行过程记录测试结果数据,实际结果为NOCHECK。执行完用例后在数据库中修改实际测试结果。3. 执行完一个用例后,从数据库中读出数据,生成测试报告。4. 循环执行测试用例。整个用例执行完成后,发送测试报告邮件。页面原型如图:图3-8 测试报告页面说明:报告生成时间:每次执行完一个测试用例,生成测试报告,记录当前系统时间。成功总数:两天内测试用例执行的成功总
43、数。失败总数:两天内测试用例执行的失败总数。用例信息:两天内用例执行成功详细列表,包括:用例执行时间、用例名称、状态。3.3.6日志功能设计在测试用例执行过程中进行日志记录,方便查看运行动态和错误定位,包括内容:系统执行信息、用例执行步骤、报错信息。日志分为两种,一种是当前系统执行日志;一种是历史系统日志。展现形式通过网页形式,测试人员通过访问指定网址查看系统日志。使用技术:log4j3.3.7邮件功能设计邮件系统,为测试人员发送测试报告,方便及时查看测试结果,在测试计划执行完成后,生成测试报告,然后通过邮件发送到指定测试人员。使用技术:集成本公司邮件服务。3.3.8数据库设计在整个测试过程中
44、,所有测试数据均通过数据库管理。包括测试用例的维护,测试结果的记录,临时数据存储。测试用例表:CASES 用来保存测试用例文件。表说明:CASES测试用例表名称字段类型描述说明编号ID INT NOT NULL AUTO_increment唯一标示,自增,非空主键创建日期CREATEDATETIMESTAMP当前系统时间,编辑时间作者AUTHORvarchar(50)创建者姓名用例名称CASENAMEvarchar(50)用例名称简介INTROvarchar(150)简要说明,用例用途描述用例XMLlongtext用例xml文件编辑ISDELETE int not null default &
45、#39;0'可编辑标志0表示可以编辑,1表示不能编辑。属组CTYPEvarchar(50)用例类型*1表示正式用例,*0表示测试用例。*表示所在组。如一组生产用例:11 二组测试20;测试结果表:RUNRESULT 用例记录测试运行结果。表说明:RUNRESULT测试结果名称字段类型描述说明编号IDINT NOT NULL AUTO_increment唯一标示,自增,非空运行时间RUNDATETIMESTAMP脚本运行时间系统自动创建业务名称BUSINESSvarchar(50)脚本运行名称测试帐户CUSTOMERvarchar(50)测试帐户订单号REQUESIDvarchar(50
46、)订单号,可以为空预期结果EXPRESULTvarchar(50)预期结果实际结果ACTRESULTvarchar(50)实际结果默认为:NOCHECK。成功为:SUCCESS。否则未:FAILED 临时数据数据结构 交易表RECOEDDATA 记录交易相关信息。表说明:RECOEDDATA测试执行详情名称字段类型描述说明编号IDINT NOT NULL AUTO_increment唯一标示,自增,非空交易时间TRADATETIMESTAMP交易创建时间交易订单号REQUESID varchar(50)交易订单号,也可以为用例执行过程的唯一标示交易类型TRATYPE varchar(50)交易
47、类型,描述交易类型,可为脚本业务名称测试用户名CUSTOMER varchar(50)业务执行的测试帐户密码PASSWORD varchar(50)测试帐户密码(可不填)交易金额AMOUNTdecimal(18,4)记录订单交易金额退款金额REFUNDAMOUNTdecimal(18,4)记录退款金额默认为0退款状态REFUNDSTATEvarchar(50) not null default 'NO'记录退款状态默认为NO。全额退款为ALL 部分:PART 交易状态TRASUCCESSvarchar(50) not null default 'NOCHECK'
48、记录订单交易状态默认为未检测.交易成功为:SUCCESS.否则未:FAILED,当检查订单交易成功后修改状态。日志库表:LOGS 记录日志文件。表说明:LOGS日志库名称字段类型描述说明编号IDINT NOT NULL AUTO_increment唯一标示,自增,非空创建时间CREATEDATETIMESTAMP日志创建时间日志内容loglongtextlog日志文件3.3.9控制执行模块控制执行模块包括功能:并发执行设计、控制执行设计。并发执行设计:通过发出请求,对多个Selenium服务进行请求,系统接到并发请求,将请求平均分配到多个服务,并发执行测试用例。使用Selenium插件Grid
49、 集成到系统,方案一在服务器端预留多个Selenium服务。方案二 通过客户端申请多个端口服务注册到服务器的Hub,然后由Hub平分测试用例到多个端口执行,接口详情:Ø 4444端口为默认端口。Ø 4451端口为测试一组专用端口。Ø 4452端口为测试二组专用端口。Ø 4453端口为测试三组专用端口。Ø 4454端口为测试四组专用端口。Ø 4455端口为测试QA专用端口。Ø 4456端口为测试备用端口。 以上端口均是服务器上预留端口。在服务器上执行使用。这些端口均为在服务器上启动成功的端口,不同的测试计划可以适用不同的端口,
50、这样就可以实现服务器并发执行测试用例。执行页面原型如图:图3-9 执行页面(端口)客户端端口4445和服务器并发端口4446端口为Selenium Grid 插件专用端口,4445为客户端执行端口,客户端通过命令注册到此端口,当用例在此端口执行时,此端口将会将测试计划发送到注册成功的客户机端口,这样,就可以实现在客户端执行。4446是Grid 的服务器并发端口,当接收到执行计划时,会在服务器上执行测试计划。可以平分给服务器上注册到服务器的端口。控制执行设计:测试用例初始化环境参数,Selenium机制是在启动执行前需要初始化环境,包括,主机、端口、启动地址等信息。系统需求初始化环境要通过动态传
51、参方式实现,支持多种不同环境。控制执行,通过参数化申明对象实现。3.4小结 以上就是对Octopus的功能详细设计,主要分模块进行详细设计,包括各个模块功能,数据流图,结构图,实现技术,展现方式等,接下来一章将会根据功能模块设计进行具体实现。35第四章 系统设计实现4.1 系统结构实现对系统实现技术进行说明,形成一套好满足公司需求的自动化测试工具,易于扩充,保证健壮等。如下将对各个模块的具体实现进行描述。开发将采用瀑布模式,继续集成方式。环境:系统要求内存大于1G 、剩余硬盘空间大于5G开发工具Eclipse +Uedit运行环境Tomcat6+Windows/Linux+JDK1.6+Sel
52、eniumGrid 1.08+Selenium 2.0数据库环境MySQL 模块实现顺序系统由核心向外逐步实现,开发顺序:核心容器、用例解析模块、测试结果模块、日志功能模块、控制执行模块、页面实现、测试用例编辑功能、邮件功能。4.2 模块实现4.2.1核心容器 核心容器用于执行测试步骤,系统集成Selenium核心代码实现用例自动执行技术,使用核心包:Selenium-java-client-driver.jar 此包为支持java语言的支持包。Jar包中主要封装Selenium java的API ,本次开发将使用它的封装技术,封装成能识别xml语言的容器。Selenium-
53、java-client-driver.jar中封装的方法有:public abstract String getRemoteControlServerLocation(); public abstract String doCommand(String paramString, String paramArrayOfString); public abstract void setExtensionJs(String paramString); public abstract void start(); public abstract void start(String paramString
54、); public abstract void start(Object paramObject); public abstract void stop(); public abstract String getString(String paramString, String paramArrayOfString); public abstract String getStringArray(String paramString, String paramArrayOfString); public abstract Number getNumber(String paramString,
55、String paramArrayOfString); public abstract Number getNumberArray(String paramString, String paramArrayOfString); public abstract boolean getBoolean(String paramString, String paramArrayOfString); public abstract boolean getBooleanArray(String paramString, String paramArrayOfString);本系统只封装doCommand方法,因为此方法的API最多,包含了页面所有基本操作。其他方法通过外部API再次封装,统一使用call方法调用。循环执行测试用例:使用Selevilt技术,从页面直接进行参数传递,传输的用例id保持为序列,获取序列长度,循环执行测试用例。String ip = req.getParameter("ip");String port = req.getPara
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论