AI智能总结
张涛快手效率工程部质量负责人 10年以上互联网软件测试和团队管理经验专注质量保障体系、服务稳定性治理、研发效能提升精通敏捷、持续集成/持续交付、DevOps精准测试领域专家 01持续测试与研发效能的关联 02通过TDD质量内建提升研发质量 03通过精准测试提升测试质量和效率 04通过监控和可观测提高服务稳定性 持续测试与研发效能的关联持续测试的哪些阶段哪些方法可以提升研发效能 持续测试与DevOps的关系 持续测试与DevOps的关系 持续测试是与持续交付流水线相融合,覆盖软件全生命周期的全过程测试闭环 影响DevOps质量和效率的因素 影响DevOps质量和效率的因素 持续测试的实现框架 02 通过TDD质量内建提高研发质量UTDD和ATDD是实现质量内建最重要的方法 TDD已死? TDD isn't dead, but is glad David set fireto it so it could come out like a phoenix UTDD与ATDD的关系 UTDD:单元测试驱动开发,首先Dev编写单元测试用例,然后编写实现代码直到单元测试通过。ATDD:验收测试驱动开发,首先QA编写验收测试用例,然后Dev编写实现代码直到验收测试用例通过。验收测试用例可以是手工测试用例也可以是自动化测试用例 UTDD为什么这么难做 p工期紧,时间短,写TDD太浪费时间;p业务需求变化太快,修改功能都来不及,根本没有时间来写TDD;p写TDD对开发人员的素质要求非常高,普通的开发人员不会写;p由于大量使用Mock,导致UT没有办法测试集成后的功能,对于测试业务价值作用不大 一个好的单元测试应该符合几条原则:•简单,只测试一个需求 •符合Given-When-Then格式•速度快•包含断言•可以重复执行 TDD不是慢TDD是快速反馈 ATDD怎么做 关键点: ü接口定义满足规范要求üQA在研发提测前完成测试用例编写ü测试用例可自动化执行 ATDD怎么做 ATDD怎么做 接口异常用例自动生成 TDD效果收益 结果收益 1.自动化前置缺陷拦截率:5%->32% 过程质量 1.千行代码Bug率:2.5%->1%2.全量覆盖率:20%->60%+3.增量覆盖率:40%->80%+ 03 通过精准测试提高测试质量和效率如何做到变更精准评估/用例精准推荐/结果精准度量 精准测试的核心能力 调用链路分析 针对每一次代码提交进行调用链路分析,给出变更方法、受影响方法、受影响接口以及跨服务调用,从而更精准的评估变更影响范围。 静态调用链路分析 静态调用链路分析 接口方法 方法接口 一个变更方法影响了哪些接口 动态调用链路分析 传递 打标 实现用例标识在程序间、应用节点间、不同的应用系统间传递 在用例发起时,为每个用例附加上唯一的用例标识 存储 识别 按用例标识记录覆盖率数据 在被测系统的入口处获取和识别到用例标识 动态调用链路分析及追溯关系 以测试用例的caseid作为标识传递到被测服务,再通过调用间传递,记录测试用例执行过程所覆盖的代码,从而得到测试用例与代码的追溯关系。 调用链路分析的应用场景及收益 针对变更的调用链路分析的评估影响范围相比人工评估更全面。 研发提测范围-5个接口 链路分析变更影响-9个接口 •/v2/open/…/submit•/v2/private/…/approve/publish•/v2/private/…/publish/two•/v2/private/…/approve/advanced•/v2/private/…/publish/one•/v2/open/…/submitByBusinessId•/v2/open/…/restart•/v2/private/…/modifyCopyFlowPath•/v2/private/…/syncAgileAction •/v2/open/…/submit•/v2/private/…/approve/publish•/v2/private/…/publish/two•/v2/private/…/approve/advanced•/v2/private/…/publish/one 此次变更改动了相对底层的外部发起流程相关代码,人工评估改动影响范围是外部发起接口和设计态配置接口,但其实外部发起接口不止常用的一种,这次受影响的还有一些特殊场景下的外部发起接口。链路分析结果比研发提测多出来4个接口。 追溯关系 正向追溯 手工用例录制:结合插件方式人工确认关联开始和结束的操作 自动化用例录制:在setupteardown增加关联启动和结束的逻辑 流量录制回放:回放阶段增加关联启动和结束的逻辑 用例推荐 用例推荐应用场景及收益 用例推荐用于在集成测试或者回归测试阶段针对历史功能推荐出最小范围的回归用例集合,节省回归测试人力,提升回归测试效率 57 21 此次修改较为底层,人工评估需要回归所有流程引擎的重要功能case共57条;且57条回归测试用例已提前完成录制关联,在集成测试阶段使用精准测试全流程推荐出的回归测试用例21条提升测试效率63% 1)和改动影响无关的case不推荐2)覆盖相同变更的case不推荐3)覆盖调用链路有包含关系的case仅推荐关联最长链路的case 覆盖率指标 覆盖率采集和分析 覆盖率采集支持一个任务多次采集,可连续多次生成覆盖率报告,持续观测覆盖率结果;支持多应用的覆盖率采集与合并;生成报告阶段可关联需求,从而实现需求覆盖率的统计; 覆盖率采集和分析 结合变更信息,可以获取到更多维度的覆盖率结果,包括变更方法、受影响接口、受影响链路的覆盖率,从而指导测试对未覆盖到的方法、接口、链路补充测试用例。 覆盖率应用场景及收益 覆盖率统计可以持续采集新功能测试阶段的覆盖率,根据未覆盖代码增补测试用例,直至增量覆盖率达到质量卡点目标。 第一轮测试覆盖率 第二轮测试覆盖率 •增量行覆盖率:78.24%•增量分支覆盖率:56%•增量方法覆盖率:100%•增量类覆盖率:100% •增量行覆盖率:64.71%•增量分支覆盖率:48%•增量方法覆盖率:87.5%•增量类覆盖率:83.3% 根据第一轮增量测试覆盖率结果,排查未覆盖到的方法、分支,补充针对性的测试用例,增加5个测试用例后第二轮的测试覆盖率明显提升 04 通过监控和可观测提高服务稳定性持续监控快速发现问题,可观测性快速定位问题 可观测性三大支柱 2 0 2 3 D e v O p s国 际 峰 会暨B i z D e v O p s企 业 峰 会·北 京 站 可观测性的实现路径 数据关联 数据分析&展示 可观测性的架构设计 可观测性效果示例 Thanks DevOps时代社区荣誉出品