本座粗粗整理了一下,在过往发表的文章中,敏捷(Agile)、开发运维一体化(Devops)和持续集成/部署(CI/CD)是本社区的高频词汇,这三个概念本质上是对迭代型项目在三个不同层面上的描述。
敏捷关注在项目流程,强调在加速交付过程中的变更管理;
CI/CD关注在软件定义的生命周期,强调自动化开发和测试过程中的工具(链);
Devops关注在企业文化,强调不同角色/团队的职责分工。
今天讲敏捷开发中的质量管理,首先质量管理不光是QA团队的事,如果开发、测试部门不上心,QA根本兜不住大堆大堆的质量问题,就像一个球队的防守不能只靠守门员一样。我们首先从最主要的测试说起,测试可分为黑盒和白盒测试。
- 黑盒测试不要求测试人员懂得编程的知识,只是按照程序的功能一项一项的测试,并将有问题的功能点找出来就可以了。
- 白盒测试是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。
很明显黑盒测试的层级更高,直接面向运维、内部用户甚至最终客户,为了尽可能不将问题暴露给终端客户,开发人员和QA要协同起来在初期建立起开发的质量标准体系。在下图中卡夹可以看到整个生命周期内并没有明确的测试团队介入,因为敏捷的项目并没有完整的测试体系,QA在每次新代码并入时就需要保持质量一致性。
除此之外,敏捷与传统测试相比,更强到自动测试的重要性,其主要功能在于生产出市场需要的应用,因此QA的角色更注重于满足客户的质量需求,也就是说除了黑盒白盒测试外,QA还需要全面理解开发阶段的内部团队工作目标。
说完测试,来聊聊敏捷开发的风险管理,大家都知道,随着项目的推移,早期的风险是会逐步放大的,如何识别并管理好风险也是敏捷项目关注的质量重点,至少来说风险记录和可追溯,在一张完整的风险管理清单中,需要至少记录风险的描述、识别日期、可能性、严重性、优先级(风险编号)、负责人、行动计划和状态。当然如果有系统(例如Jira,看板等等)可以管理那就更方便了。
工具的好处在于可以与所有或指定干系人在全生命周期内保持良好的沟通;有序管理开发工作;在有限的发布周期内管理好功能优先级;精确到事件的系统可追溯性以及在开发过程中随时引入新的用户故事。
抛开测试与风控,由于频繁迭代的进度需求,自动化也是提升QA效率的重要利器。有过测试经验的朋友可能知道,回归测试会占用大量的QA或测试团队时间,有了自动化工具就可以确保之前工作的交付物可以继续复用,这样QA工程师仅需关注新功能的测试即可,同时自动化也可以帮助到开发团队更加放心地做系统变更,因为任何代码问题都能被即时识别出来,甚至在递交给QA之前就能被修复。
当然我们需要理解一些测试案例是不能完全自动化的,例如在数据或者环境的变更的情况下复用自动化案例就会带来错误的识别结论。