团队应该如何安排QA 和测试工作

答:QA:

确保项目的正确性

自动化测试只是其中的一小部分。“我们在开发正确的产品吗?如果是,那么我们开发的产品正确吗?”QA首先需要在整个项目过程中不断询问所有成员上述问题,确保团队是在开发客户所需的产品,而不是自己YY出来的产品。

确保流程的正确性

质量从来都不只是QA的职责,而是整个团队的职责。但QA如果自己都不注重,不督促组内成员改进质量,再将责任强加于整个团队,那么产品质量又何谈提升与保证。作为一个QA,我们不仅要检测项目中存在的问题,也要改进团队的实践活动,更重要的是预防问题的发生。

● 每次bug bash或相应迭代完成后,要分析统计,找出产生缺陷的环节,并采取措施防止问题再现。例如每次release或者bug bash之后,可以按照功能模块与bug类型进行统计划分,分析统计bug的成因,例如某次迭代我们bug数量激增,经调查,发现我们对某些模块的前端代码进行了重构,但缺乏相应的单元测试与集成测试,造成了我们没有及时发现bug。之后我们就对应的采取措施防止问题再现。

● 总结分析报告,及时反馈这些信息给团队。总结分析是一个长期的任务,每次bug数量的变动,都会直接体现整个团队上次迭代的开发质量,例如bug数量减少了,可以鼓励成员再接再厉。或者某几次迭代某些模块bug呈上升趋势,那么就需要组织团队一起讨论问题根源,采取措施防止问题重现。

● 利用代码质量分析工具,帮助我们尽早预防问题的发生。例如Sonar代码质量管理平台,可以帮助我们从代码复杂度,重复代码,单元测试覆盖率,编码规范等纬度来分析代码所存在的问题。当然也有其他的开源工具,像RubyCritic,/plato不同的语言都会有相应的工具。

● 在线监控,利用像newrelic,airbrake等监控工具对部署在本地或在云中的Web应用程序进行监控、故障修复、诊断、线程分析以及容量计划。这样不管产品环境有任何问题,我们都能及时响应,尽早修复,减低损失。

测试中如何安排成员工作:

通过激发测试队员的积极性充分发挥各自潜能,并培养团队协作氛围增加团队精神,工作上步调一致,来最大程度的发挥团队效能。不同测试阶段采取不同测试策略,例如测试过程中出现定位效应、审丑疲劳和同化现象可采取交叉测试来规避;鼓励创新,不断变化测试方法来提升测试效率;尽量让每个人做不同的事情减少重叠和内耗,在专长上面要有互补性,充分发挥各自特长。

开发人员与测试人员怎么配比才合适?实际这里没有一个恰当的固定值。一个研发团队,开发、测试的人手配比不是简简单单3:1或者5:1一概而论。这个主要根据公司的成本考虑,具体来说就是与开发人员、测试人员的素质息息相关。在谷歌的核心研发团队,根据了解,开发测试人员配比是10:1!而在常见的企业中,大部分配比都是3:1,然而在微软可能又是1:3!所以,大部分企业可以死心了,如果仅仅是为了做一个东西炒作一个题材、概念,那么就不要想像谷歌那样去要求测试,那到时可能没人能做下来。当然,如果想追求用户的极致体验,也可以像微软那样去配比,但这个成本不是浮躁的企业能够承受的。所以一个研发团队开发、测试的人员配比,要根据所招开发人员、测试人员的素质来进行合理的配比,万万不可一刀切,否则后面要不开发团队很闲,要不测试团队很闲。

当测试人员有限,而研发团队多条业务线同时进行时,应该怎么调配人员?是一测试人员专门负责一业务线,还是测试人员统一调度安排,哪个有空就抽调哪个?这也是研发团队中项目经理或者测试经理觉得困难的问题。实际没有那么复杂,主要根据业务的周期和复杂度来决定。业务复杂度高、周期长的,至少得有一个人专项负责,最好有两人能够熟悉该业务。如果该业务清闲时,则腾出该专项负责人进行其它业务的测试,忙时也可以根据其它业务线的情况抽调其它人加入测试。两个人熟悉业务,同时保证了专项测试人员流失时,对这块业务的衔接测试。

为什么复杂度高、周期长的业务需要专人负责?这也是一个很简单的问题:真实经历,所在测试人员技能素质都差不多的情况下,如果谁能更多的发现问题,同时能更多的提出些建设性的优化意见,主要与这个人员对某块业务的熟悉度有关。这也是为什么我们经常会看到招人,需要有多少某个行业的经验原因,这样的测试人员才能更快入手测试。

测试计划不如变化,开发交付物延期,测试时间不能变更,测试人员不能增加的情况下又该怎么调配人员呢?相信这个问题在现实中,大家都会碰到。同样,这里有一些解决办法。

首先要尽早的介入测试(这里主要指测试实施的接入时间,不是我们常说的需求、计划设计等阶段的接入),最好加入集成测试,即当开发做好一个接口,或者模块时,就应该介入测试。不要等着所有东西出来再测,这样不能在前面就发现开发人员的一些坏习惯,让其后续避免,导致所负责的东西在测试时问题不断,也导致后面测试时间压缩后没有更多的应对措施。

其次,应该标出测试功能模块的优先级,在时间不足的情况下应尽量保证优先级高的部分能够充分测试。在业务复杂,周期长的项目,最好准备一些基础测试用例,这样才能避免我们在时间紧的情况下出现遗漏,避免事故的发生(血的经验和教训)。最后就是,尽可能争取内部资源了,比如可能闲置的设计团队、产品团队等。这里需要我们测试梳理一套可行的测试工作规范,里面应涵盖测试的内容,用例的设计,缺陷的管理,测试通过的准入、准出标准等。这样通过简单的培训,即可让争取到的内部资源尽快的投入测试,做一些基本面的测试工作。让专业测试人员放更多精力在核心的功能、业务、性能乃至安全测试上。

最后,在安排人员上,还应该因人而异,即根据每个人的情况安排到合适的测试中去。每个人都很难做到样样精通,如果通过合理的安排,让每个人献出自己的最大能力,那么势必会事半功倍。否则会事倍功半,同时打击了人员的积极性,最终导致黯然离场。所以,一个测试人员是否能获得他人的认可,也与上面管理者是否有根据该测试员情况所作出的合理工作安排有关。

每个人有自己的专长,要把专长保持好并不断创新,要互相取长补短,多向资历老的同事学习,多问多记多总结。

小组成员:陆浩,刘琦,罗铠铖,王浩,童玲