WebService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,测试过程中都需要通过工具才能进行调用。
其实接口测试和普通的功能测试没什么区别,区别就是功能测试是在页面上手动的点点点,输入值,提交数据看结果,而接口测试没有页面,通过接口规范文档上的调用地址、请求参数,拼接报文,然后发生请求,检查返回结果。
关于WebService接口的测试方法也有很多
(1)浏览器直接访问:测试地址 /WebService/XXXWebService.asmx?op=接口名称
(2)Jmeter
(3)WcfTestClient客户端
(4)SoapUI
本文以SoapUI 5.4版本为例,讲述下如何测试WebService的接口
先来了解一下Soap协议(Simple Object Access Protocol ,即简单对象访问协议),可以简单的理解为Soap协议是基于XML的一个简易协议,SOAP=HTTP+XML,协议中必须包含Envelope、Body等元素。
接口用例脚本设计步骤.png1、新建一个SoapUI Project
File——>New SOAP Project
填写项目名称和 接口地址(Initial WSDL),格式为Web Service的URL+?WSDL
添加后左侧出现接口内容
2、新建TestSuite
目的:为了方便后续的测试,以防某些参数删除错了
展开TestSuite可以发现里面的内容跟原来的是一样的,于是就可以在这边输入参数去测试执行了
3、调用WS接口
(1)选择被调用接口名称,双击Request 1,打开请求和响应子窗口
(2)在请求窗口中,把?替换成对应的参数值
SoapUI默认生成的请求中,”?”表示需要被替换的内容,根据需要,可以替换或者删除掉这些值。本接口需要一个名为ExpressNO的入参,把"?"替换成物流单号
PS:如果有多个参数,而参数又不是必填时,直接删除?
(3)点击执行(绿色三角形),将此请求连同参数发送出去
(4)查看右边窗口的响应内容
根据上述返回的结果,看到接口已被正确的调用,需要和需求文档的参数返回值做对比
PS:请求与返回的结果都为XML格式
4、运行测试用例
(1)在创建好的Test Suite下的Test Case 处双击,打开测试用例执行对话框
(2)点击运行测试用例
(3)查看运行结果,如果所有的断言都是成功,则用例执行成功
说明:“Test Steps”中可创建多个测试用例,组成一个测试用例集,在运行该Test Steps时,会根据用例的顺序从上到下将用例进行一次测试,将上一用例的输出作为下一用例的输入再组织相应的用例,此处待进一步研究
此图中我将状态故意设置错了,所以返回失败,可以查看Description,相当于是日志
image.png5、断言(检查点)
为在测试中不用人为地进行接口功能是否正确的判断,因此加入断言Assertions,由程序直接对返回结果(出参)进行判断
(1)双击TestCase下的接口方法名称,打开窗口(或者直接双节TestStep中的接口)
(2)点击下图左上角的增加断言按钮,选择自己需要的
通常情况下,如果判断的是响应的内容,我们只需要选择“Contains”断言,如图所示
6、循环执行(单线程,多次循环)
双击Test Case,在窗口勾选“Loop TestCase continuously”选项
设置多次循环.png7、负载测试
利用多线程方式,在TestCase下面,新增一个LoadTest,设置线程数,暂停时间,运行总时间等参数
- Threads:线程数,也就是并发数
- Test Delay:从完成一次用例后,到下一次开始前,休息多长时间,也称思考时间
- Limit:运行时间
- Random:代表Test Delay的浮动范围,如果设置为0.5,则代表Test Delay在“Test Delay * (1-0.5)--Test Delay * (1+0.5)”秒之间,设置为0表示不进行浮动
场景为5个用户并发,持续运行1分钟没有思考时间,可设置Threads=5,Test Delay=0,Limit=600,后面的下拉框选择Seconds,表示600秒。
设置好后,点击左上方的运行(三角箭头),程序开始进行负载测试
负载测试过程中,右上方会有一个进度条用于显示测试的进度情况,简要列表跟Jmeter中的聚合报告类似,其中时间以毫秒为单位,如图中最短运行时间为229毫秒,最长为3406毫秒
另外SoapUI 还提供了2个图表,列出了测试过程中相关数据的监控
监控图表.png缺点:
1、Statistics graph图中只有曲线,没有任何数据说明,只能看到变化的情况,没有对应的刻度值,所以无法直观地看出数据大小
2、Statistics History graph 仅能显示线程数与总数的变化情况,一统计内容的曲线变化情况
网友评论