为什么自测很重要

一,故事

做为一个开发人员,对自己交付的成果可靠性负责,这很重要。保证可靠性最重要的手段之一就是充分的自测。

我刚入职场所供职的公司,虽然母公司是一家美国五百强,但我所在的部门比较小,主要负责中国国内中小型企业的供应链管理系统的开发和实施。加之国内中小型企业普遍信息化水平并不高,并发量也不大,所以他们对软件的质量和性能往往没有什么要求,只要能满足其业务需求即可,对于细节不太在意。这些客观原因导致我们团队在交付产品时较为随意,往往没有专业测试团队对产品进行质量把控,大多数时候开发在大概自测后即部署客户测试环境,由客户和现场实施人员测试发现问题,然后再反馈修改,这导致很多项目的交付周期较长,交付软件也并不完美。而这种随意本身,对于一个刚入职场,职业素养还处在塑造期的我来说也是一种伤害。

后来我进入了一家国内领先的电商企业。我所在的团队对开发个人素质要求特别高,开发测试完成后,由专业测试团队进行测试,然后再上线。但如果上线出现任何问题,主要的责备都会落在开发人员身上,而不是测试。由于在之前的公司随意惯了,所以刚进入这家公司时,我交付的成果很多时候都有这样那样的细节瑕疵,一度被鄙视而承受很大的压力。在这个过程中,我走出了一些认识的误区,我慢慢认识到,开发人员对自己交付的成果做充分的自测是很重要的,为了保证软件的稳定和完美,怎么测试都不为过。

二,为什么自测很重要

充分的自测能缩短整个软件交付的时间

一度我有一个错误的认识,以为软件测试应该是测试人员的职责,开发只要保证项目能大致run起来就ok了,开发做大量充分的自我测试太浪费时间。

后来我认识到这是极其错误的思想。没有做充分自测就给测试人员测试反而是一种极大的时间消耗。因为bug就在那里,开发如果不及早发现,那么推迟至测试人员发现再反馈给开发人员,然后开发人员再修改。第一,这增加了问题发现的流程。第二,测试环境往往同开发环境不同,测试环境发现的问题,有时并不能在开发环境重现,这使得问题的分析和定位过程较长。这不光对开发人员的时间是种浪费,对测试人员的时间也是一种浪费。典型的开发、测试流程如下:

如果开发人员如果能做充分的自我测试,那么大多数bug将在开发流程即可解决,不需要经历测试流程的反馈循环,从而节约了整个软件交付上线的时间。

充分的自我测试能让软件更稳定

我想在一个系统开发完成过后,没有一角色能比开发人员更能熟悉业务吧。因为产品所规划设计的业务,最终都由开发人员一字一句的敲打出来,历经bug的纠缠,他们理应更熟悉自己编写的每一处细节,他们既是造物者。所以开发人员只要更细心,则更可能发现系统中那些隐秘的bug,而这些bug往往普通的黑盒测试是很难发现的,而大多数公司也并没有白盒测试。

所以开发人员充分的自我测试显然能让软件更为稳定,否则留着些个地雷,不晓得何时触发,于公于私都是一种危险。

三,如何做自我测试

使用最复杂的用例来测试

开发人员往往自测时较为随意,用例过于简单,录入数据也没有业务意义。这往往不利于发现问题。我们需要使用最复杂的测试用例来覆盖所涉及的所有流程,按照用户使用的真实情况来制作用例,往往能快速发现问题。

对代码的影响范围做评估

开发人员要做自己的白盒测试,我们熟悉自己写的每一行代码,所以在编写时,最好评估这些代码在不同的输入下可能会有怎样的输入,这些代码会影响以往的哪些功能等等这些问题,建议将其逐条列一个清单,开发完成后,挨个验证。