新闻中心

聚量思享 | “唯快不破”的敏捷测试

2022.04.28

导读

“需求文档还没理清楚,测试怎么做啊?” “等开发全部修完Bug,我再接着做测试吧,反正我已经测完了。” 传统开发流程中,经常听到这样的对话。随着金融业加速数字化转型,数字化产品的开发越来越要求速度快、质量高,传统测试模式必须向敏捷测试转变。在易变、复杂的数字经济时代,敏捷测试强调快速迭代、拥抱变化,能够有效驱动和赋能持续交付,从而持续提供高质量的软件产品。

1、转型敏捷测试

在互联网唯快不破的势头下,快速上线是很多科技产品抢占市场的制胜法宝。质量不再局限于确保软件产品能够正常工作,还要在高度竞争、永远在线的数字化市场环境里,提供差异化的用户体验。而在整个交付质量体系中,作为保证产品质量的重要手段,测试的作用不可忽视。

然而,传统测试模式存在各种问题:

--产品交付质量不稳定、缺陷率高、交付周期长甚至延期;

--开发并行提测、测试串行、测试资源紧缺、测试周期长;

--需求变更频繁、无法快速响应和解决、返工时常发生……

当传统测试方式逐渐成为整个持续交付过程中的瓶颈,测试工程的发展进入了新阶段,标志性的事件就是敏捷宣言的广为接受和DevOps(即Development和Operations融合)理念的兴起。很多公司开始重视软件的持续构建和测试自动化,从而构建持续交付流水线,将开发、测试甚至运维合并到一个持续的活动中。测试已经演变为质量内嵌的一部分,能对开发过程及时响应,并提前采取行动。

由此,诞生了敏捷测试。它是一套完整的软件测试解决方案,涵盖价值观、思维方式、测试流程,一系列优秀的测试实践和更合适的测试环境,以及自动化测试框架和工具。敏捷测试贯穿软件开发全生命周期,测试左移覆盖对需求和设计的测试,测试右移覆盖灰度发布与在线测试。

敏捷测试贯穿全生命周期

敏捷测试宣言

--与开发协作测试胜于测试分工与测试工具;

--可运行的测试脚本胜于写在纸上的测试用例;

--从客户角度来理解测试需求胜于从已定义的需求来判定测试结果;

--基于上下文及时调整测试策略胜于遵守测试计划。

敏捷测试原则

--尽早和持续地开展测试;

--基于风险的测试策略是必需的;

--测试计划、设计和执行力求简单;

--能及时完成对软件质量的全面评估;

--软件本身是测试研究和分析的主要对象;

--在满足所要求的质量后,测试进行得越快越好;

--对测试技术精益求精;

--不断反思,持续优化测试流程与设计。

谷歌公司在十余年前,发现其GWS(Google Web Server,谷歌网页服务器)核心服务质量跟不上市场的迅猛发展与系统复杂度的提升,发版时问题越来越多、系统集成需要的时间越来越长,导致团队不敢做系统变更,甚至是通过终止出问题服务的方式来绕开问题。

为解决这一状况,谷歌全面推进敏捷自动化测试,要求开发团队在提交代码时,必须同时提交自动化测试脚本。GWS服务建成超1万条自动化测试用例,做到了每日发版,而且开发效能与软件质量得到很大提升。此后,测试文化在谷歌深入人心,敏捷自动化测试用例成为整个团队的技术资产,一个人写了测试脚本,其他人都可以执行脚本、获得收益。

 饿了么公司在2018年被阿里巴巴收购后,企业订餐服务在团队交接期间出现质量下降,发版时长增加到3小时以上,线上问题频发,甚至曝出多个高风险安全漏洞。为解决质量问题,饿了么实施敏捷测试流程改造,将测试人员从大量手工劳动中解放出来,更好支持业务变更,产品质量大幅提升,并形成敏捷测试的实践,得到业界广泛好评。

2、敏捷测试载体:CI/CD流水线

敏捷测试通过CI/CD流水线实现快速交付、增质提效的目标。持续集成(Continuous Integration)是指团队开发者频繁集成其代码、且每次集成都做自动化构建与自动化测试,以便及早发现集成问题。持续集成的频度通常为一天一次,甚至一天多次。持续交付(Continuous Delivery)是指持续地将新功能、缺陷修复、配置变化等各类变更,在一个短周期内安全、快速、高质量地发布部署到产品环境中。作为持续集成、交付、部署及开发过程管理的整套工具链,CI/CD流水线(Pipeline)可减少开发过程中不必要的浪费,进而缩短开发交付周期。

