作为一个测试+运维人员,经常需要使用jenkins做持续集成,将jenkins作为守护进程有很多方法,其中一个就是用systemd。
Java生成javacore和heapdump文件
现网有服务量大的服务,一次OOM后只留下了javacore文件,heapdump没有生成,这次去另一台一样职责的机器上检查取一下javacore和heap dump文件。
Linux swap占用过高
OS的监控告警,swap占用超过80%,记录解决思路
JMeter踩过的小坑,Cookie的domain和path
Cookie的domain和path
domain
1 | Set-Cookie: login_sip=1D-8B-35; Path=/; Domain=.example.com |
SSO单点登录后,返回的头信息中应该包括若干条Set-Cookie
,上述的Cookie说明此key-value的Cookie能用于*.example.com所有二级域名,Path=/
表示后续所有路径都可以使用。
下面说的所有二级域名当然包括一级域名。
- Path=/; Domain=.example.com 所有二级域名,所有uri
- Path=/; Domain=account.example.com 仅account.example.com这个二级域名可用,所有uri
- Path=/openapi; Domain=.example.com 所有二级域名,仅匹配/openapi的uri
坑重现
JMeter的Server Name or IP
中,域名或ip后不应该添加任何东西,perf.example.com
或192.168.1.1
都是对的,以下都是错误的例子。
- perf.example.com/
- perf.example.com/zoo
- 192.168.1.1:8080
如果填写的是perf.example.com/
,就会出现错误信息:Not storing invalid cookie: <aasso_login=””; Path=/; Domain=.example.com> for URL http://perf.example.com//zoo/services/N (Illegal ‘domain’ attribute “example.com”. Domain of origin: “perf.example.com/“)
JMeter 跨线程组共享变量(单点登录Cookie无法保存)
我司采用单点登录用Cookie做身份认证,在进行JMeter性能测试时,仅使用HTTP Cookie Manager仍提示未登录。原因在于单点登录服务器的域名与待测试的服务器域名不一致,Cookie Manager不支持跨域Cookie。本文介绍两种方法来处理。
RobotFramework 前端内存泄漏测试
前端内存泄漏 - 威力加强版
背景
前端应用越来越复杂,反复操作可能导致dom或js对象没有被正确回收,导致内存占用持续高位。
测试原理
- Selenium 控制浏览器反复操作
- psutil 获取操作系统层面的内存占用
- window.performance.memory 获取浏览器V8引擎级别js堆内存使用情况(chrome only)
- openpyxl 记录到excel
- robotframework 包装降低学习成本
graph LR A[Robot framework/Selenium] --pid--> B[pstutil] A --获取pid--> C[chromedriver] A --执行js获取内存占用-->C B --获取所有子进程chrome的pid--> A B --chrome进程的内存占用--> A
graph TD A[Selenium: 获取chromedriver进程号] --> B[psutil: 获取多个子进程chrome的进程号] B --> C[psutil: 获取子进程的内存占用] C --> D[chrome: 执行js获取js使用情况]
工程目录介绍
1 | ├─1-TestCase |
graph LR 切换.txt --> MemLeak.txt 切换.txt --> UplSolo.txt MemLeak.txt --> MemUsageExcel.py MemUsageExcel.py --> MemoryUtils.py
- UplSolo.txt:封装页面上的业务操作
- MemLeak.txt:封装跟内存泄漏有关的动作,MemUsageExcel.py 所有的方法在此划分
- MemUsageExcel.py:记录excel,调用MemoryUtils.py
曲折经历
进程号变化导致写excel数据不对齐
记录一开始的chrome进程,后续新增的进程不管,死掉的进程默认为0
精确内存需要在打开chrome时候新增参数
探讨
该方法是否真的能识别出内存泄漏?
- 系统进程级别比js占用多很多
- 系统进程级别的内存可能随应用当前页面展示的内容不同而(自动地)有所回落
- 更进一步的分析就需要对数据进行分析了,后话了
项目地址
RobotFramework问题集锦
关键字默认参数是变量,也需要定义
1 | 登录 |
如果这里的${Url_A3}
没有定义,会报错Non-existing variable '${Url_A3}'.
打开chromedriver时候,增加(命令行)参数
1 | ${args_list} Create List user-data-dir=${OUTPUT DIR}${/}chrome_data enable-precise-memory-info |
记一次python调试excel读取错误
日常工作之一就是帮助合作方解决自动化问题, 今天的问题是python写的Robotframework扩展库ExcelRobot在读取xlsx报错, 同样的文件昨天还是OK的. 带着疑惑开始debug
工单分类-keras笔记
之前参加公司内的文本分类(工单分类)比赛,记录中间过程。
ReportPortal 二次开发笔记
ReportPortal二次开发中, 记录一些考量、感想