
SkyWalking提供了插件自动测试框架,用于验证插件的功能和兼容状态。由于插件和版本众多,手动测试难以完成,该框架使用基于容器的技术堆栈,包含以下几个部分:
| 组成部分 | 说明 |
|-|-|
| 测试环境docker镜像 | 提供JVM-container和Tomcat-container两种测试环境,推荐使用JVM-container,它可用于运行基于SpringBoot的testcase项目,包含启动脚本,可以修改启动的JVM参数,灵活性更好 |
| 自动化测试脚本 | 主要有创建testcase工程脚本(${SKYWALKING_HOME}/test/plugin/generator.sh)和运行测试案例脚本(${SKYWALKING_HOME}/test/plugin/run.sh),运行脚本有不同参数,如-f参数强制重新创建镜像(修改SkyWalking agent或plugin后需要添加),–debug启用调试模式(推荐使用,可保留测试过程的logs) |
| testcase工程 | 以JVM-container类型工程为例,为基于SpringBoot的testcase应用,包含bin/startup.sh(testcase应用启动脚本)、config/expectedData.yaml(测试结果验证数据)、configuration.yaml(testcase配置,包含类型、启动脚本、检测url等)、support-version.list(testcase支持的版本列表,默认为空不会进行检查,可以改为all表示全部)、pom.xml(maven项目描述文件)、[src](testcase源码目录)等文件/目录,其中编写测试结果验证数据expectedData.yaml对新手较难,可以从日志文件logs/validatolr.out中提取验证数据 |
| 测试结果验证工具 | 关键是skywalking-validator-tools.jar工具,其源码repo为skywalking-agent-test-tool,支持多种匹配条件表达式,可以灵活处理一些动态变化的数据,通过阅读代码,可以了解expectedData.yaml的验证过程,理解验证数据的格式 |
SkyWalking严重依赖自动化测试来执行软件质量保证,端到端测试(E2E)是其中的一个组成部分。E2E测试是一种测试方法,用于测试应用程序的流程是否从开始到结束都按设计执行,其目的是识别系统依赖关系,并确保在各个系统组件和系统之间传递正确的信息。SkyWalking中的E2E测试总是在真实环境中设置OAP、被监控服务和相关远程服务器依赖项,并验证数据流和最终查询结果。
E2E测试涉及OAP服务器、存储、协调器、Web应用程序和被检测服务中的一些或全部,这些都由docker-compose或KinD编排。从8.9.0版本开始,迁移到e2e
编写E2E测试用例的步骤包括:
1. 设置环境:设置skywalking
2. 编排组件:确定要验证的测试用例,编排组件。为了使编排过程更容易,使用docker
3. 运行E2E测试:所有E2E测试用例都应该在skywalking/test/e2e
4. 故障排除:在非CI(本地)模式下,将所有容器的日志输出到stdout,但会保存并上传到GitHub服务器。如果测试失败,可以在“Artifacts/Download artifacts/logs”(右上角)下载日志进行调试。注意:请先在本地验证新添加的E2E测试用例,如果在本地通过但在PR检查状态失败,确保所有更新/新添加的文件(特别是子模块中的文件)都已提交并包含在PR中,或者将git HEAD重置到远程并在本地再次验证。
Lei
April 24, 2025
技术探讨