JMeter以非GUI模式执行压力测试


为什么要使用非GUI模式执行压力测试呢?

  1. 图形化界面消耗更多资源,CPU和内存
  2. 图形化界面不支持大型的负载测试和性能测试
  3. 命令行测试支持持续集成,例如放到Jenkins这样的CI工具上

相关参数

-h:帮助,打印出有用的信息并退出
-n:以非GUI形式运行Jmeter
-t:Jmeter脚本路径
-l:输出结果路径,如果没有该文件就自动创建,可以生成csv或者jtl文件
-r:远程执行,启动远程服务
-H:代理主机,设置Jmeter使用的代理主机
-P:代理端口,设置Jmeter使用的代理主机的端口号
-e:在脚本运行结束后生成html报告
-o:保存html报告的地址,此文件夹中必须为空
-J:传递动态参数搭配, 在脚本中需要配合__P函数取值,如:-Jthreads=100 脚本取值为: ${__P(`threads,1)}`

UI.Vision Kantu-基于Selenium的浏览器自动化工具

之前简单介绍过Selenium框架在Java中的简单应用(查看文章),用来做基于webDriver的自动化测试非常方便。但是通过硬编码的方式虽然简单,但是也还是要写不少的代码的,今天发现了一款基于Selenium的浏览器自动化插件,支持录制和回放,完全可以将网页中的一些重复的操作录制下来,解放双手。

下载地址

https://chrome.google.com/webstore/detail/uivision-kantu-for-chrome/gcbalfbdmfieckjlnblleoemohcganoc?hl=zh-CN

使用案例:批量添加数据

1) 新建宏指令

在需要操作的页面,打开UI.Vision Kantu然后新建宏指令
image.png

MySQL7新特性之JSON数据类型

MySQL 5.7.8开始,原生提供了一个JSON类型的数据格式,在此之前类似的需求都是需要通过VARCHAR的方式来存储处理的。

  • JSON数据类型,拥有自动校验格式功能;
  • 提供操作JSON数据的内置函数;
  • 优化的存储格式,存储在JSON列中的JSON数据被转换成内部的存储格式,允许快速读取;
  • 支持修改JSON对象的特定属性,而不需要更新整个JSON内容;
  • 支持创建JSON对象的特定属性索引;

创建表

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE user
(
id INT AUTO_INCREMENT,
username VARCHAR(12) NOT NULL COMMENT '用户名',
password VARCHAR(32) NOT NULL COMMENT '密码',
extends JSON NULL COMMENT '扩展信息',
CONSTRAINT user_pk
PRIMARY KEY (id)
)
COMMENT '用户表';

CREATE UNIQUE INDEX user_username_uindex
ON user (username);

直接指定字段的类型为JSON即可。

Canal数据同步中间件初探

MySQL本身是支持主从模式(Master/Slave)的,Master产生的日志(binary log)中记录了所有增删改语句,将日志发送到Slave执行即可完成数据库的增量数据同步操作。

Canal是阿里巴巴开源的一个中间件,他的作用就是解析binary log来完成数据同步的。
源码地址:https://github.com/alibaba/canal

Canal工作原理

image.png

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary logslave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

使用Serverless + TravisCI 持续构建Hexo博客

之前使用过Netlify持续构建我的Hexo博客,比较方便,但是访问速度太慢了,不敢恭维(点这里看原文
所以考虑迁移到Coding Pages上面来,但是本地构建Nodejs环境还是比较麻烦,需要装一堆东西,这次又研究了一个比较好的方案,大致流程如下:

1) 语雀上编写文章
2) 配置语雀仓库的Webhook通知,当更新文章时通知给Serverless
3) 使用腾讯云提供的Serverless,编写云函数接收Webhook通知,然后通过API的方式触发TravisCI构建
4) Github新建私有仓库,存储Hexo程序源代码,并编写相关的构建 & 发布规则(发布到Coding Pages

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×