软件测试在软件开发过程中占有重要的地位,在传统的瀑布模型中,软件测试只成为其阶段性的一段工作——进行代码的测试。而现代软件工程思想将软件测试认为是贯穿整个软件生命周期,并且是保证软件质量的重要手段之一。
有些研究数据显示,在国外软件开发的工作量中,软件测试的工作量占有总工作量的40%左右;软件开发的总费用中软件测试占有30%-50%。对于一些高科技开发系统,软件测试占有的时间和费用可能更多更高。
1、软件测试与软件开发
软件测试在项目各个阶段的作用如下:
·项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。
·需求分析阶段:确定测试需求分析,即确定在项目中需要测试什么,同时制定系统测试计划。
·概要设计与详细设计阶段:制定单元测试计划和集成测试计划。
·编码阶段:编写相应的测试代码和测试脚本。
·测试阶段:执行测试并提交相应的测试报告。
软件测试与软件开发的关系可用下图表示,其中图b为图a的细化。
2、常见软件测试模型
(1)V模型
·优点:将复杂的测试工作分成了目标明确的小阶段完成,具有阶段性、顺序性和依赖性,它既包含了对于源代码的底层测试也包含了对于软件需求的高层测试。
·缺点:只能在编码之后才能开始测试,早期的需求分析等前期工作没有涵盖其中,因此它不能发现需求分析等早期的错误,这为后期的系统测试、验收测试埋下了隐患。
V模型流程图如下:
(2)W模型
·优点:测试范围不仅包括程序,还包括需求分析、软件设计等前期工作,这样有利于尽早全面的发现问题。
·缺点:它将软件开发过程分成需求、设计、编码、集成等一系列的串行活动,无法支持迭代、自发性等需要变更调整的项目。
W模型流程图如下:
(3)H模型
·设计原理:H模型的设计原理是将测试活动完全独立了出来,形成一个完全独立的流程,这个流程将测试准备活动和测试执行活动清晰的体现出来。测试流程和其他工作流程是并发执行的,只要某一个工作流程的条件成熟就可以开始进行测试。
·优点:
①开发的H模型揭示了软件测试除测试执行外,还有很多工作;
②软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;
③软件测试活动可以尽早准备、尽早执行,具有很强的灵活性;
④软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。
·缺点:
①管理型要求高:由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制;
② 技能要求高:H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;
③测试就绪点分析困难:测试很多的时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;
④对于整个项目组的人员要求非常高:在很好的规范制度下,大家都能高效的工作,否则容易混乱。例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰。
H模型流程图如下:
(4)X模型
·设计原理:X模型的设计原理是将程序分成多个片段反复迭代测试,然后将多个片段集成再进行迭代测试。
·优点:对单独程序片段进行的相互分离的编码和测试,保证了测试效果。增加了探索测试,可以帮助测试人员发现计划之外的软件错误。
·缺点:频繁的集成会增加测试成本;探索测试对测试人员要求更高。
X模型流程图如下:
经验小结:
·v模型适用于中小企业,w模型适用于中大型企业(因为人员要求高),H模型人员要求非常高,很少有公司使用;
·结合W模型与H模型进行工作,软件各方面的测试内容是以W模型为准,而测试周期、测试计划和进度是以H模型为指导。X模型更多是作为最终测试、熟练性测试的模板,例如,对一个业务的测试已经有2年时间,则可以使用X模型进行模块化的、探索性的方向测试。
有些研究数据显示,在国外软件开发的工作量中,软件测试的工作量占有总工作量的40%左右;软件开发的总费用中软件测试占有30%-50%。对于一些高科技开发系统,软件测试占有的时间和费用可能更多更高。
1、软件测试与软件开发
软件测试在项目各个阶段的作用如下:
·项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。
·需求分析阶段:确定测试需求分析,即确定在项目中需要测试什么,同时制定系统测试计划。
·概要设计与详细设计阶段:制定单元测试计划和集成测试计划。
·编码阶段:编写相应的测试代码和测试脚本。
·测试阶段:执行测试并提交相应的测试报告。
软件测试与软件开发的关系可用下图表示,其中图b为图a的细化。
2、常见软件测试模型
(1)V模型
·优点:将复杂的测试工作分成了目标明确的小阶段完成,具有阶段性、顺序性和依赖性,它既包含了对于源代码的底层测试也包含了对于软件需求的高层测试。
·缺点:只能在编码之后才能开始测试,早期的需求分析等前期工作没有涵盖其中,因此它不能发现需求分析等早期的错误,这为后期的系统测试、验收测试埋下了隐患。
V模型流程图如下:
(2)W模型
·优点:测试范围不仅包括程序,还包括需求分析、软件设计等前期工作,这样有利于尽早全面的发现问题。
·缺点:它将软件开发过程分成需求、设计、编码、集成等一系列的串行活动,无法支持迭代、自发性等需要变更调整的项目。
W模型流程图如下:
(3)H模型
·设计原理:H模型的设计原理是将测试活动完全独立了出来,形成一个完全独立的流程,这个流程将测试准备活动和测试执行活动清晰的体现出来。测试流程和其他工作流程是并发执行的,只要某一个工作流程的条件成熟就可以开始进行测试。
·优点:
①开发的H模型揭示了软件测试除测试执行外,还有很多工作;
②软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;
③软件测试活动可以尽早准备、尽早执行,具有很强的灵活性;
④软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。
·缺点:
①管理型要求高:由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制;
② 技能要求高:H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;
③测试就绪点分析困难:测试很多的时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;
④对于整个项目组的人员要求非常高:在很好的规范制度下,大家都能高效的工作,否则容易混乱。例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰。
H模型流程图如下:
(4)X模型
·设计原理:X模型的设计原理是将程序分成多个片段反复迭代测试,然后将多个片段集成再进行迭代测试。
·优点:对单独程序片段进行的相互分离的编码和测试,保证了测试效果。增加了探索测试,可以帮助测试人员发现计划之外的软件错误。
·缺点:频繁的集成会增加测试成本;探索测试对测试人员要求更高。
X模型流程图如下:
经验小结:
·v模型适用于中小企业,w模型适用于中大型企业(因为人员要求高),H模型人员要求非常高,很少有公司使用;
·结合W模型与H模型进行工作,软件各方面的测试内容是以W模型为准,而测试周期、测试计划和进度是以H模型为指导。X模型更多是作为最终测试、熟练性测试的模板,例如,对一个业务的测试已经有2年时间,则可以使用X模型进行模块化的、探索性的方向测试。