任务栏里的“测试中”一列通常会导致团队有更多在“进行中”的工作,而实际完成的工作会更少。移除这些列可以促进测试人员和开发人员之间的协作,并使团队能够更快地交付项目。
BBC iPlayer&Sounds 团队的首席测试员 Jit Gosai 在精益敏捷交流2020大会上谈到了团队如何通过取消任务栏里的“测试中”列来实现更快的交付。
通常,任务板里会有一个“测试中”列,表示测试人员正在完成的工作,另外一个“等待测试”列用来收集“已开发”的任务。Gosai 说,测试人员知道他们下一步需要做什么,开发人员可以在等待测试人员的同时进行其他工作,这样可以充分利用团队资源。
如果没有问题,任务就可以移到下一列,通常是“完成”或“等待发布”。但如果测试人员发现了问题或者需要获取更多的信息,会发生什么呢?这里有很多选择:是回到“开发中”列,推回到 backlog 中,还是创建一个“等待开发”列作为等待区域?Gosai 提到,这些选项中的任何一个都会给开发人员带来更多的工作量。
与此同时,测试人员要做什么?开始下一项任务,还是等待开发人员?Gosai 认为,无论团队做出何种选择,测试总是会成为团队完成任务的最大瓶颈,因为团队中的开发人员总是比测试人员多。
Gosai 说,在删除“测试中”这一列后,开发人员继续他们的开发工作,而测试人员则会进行测试,他们可以一起工作,直到产品发布。开发人员必须与测试人员协作,以便了解下一步需要做什么,并一起完成工作。
有了良好的过程改进实践,测试人员和开发人员可以更好地协作,降低风险。Gosai 总结说,在测试过程中发现的见解可以被加入到整个过程中,而不是通过 bug 报告塞给开发人员。
在 Jit Gosai 的演讲之后,InfoQ 采访了他。
InfoQ:在任务板上设置“测试中”列有什么问题?
Jit Gosai:“测试中”和“等待测试”列看起来很不错,但它们通常会导致更多的工作量和其他问题(更多细节,请参阅“测试中”列引发的问题)。
通常的应对办法是添加更多的测试人员(通常成本很高)或进行自动化测试(通常是端到端 UI 测试),这样会让开发人员养成坏习惯,比如编写更多的集成测试,而不是进行单元测试,因为他们认为测试已经成了别人的职责。而且这样会让测试变成开发生命周期的最后一环。你可以在我的文章“自动化UI测试的意外后果”中看到更多有关这些问题的信息。
InfoQ:我们怎样才能在保持测试质量的情况下移除测试列?
Gosai:移除测试列并不意味着测试不再重要或不再发生,它实际上是让团队专注于一个共同的目标,专注于完成工作,而不是制造更多的工作量。
更少的工作步骤意味着开发人员在工作中停留的时间更长。现在,这给了测试人员和开发人员一个机会,让他们开始了解其他人做了什么,以及还需要做哪些测试。
InfoQ:移除测试列如何让团队更快地交付?
Gosai:主要有两个方面。一方面,正在进行中的工作量减少了,这样就可以把更多的精力放在完成工作上。这自然会完成更多的工作,特别是如果由于缺陷或其他不可预见的情况而需要返工。另一方面,现在开发人员和测试人员正在一起工作,可以减少与代码变更相关的风险。
在这个阶段,协作内容就是分享信息,比如你对变更的了解程度以及在实施这些变更的过程中学到了什么。这使得个人能够在其他人的知识之上想出他们在单独工作时无法产生的新想法。现在是一个很好的机会,看看这些措施是否可以通过自动化或其他方式加入到开发流程中。这也是一个很好的时间点,看看任务是否真的返工了(例如,在现场环境中发现的问题),并从中总结经验教训,防止这个问题再次发生。
虽然这些改进带来的好处不会立即显现出来,但从长远来看,在交付项目方面可能会有相当大的影响,这将帮助团队在相同的时间框架内完成更多的工作,从而更快地交付。
在这些改进中有几个假设需要注意,其中两个最主要的假设是:开发人员和测试人员开始协作,以便了解对方已经做了/将要做什么,而不是变成一种隐晦的迷你开发/测试过程;另一个是有效的持续改进过程,从其他地方和在生产环境中出现的各种 bug 中学习总结。
InfoQ:我们如何利用任务板上可见的内容来改进测试?
Gosai:上述的协同工作对于团队来说是一件新鲜事,他们还没有形成持续改进的策略,所以可以通过一些技术来开始这个过程。如果测试确实成为团队发布项目的最大瓶颈,那么他们可以利用“测试中”列来发挥他们的优势。
测试人员不应该只是简单地从“测试”列中挑选任务,直到完成为止,他们应该与团队一起帮助他们理解如何进行测试、他们要测试什么以及在测试过程中发现的东西。如果任务不多,这样做可以帮助他们找到工作中的一些关键问题。例如,是否存在类似的故障原因,如可用性或可访问性问题,或某些硬件/软件问题总是导致错误发生?开发人员在做这些变更时需要注意些什么吗?这些问题可以被加入 backlog,然后团队开始处理这些任务,看看是否可以在开发生命周期的早期处理这些任务。
关注过程而不是人,可以更容易讨论测试人员在做什么、开发人员和测试人员如何在生命周期的早期减轻工作量,并逐渐形成持续改进策略。
在这个过程中,领导力是非常重要的。领导需要帮助测试人员意识到,他们不是团队的“问题”,而是解决方案,他们要让团队知道在测试时需要注意哪些风险。开发人员还需要通过指导沟通、形成同理心与其他规程紧密合作,他们的目的不是试图取代它们,而是一起努力改进过程。
团队领导的一个关键任务是创造一个心理安全的环境,让团队成员能够坦诚面对他们所面临的问题,甚至分享他们还没有完全形成的想法和解决方案,而不会感到尴尬,也不会害怕被认为自己不够强大。有持续改进的任务 backlog 固然很好,但如果人们不愿意在一起协作,只会得到平庸的结果。这意味着他们永远得不到应有的关注,创新的种子也会被扼杀在摇篮之中。你可能在团队中听到过这样的话:“我们之前已经尝试过了”或者“这永远不会成功,因为……”。
原文链接:
Deliver Faster by Killing the Test Column
评论