软件开发团队和测试团队之间的关系是复杂而有趣的,双方有共同目标,又互相竞争。双方的共同目标在于减少软件交付之后缺陷的严重程度和数量。双方的利益竞争在于测试人员尽可能的发现软件开发团队交付的软件产品的缺陷。在这种情况下,减少无谓的内耗,共同保证共同目标的实现,才可能实现双方的共赢。但是在很多时候,软件开发团队和测试人员之间总存在着一种紧张的关系,并因此无谓的添加了到达共同目标的困难。

在我经历过的一些开发过程中,多次因为与测试人员之间的颇为愉快的合作,实现了双赢和共赢。总结出来几点,抛砖引玉:

1. 保持良好的心态,提高对开发人员与测试人员之间关系的认识,从软件开发人员的角度来说,需要认识和做到以下这几点:

a) 测试人员为开发人员保证交付产品的质量,共同或全部分担了已交付产品的缺陷责任。通过测试人员的工作,能够在交付给客户之前发现软件产品的缺陷。软件产品不可能没有缺陷的存在,但是被测试人员发现的后果远比被客户发现的后果小。因此开发人员员需要具有这么一个概念:感谢测试人员在被客户发现之前帮我们找到了这些缺陷。

b) 作为对交付出去的软件产品的共同责任方,开发人员和测试人员之间合力于减少交付出去的软件产品的缺陷,作为互相合作的双方,开发人员需要帮助测试人员发现缺陷。


2. 对于客户想法的理解,开发团队与测试团队需要达成一致并且保持同步。交付产品是由客户进行验收和操作的,测试人员模拟客户对软件产品的操作进行缺陷测试。因此,开发团队和测试团队在客户需求和软件操作界面方面需要有共同的认识和理解。并且随着需求的变化和软件的分阶段发布,需要在这两方面保持同步。这样对于双方来说能大幅度的减少无谓的工作量,并且提高双方工作的质量。具体来说有以下这些措施:

a) 开发团队和测试团队一起对初步需求和需求变化进行讨论,达成一致的理解,可以由项目领导/开发团队经理/测试经理/需求经理/需求人员等召集会议,也可以由相关的开发人员,测试人员以及需求人员和客户代表等小范围互相讨论。根据项目条件,组织架构,团队文化等的不同可以有多种方式多种手段,目的在于保证一致理解并尽可能的得到用户认可。如果未能达成一致的,尽可能直接或间接的与用户沟通,根据反馈再次达成一致。即使实在无法(因沟通渠道,回报率,阶段交付目标等多种可能因素)达成一致,也能共同明确了这些不一致的地方。

b) 界面/操作设计初始和界面/操作变化阶段,双方也需要使用上面的这种方式达成一致。之所以把界面/操作(其实它们也是需求的一部分)单独拿出来是因为界面/操作的设计在一些软件组织中开发团队具有一定的决定权,它们代表了所有开发团队先于测试团队得知其变化的需求中的组成部分。这时候需要开发团队主动传递给测试团队,并帮助其理解,进而双方达成一致,或共同明确不一致的地方。


3. 互相帮助,共同提高。作为合作关系的一方,测试团队和开发团队都可以对对方提供支持和帮助,同时也能提高自己的工作效率和质量。我总结出以下几点,并且在工作应用中有很大的效果:

a) 开发团队在大/小版本发布之后,测试团队开始测试之前,为测试团队提供这些资料:可能存在缺陷的地方和可能存在的缺陷、已经知道其存在的缺陷、开发团队未充分测试的地方、需要测试团队进行详细测试的地方。提供这些材料能帮助测试团队尽快的测试出有效的缺陷,并且帮助开发团队尽快得到有价值的反馈。尤其在小版本发布的时候这个措施非常有价值。

b) 测试人员在发现缺陷的时候,及时与开发人员进行沟通,经详细沟通之后再由测试人员记录缺陷。这样能减少无谓的缺陷记录传递和描述修改和阅读时间,并且能帮助测试人员增加有效缺陷记录和帮助开发人员及早的和详细的得知软件缺陷。

c) 开发人员帮助测试人员进行部署和准备测试环境,并邀请测试人员对其刚初步测试过未发布的软件进行测试。这样测试人员能发现更多的测试用例和可能缺陷存在点,开发人员能减少自测时间并及时得到反馈。

d) 测试团队和开发团队共享测试数据和测试用例。测试团队和开发团队都需要对软件进行测试,都需要数据和用例,通过共享和交流,双方都能减少工作量和提高质量。并且通过这种交流,能保证软件测试更全面,产品质量更高。

e) 开发团队主动及时与测试团队进行联系,获取软件产品的缺陷分布和数量变化,这样开发团队能更全面和及时的了解自己交付软件的质量。

 

我一直相信不管在哪种类型的团体合作中,保持正确的心态和及时顺畅的沟通都是团队合作关键的成败因素。开发团队和测试团队之间,开发人员与测试人员之间也是如此,因为大家都属于同一个团队??软件交付团队。希望我们每个人,不管是开发还是测试,都能保持正确的心态,积极主动并顺畅的沟通合作,这样,我们的会工作会更加的愉快。

 

后,感谢所有合作过的测试人员,在写这个东西的时候回想和你们合作的时间,真是一件很快乐的事情。