“什么是软件测试?”这个看似简单的一个问题,其实也是最难的问题。说它简单,是因为这是一个基本的问题,做软件测试工作多年的小伙伴,自然知道什么是软件测试。说它难,是因为“软件测试”有很多内涵,要了解其全部内涵,并非那么容易。如果我们去问软件研发人员什么是软件测试,得到的答案可能五花八门,人们对软件测试有不同的理解。现在最常见的理解就是:
软件测试就是找bug、发现缺陷。
但也有人会认为软件测试就是:
·检查软件产品是否符合设计要求;
·验证软件产品需求、设计和实现的一致性;
·确认软件产品是否满足用户的实际需求;
·对软件产品质量的全面评估;
·提供软件产品质量信息;
·揭示软件产品的质量风险;
·投入较低的保障性成本极大地降低劣质成本;
·验证与确认(Verification&Validation,V&V);
·调查、分析和比较;
·不断探索;
……
有太多的理解,而且都没有错,只是看问题的角度不一样。虽然回答问题时,也容易脱口而出,不会仔细斟酌,只看到软件测试的一面,没有系统地分析“什么是软件测试”。
下面我们就好好讨论“什么是软件测试”,因为有什么理解就有什么行动。有正确的理解,就有正确的操作;相反,有错误的理解,就有错误的操作。所以,先帮助读者对“软件测试”建立正确、全面的认识,构建起一个完整的“软件测试”轮廓,不至于陷入“盲人摸象”的困境,对软件测试有片面的理解。然后,我们再展开流程、方法、技术和实践的讨论。也就是在全面讨论“全程软件测试”之前,咱们需要找到共同语言,即对软件测试的一些基本概念达成共识,为后面的沟通扫除障碍。