CI/CD 工程师和运维工程师是软件工程“交付”和“运行”环节的核心角色。理解他们是谁、做什么,有助于测试开发工程师更清楚地知道自己的测试平台为什么、以及如何接入他们的系统。
一、CI/CD 工程师的工作职责是什么?
一句话概括:负责搭建和维护“代码从提交到上线”的自动化高速公路。
CI(持续集成)和 CD(持续交付/部署)是一整套自动化流程。CI/CD 工程师的核心职责包括:
- 搭建与维护流水线:使用 Jenkins、GitLab CI、GitHub Actions 等工具,配置当开发提交代码时,自动触发代码编译、单元测试、打包构建、部署到测试环境等一系列步骤。
- 质量门禁设置:在流水线中设置卡点,例如,只有单元测试通过率达标、代码覆盖率达标时,才允许进入下一阶段(部署或合并)。
- 构建与制品管理:管理代码构建过程(如 Maven/Gradle 打包),并把打好的 Jar 包或镜像(Docker Image)存放到制品库(如 Nexus、Harbor)中。
- 环境自动化:协调开发、测试、预发布、生产等环境的自动部署,确保每次部署的流程一致且可重复。
测试开发为什么要和他打交道?你开发的测试工具(如接口自动化平台、性能测试平台)需要被他集成到流水线里。比如,开发提交代码后,流水线自动调用你的接口测试平台,跑完所有自动化用例,并把结果回传给流水线,决定是否允许发布。
二、运维工程师(SRE/运维)的工作职责是什么?
一句话概括:负责确保线上系统“活着”且“活得健康”。
传统的运维(Ops)和现代 SRE(网站可靠性工程师)核心职责包括:
- 基础设施管理:管理服务器、K8s(Kubernetes)容器集群、数据库、网络等底层资源。
- 系统监控与告警:部署监控系统(如 Prometheus、Zabbix),实时盯住 CPU、内存、磁盘、网络流量,以及业务的错误日志。当出现异常(如服务挂了、响应变慢)时,自动发短信或电话告警。
- 故障排查与恢复:线上出问题(宕机、慢 SQL)时,快速定位并恢复服务,甚至做容灾切换。
- 容量与成本管理:评估系统是否需要扩容,优化资源使用以节省云成本。
三、CI/CD 流水线怎么理解?
你可以把它想象成一个“汽车生产流水线”,只不过输入的原料是“源代码”,最终产出的成品是“可以运行的线上服务”。
一条标准的 CI/CD 流水线通常有这几个工位:
- 代码提交(发车):开发把代码推到 Git 仓库。
- 编译构建(组装零件):流水线启动,把代码编译成可执行文件或 Docker 镜像。
- 单元测试(质检):自动运行开发写的单元测试。
- 部署到测试环境(试驾):自动把新版本部署到测试服务器供测试人员验证。
- 部署到生产环境(正式出厂):经过人工审批或自动化门禁后,部署到线上。
你的测试工具接进来,就是在这条流水线上新增了一个“质量检测站”——比如自动化冒烟测试通过后,才允许流水线继续往下走。
四、运维监控系统怎么理解?
你可以把它想象成“医院的 ICU 生命体征监护仪”。
它时刻盯着线上系统的各项指标,主要看三类数据:
- 基础设施指标:CPU 使用率飙升了吗?内存爆了吗?磁盘满了没?(很像人的血压、心跳)
- 应用性能指标(APM):接口响应时间从 200ms 突增到 5s 了吗?报错率(HTTP 500)是不是突然暴涨?
- 业务指标:每分钟成功支付的订单数是不是突然掉到 0 了?
你的测试工具为什么要接入监控系统?主要有两个原因:
- 发起精准“攻击”并观测:你做的性能测试平台,在压测时需要通过监控系统实时看服务器的资源使用情况,以此判断性能瓶颈在哪。
- 提供质量“风向标”:你的自动化测试平台跑完用例后,可以把生成的测试覆盖率或接口成功率数据推送给监控系统,让运维在同一个大屏上既看到服务稳定性,也看到质量趋势。
五、总结:测试开发为什么要“懂”他们?
| 角色/系统 | 测试开发与其的关系 |
|---|---|
| CI/CD 工程师 | 你是“产线质检员”,他是“产线调度员”。你需要把质检工具挂到他的流水线上,实现“提交即触发,不通过即拦截”。 |
| 运维工程师 | 你是“体检医生”,他是“病房监护员”。你开出的压测报告需要参考他的监护数据;你的自动化用例发现的线上问题,也需要借他的监控日志来定位根因。 |
| CI/CD 流水线 | 它是你测试工具实现“无人值守自动化”的载体。 |
| 运维监控系统 | 它是你验证测试结论(如系统是否变快、变稳)的“客观证据来源”。 |