终身学习
终身修行
终身利他
无常的变化:尽快对SOAP接口进行性能测试
上一篇 /
下一篇 2019-08-07 15:41:11
/ 个人分类:工作感悟
工作中就是各种各样的无常,
测试工具的工作刚刚接手,又临时紧急插播一个接口的
性能测试任务。也挺好,工作就是在无限的变化和挑战中不断的磨炼我们。
不仅是磨炼我们的技术,也磨炼我们的耐力和灵活的变通性。来吧,都不是问题。如果抓住了工作的关键就一定能很快解决问题。
一起先来确认待测试的接口是什么?还好就几个接口,工作量不是很大,但类型不是我们常见的restful类型的,而是
SOAP类型的。这类的接口以前做
接口测试时接触过,倒没有什么大问题。关键是
Locust能否支持这类协议接口的性能测试,这个问题不是非常确定。
没关系,有了新问题的产生,才能全面提升我们的能力。先赶紧做个试验试试看。
Locust性能测试的原理是比较清楚的,这种情况下只需要去验证一下,它能否支持SOAP协议的接口就可以了。所以搞清楚每个技术的根本原理,可以让我们的工作效能大大提升。总结了两张图,可以说明Locust的基本工作原理。
有了前面这些工作的铺垫,技术试验就可以快速开展起来,先用一组常量数据进行接口测试性能脚本的调试。发现行不通,代码片段如下:
class test_soap():
#定义url为属性
def __init__(self):
self.url="http://XXXX/odeWS.asmx?wsdl"
# #发送请求
def test_mob(self):
client=Client(self.url)
print(client)
#进行SOAP接口测试
res=client.service.getMobileCodeInfo("1891XXXX9")
print(res)
#结果比对
result=str(res)
......
最后确认这一类SOAP协议的接口在Locust中不支持service对象。所以只能以request对象去封装进行接口的访问才可以被Locust识别。那赶紧继续试验确认一下,发现SOAP类型接口的访问用request对象去访问虽然麻烦一些,也是可以实现的。代码片段如下:
#定义接口访问地址
url="http://XXX/odeWS.asmx?wsdl"
#获取接口的头说明,不能省略
headers = {"Content-Type":"application/soap+xml; charset=utf-8"}
#获取接口相关xml格式的参数
data = ''' <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://WebXml.com.cn/">
<soap:Header/>
<soap:Body>
<web:getMobileCodeInfo>
<!--Optional:-->
<web:mobileCode>1891XXXXX</web:mobileCode>
<!--Optional:-->
<web:userID> </web:userID>
</web:getMobileCodeInfo>
</soap:Body>
</soap:Envelope> '''
#发送接口请求
response = requests.post(url, data=data, headers=headers)
终于可以了,把这段接口访问代码植入到Locust性能测试框架中就可以了。终于问题解决了......
如果大家想索取详细资料,可以加微信号:wq-51testing
收藏
举报
TAG: