软件测试由来已久,在软件开发形成之初便已经产生。只是在早期的软件开发过程中规模较小,复杂程度较低,开发过程混乱无序,存在极大的随意性,而此时的测试更多被认为是调试,目的就是纠正软件中已经查到的故障。该部分工作通常会由开发人员自己完成。因此对于测试的投入和开始时间都比较短,通常都是在形成代码,产品基本已经完成之后才正式开始进行测试。
随着IT行业的不断发展,直到1957年才正式将软件测试和调试区分开来,其作为一种软件缺陷发现活动,始终都存在一定的滞后性,而软件测试也被认为是软件生命周期的最后一项活动。在当时的软件测试过程中并未形成有效的测试方式,主要是借助错误推测法找寻软件中存在的多种缺陷,使得软件在正式交付之后依然存在大量问题,最终使得软件的基本质量难以得到有效保证。
随着时间的推移,截止上世纪七十年代,软件在实际开发过程中依然没有过多的复杂性,但是此时IT行业人士已经意识到软件开发流程的建设,虽然此时对于软件测试的真正意义还未准确认识到,但是该词条已经大量出现,少量软件测试的探索人员建议在软件生命周期的开始阶段便需要根据实际需求制定相应的软件测试计划。在当时的软件测试发展过程中普遍认为测试的最终目的其实就是审定一个程序和系统的特性或者能力,从而确定其能够达到预期的基本结果。在软件测试过程中必须根据客户的基本需求和功能设计,将软件的质量定义为符合要求。其核心思想便是测试方式是对于软件工作性的验证,而工作性则是至按照预先设定的设计执行,以正向思维对软件系统的所有功能点进行逐一验证,从而实现对其正确性的检验。
即便如此,上述方式依然受到大量业界权威的质疑,持反对观点的人员认为,测试并不应当验证软件是工作的,相反,应当首先认为软件是错误的,之后借助逆向思维尽可能多的发现其中存在的问题。该种理念在后期发展过程中被业界广泛认可,并经常引用。除此之外,在软件测试中还存在以下几种重要观点:
测试是为了证明程序有错,而不是证明程序无错误;
一个好的测试用例是在于它能发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试;
软件测试的第二种方式便是验证软件测试其实是不工作的,成功的测试必须准确发现软件中存在的问题,否则就是没有价值的。正如病人前去医院检查一样,假如经过一系列的检查发现指标都完全正常,那么则可以说明该医疗检查是没有任何价值的,属于失败的检查。该种理念完全推翻了之前“为了证明软件正确而进行的测试”的错误认知,其为软件测试的健康发展提供了重要支持,在该种理念的直接影响下,软件测试的基本方式和理论都得到了较大的发展。
但是在测试的目的就是证伪这一理念的实际理解过程中不能过于片面化。在很多软件工程学和软件测试书籍中都明确提出,测试的最终目的便是寻找其中存在的错误,并且应当尽可能的找出更多的错误。该种理念极其容易使人产生测试就是挑毛病的误解。
若测试人员以发现缺陷为唯一目标,而很少去关注系统对需求的实现,测试活动往往会存在一定的随意性和盲目性;
若有些软件企业接受了这样的方法,以Bug数量来做为考核测试人员业绩的唯一指标,也不太科学。
截止上世纪八十年代初期,软件和IT行业都迎来了快速发展的时代,软件也向着大型化和高度复杂化的方向发展,人们对于软件质量的要求也在不断升高。在此背景下软件测试的基础理论和使用技术已经逐渐形成,人们也开始为软件开发设计了多种流程和管理方式,软件测试也正式由混乱无序过渡到结构化的开发方式。在此过程中主要以结构化分析和设计、评审、程序设计以及测试为主要特征。而随着质量概念的融入,使得软件测试的基本定义产生了显著变化,测试过程不再是单纯的发现错误的过程,软件测试的主要作用是保证软件的基本质量。根据最新软件测试定义:借助人工或者自动的方式运行或者测定某个软件系统的过程,其最终目的在于准确检验其能否满足规定需求或者明确预期结果和实际结果之间存在的差别。根据该定义可以明确发现,软件测试的最终目的在于检验软件系统能够满足需求,其不再是软件开发的后期活动,而是整个开发体系的重要组成部分。当前的软件测试已经发展成为一个独有专业,需呀专业人才通过专业方式对软件质量进行检测。
伴随着软件产业对于软件开发过程研究的不断深入,人们已经认识到只有不断改进软件开发组织的能力,继而实现软件质量的提升。在该种背景的直接驱使下,逐渐形成了软件开发过程管理以及工程能力的基本标准。从80年代中期开始,软件生产便已经进入了以个人软件过程和过程成熟度模型CMM以及群组软件过程为标志的全新发展阶段。
在当前 会,软件测试已经成为企业发展过程中的重要保障,软件测试人员能够准确找寻出软件中存在的各种问题,并将其提交给软件开发人员,及时完成软件缺陷的修改。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!