接口自动化执行过程及常见问题排查思路


Administrator
飞致云 发布于 2022-04-10 / 1140 阅读 / 0 评论 /
接口自动化执行过程及常见问题排查思路

接口自动化执行过程示意图

image2022-3-28_17-30-10

写前说明

版本说明
截图均来自 v1.19 版本

日志位置
本地执行日志:/opt/metersphere/log/metersphere/ms-jmeter-run-log;
资源池执行日志:/opt/metersphere/log/node-controller/ms-jmeter-run-log

日志关键子说明
资源ID: 用例 / 场景 / 测试计划用例/测试计划场景 对应的ID
报告ID:用例报告ID / 场景报告ID

一)调试一直转圈无结果返回

常见浏览器NetWork中会报错:Error during WebSocket handshake: Unexpected response code : 404
如果配置了nginx,请检查nginx是否配置了支持websocket 具体如图:
image2022-3-28_17-50-47

二)本地执行问题及排查思路

  1. 本地执行慢该怎么排查
    1.1 修改 “系统设置-系统参数设置-并发数” 改成系统能并发的最佳数量(并发数对应= 场景/用例 执行数量;所以场景多的 并发数设置小一些,用例执行多的 并发数可相对设置大一些);此功能对应示意图中 的 Q.L 部分。
    1.2 检查主服务(ms-server)所部署服务器资源占用情况;是否资源充足。
    1.3 从自身请求步骤检查 看看 “前置操作” 中是否有 “等待时间 ” 步骤 ;检查是否有查询结果过大的步骤。
    1.4 检查运行环境是否准确
    1.5 从执行日志开始排查
    下图(1)是一个API 测试的过程日志,可以结合 “执行过程示意图” 来分析
    image2022-3-28_18-9-11
    下图(2)是一个场景执行过程日志
    image2022-3-28_18-4-10
    从图1 图2 对比可以看出 场景的执行过程只是请求数量的一个增量;处理过程基本一致。

  2. 场景批量执行报告显示为空
    2.1 检查场景环境是否选择;并检查环境是否配置准确
    2.2 打开场景逐步调试看看是否某个请求有异常步骤导致jmeter 执行失败;常见Xpath提取表达式写错 如下图 
    image2022-3-28_18-29-34
    2.3 检查场景步骤中是否有 SQL前后置 步骤,并每个步骤是否选择数据源
    image2022-3-28_18-32-44
    2.4 从日志中排查;通过浏览器F12 打开调试 复制报告Id
    image2022-3-28_18-35-29
    日志中检索 cat /opt/metersphere/log/metersphere/ms-jmeter-run-log.log | grep 报告id 看看整体执行过程 从 setupTest- testEnded 是否完整
    image2022-3-28_18-40-41
    2.5 执行策略选择时勾选了 “失败停止” 选项
    image2022-3-28_18-45-51

  3. 场景报告中有大量 “未执行” 状态的步骤
    3.1 检查场景中 是否没有勾选 “失败继续” 选项
    3.2 检查是否包含 2.2 和 2.3 中 提到的问题

  4. 场景报告中一直是running状态
    4.1 是否在执行过程中有重启服务的情况 ;根据 “2.4” 步骤取出 报告Id 到队列表中查询队列是否还在 (SELECT * from api_execution_queue_detail where report_id = ‘报告ID’;)如果为空表示发生过不可控制情况;不为空表示还在执行中。
    4.2 和 2.4 步骤一样到日志中排查,正常一个执行过程 包含 setupTest- testEnded 整个过程;如果只有开始未看到结束 应该还在执行中 或 服务已经 挂了。

  5. 场景报告出现大量Timeout 状态
    5.1 检查执行队列是否有排队情况;如果有可以参照 1.1 配置
    image2022-3-28_18-59-30

  6. 测试计划执行-测试计划报告一直是running状态
    6.1 打开测试计划报告 查看 关联的场景/用例/性能用例 是否有在执行中的 报告;可以选择某条报告Id 参照 2.4的步骤到执行日志中排查
    6.2 可以选择测试计划中某个执行慢的 场景/用例/性能用例 单个执行 看看是否正常

  7. 测试计划执行完成后测试计划报告中出现大量 timeout/未执行 状态
    7.1 通常遇到这种情况 可以考虑看看是否资源充足了;是否能承受大量执行基本要求。
        7.2 参照 2.4 步骤从日志中排查

三)选择资源池执行排查思路

  1. 选择资源池执行出现 报告为空/未执行/timeout 等问题
    1.1 检查node-controller服务是否正常启动。
    1.2 检查“系统设置-系统参数设置-当前站点 url”配置是否准确
    1.3 检查KAFKA配置是否能通;环境位置 cat /opt/metersphere/.env
    image2022-3-28_19-23-21
    1.4 检查node运行内存是否充足;可根据实际服务器情况增减 cat /opt/metersphere/docker-compose-node-controller.yml
    image2022-3-28_19-24-48 
    1.5 检查kafka是否有消息堆积情况;进入kafka (docker exec -it kafka sh ;cd  /opt/bitnami/kafka ; bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group metersphere_group_id --describe)
    1.6 选择资源池执行日志排查过程;这里主要选择 tail -f /opt/metersphere/log/metersphere/ms-jmeter-run-log.log 和 tail -f /opt/metersphere/log/node-controller/ms-jmeter-run-log.log
    这里测试计划 报告ID会贯穿 整个执行过程;所以可以通过这个id到日志中查看 (可以参照 1.2.4步骤获取ID;这里的计划报告id是:1b2b4c35-401d-4ccd-a9f7-f4be7e1ce546 )
    图1 从主服务(ms-server)发起执行这里选择测试计划执行实例日志来源 tail -f ms-jmeter-run-log.log;重点可以看到我的测试计划中关联的两个场景已经成功发送到node资源池执行了。
    image2022-3-28_19-42-27
    图2 获取的是node资源池接收到执行请求的日志处理;通过这个图可以看到我的执行任务已经下载成功。
    image2022-3-28_19-46-37

    图3 也是node的执行日志可以看到已经执行完成并且把执行结果发送到kafka中
    image2022-3-28_19-49-0
    图4 是主服务(ms-server)的日志;从这个日志就可以看到整个测试计划已经执行完成
    image2022-3-28_19-51-36



是否对你有帮助?