1、简介
MeterSphere是一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,兼容JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件的交付。
2、安装部署
环境要求
- 操作系统: 任何支持 Docker 的 Linux x64
- CPU/内存: 4核8G
- 磁盘空间: 20G
- 可访问互联网
安装
以 root 用户 ssh 登录目标服务器, 执行如下命令
curl -sSL https://github.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh
安装脚本默认使用 /opt/metersphere 目录作为安装目录,MeterSphere 的配置文件、数据及日志等均存放在该安装目录
更新
如果您的服务器可以访问互联网, 可以通过以下命令直接升级 metersphere 至最新版本
# 升级至最新版本
msctl upgrade
# 查看 MeterSphere 状态
msctl status
# 配置变动后重启
systemctl restart docker
msctl reload
自 MeterSphere v1.3.0 起之后的版本才提供 upgrade 命令
更新说明
https://metersphere.io/docs/about/changelog/
登录使用
安装成功后,通过浏览器访问如下页面登录 MeterSphere
地址: http://目标服务器IP地址:8081
用户名: admin
密码: metersphere
登录超时配置
vim /opt/metersphere/conf/metersphere.properties
添加以下配置,单位秒
session.timeout=86400
重启ms-data-streaming服务
docker restart CONTAINER ID
日志查询
docker logs ms-server
docker logs ms-data-streaming
docker logs ms-node-controller
docker logs mysql
docker logs kafka
3、接口测试
实际案例
- 创建项目

image

image
- 上传jar包

image
- 项目环境配置

image

image
- 接口定义-导入已有,支持多种数据格式导入
备注:jmeter中脚本编写不太规范的话,导入可能会提示找不到引用的jar包方法

image
- 接口定义-手动创建

image

image
- 添加接口用例

image
- 完善用例(可根据接口定义增加接口异常流)

image
- 接口用例可添加前后置脚本、断言、参数提取等

image

image
- 前后置脚本,与Jmeter一样
import com.xdja.wch.DFSBase;
DFSBase dfsBase = new DFSBase();
//获取fastdfs服务器系统时间
log.info("-----timestamp------:"+"${timestamp}");
Long timestamp1 = Long.parseLong("${timestamp}");
//log.info("-----timestamp1------:"+ timestamp1);
Long time = timestamp1 + 8460000;
String ts = String.valueOf(time);
vars.put("ts",ts);
String data = "${name}" + ts + "${appId}";
String sign = dfsBase.hamcsha1(data, "123456");
//log.info("-----sign------:"+sign);
vars.put("sign",sign);

image
- 接口自动化-创建场景

image
- 接口自动化-场景中导入接口用例,建议引用方式,方便维护

image
- 接口自动化-场景中用例调试,微调用例顺序

image

image
- 接口自动化-复制场景用例(准生产环境复用测试环境接口场景用例)

image

image
4、Jenkins集成
安装插件
https://github.com/metersphere/jenkins-plugin
- 下载jenkins-plugin插件metersphere-jenkins-plugin.hpi
- Jenkins安装插件

image
- 创建项目-API Keys由MeterSphere进行配置

image
- API Keys

image
- 执行方式-测试计划

image
- 执行方式-性能测试场景、接口测试场景或者单接口定义

image

image

image
- 开始执行

image

image
- 邮件通知

image
- 报告展示

image
5、性能测试
实际案例
- 创建性能测试

image
- 引用接口测试场景

image

image
- 压力配置

image
- 高级配置

image
- 保存并执行,可再次执行、导出报告、下载JTL

image
- 可查看请求统计、错误记录、日志详情等

image
6、问题处理
消息通知
- 邮件测试连接可以正常收到通知邮件,但是接口自动化执行成功后未收到邮件
[root@xdja metersphere]# cd /opt/metersphere/logs/metersphere
[root@xdja metersphere]# tail -2000f error.log
# 发现如下报错信息
2021-04-15 10:55:01,122 [Async-Executor4] ERROR i.m.n.sender.impl.MailNoticeSender ? - Method[send][org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: STARTTLS is required but host does not support STARTTLS. Failed messages: javax.mail.MessagingException: STARTTLS is required but host does not support STARTTLS; message exceptions (1) are:
Failed message 1: javax.mail.MessagingException: STARTTLS is required but host does not support STARTTLS]
- 系统设置-邮件设置,将开启TLS(如果SMTP端口是587,通常需要启用TLS)勾选去掉,即可正常收取通知邮件

image
性能测试报错
- 首次执行性能测试报如下错误

image
Check node-controller /etc/hosts, 127.0.0.1 ${hostname} must be contained. Please delete the report and rerun.
- 在部署 node-controller 的机器上,使用hostname命令获取主机名
[root@xdja ~]# hostname
xdja
[root@xdja ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 将获取到的主机名xdja配置到 /etc/hosts 文件中,配置完成效果如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 xdja
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
性能测试结果偏差
- MeterSphere与原生Jmeter对同一接口性能测试,结果差距较大

image
- 已提交Issues
7、使用感受
- 开源、高度集成、所使用的技术栈适合二次开发
- 整套流程相对符合使用习惯,便于不同技术水平的同事上手
- 可以将零散的Jmeter接口用例统一维护管理起来,便于协作、评审、复用,提升效能
- 项目测试进度可视化,便于度量接口测试质量
- 可以较好的集成Jenkins实现自动化
- 部分页面易用性差
- 性能测试结果与原生Jmeter存在差距