谈基于SOAPUI进行服务模拟和自动化测试

SOAPUI是常用的一种Web Service测试工具,既可以测试SOAP WebService也可以测试Restful WebService。基本的对服务进行测试的过程不再讲,最近研究服务模拟和服务自动化测试,发现SOAPUI本身也同样具备这部分的功能。

对于服务模拟Mock Service

前面一篇文章谈到过服务模拟器,准备开发一个通用的服务模拟器,也解决服务模拟的问题。服务模拟的核心就是在服务端本身并不具备能力提供的情况下能够对服务提供端的服务能力进行模拟,这种模拟能力最大好处就是可以在该模拟下并行的进行客户端的服务消费代码的开发和测试工作。

对于MockService本身的制作也很简单,基于标准的WSDL和XSD文件即可以进行。在MockSerice的Reponse产生后可以自行修改Response返回的内容。完成后对MockService进行启动,并挂接到已有的Request上面即可以开始模拟操作。

如果仅仅如此,可能Mock的意义并不大,SOAPUI本身提供另外一个核心功能可以将MockService模拟服务发布为一个WAR包,这个意义就很重要的,即将WAR包引入到JAVA项目中后完全就可以作为服务模拟端使用,基本不用再独立开发服务模拟端的代码,这才是MockService的核心作用。

对于自动化测试

自动化测试含几个重要的内容,首先是可以建立TestCase,然后在TestCase里面可以设置多个测试步骤,对服务的SLA,安全等进行自动化测试。

再结合到Junit做服务的自动化测试可以看到,很多时候我们需要的是对服务Response的结果进行验证。而在这个时候支持Groovy脚本就显得非常重要了。我们完全自己编写Groovy脚本,对返回的结果进行Assert操作。这样在服务测试的时候自动化按步骤运行,只有当断言不通过的时候才会返回测试失败信息。

很Junit相比,这种自动化测试比较难集成到每日编译和持续构建环境中,虽然SOAPUI本身也提供了和Junit的集成,但是这种自动化测试非常适合测试人员使用,只需要稍微学习下Groovy脚本的写法,XML结构即可以编写相应的脚本代码。当然对于首次测试很多时候还是需要人工进行测试结果的验证和确认,但是对于后续的回归测试工作完全可以通过这种自动化方法来完成。

性能测试的支持

对于性能测试,引用一篇文章里面的一段内容来说明。

duiySoapUI是专门针对ws接口的测试工具,在实现对相同接口测试时,SoapUI表现出来的性能更优越。

SoapUI在发送请求时,是直接以组装好的soap报文进行发送,而LR是使用web_service_call方法,从方法传入相应的参数,再由LR组装为soap报文后,再发往接口进行调用,因此LR在组装报文时,会有相应时间的耗费。LR脚本中创建的事务,就包含了这段组装报文的时间,因此响应时间会比SoapUI的响应时间更大。LR与SoapUI的差别应该还有更多,在此我尚未研究的更深入。

对于LR,在测试中若增加对返回结果的校验,也会耗费一定的时间,从上面的数据可以看出,时间差大约0.12s左右,这也与校验中使用的方法有关系,如果方法高效的话,这个时间差也将更少。

全 SoapUI提供的结果数据的分析不如LR那么详细与全面,但对于接口级的测试已足够,且速度更优。

   女人的情色电影笔记本   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

你可能感兴趣的:(随笔文章)