软件测试

使用人工或自动的手段来测定软件系统的过程
软件测试(英文:Software Testing)[1]是根据软件开发各阶段的规格说明和程序的内部结构而设计一批测试用例,并利用这些测试用例来执行程序的过程。[2]软件测试通过使用人工或自动的手段来运行软件系统,[3]发现软件中存在的缺陷,从而保证软件质量[2]
软件测试伴随着软件的产生而产生,20世纪50年代,软件测试主要以调试为主,直到1957年,随着查尔斯·贝克(Charles Baker)所著图书《软件测试发展》的出版,才开始与调试区分开来。[4]随着软件技术的发展,软件的复杂程度越来越高,软件测试的意义开始被重视,多名学者开始出版专著对软件测试的定义和目标进行描述。到了20世纪80年代,[5]开发团队不再只是找出并修复软件错误,而是在现实环境中测试应用程序。[6]20世纪90年代,软件行业开始迅猛发展,出现了从测试到更全面的质量保证流程的转变。[6]整个测试的生命周期扩展为由计划、分析、设计、开发、执行和维护组成,即测试开始贯穿整个软件的生命周期。[4]21世纪以来,软件质量的重要性得到了全球的认可,智能测试时代正式开启。[7]
软件测试的方法有黑盒测试、白盒测试和灰盒测试等,按测试过程又可分为单元测试、集成测试、系统测试等。[4]软件测试的目的不仅是简单地纠正软件的错漏,也是促使项目管理人员及时、准确地了解软件中潜在的漏洞与风险,从而在明确错误的基础上,采取有效的弥补措施,研究其产生的原因和相应的分布特征。[8]

发展历程

软件测试是伴随着软件的产生而产生的,20世纪50年代,计算机刚诞生不久,英国计算机科学家图灵给出了软件测试的原始定义。他认为,测试是程序正确性证明的一种极端实验形式。但当时相对于软件开发而言,软件测试还处于次要位置。软件测试的含义比较狭隘,开发人员将测试等同于“调试”,主要针对机器语言和汇编语言[5][4]直到1957年,随着查尔斯·贝克(Charles Baker)所著图书《软件测试发展》的出版,才开始将其与调试区分开来,这也是软件测试史上一个重要的里程碑。[4]