如何利用 Zadig 实现全流程自动化测试,增强测试团队效率

原创
06/13 14:36
阅读数 936

 

测试行业现状分析

快速获得反馈以了解在软件交付生命周期内更改所产生的影响,是构建高质量软件的关键。以前,团队依靠人工测试和代码检查来验证系统的正确性。此类检查和测试工作通常在开发完成后的一个单独阶段进行。然而,这种方法存在一些缺点:

1. 测试流程瓶颈:手动回归测试时间长、成本高,限制了软件的快速迭代和发布。

2. 测试准确性与效率:人工测试易出错,对于系统变更的影响预测不可靠,尤其在重复任务中。

3. 反馈及缺陷处理:开发者等待反馈的时间长,影响缺陷的快速识别和修复,增加了后期设计更改的开销。

4. 代码质量意识:反馈周期延长导致开发者难以掌握构建高质量代码的方法,质量问题容易被忽视。

5. 代码测试责任:开发者不参与测试,缺乏编写易于测试代码的意识和技能。

6. 测试文档更新:随着系统的持续改进,保持测试文档的更新需要投入大量精力。

相反,团队应该:

· 在软件交付生命周期内持续执行所有类型的测试。

· 创建并定制快速可靠的自动化测试套件,在 持续交付流水线 中运行自动化测试。

Zadig 具备管理软件开发全生命周期能力,几乎支持市面上所有测试工具和服务、以及平台系统,同时支持多种测试框架和不同的测试类型,通过强大的运行时环境治理和自定义工作流能力,为测试团队提供强有力的工程支撑。

Zadig 帮助测试团队,将测试服务和能力左移、右移到开发团队、运维团队等全生命周期中,尽早发现问题,让其他角色也参与到质量建设中来,规避因修复此类问题而造成额外成本。

 

持续测试实践思路

持续测试 是一种具体的工程实践,旨在确保系统在可靠性、安全性、操作性能和可用性方面的稳定性。它涵盖了多种测试类型,包括左移测试、右移测试、冒烟测试、单元测试、集成和消息传递测试、性能测试、功能测试、回归测试和用户验收测试等等。将 持续测试 融入 Zadig 的整个 DevOps 流程,能够实现高效的业务部署、快速发现和修复错误、改善用户体验,并最小化业务中断的成本。

用 Zadig 落地持续测试

编排不同测试类型

静态代码扫描

支持主流的静态安全工具例如 SonarQube、Coverity,和任何自定义扫描工具。

如何配置

以 SonarQube 示例,新增代码扫描,指定扫描工具 SonarQube,配置待扫描的代码库、扫描脚本,开启质量门禁检查并配置触发器,具体的配置步骤可参考文档:如何配置静态代码扫描

访问项目 -> 代码扫描,点击 新建代码扫描 后填写配置。

如何编排

编辑工作流,在指定阶段(比如:构建之前)添加 代码扫描 任务即可。

单元测试

支持对 Java、Golang、Python、C++、JavaScript、C#、PHP、Ruby 等各种语言的技术栈执行单元测试。

如何配置

新增测试,配置基本信息、代码信息和测试脚本,在 测试报告配置 中指定报告目录,添加触发器配置并增加 IM 通知,具体的配置步骤可参考文档:如何配置测试

如何编排

编辑自定义工作流,在指定阶段(比如:部署之后,执行自动化测试)添加 测试 任务即可。

集成测试

支持的测试类型包括但不限于:API 接口测试、UI 测试、端到端测试、压力测试、场景测试...

配置过程和单元测试类似,此处不再赘述。具体编排:编辑自定义工作流,添加测试任务并填写配置,以下图示例说明参数:

· 任务名称:根据实际语义配置,比如 apitest-for-service

· 任务类型:选择 服务测试

· 服务组件:选择待测试的服务组件,配置服务组件和测试的关联,当部署服务后将会运行指定的测试

