接口测试平台162:并发运行用例功能(1)

简介: 接口测试平台162:并发运行用例功能(1)

很抱歉,接口测试平台因为接到大量粉丝要求想听并发执行用例的功能,所以插播了本章节,所以之前准备开的导入导出接口功能延后了哈。


   其实刚开始听到有粉丝想听这个功能时我很诧异,因为这并不算什么复杂的功能,而且我应该讲过呀,很多平台内我都使用了并发功能呀.... 但是我回过头一想,不对.... 目前用到并发功能的平台 我还没来得及更新到公众号....只是在我培训课程中存在。


   所以我赶紧打开接口测试平台,准备给弄进去....


   首先就是这个并发功能用在哪的问题。

   目前,接口测试平台有自己的用例库,其中可以生成多个大用例,每条用例都是完全分割开的,并且每条大用例内部都含有若干接口,也就是小步骤。


   这些小步骤是有上下文关联的,必须按照顺序执行,所以步骤之间不存在并发的问题。那么并发功能就只能放在多个大用例之间了。


   这里我们先想一个问题,就是很多同学总说自己看了多少书,多少博客,然后学了多少知识点,但是一遇到现实问题,就不知道如何下手了。其实,这也是我常说的:知识会背和会用,是存在一个鸿沟的。


       更文明点来说就是:这些零散的知识点,你没有串起来成一根线,以至于遇到问题,不知道该用哪个技术来解决,也不知道能不能解决,信心也没有,而是第一时间盲目的去搜,去问。


   所以我的文章为什么很多人喜欢读,为什么我的培训每期都爆满,就是因为,我讲的知识并不复杂,而更注重如何使用这些浅显的知识来解决实际问题。


   好,言归正传,经过我们上面的思路,我们知道了这个并发功能应该用于多个大用例之间。


   那么继续跟随我的思路走:

   

   这个并发功能底层用什么技术? 我想了想,用python的多线程比较好,也就是thread。


   那么怎么具体实现呢?更简单,并发的去请求本来就应该触发单独运行用例的那个url或者函数即可。


   那么多线程要怎么去调用执行用例的url呢?很简单,request请求即可。


   好,基于这个简单的思路,我们应该就可以实现这个功能了。这里扩展一下,如果是调用一些其他脚本,或者其他语言的脚本,最好用多线程调多进程驱动shell的方式,安全可靠,报错了也方便调试~不过本平台目前用不到这个设计,在我培训一期的ui自动化平台中,所有的脚本都是可拆卸组装的各种语言脚本,所以会用到这个设计。


  好,我们现在开始准备基础材料吧:


   首先是执行用例的url:

image.png


    好,在这个url中,我们并没有看到变量参数,也就是没看到运行大用例的具体用例id,不过!这是因为django的写法如此,实际上,这是一个get请求,而参数,是真实的在url中的,不信我们打开浏览器f12看看:

image.png

   


也就是说,我们只需要get请求拼接一下这个url,即可,然后并发函数来请求它。


那么这个具体的用例id,怎么获取呢?因为你点了并发,所以要执行当前项目用例库下所有用例,那么我直接从数据中拿出来这些用例的id即可。整个过程应该毫无难度就实现了。


但是现在还要思考一个问题,就是执行结果展示。既然要并发执行了,那么结果展示肯定是需要集成到一起的。不可能我一键全部执行后,要手动一个用例一个用例的点开报告看吧?


所以这里涉及到了一个隐藏需求,就是报告结果整合!


先看下我们当前的报告是什么东西?

image.png


这老人一眼就看出来了,这是httptestrunner的报告魔改的对吧?

那么这个报告有个特点,就是它并非存在于数据库中,而是实打实的一个html文档。

image.png


那么这就给我们合并报告提高了难度,如果是数据库中,那好办了。但是现在这样已经生成了html文档。那我们怎么合并呢?


也简单,直接按名字提取里面的关键信息:成功用例数,失败数,总数 即可。


那么怎么提取呢?因为这种报告一定是遵从一个初始文档的,所以它的html源码绝对是有规律可循的,也就是说,我可以用正则提取。


正则提取这种数据,就是玩~


提取出的数据,我们可以简单的相加或者放在一起展示。


最终结果数据就有了,那么问题又来了,要怎么显示在前端呢?


这...似乎又是一个难题。


这里我提出四个解决方案。


并非只能用其中一种,而是可以选择几种来用。如果我时间充足,会给大家全讲了。


方案一:在页面生成个按钮,一点就直接alert窗显示最终结果即可。


方案二:做个html,把所有数据展示到html里,这样算是永久存储可以导出。


方案三:也不用正则提取了,直接把所有的html报告内的关键信息dom层,全部粘贴复制到其中一个里,这样生成的报告更细致。


方案四:启动邮件/钉钉/飞书 机器人功能。直接用机器人通知你执行结束并展示结果。


好了,不论选哪种,实现起来难度都不高,所以这个问题跳过。


那么这个并发功能算完了么?当然没有!


性能上也要考虑一个严峻的问题,就是如果用例特别多,那么并发执行就像什么了?


对,像压测!


也就是说,这个接口测试平台要承担压测的水准才行,可实际上,我们一开始造平台的时候并没有策划这个范围,而且服务器也不一定能扛得住!所以我们要做一个保险功能,什么功能?


具体功能,请听下回分解!

相关文章
|
1月前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
150 56
|
15天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
49 3
|
19天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
64 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
1月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
41 4
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
67 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
测试技术
Appscan手工探索、手工测试功能实战
Appscan手工探索、手工测试功能实战
|
2月前
|
人工智能 测试技术 Python
基于 LangChain 的自动化测试用例的生成与执行
本章节详细介绍了如何利用人工智能技术自动化完成Web、App及接口测试用例的生成与执行过程,避免了手动粘贴和调整测试用例的繁琐操作。通过封装工具包与Agent,不仅提升了测试效率,还实现了从生成到执行的一体化流程。应用价值在于显著节省时间并提高测试自动化水平。
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
41 0
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
250 7
Jmeter实现WebSocket协议的接口测试方法
下一篇
无影云桌面