Python实现性能自动化测试竟然如此简单
Python实现性能自动化测试竟然如此简单
一、思考
1.什么是性能自动化测试?
性能
系统负载能力
超负荷运行下的稳定性
系统瓶颈
自动化测试
使用程序代替手工
提升测试效率
性能自动化
使用代码模拟大批量用户
让用户并发请求
多页面多用户并发请求
采集参数,统计系统负载能力
生成报告
2.Python中的性能自动化测试库?
locust库
使用Python
使用代码来创建批量用户
分布式
可以在多台服务器上,进行分布式性能测试
可伸缩性强
稳定、应用广泛
经得住各种场景下的考验
基于web ui界面展示测试详情
能测任何系统
二、基础操作
1.安装locust
使用官方pypi源来安装
pip install locustio
使用豆瓣pypi源来安装(推荐)
pip install -i https://pypi.douban.com/simple locustio
安装成功之后,在cmd控制台将会新增一条命令,可输入如下命令查看:
locust --help
2.基本用法
在项目根目录下创建locustfile.py文件
from locust import Locust, TaskSet, task
class MyTasks(TaskSet):
""" 创建测试任务类,需要继承TaskSet 可以添加多个测试任务 """ # 每个测试任务,往往会以实例方法的形式来呈现 # 同时需要使用task装饰器来装饰测试任务 @task def one_task(self): print("执行一个伟大的测试任务!")
class RunTasks(Locust):
""" 创建运行测试类,需要继承Locust父类 """ task_set = MyTasks # 指定测试任务类,使用task_set覆盖父类的类属性 min_wait = 2000 # 指定启动任务间隔的时间范围(单位毫秒):2~5秒之间 max_wait = 5000 # 使用min_wait、max_wait覆盖父类的类属性
执行性能测试
打开Pycharm Terminal控制台
运行如下命令:
locust
运行之后,控制台会在本地监听一个端口
- 程序文件要命名为 locustfile.py才行
- 假如命名为one_example.py,则需要这样运行
locust -f one_example.py
在浏览器打开UI设置界面
默认使用localhost:8089打开
三、综合案例演练
1.编写自动化测试脚本
在项目根目录下创建test_load.py文件
from locust import HttpLocust, TaskSet, task
class AdminLoadTest(TaskSet):
""" 创建后台管理站点压测类,需要继承TaskSet 可以添加多个测试任务 """ def login(self): """ 登录实例方法 :return: """ self.client.post("http://localhost:8088/users/login/", {"user_account": "admin", "password": "123456"}) def logout(self): """ 登出实例方法 :return: """ self.client.get("http://localhost:8088/users/logout/") def on_start(self): """ 当任何一个task调度执行之前, on_start实例方法会被调用 先登录 :return: """ self.login() def on_stop(self): """ 当任何一个task调度执行之后, on_stop实例方法会被调用 后登出 :return: """ self.logout() @task def admin_index(self): """ 对后台主页进行压测 :return: """ self.client.get("http://localhost:8088/admin/")
class RunLoadTests(HttpLocust):
""" 创建运行压测类 """ task_set = AdminLoadTest
2.使用命令行运行
打开Pycharm Terminal控制台,运行如下命令:
注意:--host参数指定http主机地址,-f参数指定压测程序文件名
3.打开web ui界面进行配置
设置并发用户数为10,每5秒创建一个用户
压测过程截图
美轮美奂的压测报告
压测失败详情
下载压测统计数据
下载的压测统计数据csv文件
六、总结
locust做压测功能极其强大
支持分布式部署
提供的接口简单
压测代码非常容易编写
提供UI界面来配置
美观、详细的图表统计
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java并发笔记之synchronized 偏向锁 轻量级锁 重量级锁证明
java并发笔记之synchronized 偏向锁 轻量级锁 重量级锁证明本篇将从hotspot源码(64 bits)入手,通过分析java对象头引申出锁的状态;本文采用大量实例及分析,请耐心看完,谢谢 先来看一下hotspot的源码当中的对象头的注释(32bits 可以忽略了,现在基本没有32位操作系统): Bit-format of an object header (most significant first, big endian layout below): 32 bits: hash:25 ------------>| age:4 biased_lock:1 lock:2 (normal object) JavaThread*:23 epoch:2 age:4 biased_lock:1 lock:2 (biased object) size:32 ------------------------------------------>| (CMS free block) PromotedObject*:29 ---------->| promo_bits...
- 下一篇
Win10系统下安装labelme,json文件批量转化
Win10系统下安装labelme,json文件批量转化一、安装环境:windows10,anaconda3,python3.6 由于框架maskrcnn需要json数据集,在没安装labelme环境和跑深度学习之前,我安装的是anaconda3,其中pyhton是3.7版本的,经网上查阅资料,经过一番查找资料,发现,原来在2019年,TensorFlow还不支持python3.7,所以,迫于无奈,我只能乖乖把python的版本退回到3.6版本,具体步骤也很简单。就是打开anaconda prompt ,然后输入conda install python=3.6,然后等待提示(y/n),输入y,等待十几分钟,就会提示done,这样的话,就表示python3.7已经退回到python3.6了。(经过尝试这种方法在我这里没有行得通,可能跟网速有关,又尝试了另一种方法,有兴趣的可以尝试一下。)索性就把labelme安装到3.6中了。 二、安装过程: 1、管理员身份打开 anaconda prompt 2、输入命令:conda create --name=labelme python=3.6 3...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8