一、安装部署问题
如何进行离线包的下载、安装及升级?
下载地址:https://community.fit2cloud.com/#/products/metersphere/downloads
离线安装:https://metersphere.io/docs/v2.x/installation/offline_installation/
离线升级:https://metersphere.io/docs/v2.x/installation/offline_upgrade/
如何在 K8S 环境部署 MeterSphere?
参考:https://blog.csdn.net/mfanoffice2012/article/details/121367418
企业版如何开启 UI 测试模块?
UI 测试功能模块是X-pack包功能,属于企业版功能。需要导入企业版许可后按照以下操作。
1、需要在后台修改 /opt/metersphere/.env 文件把 MS_UI_TEST 修改成 true,
2、执行 msctl reload
3、在系统里的 selenium-docker 地址填上:http://selenium-hub:4444 这个地址
安装 MeterSphere 遇到内核类的问题如何解决?错误信息如下:docker: Error response from daemon: OCI runtime create failed: systemd cgroup flag passed…
解决步骤如下:
1、打开 daemon.json 文件
2、将 "exec-opts": ["native.cgroupdriver=systemd"] 删掉即可,重启 docker:
service docker restart
3、重启服务
msctl reload
K8S 部署 MeterSphere 时出现以下错误信息,该如何处理?
错误信息如下图所示:<html><head><title>413 Request Entity Too Large</title></head><body><center><h1>413 Request Entity Too Large</h1></center><hr><center>nginx/1.17.8</center></body></html><!-- a padding to disable MSIE and Chrome friendly error page --><!-- a padding to disable MSIE and Chrome friendly error page --><!-- a padding to disable MSIE and Chrome friendly error page --><!-- a padding to disable MSIE and Chrome friendly error page --><!-- a padding to disable MSIE and Chrome friendly error page -->
解决方案基于不同的部署方式参见如下:
情况一:对于 Helm 部署的 MeterSphere ,在 ingress 里最后一行加个注解即可:
#ngnix请求破除1m限制,
kubectl edit ingress metersphere
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
meta.helm.sh/release-name: metersphere
meta.helm.sh/release-namespace: default
nginx.ingress.kubernetes.io/proxy-body-size: 50m
情况二:基于普通 Nginx 部署的按照如下说明调整即可:
打开 nginx 服务的配置文件 nginx.conf;
在 http 配置中加入 client max body size xxm , xx 根据需求改动;
保存后重启 nginx,问题解决。
我想试用企业版,怎么联系获取呢?
可以填写 MeterSphere 企业版试用申请表单:https://jinshuju.net/f/CzzAOe ,会有商务同事联系您。
Docker 容器启动报错:ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule ,需要如何解决?
service docker restart
msctl reload
数据库采用内置且未开防火墙,MeterSphere 服务却连不上数据库,如何处理?
此种情况需要检查 /opt/metersphere/.env 里面的 DOCKER_SUBNET 是否与服务器网卡在同一网段,同一网段会影响路由转发导致服务连不上数据库:
1、需要修改 env 文件中的 DOCKER_SUBNET 的网段;
2、并执行 msctl uninstall -v 先进行卸载 再执行 msctl reload 进行重新创建容器(此步骤不会导致数据丢失)。
如何将 MeterSphere 服务迁移到其他服务器?
迁移步骤如下所示:
1、导出数据库,执行以下命令:
docker exec -i mysql mysqldump -uroot -pPassword123@mysql metersphere --max_allowed_packet=2G > metersphere.sql
2、备份 /opt/metersphere/data 目录;
3、新机器上用对应版本的安装包进行解压安装;
4、删除新机器上 metersphere 数据库并创建新库,执行以下命令:
CREATE DATABASE metersphere /*!40100 DEFAULT CHARACTER SET utf8mb4 */
5、将数据库导入及备份的 /opt/metersphere/data 目录进行导入;
6、重启 MeterSphere,执行以下命令:
msctl restart
MeterSphere 部署中遇到 Prometheus 启动不起来,一直处于 Restarting 该如何处理?
错误如下图所示:
执行以下脚本尝试启动:
chmod -R 755 /opt/metersphere/conf/prometheus
docker stop ms-prometheus
docker rm ms-prometheus
msctl reload
MeterSphere 部署中遇到 Redis 启动不起来,一直处于 Restarting 该如何处理?
启动时报错如下:
进入 MerterSphere 服务器执行如下命令:
chmod -R 755 /opt/metersphere/conf/redis.conf
docker stop redis
docker rm redis
msctl reload
虚拟机重启之后 MeterSphere 服务起不来了如何恢复?
目前 MeterSphere 服务默认未添加开机自启动,可执行如下命令:
service docker restart
msctl reload
Node-controller 启动出现如下错误该怎么解决?
错误如下图所示:
修改 /opt/metersphere/docker-compose-node-controller.yml 关掉非 root 用户运行配置或者 /opt/metersphere 下的文件授予 777 权限。
env 环境变量正确,Kafka 状态正常,9092 端口正常,防火墙未开,但 MeterSphere 容器内部访问不了 Kafka,该如何处理?
基于以上先确认 docker 版本已升级到最新版本,重启、卸载 docker 的是否生效,如还不生效,查看 msctl status 发现如没有 docker-proxy 服务,打开 vi /etc/docker/daemon.json 确认 userland-proxy 配置,如果是 false ,则将其修改为 true,重启 docker , reload 服务 即可恢复。
MeterSphere怎么设置开机自启动?
参考:https://blog.csdn.net/qq_33417373/article/details/119672506
内置 MySQL 显示连接数太多,系统默认的连接数未生效,需要如何排查处理?
MeterSphere 内置数据库默认的连接数为 2000,如出现如下图的报错信息:
自带的 my.cnf 没有生效,没生效的原因是 my.cnf 文件权限不对:
执行以下命令完成如下操作:
chmod -R 655 /opt/metersphere/conf/my.cnf
docker stop mysql
docker rm mysql
msctl reload
执行完成之后进数据库查看,确认配置文件已经生效,如下所示:
如何修改日志保存天数?
修改 /opt/metersphere/conf/metersphere.properties,添加变量名 logger.max.history(天数),然后重启服务 msctl restart
MeterSphere版本与Jenkins 插件版本一致,网络也通畅,但是仍然校验失败,应该如何处理?
错误信息如下图所示,此情况请查看 MeterSphere 服务器与 Jenkins 服务器之间的时间差,两台服务器之间的时间需保持一致,否则会导致签名失效。
升级过程中,数据库出现"[InnoDB] Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 5.7.33, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html" 这样的错误该如何处理?
出现这样的错误有两种处理方式:
处理方式1:mysql 目录下两个 ib_logfile0 和 ib_logfile1 删掉,删除 mysql 容器,再重新创建 msctl reload;
处理方式2:旧版数据库的文件直接替换到新版本的 MeterSphere 服务下(如:1.20-LTS升级到 2.10-LTS),这种操作是不可行的,需重新安装升级前的 MeterSphere 版本,然后替换 mysql 目录下文件,进行启动,启动成功后,再升级到 2.10-LTS 版本。
如何通过源码部署 MeterSphere ?
本地源码启动如何添加或者修改 Redis 参数?
在默认的 /opt/metersphere/conf/metersphere.properties 文件内进行添加如下图所示内容:
二、平台使用问题
2.1 接口测试使用问题
数据库与接口如何结合起来进行断言?
参考:https://blog.csdn.net/qq_33417373/article/details/117708500
MeterSphere 数据库查询如何按结果存储解析?
参考:https://blog.csdn.net/qq_33417373/article/details/119354800
接口自动化场景内,加上等待控制器,为什么每个接口都会执行等待时间?
如果等待控制器放在最外层,默认是全局的等待控制器,每个接口步骤都会执行;如果只需要执行一次,那么等待控制器应该放在接口的前置操作内,作为局部等待控制器。
MeterSphere 数据库查询如何按结果存储解析?
参考:https://blog.csdn.net/qq_33417373/article/details/119354800
接口自动化怎么进行参数提取?
参考:https://blog.csdn.net/jierxiaoyao/article/details/115379806
MeterSphere 如何通过 ssh 连接主机,并执行 shell 命令?
参考:https://mp.weixin.qq.com/s/B4WBmMHQE88dDJnrzh5C5Q
如何使用 MeterSphere 中的 Mock 服务?
参考:https://blog.csdn.net/hxe116/article/details/120364467
请求的响应结果是 Unicode 编码,如何将其转为中文?
在对应接口下添加一个后置脚本,粘贴如下代码即可:
String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
int len= s.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s.charAt(x++);
if(aChar=='\\'){
aChar= s.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s.charAt(x++);
switch(aChar){
case'0':
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
value=(value <<4)+aChar-'0';
break;
case'a':
case'b':
case'c':
case'd':
case'e':
case'f':
value=(value <<4)+10+aChar-'a';
break;
case'A':
case'B':
case'C':
case'D':
case'E':
case'F':
value=(value <<4)+10+aChar-'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");}}
outBuffer.append((char) value);}else{
if(aChar=='t')
aChar='\t';
else if(aChar=='r')
aChar='\r';
else if(aChar=='n')
aChar='\n';
else if(aChar=='f')
aChar='\f';
outBuffer.append(aChar);}}else
outBuffer.append(aChar);}
prev.setResponseData(outBuffer.toString());
String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
接口测试请求体类型为 x-www-form-urlencoded 时,请求体会默认被编码,不想默认被编码需要如何处理?
当类型为 x-www-form-urlencoded 时,是否选择编码都会被默认编码的,如果不需要编码,则请求体类型使用 raw。
如何添加或者修改请求头信息内容?
接口测试的HTTP类型请求,某些情况下需要通过参数化请求体或者修改请求头,可以通过如下前置脚本进行添加或者修改请求头内容。前置脚本如下所示:
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;
// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("添加前" + headers.getHeaders().getStringValue());
// new一个Header对象
myHeader = new Header("x-parse-session-token", "123456432");
// 添加Header到请求头管理器
headers.add(myHeader);
// 打印全部请求头信息
log.info("添加后" + headers.getHeaders().getStringValue());
MeterSphere 做接口测试添加 SQL 查询,发现 MySQL 数据库存储的是 0 或者 1 ,实际查询出来的是 true 或者 false 该如何处理?
需要在环境配置数据库配置的 URL 内加上 &tinyInt1isBit=false 或者 ?tinyInt1isBit=false ,数据库连接 URL 配置如下图所示:
如何在接口测试中下载文件?
在接口测试中,文件下载类的接口调试之后,文件无法直接查看或者获取,可通过后置脚本添加如下脚本进行下载响应文件到服务器上,然后通过服务器目录文件进行获取,后置脚本详细信息如下:
import java.io.*;
byte[] result = prev.getResponseData();
String file_name = "/opt/metersphere/data/xxxx.xxx";
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
接口测试执行过程中提示“调用资源池失败,请检查资源池是否配置正常”,出现如下提示该怎么解决?
错误如下图所示:
解决思路如下:
确认“项目设置”下“应用设置"开启资源池配置;
确认“系统参数设置”下“本地站点”地址可以通过 MeterSphere 服务器进行访问,否则 jmx 地址下载失败。
k8s 部署环境无法连接外网,下载离线镜像上传到 Harbor 仓库,该怎么修改配置文件的镜像?
下载并解压 helm 包,将 values.yaml 文件 imagePrefix 字段值修改为 Harbor 仓库地址,如下图所示
k8s 部署环境无法使用 nodePort 暴露端口,部分服务不能正常启动,容器日志提示“ nc: 177.0.0.1 (177.0.0.1 :31304): connection timed out” 问题, 该如何解决?
1、修改 helm 包内 “templates/03-modules” 目录中的 yaml 文件,将 kafka 的地址更改为 Service 名称加上端口,如下图所示。
2、修改“templates/01-config-map” 目录下的 “metersphere-scripts.yaml” 文件中的 kafka 地址,如下图所示
2.2 性能测试使用问题
性能测试结束之后,下载JTL文件提示“JTL文件不存在或者重新执行后下载”,需要如何处理?
JTL 文件能否下载取决于测试资源池是否开启“后置监听器”:
社区版是默认开启的,不可配置,可直接下载;
企业版测试资源池提供是否开启“后置监听器”配置项功能,如不开启,则会出现标题中的提示,需要人工开启,开启之后,则支持下载JTL文件。
性能测试资源都是节点类型,有的节点显示不出来CPU的使用情况,该如何解决?
未显示CPU 使用情况如下图所示:
可以升级一下对应测试资源池的 node-controller(v2.10.8-LTS)组件。
性能测试过程中遇到如下报错该怎么解决?2023-07-17 11:11:28,534 QueueWaits: 89; QueueWaitTime: 21777547018 (nanoseconds), you may need to increase queue capacity, see property 'backend_queue_capacity'
这个需要修改 Kafka 的队列参数:如出现上述错误,可以在 /opt/metersphere 目录下 docker-compose-performance-test.yml 里面调整 KAFKA_QUEUE-SIZE 参数,默认为20000 。
2.3 UI 测试使用问题
UI测试针对下拉框出现定位失败的问题怎么解决?
一般错误息如下图所示:
可以通过如下图方式进行定位元素解决此类问题,其中定位方式为 xpath 正则://span[text()="xxx"] 其中 xxx 为目标下拉框所选的值。
UI测试如何将输入值清空?
总共三种方式:
1、快捷键:${KEY_CONTROL+A}${KEY_BACK_SPACE};
2、双击+快捷键:需先设置双击,再加上快捷键:${KEY_BACK_SPACE} (此种方式不能用于多类型的内容 比如:122aass, 只能用于aaaaa 或者22222);
3、脚本:其中 Key 为需要清空元素的 ID。
document.getElementById("key").value = "";
2.4 其他使用问题
如果导出测试计划中的功能用例进行存档?
进入MySQL数据库,执行如下sql命令,再通过 Navicat 之类的工具导出或者原始 sql 导出 CSV 文件即可。
select * from test_case where id in (select case_id from test_plan_test_case left join test_plan on test_plan.id=test_plan_test_case.plan_id where test_plan.name='测试计划名称');
默认的 admin 密码忘记了,怎么找回密码?
连接到数据库后,执行如下 SQL 语句可以将用户 admin 的密码重置为 metersphere。
update user set password='3259a9d7f208ef9690025d1432558c5b' where id='admin';
admin 的系统管理员角色默认被误删的话怎么办?
进入 MySQL 数据库执行以下语句即可:
INSERT INTO user_group (id, user_id, group_id, source_id, create_time, update_time)VALUES (UUID(), 'admin', 'admin', 'system', 1622183788364, 1622183788364);
项目设置下的文件管理上传文件遇到如下提示:“Connection has been closed BEFORE response, while sending request body ”,该如何解决?
调大 /opt/metersphere/docker-compose-project-manage.yml 里的 limit_mem 到 4G,然后msctl reload 即可。
MeterSphere 如何引用第三方python库?
参考:https://mp.weixin.qq.com/s/6-sR3kEbgvgtdcZViRleNw
如何保持 Jira 缺陷类型、需求类型对接MeterSphere后,与Jira 上显示的类型一致?
MeterSphere上获取到的问题类型列表与目标不符(如下图是MeterSphere中的问题类型),需要在JIRA上进行配置。
MeterSphere上的问题类型参照如图所示:
需要基于MeterSphere同步在Jira上设置问题类型: