你是酒馆却早早打烊,满心欢喜的我冻死在长街。
现在我们的生活离不开各种各样的软件而软件质量也是和我们的生活息息相关的在历史上发生过许多次因为软件故障所引发的重大的损失比如2002年有一个日本的证券公司就因为软件的故障导致超过了400亿日元的一个损失1990年美国AT&T电影公司因为交换机的故障损失超过了7500万美金而另外一个更重要的例子千年虫bug就是上世纪90年代全球因为这个修改的软件和各种其他的损失加在一起超过了五千亿
这些都告诉我们软件质量其实对我们的影响是非常大的软件测试作为软件质量保证的重要组成部分在软件研发当中有着重要的地位也是不可或缺的一部分那么到底什么是软件测试呢
行业是怎么对软件测试定义的1973年Hetzel对软件测试的一个早期定义他说软件测试是对程序能够按预期运行建立起一种信心就是软件测试更多的是保证软件发布以后有一个质量的信心现在大家比较通用的经典定义是1979年Myers提出的测试是为发现错误而执行程序的过程测试的目的是为了发现错误而手段是通过执行程序
现在最新的定义IEEE定义(ISO/IEC/IEEE 29119)使用人工或自动的手段来运行或测量软件系统的过程以检验软件系统是否满足规定的要求并找出与预期结果之间的差异测试的手段可以是人工或者是自动的他的目的是寻找给定的规定的要求和我们实际软件的预期结果他们之间有一个差异软件测试的目的就是寻找这种差距
那软件测试到底测什么测试对象是什么是不是说我们软件测试它的测试对象就是我们软件本身呢就是我这个运行的程序本身呢答案是否定的软件测试其实在软件的整个研发周期当中其实都是存在的他的程序对象从前期的需求到软件的概要设计软件的详细设计软件的源码可运行的软件程序甚至最后软件运行的这个环境都是我们软件测试的测试对象也就是说我们软件测试应该覆盖到软件研发生命周期的方方面面
软件测试有五大要素就是质量人员资源流程技术其中最核心的是软件质量其他四个要素都是为软件质量服务的除了软件质量之外重要的当然是我们的人人是决定的因素决定了技术流程以及资源的配置使用而技术是包含我们的软件测试技术软件测试方法以及我们使用的工具技术是手段而流程从测试计划测试用例测试的执行报告这每个阶段需要有一些进入进出的标准流程是一个规范性是对我们软件测试做一个规范的要求资源就是我们测试所需要的环境当中所需要的各种各样的硬件设备网络环境甚至包括我们的测试数据测试周期测试的时间这都是我们的测试资源
那人是不是资源呢因为人他的能力千差万别人正在测试当中往往会担任不同的角色不能互相替代在我们经典的软件著作当中倾向不把人当做资源对待的我们在软件测试的五大要素当中也把人从资源中独立开来作为一个重要的要素
软件测试的目标大的来说软件测试的目标是保证软件的质量具体一点那其实我们有两大目标一个是提高我们的测试覆盖率另一个是提升我们的测试效率提高测试覆盖率能够有效地保证我们的软件质量提升我们的测试效率能够让我们更好地完成软件测试所以软件测试具体到实际的指标上我们可以定义成提升测试覆盖率和提升测试效率