此外,为自定义工作流配置触发器和通知,实现基于代码变更自动运行测试、测试结果及时同步 IM。参考文档:工作流触发器工作流通知

系统测试

支持产品级别的测试,对产品进行全面的系统测试,从整体充分把握系统质量。

测试配置中的任务类型选择 产品测试,其他的配置和集成测试类似,此处不再赘述。

运行持续测试场景

开发阶段:静态扫描打基础

流程:代码实现 > 代码提交 > 自动触发静态代码扫描质量门禁 > 开发人员及时获得反馈 > 有的放矢改进

代码开发完毕提交 PR 后会自动触发代码扫描执行,可有效拦截未通过质量门禁的代码变更。扫描结果会自动 comment 在代码变更中,开发人员可点击快速获得扫描结果,针对反馈进一步优化代码。从代码源头来规避质量风险,做到 fail fast > feedback fast > fix fast。

测试阶段:组合策略赋能力

流程:静态扫描(开启质量门禁) > 构建 > 部署 > 自动化测试 > IM 通知

Zadig 可一键拉起独立的开发、测试环境(参考文档:新建环境 ),只需要将测试编排进自定义工作流中就可以实现在开发环境、测试环境分别建设自动化测试套件,将测试能力编排进团队日常合作的每一个环节中:

· 开发自测阶段,更新开发自测环境并执行自动化测试。

· 多名开发联调测试阶段,可以将多人的改动同时部署更新进行集成测试验证。

· 测试工程师验收阶段,可在 Zadig 中分析测试报告,并根据覆盖情况持续补充自动化用例集,确保自动化测试套件与业务功能一同迭代,持续为团队提供价值,测试工程师的能力也在平台中得到充分展现。

此外,工作流运行结果可及时通知到 IM 群中,团队内每个人都能及时感知自动化执行情况,为质量负责。

发布阶段:多重保障保质量

流程:发布质量门禁 > 发布委员会人工审核 > 分批次灰度发布 > 系统测试 > IM 通知

测试验收通过后进行发布上线操作,建议几种配置策略:

1. 建设发布门禁,通过自定义任务自动获取安全扫描、单元测试、集成测试等质量结果来判断是否允许上线,作为上线过程的卡点,确保版本验收通过并且符合质量要求后再做上线操作。

2. 灵活编排蓝绿、金丝雀、分批次灰度、Istio 全链路灰度等发布策略,以确保发布可靠性,可参考:工作流的发布策略

3. 工作流适当增加测试团队人工审批,以确保业务流程上的发布合规性。

 

One More Thing:如何度量持续测试效果

任何实践都要讲求投入产出比,而持续测试的效果可以通过:测试的编写人员比例,发现的 Bug 数量,自动化测试的有效性,以及是否在 CI/CD 中运行自动化测试等方面来度量,具体如下:

衡量因素 衡量的指标 目标
测试的编写人员 由公司的开发、测试和其他成员编写的测试所占的百分比 验收测试的主要创建和维护人员应为开发者
在不同阶段发现的 Bug 数量 所发现的 Bug 的比例随时间的变化 在测试阶段发现更多的 Bug
修复验收测试失败所用时间 修复验收测试失败所需的时间 修复时间的变化趋势:开发者应能够轻松修复验收测试失败
自动化测试的有效性 测试失败的原因:因实际缺陷导致、编码质量问题导致的自动化测试失败数量 自动化测试失败始终表示产品中存在实际缺陷
自动化测试是否在 CI/CD 工作流中运行 检查所有测试套件是否在每个流水线触发器中运行(是/否) 自动化测试的集成:自动化测试应在主流水线和主工作流中运行

 

小结

通过 Zadig 支撑持续测试和自动化测试的实施,帮助测试团队更好地应对当前的测试行业挑战,确保软件交付的质量和稳定性,提高开发和交付过程的效率。

扫码即刻咨询
解锁企业数智化转型的全新机遇!

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部