标签归档:团队

敏捷测试的指导性原则

“这么多问题,你们是怎么测的?”

这是我们测试人员听到的最多的质问,也是传统的测试人员对质量把关的常见认识。

但是,事实上,就像著名质量管理专家戴明指出的那样:软件的质量不是测出来的,测试人员没法控制软件质量的好坏。尤其是在敏捷开发模式下,特别强调的核心是质量内建,而要做好质量内建,需要团队全员的参与,需要团队整体对质量负责,这是敏捷测试的指导性原则,我们在敏捷测试宣言里也有强调。

team-is-responsible-for-quality

01. 团队整体对质量负责有多难

团队整体对质量负责,这是个说起来容易做起来难的事情,很少有团队能够做的特别好。

那么,为什么这么难呢?

在我看来,多半情况是因为不是团队所有成员都清楚质量到底是什么,没有明确的质量目标,所以也就没法很好的对质量负责,要实现团队整体对质量负责,首先得搞清楚下面三个问题:

  • 敏捷里的质量是什么?
  • 通常容易忽视的质量有哪些?
  • 团队不同角色怎么为质量负责?

关于这部分内容,在《说好的团队为质量负责呢》一文里有详细的分享,感兴趣的同学请移步阅读。

下面将继续分享相关的两个话题:敏捷团队是否需要专职QA、能够整体对质量负责的团队有哪些特点。

02. 敏捷团队需要专职QA吗

既然团队整体对质量负责,肯定有人会有疑问:那敏捷团队还需要专职QA吗?

这是个有意思的问题,业界对于“去QA化”的讨论也是一波又一波的。甚至很多QA听到这个很是担心,觉得自己前途渺茫了。

QA-is-a-hat

其实,并没有必要那么纠结是否需要专职的QA,因为QA在团队所需要做的事情始终都是要做的,不管是不是有专职的QA,从团队的角度来讲,有人做那些事情不就ok了?我们可以把QA理解成一定帽子,不管哪个角色的人戴上这顶帽子,能完成QA的工作就可以了。但是,是不是什么角色的人都换个帽子戴上就能做QA的事情了呢?这个我相信大家还是比较清楚的,术业有专攻,肯定是专业的QA会做的更好。如果没有专职QA,对团队其他角色的要求就要高很多,不是每个团队都可以做到的。

因此,作为QA的我们,并不用担心是否“去QA化”真的会发生,倒是好好提升自己,多发挥应有的价值才是正道。

说到这里,推荐大家搞清楚敏捷团队的QA该如何工作,以及QA的职业发展之路是什么样的,可以参考如下文章:

03. 能够整体对质量负责的团队有哪些特征

除了前面讲到的清晰的质量目标、注意容易忽视的质量、团队成员的充分合作,要做到团队整体对质量负责对团队本身也是有要求的。从我的经验来看,能够整体对质量负责的团队通常有如下特征:

Healthy-team

信息共享

团队成员要能够为质量负责,首先得知道质量和质量目标是什么,而质量目标会受到众多因素的影响,每个项目每个阶段都会有不同的目标,及时将一些重要的信息分享给团队的每个人是至关重要的,包括客户的业务动态、生产环境系统的状态、终端用户的反馈、团队的工作重心、持续改进的状态、交付的压力和进度等等。

信息共享,有利于团队成员更好的发挥主观能动性,更好的真正为质量负责,这是健康团队最关键最重要的一个特征。

反馈机制

对于软件系统的质量,我们提倡持续集成、持续测试以获取及时的反馈;为了团队的健康,需要不断优化团队成员间的沟通与合作,同样需要有相应的反馈机制或渠道。团队需要营造反馈的文化,成员间应是平等的关系,任何人可以对任何人或事提供相应的反馈。

自动化测试提供的反馈有助于软件系统更加健壮,团队内的反馈机制则可以促进团队的健康发展,有助于团队整体对质量负责。

回顾会议

回顾会议是敏捷软件开发中非常有价值的一个实践,但有些团队的回顾会议流于形式,并没有带来什么效果。

好的回顾会议应该做到对事不对人,大家都能就日常工作中的事情发表自己的意见,做得好的方面继续发扬,需要改进的方面共同商讨应对策略,持续改进。

对于回顾会议讨论出的改进行动,一定要是可落地执行的,并且有相应的人员负责跟踪,不能光有行动的想法,但是并没有实际行动发生。

仪式感

“仪式感就是使某一天与其他日子不同,使某一时刻与其他时刻不同。” 日复一日的例行工作需要仪式感来适当的刺激,以增加团队成员的动力。

项目顺利上线、质量提高了一个档次、某事受到客户的表扬、解决了一个极为关键的生产环境故障等,都可以有一些庆祝的仪式让团队所有成员共享喜悦。

团队活动

除了有仪式感,团队还需要有定期的团队活动,比如一起出去吃午饭、一起去按摩、一起桌游等等,形式可以有很多,就算工作、生活太忙聚不全,一起简单吃个下午茶、聊聊八卦也是挺好的。

这种团队活动的目的主要是为了增进成员的凝聚力,一定要是轻松、愉快的形式,最好能够所有成员都参加。

04. 小结

团队整体对质量负责是敏捷测试的指导性原则,要做到这个,需要:

  • 明确质量目标,并且确保团队所有成员理解清楚各自需要为哪些质量负责;
  • 软件开发生命周期的每个环节都需要多角色的合作,发挥各角色所长,取得最佳效果;
  • 重视团队建设,组建健康的团队。