1.2 软件测试(Software Testing)
由来
程序规模的爆炸式增长导致了软件开发越来越困难:代码规模显著增大,结构和算法更加复杂,模块间接口增多,费用投入大,周期长,分工更细。
同时客户的需求从客户开始,一直到软件的开发者之间,会产生各种差异,软件测试就是为了消除这种差异。
例如:
客户:我家有三个小孩,我需要一个能三个人玩的秋千。它是由绳子吊在我园子里的树上。
项目经理:好的,这个需求很简单我们能做,秋千就是一块板子,两边用绳子吊起来,挂在树上的两个枝子上。
架构师:根据经理说的,两个树枝上挂上秋千中间会被树干挡住,我们可以把树从中截断再支起来,这样就满足要求了。
开发:两条绳,一块板,一棵大树,拴在树上,那就这样,这样,这样,完成。
这是客户真正想要的:
如果没有测试,客户:???
定义
在IEEE提出的软件工程标准术语中,软件测试定义如下:
使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试在软件研发过程中,从客户的角度验证开发的软件是否符合需求,确保最终交付的产品的确是客户所要的东西。
从软件测试出现开始,软件测试经历了一系列的发展过程:
- 1956年,调试时期(测试即调试);
- 1957年-1978年,论证时期(软件测试是验证软件是正确的);
- 1979年-1982年,破坏性测试时期(为了发现错误而执行程序的过程);
- 1983年起,软件测试已有了行业标准(IEEE829),它要运用专门的方法和手段、需要专门人才和专家来承担;
- 1990年起软件迅速发展,测试行业也跟着发生了巨大变化,开始引入专业测试工具。