一、软件测试定义
使用人工和自动化手段来运行或测试每个系统的过程,其目的在于检验它是否满足规定的需求或是否弄清预期结果与实际结果之间的区别。
二、软件测试的目的
以最少的人力、物力和时间找到软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提供软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
三、软件研发模型和软件测试模型
1、常见的软件研发模型:瀑布模型、螺旋模型、敏捷模型
(1)瀑布模型:制定计划>需求分析>软件设计>程序编码>软件测试>运维,一般适用于周期长、需求稳定、需求不会频繁变更的项目
优点:项目每个阶段都有相应的检查点;前一阶段结束后只需要关注后续阶段。
缺点:开发过程不能逆转,否则代价非常大,前阶段错误,后面就会有很大的损失;软件的实际结果需要到项目后期客户才能够看到,不方面及时调整,所以需要客户在一开始就给出所有的需求。
(2)螺旋模型:在瀑布模型的基础上新增了风险分析阶段,一般在置顶计划之后,它将软件项目分解成一个个的小项目。
优点:可以在项目的每个过程过程的每个阶段变更;项目被分成一个个小项目,项目可以分阶段可见、可控;客户能够根据项目的阶段了解最新情况。
缺点:需要具备丰富的风险评估经验和专业知识,如果未能及时识别出风险,会造成损失;过多增加迭代增加开发成本,延迟交付时间。
(3)敏捷模型:一种以人为核心、迭代、循序渐进的开发方式。
特点:人和交互重于过程和工具;客户协助重于合同谈判;随时应对变化重于循规蹈矩。
2、常见的测试模型:瀑布模型、V模型、W模型、H模型、X模型、敏捷模型
(1)瀑布模型:如上,测试需要在开发结束后才会介入,对软件开发前期质量没有保障。
(2)V模型:需求分析>概要设计>详细设计>编码>单元测试>集成测试>系统测试>验收测试,它是瀑布模型的变种,主要反映测试活动与分析和设计的关系。
局限性:把测试当作为编码的最后活动,需求分析等前期产生的错误直到后期的验收测试才发现。
(3)W模型:它是在研发流程(客户需求>需求分析>概要设计>详细设计>编码>集成>实施>交付)同步进行测试流程(验收测试计划、设计>系统测试计划、设计>集成测试计划、设计>单元测试计划、设计>单元测试>集成测试>系统测试>验收测试),它是V模型的延申,加强了V模型各个阶段,并将开发和测试同步。
局限:需要将编码阶段作为串行实施,同V模型一样,前后依赖强,不利于变更。
作用:针对各阶段进行监控,能够尽早发现缺陷。
(4)敏捷模型:如上研发敏捷模型