测试平台系列(46) 用例并发之我全都要

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 用例并发之我全都要


回顾


前一章我们把http换成了aiohttp,完成了数据构造器功能。今天就轻松点吧~

用例运行


目前我们开放了api,/request/run这个接口去运行单个用例。但是我们的目标并不是做一个玩具,所以我们需要想一下怎么去支持多条用例一起执行。

至于测试集,测试计划,定时任务这种也会陆续展开,先把眼前的困难给解决。

所以我们需要在页面上可以多选用例来执行,并能看到一个具体的报告,有了这一步,后续整合测试集和测试计划就易如反掌了。

MQ/celery?


其实是可以用mq的方式去执行用例,用户选定了一批用例,直接往mq里面塞就完事了,剩下的交给消费者。

这样的好处就是耦合度大大降低,我们的后端服务和消费者是完全分开的,就算要这么玩,消费者也不会用Python来做。这样我们在后端服务上线的时候不会影响到执行结果

不过这么做其实增加了我们系统的复杂度,这是我不想要的。

我们还是先观察下Python批量执行case的效率吧!

普通方式


先编写一个同步版本的批量运行方法。

19.jpg

image

由于我的run方法已经被改造为异步方法了,所以这边写法是这么写,但其实还是同步的执行过程。

代码很简单,我们通过循环执行每个case,然后把结果写到data字典里面,最后输出具体的耗时(只是测试用)。

20.jpg

image

可以看到,在本地数据库+我的高配置机器加持下还是需要30多秒执行100来个用例。其实已经能够接受了,但是后续数量更大的话,怎么办!咱们直接一步到位,开始改造。

不只是http有异步库


其实mysql也有个异步库: aiomysql,所以我们需要先安装依赖:


pip3 install aiomysql

这个库可以嵌入到sqlalchemy,因为sqlalchemy1.4以上已经支持了asyncio(我个人认为这是一个大的趋势,能快为啥要慢呢?如果Python有很快的速度+极高的开发效率,不说大型业务服务,起码测试平台的市场是可以拿捏的四死的!)

可能因为我最近Java写的比较多,处理嵌套很深的JSON,需要定义各种class,要不就是各种转换类型,难受啊。

  • config.py新增异步SQLALCHEMY_URI


ASYNC_SQLALCHEMY_URI = f'mysql+aiomysql://{MYSQL_USER}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{DBNAME}'

21.jpg

新增异步session和异步engine


  • 改造同步方法为异步,以获取测试用例方法为例

22.jpg

其实和同步的区别也就4个地方


  1. 需要改为async方法
  2. with语句要改为async with
  3. select(表).where(条件),需要用async_session.execute调用
  4. 拿数据用result.scalars.first()或者all()都可以,和以前几乎一样

23.jpg

改造完了之后记得在调用它的地方也改写一下

改造之后


24.jpg

异步和同步的关键就是gather

虽然没快太多,但是也是有明显进步的,我已经把case运行的方法里面的db操作全部改为了异步。

25.jpg

快了20秒左右


不得不感叹,fastapi还是快的呀!




相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
Kubernetes 测试技术 Perl
混沌测试平台 Chaos Mesh
混沌测试平台 Chaos Mesh
34 1
|
1月前
|
传感器 数据采集 监控
LabVIEW电池管理系统测试平台
LabVIEW电池管理系统测试平台
28 4
|
3天前
|
人工智能 自然语言处理 测试技术
基于LangChain手工测试用例转接口自动化测试生成工具
本文介绍利用大语言模型自动生成接口自动化测试用例的方法。首先展示传统通过HAR文件生成测试用例的方式及其局限性,随后提出结合自然语言描述的测试需求与HAR文件来生成更全面的测试脚本。通过LangChain框架,设计特定的提示词模板,使模型能够解析测试需求文档和HAR文件中的接口信息,并据此生成Python pytest测试脚本。示例展示了正常请求、非法请求及无效路径三种测试场景的自动化脚本生成过程。最终,整合流程形成完整代码实现,帮助读者理解如何利用大模型提高测试效率和质量。
14 2
|
6天前
|
运维 Kubernetes 监控
百万并发连接的实践测试02
百万并发连接的实践测试02
|
4天前
|
网络协议 Ubuntu
百万并发连接的实践测试01
百万并发连接的实践测试01
|
7天前
|
存储 测试技术 API
apifox实例应用-自动化测试用例for循环的使用
总结来说,通过在Apifox自动化测试用例中结合for循环的使用,我们可以有效地对接口进行批量测试,提升测试效率和覆盖率。同时,通过参数化测试数据的灵活应用,能够确保我们的接口在不同的输入条件下都能保持正确的行为。这种方法能够显著减少手动测试工作量,同时通过标准化的流程确保测试的一致性。
16 0
|
2月前
|
人工智能 分布式计算 DataWorks
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
2024年5月31日,在中国信通院组织的首批数据智能平台专项测试中,阿里云数据智能平台解决方案(MaxCompute、DataWorks、PAI)顺利完成测试。
166 5
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
|
26天前
|
测试技术 Apache
单元测试策略问题之设计有效的单测用例问题如何解决
单元测试策略问题之设计有效的单测用例问题如何解决
|
2月前
|
人工智能 测试技术 索引
基于LangChain手工测试用例生成工具
使用Python的LangChain框架,测试工程师能自动化从需求文档生成思维导图。代码示例演示了如何加载文档,提取信息,创建向量索引,执行检索,并通过PlantUML生成MindMap图像。流程中,AI替代了手动梳理需求和创建测试用例的过程,涉及的关键组件包括TextLoader、OpenAIEmbeddings、FAISS检索和AgentExecutor。该实践帮助掌握LangChain的检索和Agent功能,以实现文档到测试用例的智能转换。
45 1

热门文章

最新文章