我认为当前测试人员的核心价值是加速整个项目的反馈以及对产品的快速验证。
这两项价值中又各自有三项主要工作:
加速反馈
促进沟通
测试人员在整个交付团队里至关重要的工作就是促进整个项目的沟通,需要和产品团队一起工作做需求的定义,和开发团队一起工作写自动化的验证,保障项目组之间对于目标和实现都能够达成一致。
在这项工作中,最重要的能力是热情,看起来很虚,但是只有充满热情的人员才可能实现足够的沟通,同时高效的沟通能力也是非常重要的能力,这方面需要一些思维和沟通的工具和训练。
还有一个重要的能力就是能够想到一些促进项目组沟通的办法(例如交换三色卡片),这个算是一种灵气吧,但相信也和热情有很大关系。持续交付基础设施的搭建
测试人员应该主持团队持续交付基础设施的搭建,从集成开始到环境自动部署,提交测试验收测试的自动触发,运行,结构展示等等,总之就是持续交付整套基础设施。
本着不重复造轮子的原则,这项工作的主要能力就是对业界相关工具的掌握和使用的能力,当然整合可能涉及到一些二次开发或者自己搭个WEB。并且能够像一个产品经理对产品负责一样,能够及时看到项目组使用这套基础设施的实际需求和问题并能够持续改进。
这里面的主要需要的能力是技术视野、工具使用的能力,以及英文文档的阅档(基本上能看的说明文档都是英文的官方文档)和平台搭建的能力。全流程反馈规则的制定
除了基础设施和高效的沟通,在整个团队工作过程中还是需要制定很多各种有益的规则来促进反馈(例如对产品需求的要求,单元测试覆盖的要求,代码规范的要求等等等等)。
规则应该和项目组的实际情况相结合,而且很多规则并不是所有人都一开始能欣然接受,所以一方面要能够看到目前的问题和瓶颈来制定相关规则来改善更重要的是能够说服项目组的能力(当然这个能力不是说舌战群儒的说话术,更多是技术上能够说得明白,自己能够先做一些实践来证明有效等)
快速验证
整体角度考虑对其他部分的影响
测试人员的工作效率取决于他对软件和项目的理解,而不是他掌握的测试技术。(理解产品、理解用户期望、理解产品架构、了解产品元素,项目团队)在迭代中开发更关注当前功能,而测试需要做的是实时考虑对系统其它部分、相关系统的影响。
因此测试最应该维护的是系统当前的全貌、架构、模块调用以及核心用例。因此对项目整体的熟悉程度是测试人员不变的核心能力之一。风险,优先级选择
这一项其实算是测试人员的看家本领。整个测试分析体系的知识中,最重要的基础之一就是“取舍”,选择更高优先级,更有代表性的case来减少整体case的执行数量,这个技能之于测试相当于算法的掌握之于开发。
在快速迭代的过程中对于优先级的选择重要性更高,因为很多时候要承担更多风险来追求交付速度,风险和速度之间的平衡才是最见功力的。这里主要是测试分析能力,RBT测试的掌握等等这些基本能力。
测试人员应该积累多种测试技术,综合应用它们,把一个“网”织的更密的性价比远低于用各种不同的“网”来防护。自动化回归
自动化回归作为整个持续交付中的核心,重要性不用多说,怎么做好自动化回归是个很大的话题,另外找机会总结。这里只提我的一个观点。要做好和维护好一个真正有效的自动化回归,对于case和数据的设计>自动化的架构>编码能力。所以坚决反对不是本团队的人,不了解整个产品的人来做,也坚决反对简单按模块分解给不同的人,用case堆砌的模式做。
同核心用例一样,要以整体视角来做你的自动化回归,好的实践有狠多,还是另找机会总结。
结论:
在持续交付的团队中,测试人员最重要的能力是对项目整体的掌握程度,技术视野以及热情。然后厚实的编码能力和测试分析能力也是必不可少的基础。反省一下,之前在招人过程中只注意了后面两项,最重要的能力项没有设计很好的题目和方法来考察。不过感觉前面的能力不光和人本身有关,团队氛围也是能够影响前面能力表达的重要因素。