利用Python Locust库基于Robot Framework实现接口性能测试(二)

上一篇文章《利用Python Locust库基于Robot Framework实现接口性能测试(一)》中

我们分享了如何利用Locust库结合Robot Framework实现接口的性能指标的持续性比较,已达到高效、持续性的性能测试的目的,针对同一接口的不同版本存在较大性能差异时,可以及时的发现,并进行更深入的性能测试。

这篇文章主要介绍围绕着整体框架设计的具体实现,其中包含压力生成关键字、负载控制(包含结果采集)关键字、结果分析器关键字、文件清除关键字四部分,接下来主要分享这四个关键字的具体实现。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

压力生成关键字

压力生成关键字实现利用性能测试用例模版根据不同的接口请求类型、检查点、请求体等内容构建各个Locustfile文件(接口性能测试用例):

性能测试用例模板构建

对众多接口性能测试用例进行分析,不难发现除了负载不同,基本大致相同,基于此可以抽取为如下接口性能用例模板,用以实现代码与参数的解耦。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

locustfile_mode.txt

性能测试用例生成

通过传参实现性能测试脚本的Locustfile的复刻,生成对应接口的性能测试Locustfile脚本,改脚本运行后删除,不进行维护。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

压力生成关键字核心源码

通过locustfile_init()方法,即可生成各接口对应的Locustfile文件,如下:

利用Python Locust库基于Robot Framework实现接口性能测试(二)

locustfile_1535534575.py

负载控制关键字

负载控制关键字核心源码如下,加载用户输入的负载模式,运行对应的Locustfile性能测试脚本,获取性能测试结果,并实现结果入DB数据库。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

负载控制关键字核心源码

利用Python Locust库基于Robot Framework实现接口性能测试(二)

robot framework中负载控制关键字运行结果

运行每一个Locustfile性能测试脚本,都会生成两个性能测试结果文件,如下。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

通过对两个文件进行解析,将数据存储至Sqlite数据库中。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

Sqlite数据库中的性能测试结果

结果分析关键字

获取数据库中相同接口相同负载的性能测试结果,然后根据阈值校验项,检测各项结果是否超过历史平均结果的阈值设定,如果异常则断言失败。

可以根据实际情况设定阈值,同时可以选择需要关注的性能指标进行比对。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

结果分析关键字核心源码

文件清除关键字

删除临时文件,包含Locustfile文件、执行结果文件。由于整体架构不需要对Locustfile文件进行维护,只需要维护接口及相关参数,负载设定即可,因此删除Locustfile文件。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

文件清除关键字核心源码

应用效果

场景一 单接口性能测试,无参数化。

我们可以看到通过几行简单的配置,就可完成接口的性能测试用例开发。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

场景二 单接口性能测试,参数化。

参数化数据存放在parameterfile.txt中。

利用Python Locust库基于Robot Framework实现接口性能测试(二)

参数化文件 parameterfile.txt

利用Python Locust库基于Robot Framework实现接口性能测试(二)

测试结果

一般情况,此次测试结果不超过历史均值的设定阀值,则视为通过,否则异常。

利用Python Locust库基于Robot Framework实现接口性能测试(二)
若对你有所帮助,欢迎大家评论、留言。

来源:软件测试开发技术栈

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年1月12日
下一篇 2019年1月12日

相关推荐