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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 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还是快的呀!




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
28天前
|
关系型数据库 MySQL 测试技术
【分享】AgileTC测试用例管理平台使用分享
AgileTC 是一个脑图样式测试用例管理平台,支持用例设计、执行与团队协作,帮助测试人员高效管理测试流程。
172 116
【分享】AgileTC测试用例管理平台使用分享
|
26天前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
1月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
1月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
2月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
4月前
|
存储 测试技术 虚拟化
VMmark 4.0.3 - 虚拟化平台基准测试
VMmark 4.0.3 - 虚拟化平台基准测试
95 0
VMmark 4.0.3 - 虚拟化平台基准测试
|
28天前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
2月前
|
存储 人工智能 文字识别
从零开始打造AI测试平台:文档解析与知识库构建详解
AI时代构建高效测试平台面临新挑战。本文聚焦AI问答系统知识库建设,重点解析文档解析关键环节,为测试工程师提供实用技术指导和测试方法论
|
2月前
|
人工智能 安全 数据可视化
安全测试平台的选型标准与搭建思路
随着企业安全需求升级,传统漏洞扫描和渗透测试已无法满足要求。构建安全测试平台(STP)成为趋势,实现漏洞扫描、权限评估、接口测试等工作的平台化运营。本文从选型标准、平台架构、模块功能等六个方面,系统讲解如何搭建企业级安全测试平台,提升安全能力。
|
5月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
167 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台

热门文章

最新文章