浅议Selenium在CRM项目中的应用

2016-12-19 17:30刘壮飞吴金霖
中国高新技术企业 2016年1期
关键词:自动化测试

刘壮飞 吴金霖

摘要:文章提供了一种基于Selenium开源框架二次开发的方法,实现对Web项目的自动化测试,通过测试过程中的覆盖率、准确率、命中率等方面对自动化测试提出要求,期望通过可视化、组件化的方式来实现测试用例的编排和实现,最终实现Web项目的自动化测试验证工作,提升测试的质量和测试人员的工作效率。

关键词:自动化测试;Selenium;测试质量;测试效率;CRM项目 文献标识码:A

中图分类号:TP391 文章编号:1009-2374(2016)01-0035-02 DOI:10.13535/j.cnki.11-4406/n.2016.01.018

1 背景及意义

CRM(客户关系管理)系统,其业务特点是开发周期长,补丁发布次数多,需求要求紧,重复工作量大,每次的版本发布均需要做大量的回归测试,以验证新上需求对现有业务的冲击性,目前每次发布一个版本均需要耗费5人日的回归验证投入,不算临时的应急增量发布验证,仅按照目前一个月发2个版本,一年有24个版本,共计需要投入120人日工作量,且这部分的工作量基本上是机械性的行为,没有任何技术含量。同时,由于系统的特点,在测试过程中,业务相对复杂,单纯依靠人工进行覆盖测试,很明显存在工作量大、测试质量低的情况,进而影响到产品的质量,导致客户满意度降低,进而影响产品的生命周期。因此,如何做好产品的软件测试就成为一个亟待解决的紧迫问题。

1.1 国内外研究现状

目前,业界比较有名气的是QTP、AutoRunner、Robot Framework、Watir、Selenium测试软件。其中,QTP是一款老牌的自动化测试工具,既能够进行C/S框架的测试,也能进行B/S框架的测试,但必须要在Object Repository库中建立Test Object对象,而且该库还没有办法手工建立,必须使用SPY来抓取,或者在录制的过程中自动建立。而Selenimu框架是一款优秀的开源框架,并不是单纯的一个工具,它是一组工具的集合,每个工具都有其特点和应用场景,并且可以非常方便地进行二次开发,以便于解决实际项目中碰到的特殊问题,自定义开发可行性高。

1.2 Selenium的优势与不足

Selenium是ThoughtWorks公司的一个强大的开源Web功能测试工具系列。Selenium与Webdriver整合后,形成的新的测试工具叫做Selenium2.x,它提供了完全不同的一种方式与浏览器交互。主要新功能是集成的Webdriver的API。Webdriver的设计除了解决一些Selenium-RC API的一些限制外,与Webdriver整合后,将提供一个更简单、更简洁的编程接口。Selenium Webdriver会更好地支持动态的网页,即页面本身被重新加载页面元素可能更改的网页。Webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持现代先进的web-app测试。

1.2.1 工作原理。Selenium2.0是利用浏览器原生的API,封装成一套更加面向对象的Selenium Webdriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏、窗口大小、启动、关闭等)。由于使用的是浏览器原生的API,不同的浏览器厂商对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium Webdriver要分浏览器厂商不同而提供不同的实现,例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等。

运行过程:(1)Webdriver启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,作为Webdriver的Remote server;(2)Client端通过CommandExcuter发送HTTPRequest给Remote server的侦听端口(通信协议:the webriver wire protocol);(3)Remote server需要依赖原生的浏览器组件(如IEDriver.dll、chromedriver.exe)来转化转化浏览器的native调用。

Remote server端使浏览器实现了Webdriver的统一接口,这样Client就可以通过统一的restful的接口去进行浏览器的自动化操作。

1.2.2 优势与不足。直接在浏览器中运行,就像真实用户所做的一样。Selenium测试具备以下特点:(1)Selenium框架是开源的框架,支持自定义二次开发;(2)可以在Windows、Linux和Macintosh上的Internet Explorer、Mozilla和Firefox中运行。其他测试工具都不能覆盖如此多的平台;(3)通过编写模仿用户操作的Selenium测试脚本,可以从终端用户的角度来测试应用程序;(4)通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。当然,Selenium框架也存在不足之处,主要体现在以下方面:(1)主要支持的是B/S框架,对C/S框架无法支持;(2)无法真正判断页面上的元素时能生成完毕。

