- 博客(70)
- 收藏
- 关注
原创 Playwright(一)-UI自动化测试的黑马
2025年UI自动化工具市场显示,Selenium仍以60%份额领先,但Playwright在新项目采用率已达75%。Playwright同比用户暴涨200%,凭借多项优势有望取代Selenium:1)性能提升30-50%,降低40%资源消耗;2)智能等待减少30%用例报错;3)支持Web/App多环境测试;4)录制功能减少50%代码量;5)异步编码加速运行。Selenium维护成本降低50%,但Playwright在设计上完美解决了其痛点,发展势头强劲。
2025-11-17 14:40:47
327
原创 Midscene.js(三)-安卓自动化
官方yaml格式的用例编写格式说明:使用 YAML 格式的自动化脚本 - (AI UI Automation, AI Testing, Computer Use, Browser Use, Android Use)安卓测试用例格式,运行命令没区别 midscene case.yaml:
2025-11-15 10:00:00
219
原创 Midscene.js(二)-本地部署+用例demo
5、切到yaml 目录,运行midscene case.yaml,运行结束,本地生成一个目录,查看report。3、设置系统环境变量(在浏览器中设置的模型参数,都设置到本地系统环境变量中)2、安装midscene:npm i -g @midscene/cli。1、安装node.js(自行百度)4、找了一段yaml测试用例。
2025-11-14 11:49:22
183
原创 Midscene.js(一)-感受AI带给UI自动化测试的变革
Midscene.js是由字节跳动WebInfra团队开源的AI驱动UI自动化测试框架,支持通过自然语言描述测试步骤。用户只需安装浏览器插件并配置模型API密钥(如阿里云),即可实现自动化测试。示例演示了框架自动完成Django后台的登录和账号创建操作,并能生成带截图的测试报告。该工具降低了测试门槛,无需编写代码即可实现复杂UI操作验证。官网和GitHub仓库已开放,支持多种大语言模型集成。
2025-11-12 17:32:08
178
原创 基于KubeSphere以containerd的方式离线部署k8s集群及中间件部署
摘要:本文是作者亲身搭建k8s集群,到各个中间件,再到代码配置,流水线发布直到整个系统正常运行的过程,记录了各种踩坑及解决方案,可能不是最优解,但最终环境正常交付,所有服务都正常运行。
2025-06-12 14:50:06
1195
原创 搭建笔记:jenkins+git+docker+k3s+k9s+dashboard+Harbor+prometheus+grafana
spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用。app: nginx #为该Deployment设置key为app,value为nginx的标签。app: nginx #为该Deployment设置key为app,value为nginx的标签。labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod。kind: Deployment #该配置的类型,我们使用的是 Deployment。
2023-12-06 14:45:45
480
原创 Django 缓存(二)
函数提供静态文件,并将其设置为缓存值。最后,我们将内容作为HTTP响应返回。中获取并将其设置为缓存值。最后,我们将结果作为上下文传递给模板进行呈现。函数呈现片段,并将其设置为缓存值。最后,我们将片段作为HTTP响应返回。,并尝试从缓存中获取静态文件内容。如果缓存中不存在内容,则使用。,并尝试从缓存中获取页面片段。如果缓存中不存在片段,则使用。在上面的示例中,我们定义了一个缓存键。在上面的示例中,我们定义了一个缓存键。在上面的示例中,我们定义了一个缓存键。如果缓存中不存在对象,则从。,并尝试从缓存中获取。
2023-12-06 14:15:34
204
原创 Django 缓存(一)
在Web应用程序中,缓存是一种优化技术,它可以在多个请求之间存储和重用数据。在Django中,缓存是一种内置的功能,可以让您轻松地缓存查询、页面片段、静态文件等。本文将介绍Django中缓存的详细信息,包括缓存的类型、使用方法、配置选项以及示例。
2023-12-06 14:13:56
179
原创 FastAPI-2-获取入参+异步处理
1.获取参数from pydantic import BaseModelfrom fastapi import FastAPIimport uvicorn as uapp = FastAPI()@app.get("/getInfo/{name}")def geturl(name: str): # 请求方式:http://127.0.0.1:9003/getInfo/zhangsan return {"msg": "这是get请求url参数", "name": name
2022-04-29 18:38:50
799
原创 FastAPI-1-简介及入门
1.1FastAPI是什么?FastAPI是一个现代的,快速(高性能)python web框架。基于标准的python类型提示,使用python3.6+构建API的Web框架。FastAPI的主要特点如下: 快速:非常高的性能,与NodeJS和Go相当,是最快的Python框架之一。 快速编码:将开发速度提高约200%到300%。 更少的bug:减少大约40%的开发人员人为引起的错误。 直观:强大的编辑器支持,调试时间更短。 简单:易于使用和学习。减少阅
2022-04-29 16:32:50
275
原创 一次全链路压测-总结
背景:公司接到私有化项目部署,由于没有各个微服务的真实能力,往往项目经理拉会开发评估需要的资源,但是没有测试数据支撑,导致评估的资源往往到线上真实使用量高太多,客户经常抱怨给的服务器资源使用的并不多,所以组织这次压测,目的是得到各个微服务的能力及全链路合理的资源配比。梳理服务准备环境压测策略压测过程压测结论...
2022-04-29 16:17:30
746
原创 locust(三)使用更快的FastHttpUser 提高性能
Locust’s default HTTP client uses python-requests. It provides a nice API that many python developers are familiar with, and is very well-maintained. But if you’re planning to run tests with very high throughput and have limited hardware for running Locust
2022-03-21 10:17:48
7330
原创 fio压测磁盘读写性能
FIO是测试IOPS的非常好的工具,用来对磁盘进行性能测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。1、测试用文件[global]ioengine=libaiodirect=1time_basedruntime=120refill_buffersnorandommaprandrepeat=0group_reportingsize=10Gfilename=/data/fiodata[seq-read-64K-Q32-T1]rw
2022-03-21 10:04:05
1795
原创 locust(二)配置prometheus和grafana
一、Prometheus介绍Prometheus是一个开源的系统监控和报警系统,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。二、grafana介绍Prometheus的重要组件之一,提供监控仪表盘,可视化监控数据的功能三、locust介绍Locust 是一个开源负载测试工具,使用的‘协程’方式,有webui图形界面、无图形界
2022-03-02 19:56:44
9200
原创 locust(一)http 接口demo
Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。这个想法是,在测试期间,一群蝗虫(Locust)会攻击你的网站。您定义了每个蝗虫Locust(或测试用户)的行为,并且实时地从Web UI监视群集过程。这将有助于您在让真正的用户进入之前进行测试并识别代码中的瓶颈。Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过协程(gevent)机制使用轻量级过程。每
2022-02-28 12:03:00
9941
翻译 Jmeter(四十五)Logic Controllers 之 Throughput Controller(控制业务比例)
不管前面是地雷阵还是万丈深渊,我都将勇往直前,义无反顾,鞠躬尽瘁,死而后已。 --朱总理一、官方文档 19.2.7 Throughput Controller The Throughput Controller allows the user to control how often it is executed. There are two
2022-02-28 11:50:15
259
转载 Jmeter(三十六)纵横并发、限制QPS
一、纵横并发Jmeter设计并发事件,这应该是一项必备技能。首先来看并发的概念。通常在性能测试中会涉及到并发用户数的概念,有关并发用户数(系统用户数)的详解后续再记。(有关并发、并行的概念参考https://blog.youkuaiyun.com/qq_33290787/article/details/51790605)并发:本质为一个CPU(或多个CPU)在若干道程序(或线程)之间的多路复用。参考知乎大神的讲法:并发指的是该系统有处理多事务的能力,不一定是同时。啃了啃虫师的一篇博客http
2022-02-28 11:49:57
1132
转载 Jmeter(二十五)Jmeter之系统函数
忘了Jmeter4.0已发布((*^▽^*))具体优化项还没体验,记录一下,传送门:http://jmeter.apache.org/download_jmeter.cgi Jmeter的系统函数已经发布了许多函数,并且实现了N多功能,(可以自行开发自定义函数哦~)记几个常用的函数: ${__time(,)}-->时间戳: 参数一:日期格式---${__time(yyyy-MM-dd-HH-mm-ss,)} 这里边有个误区,大写M是月份,
2022-02-28 11:49:24
309
转载 Jmeter(二十一)Jmeter-Question之“不同线程组之间传递变量”
Jmeter中增添原件是以线程组为‘基本单位’的,贴张图,显而易见: 测试计划节点下的内容 线程组节点下的内容 因此,变量只能在当前的线程组下进行传递。做个小Demo,立即试试: 测试结论:不同线程组之间的变量不能共享。那么该如何解决该问题呢? 解决方案:使用函数${__setProperty()}
2022-02-28 11:49:10
296
转载 Jmeter(三十五)聚合报告
Jmeter的聚合报告是一个非常nice的listener,接口测试以及性能测试方面都会用到这个nice的监听器。 那么优秀在什么地方呢?上图 日常工作中可能只关注这部分内容: 可是这里边的指标真的都懂么?看了几篇知名大师的博客,都侧重谈了聚合报告这块的内容;当然,我在面试过程中,也经常有问在简历上写着“精通Jmeter”的面试者一些关于聚合报告方面的问题,遗憾,能回答上来的寥寥无几;或者说能答到重心的不多。可能本身这块的一个指标就存在一定的误区。 虽说在一些
2022-02-27 08:41:26
706
原创 python(七)-多线程-线程池concurrent.futures
'''线程池:concurrent.futures主线程想获取子线程状态,返回值。。。。统一了多线程和多进程的编码格式,方便切换'''import timefrom concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor,as_completeddef runner(times): time.sleep(times) return timesexecutor = ThreadPoolExec..
2022-02-27 08:40:59
511
原创 python(六)-多线程-Semaphore(信号量)
Semaphore对象内部管理一个计数器,该计数器由每个acquire()调用递减,并由每个release()调用递增。计数器永远不会低于零,当acquire()发现计数器为零时,线程阻塞,等待其他线程调用release()=============控制并发数量=============import threadingimport timeclass Chi(threading.Thread): def __init__(self,sem,i): super().__..
2022-02-27 08:40:34
519
原创 python(五)-多线程-condition(条件变量)
什么是conditioncondition 多线程条件变量,即在满足特点的条件下,线程才能访问相关的数据,这种同步机制就是一个线程等待特定的条件,当另一个线程满足条件后通知它,该等待线程才会执行,一旦条件满足,该线程就会获得锁,从而独占共享资源的访问。常用方法acquire:获取锁release:释放锁wait:等待获取通知,可以设置超时notify:唤醒一个或多个等待线程notify_all(唤醒所有等待此条件的线程)===========举例(小爱和小度对话)============.
2022-02-27 08:40:26
1133
原创 python(四)-线程间同步-Lock、Rlock
为什么线程间数据不一致?import disdef add1(a): a +=1print(dis.dis(add1)) #查看函数字节码运行方式==============结果============651 0 LOAD_FAST 0 (a) 3 LOAD_CONST 1 (1) 6 INPLACE_ADD 7 STORE..
2022-02-27 08:40:18
298
原创 python(三)-线程间通讯-queue
现在很多企业会混淆QA和测试工程师,毕竟一些小企业也没有太多钱养那么多人。一、先看一下两者的职责:软件测试人员的职责:尽可能早的找出软件缺陷,确保得以修复。质量保证人员(QA)主要职责:创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷。从上面能看出,测试人员重点关注的是软件的缺陷-跟踪-修复,来保证质量,QA则是通过迭代的流程合理性来定义迭代规范来保证质量;二、人员要求:测试人员高低都可以,资深可以做自动化,专项。。。实习生可以简单功能;但QA要求必有有一定经验..
2022-02-27 08:40:11
421
转载 Jmeter(二十三)Jmeter-Question之“批量造数据”
日常工作中,无论是在做功能测试、接口测试还是性能测试,经常会有这么一个场景出现,“那个谁谁谁,帮我加几条订单”,“那个某某某,给购物车增添几个产品”,“在数据库加几百条数据”。。。等等,通常少数量,或者能够人为解决的就人工解决,那么如果是数量比较大,数万条数据,总不可能一条一条进行增添吧? So,在造数据这块通常能够想到的便是数据库通过“存储过程”来进行增添,或者外部程序or工具,Jmeter当然也支持的,做的小Demo: 原件:JDBC连接池 计数器 JDBC Req
2022-02-27 08:38:47
1839
转载 Jmeter(二十二)Logic Controllers 之 Throughput Controller(控制业务比例)
不管前面是地雷阵还是万丈深渊,我都将勇往直前,义无反顾,鞠躬尽瘁,死而后已。 --朱总理一、官方文档 19.2.7 Throughput Controller The Throughput Controller allows the user to control how often it is executed. There are two
2022-02-27 08:38:03
150
转载 Jmeter(十九)Logic Controllers 之 Module Controller and Include Controller
ModuleController ---模块控制器 测试计划设置“独立运行没每个线程组” 线程组2中使用Module Controller执行线程组1中的Sampler: 紧接着,将线程组1disable掉,执行: 结果树中是从线程组2开始执行,Module Controller依然可以控制到线程组1中的Dummy Sampler。 可以再增添个Test Fragment,试一试。 This isModul..
2022-02-27 08:36:25
195
原创 sipp命令 各参数含义
sipp -sn uac 172.31.89.4:5060 -r 1 -rp 3000 -inf data.csv -p 7098 -i 172.31.89.242 -s 8001 -sf uac_onecall.xml –m 1000 –l 900各个参数说明:172.31.89.4:5060:远端地址和端口(在脚本中用[remote_ip],[remote_port]引入)-r 1 -rp 3000:每三秒钟发一个呼-inf data.csv:引入数据配置文件-p 7098:本地端口(在
2022-02-26 07:40:38
1978
转载 Jmeter(十八)Logic Controllers 之 Random Controller and Random order Controller
Random Controller就比较简单了,完全随机!毫无章法。毫无任何规律的运行。还有一个Random order Controller,随机顺序控制器就像一个简单的控制器,它将最多执行一次子元素,但节点的执行顺序是随机的。看Demo: ...
2022-02-26 07:38:34
166
转载 Jmeter(十七)Logic Controllers 之 Interleave Controller
Interleave Controller----交错控制器,对于交错控制器官方文档解释的很清楚,上例子:可以看到运行一次Interleave Controller下的Sampler,运行一次Interleave Controller之外的Sampler。如此不停的交错循环。Demo2: 两个交错控制器,执行结果: 可以看到,循环交错1、A;2、B;3、C。Demo3: 主交错器选择ignore sub-controller bl..
2022-02-26 07:38:17
149
转载 Jmeter(十六)Logic Controllers 之 Runtime Controller
Runtime Controller-----运行时间控制器;控制其下的Sampler运行时间。 该控制器较为简单,官方文档也没作太多说明。照着Blazemeter写个例子: 运行,查看结果。 可以看到运行了5秒。...
2022-02-26 07:38:00
153
转载 Jmeter(十五)Logic Controllers 之 while Controller
while Controller是控制循环的Controller,条件判断的Controller。先看看官方Demo。 while Controller控制它的子对象,直到false为止。并且还提供了三个条件: 1、blank:最后一个循环中失败时的空白退出循环. 2、LAST:最后一个循环中失败时的退出循环。如果在循环失败前的最后一个示例,则不要进入循环。 3、Otherwise:当条件等于字符串“false”时退出(或不进入)循环。
2022-02-26 07:37:43
362
转载 Jmeter(十四)Logic Controller 之 If Controller
If Controller---如果控制器;属于逻辑判断类型的组件,其实学过代码的都知道if--else,while等都是常用的逻辑判断关键词,Jmeter也提供了逻辑判断--If Controller便是如此。 写个例子加深印象。 正在上传…重新上传取消 正在上传…重新上传取消 正在上传…重新上传取消 DummySampler是Jmeter第三方插件中的比较典型的一个插件,该插件相当于小型mock,可以自定义请求响应报文内容,mock部分内容后续记载。 此
2022-02-26 07:37:19
297
转载 Jmeter(十三)Debug Sampler
上篇记录了关联的一些内容。当然,关联是有“风险”的,经常写的正则表达式,jsonpath,xpath自己认为是没问题的,可是就是跑起来有问题,百思不得其解,究竟是数据问题还是表达式的问题,本篇就来记录一个“神器”-----Debug Sampler 老规矩,先看看官方文档作何解释。 啊哈,它是作为监听变量的一个采样器。 无论是从参数化、关联等涉及到变量输出的内容,Debug Sampler都会进行打印出。 测试计划中设置的变量
2022-02-26 07:35:58
1259
转载 Jmeter(十二)关联
关联在实际业务需求中是随处可见的,比如:支付需要提交订单成功的订单号;修改个人资料需要登录成功响应报文信息。。。总之关联无处不在,今天来记一记Jmeter的关联功能。 Jmeter关联的方法比较常用的是正则表达式提取器,正则表达式提取器属于后置处理器,那么久抛出了一个比较大的知识点----正则表达式; 其实,正则表达式就是一种文本模式,相信都在windows我的电脑中搜索过文件嘛,那么肯定使用过“*”,其实都是类似。 记几个比较常用的: ^ ----->为匹配输入字符串
2022-02-26 07:35:46
351
转载 Jmeter(十一)参数化
有关参数化的概念,前面有篇随笔已经粗略的提到了参数化的一点内容。本篇来主要记录参数化。 Jmeter的参数化方式有很多,在此我来一一记录,对待不同个规模、业务模型、数据量来进行记录参数化的方法。 一、前置处理器--->用户参数 虽然请求会失败,但是只是看请求参数是否能够传输成功 将线程数增添为两个。 可以看得到,该用户变量值one、two是传输过来的。 用户参数组件有很多灵活的用法。可以查看该帮助文档.
2022-02-26 07:35:33
328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1