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

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


回顾


前一章我们把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
相关文章
|
1月前
|
Kubernetes 测试技术 Perl
混沌测试平台 Chaos Mesh
混沌测试平台 Chaos Mesh
64 1
|
2月前
|
传感器 数据采集 监控
LabVIEW电池管理系统测试平台
LabVIEW电池管理系统测试平台
39 4
|
8天前
|
测试技术
软件测试用例设计之微信群抢红包经典用例
作者在浏览招聘网站时遇到为微信群发和抢红包设计测试用例的问题,作为软件测试新手,作者通过实际体验并撰写测试案例来加深对业务的理解,并分享了测试案例表格。需要注意的是,该用例未考虑添加银行卡支付、红包类型选择及红包描述。
22 5
软件测试用例设计之微信群抢红包经典用例
|
1天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
11 4
|
22天前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
31 4
|
30天前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
59 1
|
1月前
|
人工智能 自然语言处理 测试技术
基于LangChain手工测试用例转接口自动化测试生成工具
本文介绍利用大语言模型自动生成接口自动化测试用例的方法。首先展示传统通过HAR文件生成测试用例的方式及其局限性,随后提出结合自然语言描述的测试需求与HAR文件来生成更全面的测试脚本。通过LangChain框架,设计特定的提示词模板,使模型能够解析测试需求文档和HAR文件中的接口信息,并据此生成Python pytest测试脚本。示例展示了正常请求、非法请求及无效路径三种测试场景的自动化脚本生成过程。最终,整合流程形成完整代码实现,帮助读者理解如何利用大模型提高测试效率和质量。
75 2
|
1月前
|
运维 Kubernetes 监控
百万并发连接的实践测试02
百万并发连接的实践测试02
|
1月前
|
网络协议 Ubuntu
百万并发连接的实践测试01
百万并发连接的实践测试01