第一次在文章中看到“去QA化”的概念。只是随便浏览了一下,并没有太在意。第二次在QA社区群看到比较资深的同事在讨论“去QA化”。那时,在我小小的脑袋里,我只是觉得“去QA化”离我还很遥远。万万没想到!没过多久,去一个项目,TL告诉我,我们有些项目没有QA,隔壁的项目组有QA,但是整个开发过程没有专门的测试阶段。听完,我的眼睛瞪得跟铜铃一样(夸张的说辞):那考攻略谁来做?在什么阶段测试卡?什么时候进行探索性测试?TL顾及到我作为QA的尊严,立即向我强调:“我觉得QA还是很重要的,我反对他们那样做!太危险了!”。然而,她善意的安慰并没有平息我的震惊,打消我的思索。这一次我知道“去QA化”可能真的来了。那么在“去QA”项目中,我能做些什么来为团队提供价值呢?我带着这样的想法来到了这个项目,并提出了自己的一些想法。测试策略因地制宜制定测试策略。当涉及到新项目时,这是QA必须做的事情。在了解了项目的脉络之后,我们需要及时的去做这件事情,它的优先级是非常高的。测试策略是一个非常重要的指南,它涵盖了功能、性能、可访问性、兼容性、安全性等方面需要测试的内容,同时也明确了如何测试。在敏捷开发流程下,建议大家参考《敏捷测试的四个象限》来思考和设计自己的测试策略。如果这个项目不是一个全新的项目,并且已经有了现成的测试策略,那么我们在加入项目的时候就需要了解当前的测试策略,在对项目背景、技术架构等有了更深入的了解之后,和软件功能,看看您是否需要改进当前的测试策略。每个项目的测试策略实际上应该随着项目的变化而发展。内置质量QA我们为什么要在项目中提升内置质量?首先我们想一下缺陷是否被测试?不是,它是在生产过程中产生的,所以我们需要在生产过程中提高产品的质量,减少缺陷。在敏捷开发的过程中,我们有需求分析、架构设计、Kickoff、DeskCheck、QA等一系列环节,质量内建其实就是要求我们做好每个环节的质量保证,尽量避免缺陷,尽快找到错误,而不是期望在测试期间找到所有错误,然后修复它们。越晚发现缺陷,修复的成本就越高。而且,发现的错误越多,可能存在的错误就越多。我们在每个阶段都需要一个质量保证策略,团队中的每个人都需要对质量负责。例如:在需求分析阶段,写卡需要遵守INVEST原则,团队需要就需求的理解达成一致;在开发阶段,可以通过Pair、TDD、QA和Dev结对编写单元测试、及时明确需求等方式来保证开发阶段的质量;在测试阶段,通过充分的测试设计、探索性测试以及更完善的自动化测试覆盖,及时发现缺陷。此外,质量内建还包括需求管理、风险管理、提高团队质量意识等其他方面。自动化测试制定自动化测试策略并与团队达成一致。搭建E2E和API自动化测试框架,编写自动化测试代码,经常给项目伙伴(我不是,我不会)洗脑自动化测试的重要性,逐步提高项目的自动化覆盖率。除了UT、E2E、API等自动化测试,其实任何频繁重复的动作都可以自动化,比如准备测试数据、重复填写冗长的表格等。自动化测试可以减少人工重复,解放部分QA人员,自动化测试的及时反馈可以让团队和客户对产品质量更有信心。测试左移需求分析是开发过程中非常重要的一环(不限于敏捷开发),QA应该更早的介入需求分析,更加关注业务需求,以QA独特的视角分析需求的合理性.和一些边缘场景。在需求分析阶段,多与客户沟通,了解他们的真实需求。配合BA完成写卡,补充业务场景。并在Kickoff之前尝试确定这张卡的哪些testcases需要API自动化覆盖,哪些需要e2e自动化覆盖,哪些需要UT测试覆盖。在故事卡进入开发阶段之前,通过面对面交流、AC、testcases(根据自己的项目情况)等多种方式,确定并明确需求,达成共识。减少因需求不合理、需求分析不充分、需求理解不一致导致的问题。持续改进在一个项目的初期或者在一个混乱的时期,QA总是有很多重要的事情要做,如上所述,制定测试策略,提高自动化覆盖率,提高团队的质量意识等等。但是当项目进入稳定期后,团队成员的质量意识已经比较好,测试覆盖率也达到了更高的标准。这个时候我们能做什么?首先,我们知道质量内置是一个持续的长期概念。当每个人适应每个过程中每个角色的质量职责后,QA需要保持观察,保持对质量保护工作的敏感度,持续推进质量内建;另外在新版本发布后,通过UserTesting收集用户反馈,或者分析终端用户的行为,收集分析生产环境的数据,并持续改进;QA还需要收集线上问题和UAT问题,进行缺陷分析,组织团队共同制定质量改进计划。在项目的演进过程中,我们不断思考是否需要改进我们的质量保证计划和测试策略。质量内置和高度自动化的测试偶尔让我们似乎不再需要QA,但是谁来做内置质量呢?谁来输出质量保证计划?谁来编写自动化测试?谁来做持续改进?它是QA,或者是戴着QA帽子的人。综上所述,其实QA在项目上能做的事情有很多,包括但不限于:制定测试策略,明确测试范围和测试方法,对团队的测试工作有重要的指导作用;打造品质,把品质融入发展的每个阶段,带领团队成员关注品质,提升品质;自动化测试,逐步构建各级自动化测试覆盖率,提高自动化测试的有效性;测试左移,将测试活动提前到需求分析阶段,减少不合理需求引起的质量问题;将测试右移,关注生产环境的质量,分析生产环境的数据、问题和反馈,寻找更多的质量提升方向;持续改进,保持对质量的敏感度,不断观察项目中可以改进的地方除了以上几点,QA还可以更加关注提高绩效和面对客户。在我看来,所谓的“去QA化”只是在一些项目中去掉了一个QA的角色,但是总会有人戴QA的帽子,或者说每个人都戴QA的帽子,而且每个人都有很高的评价,这其实就是质量检查的乌托邦。
