软件测试到底要不要追究BUG发生的原因呢?这个问题的争议很多,有人认为寻找BUG的原因是开发的事情,软件测试只要能发现BUG够了;还有人认为软件测试可以尽自己所能尽可能的去寻找BUG的原因。到底哪个观点正确?我个人认为这个问题是仁者见仁,智者见智,站在一个产品不同的层面看,会有不同的看法。这里所谈到的观点,也仅代表个人看法。

要搞清楚这个问题,先要明确几个定义,首先要明确什么是QA?简单从字面上理解是Quality Assure(质量保证),CMM对QA的要求主要有下面几点:保障制度体系;促使过程改进;指导项目实施;增加透明度;评审项目活动;审核工作产品;协助问题解决;提供决策参考;进行缺陷预防;实现质量目标。其次什么是软件测试,软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期结果),并利用这些测试用例去执行程序,以发现程序错误的过程。而软件测试人员是这一过程的执行者。

从上面的定义可以看到,QA重点关注的不仅仅是质量,而是整个软件过程,保证的首先是过程和体系,也是说只有规范了过程和体系,才有可能做出好的产品。而软件测试是通过自己的活动,来给QA人员提供尽可能的有效的信息和数据,使他们能够发现过程上的异常或者制度上的不妥之处。可见软件测试的任务不仅仅是测试,还要把项目的异常情况向QA报告,所以只能报出BUG是不够的。

其实QA和软件测试的目的都是一样的,是尽可能的使发布出去的产品更加符合用户的需要,尽可能的没有bug。不同之处只是一个关注的是整个软件过程,一个只是关注终的质量。所以为了搞清楚软件测试要不要追究BUG发生的原因,先要明确的是弄清楚BUG发生的原因对整个软件过程有什么好处,或者说对终的质量有什么好处?