所以说,程序员与测试员应当从第一天起就协同工作。他们一起开会讨论想从对方那里得到什么,以及他们希望对方做哪些事情。他们会根据项目目标或工作任务列表来安排工作的优先级并做出影响双方的决策。在日常工作中,程序员总会把测试员的工作看作是帮助他提高工作质量的一种方式,这增强了他的自信心。测试员不再是挑毛病、列缺陷的局外人(“烂程序员,真烂!”),与此相反,他们成为一个局内人、一个合作者,他们对程序员的工作所给予的密切帮助无人能及。
或许最为重要的是,尽早建立起程序员和测试员之间的工作关系,这会打造出一个使项目能够经受艰难时刻所需的纽带。在项目后期问题出现、压力加大,他们将有一段彼此信任的经历。他们会寻求解决方案应对压力和新的挑战,而不是指责对方。
带着质量意识编程
通常程序员和测试员在质量的含义上有着非常不同的见解。不只是他们,人们有关质量的争论已经持续了几百年,至今也未取得多少进展(参见Pirsig的《禅与摩托车维护的艺术》)。不要指望能找到一个永远正确的答案,那是不可能的事。质量是有高度主观性的,而且对于不同的项目其含义也会不同。主管们要做的是为当前的项目在质量问题上达成一致,避免哲学式的争吵,而不是去寻求一个唯一的答案。
精明的团队很早就对质量进行明确。他们知道在项目后期他们需要通过测试用例找出Bug并评估进展,他们决定不等到结束的时候再去处理这些事情。可以在项目初期就做出有关质量的决策。
测试驱动式开发(TDD)是一种流行的在初期就引入质量管理的开发模式,它使测试及质量保障与每个功能特性的设计结为一体。测试用例(软件在发布前必须满足的条件)在编写代码前就已被创建,以确定代码应达到的条件。既然你不会蠢到开车的时候不知道要去哪儿,为什么要在你还没明确目标之前就开始编码呢(除非你喜欢在公路上闲逛或者编的是些简单代码)?
TDD的精髓适用于各种类型的工作。如果你能尽早确定最终要实现的各种特性并把它通知给其他人,成功的机率就会升高。这就是从各项分工的角度将结果分解,使每个人都能最大程度地运用各自的技能帮助项目达到目标。
只有主管能发动和结束战争
战争史清楚地表明了一点:是那些大权在握者制造了导致战争的因素。不管对妥协是惧怕还是拒绝,主管都有能力发动和结束冲突。测试员和程序员没什么差别,如果在开发团队中发生冲突,就要从主管身上找原因。
高级程序员和高级测试员之间的关系为组织中其余的人定了调子。如果一方对另一方不予理睬、嘲笑或耍威风,那另一方也会跟着这么做。主管确立行为准则-某个角色的工作该如何去做,他该如何对待其他的角色。这也同样适用于团队的管理者,管理所有程序员和测试员的人的行为将确定组织中每个人的行为准则。
为改善测试员和程序员之间的关系,双方的主管需要对局势负起责任,这类事情要比那些技术类的工作拥有更高的优先级。本文及以前有关于这方面的文章有助于为解决此类问题提供一些思路。不过只有当主管们敢于进取,明智地承认这些问题,并带领双方制定一个如何改变的协作计划,这一切才会真正得以改进。
文章来源于领测软件测试网 https://www.ltesting.net/