1.3 Selenium的应用与难点

CRM系统主要基于JavaEE架构,前台的页面主要使用Ajax(js、css)等语言实现,后台逻辑主要是基于Spring和Hibernate。同时,由于业务的灵活性特点,没有一款现有的自动化测试框架能够直接应用到系统中来。这样的业务特点和技术架构使得应用Selenium开源框架进行二次开发来定制属于CRM的自动化测试成为必然选择。

1.3.1 测试过程。

第一,研究实现自动化测试案例,降低脚本维护成本。对自动化测试的用例,需要对原有的手工测试用例进行分析和改造,主要是要详细确认每个步骤的验证点。在手工测试时许多验证的方式是通过人眼和大脑的判断,并且在手工用例中大多也没有特别指明需验证哪些内容,但在自动化测试的用例中,就必须明确写明需验证哪些内容。同时为了降低脚本维护的工作量,就必须对功能点、模块、流程模板等进行抽象、封装成测试组件,使其可以复用。对测试案例还提供了数据库表进行用例配置,方便修改用例数据。

第二,降低用例失败率、提高bug命中率。在自动化测试案例被执行一段时间后发现自动化测试用例失败率非常高,绝大多数用例失败是由于测试数据准备不恰当导致的。由于从数据库捞出来的测试数据存在许多未知的关联关系,影响测试的操作步骤,导致用例失败。由于无法预先排除这些数据,所以只能通过不断地执行、分析、排除,慢慢积累来降低用例的失败率。用例失败率降低了,自然bug命中率就提高了。

第三,自动化测试推广,提高用例覆盖率。经过案例执行和分析,用例失败率降低,可以将其在测试组中推广试用。原来采用的是往数据库表中插入用例的测试步骤,但这种方式较不方便,并不能提高测试效率,测试人员不愿意使用。随后引入自动化测试框架RobotFramework,它采用表格式可视化编程,且中文支持较好,易于理解,测试人员容易上手,因此最后使用RobotFramework+Selenium2.0来开展自动化测试的推广应用,目前还在前期推广试用阶段。

1.3.2 遇到的困难。

第一,如何选择自动化测试用例,评估其自动化的回报率。我们知道自动化测试用例的选取,关系到自动化测试能否被正确并且稳定地执行,关系到自动化测试投入与产出的比。但是目前我们只是知道较模糊的一些判断条件,比如:(1)用例的测试结果可预期;(2)用例需求稳定;(3)用例的复杂度不要太高;(4)用例成功率对数据的依赖较低;(5)尽可能选择现场可恢复的用例等。但是还没有一个比较合适的判断评估标准,只能在实践中去证明用例是否适合做成自动化,这样也就增加了自动化测试的投入。

第二,如何提高自动化测试的准确性,降低用例失败率,提高bug命中率。因为没有办法做到所有的测试过程完全可预知,在用例执行过程中还是会遇到许多未知的情况,比如:(1)环境问题;(2)所准备的数据影响原有测试过程;(3)无效测试数据等。

2 总结与展望

当然,上述的应用主要还是重点针对基于B/S框架的Java应用进行的一些尝试,且在实际的应用过程中,主要以日常的稳定性测试的案例为主要突破口,覆盖了CRM系统的主要基础用例,在一定程度上保障了产品的健壮性。当然,在使用过程当中,还存在着准确率和命中率不高的问题,这点将在后续的具体使用过程中重点关注。在测试用例的编排方面,目前还没法实现界面化、可视化的方式进行拖拽组织测试用例,这将在后续的研究过程中加以改进,同时将积极引入Robot Framework框架,进一步降低自动化测试使用门槛,让更多的测试组成员具备自动化测试用例编写能力,进而提升测试组成员的职业技能,实现产品线的“全员自动化测试”,提升软件的产品质量。

参考文献

[1] 布朗,等.软件测试:原理与实践(英文版)[M].北京:机械工业出版社,2012.

[2] 温素剑.零成本实现Web自动化测试:基于Selenium和Bromine[M].北京:电子工业出版社,2011.

作者简介:刘壮飞(1981-),男,福建莆田人,北京福富软件技术股份有限公司福州分公司项目经理,研究方向:项目管理、自动化测试。

(责任编辑:陈 洁)

猜你喜欢
自动化测试
浅谈空调控制器自动化测试