文章目录一、测试左移简介1.1 为什么要做测试左移1.2 成本与效益分析1.3 测试左移的主要内容二、代码审查Code Review2.1 定义与目的2.2 开发人员收益2.3 审查维度三、代码审查平台实践3.1 Gerrit Code Review3.2 GitLab Merge Request四、代码审计平台SonarQube4.1 质量保障闭环流程4.2 项目质量仪表盘4.3 覆盖率集成与缺陷案例覆盖率分析典型 Bug 案例4.4 扫描示例一、测试左移简介“测试左移”Shift-Left Testing是现代软件开发中非常核心的质量保障理念。在传统的软件开发中测试往往被安排在开发完成之后相当于软件生命周期的“右侧”就像等病人病倒了再去医院做全面检查。测试左移就是把“检查”的动作提前到“生病”之前。 它主张在软件开发生命周期的早期阶段如需求分析、架构设计、编码初期就引入测试活动。它的本质思想是越早发现不合理的地方出问题的几率就越低。1.1 为什么要做测试左移做测试左移的核心驱动力主要有两点大幅降低修复成本软件工程有一个著名的“缺陷成本放大效应”。在需求或设计阶段发现并修复一个Bug的成本可能只有上线后修复成本的十分之一甚至更少。越往后拖修复代价呈指数级上升。加速交付与提升质量在早期就把模糊的需求和架构缺陷解决掉能避免开发后期的“推倒重来”和大规模返工从而让软件更快速、更流畅地发布。总结测试左移通过在研发早期发现并修复缺陷能够有效保障产品质量降低项目沟通成本并显著提高研发效率。1.2 成本与效益分析根据 Capers Jones 在《Applied Software Measurement》1996中的研究数据软件缺陷的修复成本随着开发阶段的推进呈指数级上升缺陷修复成本的指数级增长编码阶段Coding修复成本为$25。单元测试Unit Test修复成本为$100。功能测试Function Test修复成本为$250。系统测试System Test修复成本为$1000。发布后After Release修复成本飙升至$16,000。缺陷引入与发现的错位通过上述研究数据可以看出引入高峰85% 的缺陷是在编码阶段引入的。发现滞后在编码阶段发现的缺陷比例极低大部分缺陷直到系统测试阶段才被发现。结论尽早发现缺陷具有巨大的经济性优势。1.3 测试左移的主要内容需求分析与评审代码评审Code Review代码审计与代码静态分析自动化测试左移单元测试为什么是单元测试因为 UI 自动化测试的执行效率和维护成本要远远大于单元测试所以要把质量保障的重心从“依赖少数昂贵、缓慢的UI测试”转移到“依靠大量快速、精准的单元测试”上来。覆盖率统计应用监控测试用例生成一句话总结测试左移的实践就是把质量活动从“测试阶段”分散到“需求、开发、评审”等每一个上游环节通过“人防”评审和“技防”自动化工具相结合尽早地发现和解决问题。二、代码审查Code Review2.1 定义与目的代码审查是指对计算机源代码系统化地审查常用软件同行评审的方式进行其目的是在找出及修正在软件开发初期未发现的错误提升软件质量及开发者的技术。代码审查常以不同的形式进行例如结对编程、非正式的看过整个代码或是正式的软件检查。2.2 开发人员收益保持工作专注度与一致性。学习最佳实践与新技术。实现代码库风格与质量的统一。2.3 审查维度设计代码设计是否合理是否适合代码库。功能是否按预期执行是否对用户有益。复杂性代码是否易于理解和使用。命名变量、类、方法命名是否清晰。注释注释是否具体且完整。三、代码审查平台实践3.1 Gerrit Code Review界面特征展示变更集Change Set元数据包括状态、ID、所有者、审阅者及提交要求如 Code-Review, Verified。核心功能差异对比文件列表展示增删行数Delta支持查看具体差异View Diff。评审流程支持打分1/-1、评论、解决冲突。关联变更展示依赖关系链Relation chain。3.2 GitLab Merge Request界面特征展示合并请求MR详情包括源分支与目标分支、提交时间。核心功能审批机制显示赞成票数支持“批准Approve”操作。合并选项提供删除源分支、压缩提交Squash commits等选项。代码差异高亮显示新增绿色与删除红色代码行支持行级评论。四、代码审计平台SonarQube4.1 质量保障闭环流程实时分析开发者使用 SonarLintIDE 插件进行实时代码分析。代码提交代码推送至版本控制系统Git/SVN 等。CI 构建CI 服务器Jenkins/Bamboo 等触发自动构建与代码分析。报告发布SonarQube Scanner 将分析报告发布至 SonarQube 服务器。数据存储分析结果存储于数据库MySQL/PostgreSQL 等。问题管理开发者在平台管理问题形成闭环。外部集成通过 API/JMX 对接其他监控系统。4.2 项目质量仪表盘质量门禁Quality Gate显示项目是否通过质量检查Passed/Failed。缺陷与漏洞展示 Bugs缺陷和 Vulnerabilities漏洞的数量及评级A-E。代码异味统计技术债务Debt天数及代码异味数量。测试覆盖率显示整体覆盖率如 87.0%及新代码覆盖率。4.3 覆盖率集成与缺陷案例覆盖率分析指标行覆盖率Line Coverage、条件覆盖率Condition Coverage。案例OwnerController.java文件显示 100% 覆盖绿色高亮表示已覆盖灰色表示未覆盖。典型 Bug 案例问题条件判断逻辑错误导致表达式恒为假。提示工具提示“Change this condition so that it does not always evaluate to ‘false’”标记为“Major”级别的 Bug。4.4 扫描示例litmall-coreBugs 8 个E 级覆盖率 0.0%红色存在严重质量风险。petclinicBugs 0 个A 级覆盖率 94.8%绿色质量健康。
阅读完成 · 觉得有帮助?