WebService自动化测试平台的研究与实现

时间:2022-09-05 04:41:04

WebService自动化测试平台的研究与实现

摘 要:Web Service以其平立、低耦合、自包含、分布式、易集成的特点而得到广泛的应用,但Web Service本身特性使得服务提供者在确定将Web Service集成到系统前,需要对Web Service做大量、全面的测试,确保集成的Web Service能够达到使用者所预期的目的。软件测试作为Web Service开发过程中不可或缺的环节,如何对Web Service进行全面、有效的测试,变得日益重要。本文通过对目前已有自动化测试方法的研究,利用脚本语言python设计并实现了一种Web Service自动化测试平台,利用该平台可以对Web Service进行全面、高效的测试,并迅速找出Web Service测试过程中存在的问题。该平台已经在大型金融机构中得到应用,并取得良好的应用效果。

关键词:Web Service;自动化测试;python WSDL

中图分类号:TP311.53 文献标识码:A

一、引言

随着计算机网络技术的发展,企业内部、企业之间对于网络上应用能够进行相互交互的需求应运而生,这样的需求使得企业应用急需寻求一种体系结构,可以让不同的计算机实体之间使用基于标准的数据描述方法以及标准的调用方法进行交互。Web Service以其松耦合、简单、高度集成、规范、易开发的特点获得行业支持,无论是平台供应商、解决方案供应商、技术供应商还是服务提供商都纷纷在自己的平台、解决方案中加入Web服务。

在这样的形式下,如何保证Web Service的服务质量成为了人们最为关注的问题。如果某个Web Service在实际应用中出现严重问题,无论后果轻重,都不是人们所期望看到的,由此,人们对Web Service进行高效、全面的测试需求变得日期强烈。显然,让测试人员手动测试存在着人工成本高、自动化测试程度低、测试不充分,重复性测试造成效率低等诸多问题。为了提高Web Service的测试效率,降低测试成本,本文实现了一种全新的Web Service自动化测试平台,并在实际中获得了应用。

二、Web Service测试

(一)Web Service测试的特点和困难

虽然Web Service测试也包含功能测试、性能测试、安全性测试等。但与传统软件测试相比,Web Service测试有许多独特的地方,进而导致Web Service测试面临很多困难,目前面临的主要测试困难如下:

1.Web Service包括大量分布式应用,大量用户可能在同一时间访问同一服务,因此性能测试是一个重要的方面,手工测试很难做到。

2.由于知识产权等原因,服务提供者往往不暴露过多的服务实现细节,而是以接口形式服务,使用者只能获得Web Service的接口信息描述文档WSDL,该特性使得一切白盒测试技术失效。

3.接口参数往往以XML文件形式传输,而XML文件可能包含大量节点参数,每个节点参数都有各自的格式要求,有时节点参数间也会存在一些相互依存关系。如果这些都靠手工测试,工作量将会非常大,特别是在版本演变情况下,要进行大量的重复性测试工作,效率低下。

4.对Web Service的测试需要构建专门测试客户端,通过客户端或远程调用Web Service来收集服务响应信息,并根据响应信息分析测试结果,从而快速定位测试中发现的故障。

5.Web Service接口版本的演进,如新增加接口等,如何保证新增加接口的质量以及确保新增加接口未对已有接口产生破坏。

(二)传统软件测试与Web Service测试的比较

和传统软件测试相比,Web Service测试需要服务提供者、服务中介和服务请求者协作共同完成测试任务,测试也由传统的、集中的、离线的测试变为分散的、在线的即时测试。

三、平台的设计与实现

(一)设计目标

基于上述提到的在Web Services测试过程中出现的问题,本平台需要达到以下目的:

1.可以通过编写脚本,进行自动化测试,尽量减少手动参与。如:针对某个参数进行测试,该参数会有各种格式要求,可以在脚本中将各种可能出现的参数格式进行列表,并填写对应的返回结果,根据返回结果能快速定位原因。

2.通过对配置文件进行修改,确定本轮自动化测试需要测试哪些功能。包括:对单个接口进行独立测试,甚至对接口的某个参数单独测试,版本演进过程中对新增加接口进行独立测试。

3.详细自动化测试日志,包括:记录测试过程中测试接口名,输入输出参数,预测结果,实际返回结果,比对结果等,如果参数是XML的整个文件内容,则还需生成该文件,便于故障定位。

4.测试版本化,可以根据接口版本号进行测试。如:新开发版本2后,在版本2测试过程中,可以先对版本1进行自动化测试,确保版本1接口没有受影响。

5.测试结果统计,测试结束后,对本轮自动化测试情况生成测试报告,包括测试接口数、测试用例数、成功数、失败数、测试异常情况、总耗时等。

(二)测试流程

测试流程包括分析需求、制定计划、设计用例、开发脚本、执行用例和分析结果。如图2-1所示:

其中:

分析需求:包括根据实际业务需求,整理需要测试哪些功能,以及哪些功能可以进行自动化测试;

制定计划:主要包括确定时间进度等;

设计用例:包括测试步骤、验证方法等;

开发脚本:根据用例开发脚本,组合不同的脚本;

执行用例:按计划执行用例,生成测试报表;

分析结果:根据测试报表进行分析测试结果,包括测试成功数、测试失败数、测试异常数、耗时等;

(三)平台实现

本平台是基于Python语言实现的,Python作为一种面向对象、解释型计算机程序设计语言,在测试方面尤其得天独厚的优势。

1.通过脚本生成配置文件,确定本次测试哪些版本,哪些接口功能:

2.根据测试版本及功能项依次设置测试用例,如部分性能测试及用户登录测试脚本:

3.运行日志,以init接口参数正常情况为例:成功返回001,失败返回对应错误码,如:

其中:800-001-010-003表示文件中对应层级节点,015表示错误描述。

4.生成报表

四、总结

虽然该平台在实际项目中获得了应用,并取得了很好的效果,但依然存在一些不足,如还是命令行执行方式,没有开发界面,运行日志以文本文件形式存储等,下一步研究日志存于日志服务器中,将该平台应用于更多项目中,在实际应用中检测平台效果,进一步对平台进行完善。

参考文献:

[1]冯细光,刘建勋.Web服务测试技术综述[J].微计算机应用,2010.

[2]徐蔚.Web Services测试平台设计与实现[D].昆明理工大学,2008.

[3]马春燕,朱怡安,陆伟.Web服务自动化测试技术[J].计算机科学.2012.

[4]柳胜.软件自动化测试框架设计与实践[M].北京:人民邮电出版社.2009.

[5]Wesley J.Chun.Core Python Programming[M].北京:人民邮电出版社.2008.

[6]杨利利,李必信.Web Services测试问题综述[J].计算机科学,2008.

[7]白晓颖,赵冲冲,戴桂兰.Web Services测试研究[J].计算机科学,2008.

上一篇:大学生社团问题研究及对策探索 下一篇:浅谈城域网计费