【实测】如何用python3来做压力测试引擎?

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 【实测】如何用python3来做压力测试引擎?

实测系列都是作者亲自实验测试调试出来的精品代码,收藏价值很高哦~


一提起压测,就免不了涉及底层并发线程。而一旦有人问底层的引擎用什么语言来写的时候,就会有回答说用java的,有用c的,还有用go的,甚至还有用js的.... 虽然众说纷纭,但是也有一个共识,那就是没人用python来做,原因也只有一个,python的并发能力并不好。

   

上面这个答案,无论是会python的,还是不会python的,无论是写过python并发的大佬还是没写过的小白,都会认同。以至于一直主修python的同学都会有意的避开压测平台的开发,还没尝试,便已认输。

   

但是有没有可能,这种现象是一种盲从和跟风呢?没真正自己写过压测引擎的同学也为了凸显自己很懂,就会附和着说python并发不行,不适合做压测呢?

   

作者之前也不确定,毕竟没有亲手做过。但是有一点可以肯定,就是如果用python的话,可以做到非常非常灵,可以灵活的精确的控制每一个压测阶段的并发,可以实现各种和线上真实用户行为的压力,说通俗点,就是做全链路压测会很简单。

   

那么现在的唯一问题就是,python的底层并发效果,到底能支持多少呢?能不能覆盖中小公司的软件的压测任务呢?可能公司的接口大多并发一百就完了,好点的并发五百,需求也只是三百而已,而python再差,也远远高于这个数据,就是可以轻松覆盖一般的压测需求呢?实在不行,还可以多压力机配合使用来保证呢?

   

为了给广大同学做实验,来真正看一看python到底能不能做压测引擎,本期就来开发一个吧。

   

首先新建一个项目和py文件:yingqing.py

640.png


我们即将在这个文件里写上咱们的第一个简单引擎【常量压测】


常量压测:即每秒发送的请求是恒等的
round变量: 轮数,每秒发一轮,Jmeter默认也是1秒均匀发出所有线程数
num变量:每轮的并发数script方法:模拟被执行的请求,只输出被执行的瞬间时间
one_round方法:每轮的引擎play方法:主引擎,入口函数。


脚本如下:

640.png


我们一共压3轮,每秒发出一轮,每轮压10个并发。来看看输出结果。


640.png

   

从上图中,可以发现,三轮的表现都很完美。92秒的时候10次,93秒的时候10次,94秒的时候10次。和预期是一样的。

让我们把数据拉大... round依然是3,num变成100。


输出结果:

640.png

中间省略...

640.png


中间省略...

640.png


 中间省略...

640.png


从上面结果可以看出,100并发的时候,依然是成功的.... 没有任何延迟,三轮都很完美。


我们继续把数据拉大,round=5轮,num=500并发


结果如下:第一轮的起:第58秒

640.png


第二轮起:第59秒

640.png


第三轮起:第60秒

640.png


第四轮起:第61秒

640.png


第五轮起:第62秒

640.png


结束最后:第62秒

640.png


从结果看出,5轮500并发,依然结果完美。均在一瞬间推出请求。几乎没有延迟。

后面的测试我就不给一一贴图了。直接说结论:


大概单轮超过28000(2.8万)并发的时候,才超过了一秒的时间。这个数据恐怕早就远远覆盖超过了99.99%的压测需求了吧?而这,还仅仅是一个进程下的多线程。如果启用电脑的全部核心的全部进程。那这个并发量会非常可怕的大。而且还可以多台压力服务器一起来配合执行某个压测需求。那样甚至可以覆盖到一些秒杀活动的压测需求哦~

所以实际上,用python来做底层压测引擎不是不可以,主修python的同学可以放心的进入压测领域了哦~


尾语:就像小马过河的故事,不要人云亦云,凡事有条件就亲自尝试一下,结果可能好,也可能坏。但是尝试的过程你会学到很多,成长很多。


广告:这个压测引擎 只是一个常量压测。

其实还可以进阶改造成持续增压,瞬时增压,阶梯增压,无限增压,高低转换等模式。

还可以升级成多阶段,多轮,多语言脚本多函数多接口请求的 超灵活引擎。说到底,一个人足以开发出来了。也可以完全覆盖各种中小型企业的压测需求了。


当然这些功能,在作者的私人培训班中早已实现并教学,其中用到的很多三方组件为限定原创,仅学员和粉丝可用。如果感兴趣的,可以加v : qingwanjianhua 来咨询培训哦~


进粉丝群加v: qingwanjianhua

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
2月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
37 4
|
3月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
154 5
|
3月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
174 3
|
11天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
99 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
2月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
120 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
30天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
2月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
34 4
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
90 3
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
61 1