我们通过一个实施流程来进行举例说明。当开发人员将代码提交到版本控制系统后,后续的代码静态检查、构建、打包、单元测试、功能测试、集成测试、配置、部署环节都尽可能地自动化,而CI就可以帮助开发人员更加频繁地将代码更改合并到共享分支或主干中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试来验证这些更改,确保这些更改没有对应用造成破坏。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

完成 CI 中构建及单元测试和集成测试的自动化流程后,CD可自动将已验证的代码依次发布到测试环境、预发布环境、生产环境。

CI/CD流水线

每日构建(Nightly Build)是CI/CD流水线的一个最佳实践,它将一个软件项目的所有最新代码取出,运行编译、链接、单元测试、功能测试、发现错误并报告错误的完整过程。对于许多大型项目来说,每次构建的时间可能高达几个小时,因此每日构建多在夜间无人工作或者人比较少的时候进行。每日构建能实现整个交付过程完全自动化,对问题修复的验证更有针对性,并更快速地验证变更是否正确,提升产品应对市场变化的敏捷能力。同时,高频度地对产品进行体检,也可以让团队与客户对产品质量更加放心。

3、敏捷测试框架:BDD测试框架

行为驱动开发(Behavior Driven Development,BDD)是敏捷测试领域最具活力、最符合敏捷方法论的测试框架,它并不是一种软件开发方法,而是把现有的工作方法融合起来,让软件开发团队更加高效工作的方法论。BDD极大降低了敏捷开发团队与产品经理的沟通成本,能帮助敏捷开发团队把精力集中在识别、理解和构建跟业务目标有关的产品特性上面,并确保产品特性的正确设计和实现,从而最大程度上减少了信息不一致带来的一系列问题。

那么BDD在具体项目中如何实施呢?在敏捷开发模式中,每个用户故事(User Story)的描述过于简单,是不具有可测试性的,因此需要针对每个用户故事编写对应的验收标准。BDD将验收标准标准化,列出用户故事所有可能遇到的应用场景,并且将应用场景以更加清晰准确的GWT形式呈现出来:

--Given:给定什么上下文/条件 And/Or 其他条件;

--When:当什么事件被触发;

--Then:产生什么样的结果 And/Or 其他结果。

第三方科技公司常采用基于BDD的敏捷自动化测试框架,并在此基础上进行二次开发,对测试结果进行可视化展示。

基于BDD的自动化测试框架

4、构建聚均科技质量防御网

作为一家懂金融的科技公司,聚均科技在CI/CD流水线中集成基于BDD的自动化测试框架,实现每日构建能力,既具备敏捷开发、敏捷测试的技术优势,也体现出过程可信、结果可信的质量优势。

实践自动化测试

 敏捷测试的核心内容是自动化测试。聚均科技针对不同类型的测试用例集合实施不同的自动化测试方案,通过自动化测试需求分析、自动化测试框架搭建、自动化测试脚本编写、自动化脚本运行及维护,从而及早发现错误、降低问题修复成本,大幅提高测试效率,缩短开发周期,提升产品质量。

完善制度保障

 测试验证作为敏捷测试中交付质量的重要依据,需要在质量管理流程中给予充分的重视。聚均科技制定了《测试管理办法》《交付质量验收和考核办法》等多项规章制度,对处理流程和质量度量指标等给出执行标准,并全面推行测试用例评审活动,持续改进测试过程与交付质量。

总 结

数字经济时代的产业互联网To B端服务,客户定制化需求多、上线时间要求紧,因此,第三方科技公司必须要快速应对变化、为客户提供更有保障的服务。聚均科技基于敏捷测试,驱动持续交付,依托在质量、服务等方面的管理体系优势,有效赋能金融机构产业金融服务的数字化转型,助力金融机构高质量发展。

参考文献:
  【1】朱少民,李洁:《敏捷测试:以持续测试促进持续交付》
  【2】Titus Winters,Tom Manshreck,Hyrum K. Wright:Software Engineering at Google
  【3】张丙振,檀飞翔 :《饿了么质量体系搭建实战》
  【4】心蓝:《构建高质量软件:持续集成与持续交付系统实践》

微信公众号
扫码关注微信公众号
  • 上海总部

    上海市浦东新区樱花路868号建工大唐国际A座20楼

  • 北京分公司

    北京市朝阳区东三环光华路众秀大厦3903

打开微信扫一扫进行分享。

关闭