软件测试是软件质量保证(Software Quality Assurance,SQA)的一部分,有助于提高软件的质量,但不是软件质量保证的全部。测试与质量的关系很像在考试中“检查”与“成绩”的关系。学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。所以说,软件的高质量是设计出来的,而不是靠测试修补出来的。
软件质量保证目的是提供一种有效的人员组织形式和管理方法,通过客观地检查和监控“过程质量”和“产品质量”,从而实现持续地改进质量,是一种有计划的、贯穿于整个产品生命周期的质量管理方法。
它与软件测试的主要区别是:质量保证侧重事前预防,而软件测试侧重事后检测;质量保证要管理和控制软件开发流程的各个过程,软件测试只能保证尽量暴露软件的缺陷。当然,软件测试对于促进软件质量有重要意义,质量保障可以从缺陷中学习,进而提高设计水平,制定预防措施。
另一方面,相关人员的角色也有较大差别。
软件质量保证人员的主要职责是创建和加强促进软件开发并防止软件缺陷的标准和方法。软件测试工程师的目标是在最短的时间内发现尽可能多的缺陷,并确保这些缺陷得以修复。
现在很多公司都把测试人员作为质量保证部门中的成员,冠以SQA的头衔。在这里需要注意的是,不管是单纯的测试人员还是赋予了部分SQA的角色的测试人员,都不要以一种管理者的姿态出现在开发人员面前,应该始终保持一种帮助开发人员纠正错误、保证产品质量的服务态度。