四、再现大于发现
发现bug是软件测试的天职,而且发现的越多,说明测试越成功。很多测试人员都在努力锻炼发现bug的能力,的确,这确实是软件测试人员的重要能力之一,但是在发现bug的背后。有一项更重要的能力:bug的可再现性。
当然,如果一切都记录的非常完美,环境受控,可以说测试环节没有什么不可再现的。但这是梦想,我们不可能拥有生产环境,也不能掌握所有人的操作习惯、兼容性测试也不可能完整、没有那么多资源准备足够的系统和硬件平台。所有有些问题就是急难再现,那么“发现了不能再现的”bug应当称为问题,几乎不可能修复,至少不能从本质上修复。
提出这一点,我是想强调,软件测试人员应当关注测试过程。如果测试人员一味关注测试结果,而忽略机理、过程,那么测试就不是受控的,不是做测试,而是玩测试。很多情况下,只知道按用例执行,而不知道如何设计、分解用例,测试人员的可再现能力就会大大下降。
五、评估大于总结
最后这一点是我在接触项目管理后的体会。软件测试项目一般会在结项时给出统计数字,覆盖率、执行时间、bug情况、修复情况、人员情况、工作量计算等等指标。这些指标对于软件能力的度量固然重要,但是企业的项目是鲜货的,这些冰冷的数字只代表历史,是一种客观结果。而项目还要继续“活”下去,那么测试工作就应当为活着做出尽可能多的努力和贡献。
通常测试通过后,就是面临着系统上线、客户确认、市场推广等发布环节。测试报告中应当至少“工程实施建议”和“风险评估”方面的建议,并且交给项目经理。其中应当描述诸如:系统在哪些环节还存在问题或不足(可能是短期技术上解决不了的)、工程实施或技术演示时应当注意什么、建议如何规避问题。这种描述应当客观(实际情况)、善意(给出建议),而且应当事先作为一种工作策略与项目组其他人员沟通一下,不要让研发人员认为测试是在宣扬他们的不足,而是要从项目或工程的角度避免项目惹麻烦。
当然,测试的核心目标仍然是提高质量,这是不能动摇的,评估并不是让测试为软件质量缺陷找借口,而是要在工作问心无愧的情况下(例如时间不足了),对结果给出一定的评价,帮助项目更好的推进。
六、有感
最后,我写了一首小诗表达一下做测试的心情,结束这段感谈。
迷丛乐
千丝万缕乱丛纷,愿作彩蝶探精深。
丛中自有丛中乐,甘苦相缠感最真。
阴阳格物由心起,莫教迷津扰此身。
从来不变应万变,跳出丛中自成神。