软件测试(一)、软件测试概要

五个知识点

1:、软件测试的产生与演进(了解)

  •   软件的“泛在性”与可靠性问题
  •   软件的缺陷、错误、故障、失效

               

缺陷 defect 
 

组件或系统中会导致组件或系统无法执行其必
需功能的瑕疵,例如:错误的语句或变量定义。
如果在组件或系统运行中遇到缺陷,可能会导致
失效。[GBT 11457]

描述性定义:(1)软件未达到产品说明书中已标明的功能

(2)出现了产品说明中指明不会出现的错误

(3)软件未达到产品说明书中虽未指明但应(隐含)达到功能

(4)软件难以理解,不易使用

(5)软件功能超出软件功能书中说明的范围

错误 fault


人为因素产生不正确结果的行为。[与IEEE 610
一致][GBT 11457]

软件中自身存在的潜在错误

故障 bug 常指缺陷或错误,将会造成软件使用上的故障
失效 failure 组件/系统与预期的交付、服务或结果存在的偏
差。[与Fenton 一致][GBT 11457]
  •   软件测试定义演进和内涵发展

2、软件测试概要

  • 软件测试的目的和原则

           

目的

 软件测试是以发现的 存在缺陷 、错误为第一目的 、错误为第一目的 ,并藉此对软件的质 ,并藉此对软件的质 量 进行度评价

原则

 尽早 和及时的进行测试。活动应从软件产品开发初始阶段就;
 测试 用例要由数据与预期结果两部分组成,并包括的前置条件或后置      条件;
 测试 需根据 软件 需求和 分析得来的 风险, 测试活动 可由专业测试        者进行或程序开发者自行 测试完成 ;
 测试需要严格执行计划, 排除测试工作 的随意性

 充分注意测试中的集群效应

 应对测试结果作核查,存档计划、用例缺陷统和分析报告 应对测试结果作核查,存档计划、用例缺陷统和分析报告等文档,为软件运行时的 维护工作提供足够的资料及测试 条件。

  •  软件测试的基本原理和测试特性准则
基本原理

原理 1:测试可以证明缺陷存在,但不能证明缺陷不存在 

原理 2:穷尽测试是不可能的 

原理 3:测试活动应尽早开始 

原理 4:缺陷的集群性 

原理 5:应对测试用例进行修正或更新。

原理 6:测试依赖于测试内容 

原理 7:没有失效就是有用的系统是一种谬论 

特性准则  若一个软件系统在一个测试数据(测试用例)集合上的测试是充分           的,那么再测试执行一些测试用例也是充分的,这一特性称作测试的单调性。 
 即使对软件所有的组成成分都进行了充分测试,也并不能表明整体软      件系统的测试已经充分,这一特性称作测试的非复合性。 
 即使对软件系统整体的测试是充分的,也并不能证明软件系统中各组      成分都已得到了充分测试,这个特性称作测试的非分解性。 
 软件测试的充分性应与软件需求及软件实现相关。测试充分性和软          件需 求、实现相关联。 
 软件越复杂,测试数据需用就越多,这一特性称为测试的复杂性。 
 测试越多,进一步测试所获充分性增长就越少,这一特性称作测          试回报 递减率。 

3、基本测试策略与模式

1.明确测试目标 测试需要对每一阶段和每个部分的目标进行确定。 
2.确认测试对象  软件开发过程中产生的需求分析、概要设计、详细设计以及编码等各个阶段所获文档,如需求规格说明、概要设计规格说明、详细设计规格说明以及源程序等都是软件测试的对象。 
3.建立测试生命周期 
4.制定和实施测试策略 

(1) 确定测试由谁执行 

(2) 确定测试什么 

(3) 何时进行测试 

(4) 确定怎样进行测试 

5.明确测试类型 

(1) 功能测试(Functional Testing)

(2) 非功能性的测试(Non-Functional Testing):性能测试、 
负载测试、安全性测试、可靠性(或稳定性)测试、兼容性测试、可维护性测试以及文档测试等。 

(3) 恢复测试 (Recovery Testing ) :检查软件系统的容错能力

4) 确认测试 (Confirmation Testing) 

(5)验收测试(Acceptance testing) :正式验收、非正式验收和 Alpha 测试、Beta 测试。

(6)回归测试(Regression testing) :完全重复测试( 覆盖修改法。 周边影响法, 指标达成法, 选取重要级别高的用例进行回归测试)

选择性重复测试

   

4、软件测试模型分析

模型 优点 缺点 流程
瀑布模型

(1)易于理解

(2)开发具有阶段性

(3)强调早期的计划及需求分析

(4)基本可确定何时交付产品及进行测试。 

(1)需求调查分析只在最初进行,不能适应需求的新变化;

(2)顺序开发流程使开发经验教训不便进行前向反馈;

(3)不能反映出开发过程的反复性与迭代特性,无任何类型的风险评估,出现或隐藏的问题直到开发后期才会显露,失去了及早纠正错误或缺陷机会。 

 螺旋模型 

(1)是瀑布方法与边写边改模式的演化、结合形式

(2)随成本增加,风险程度随之降低;

(3)具有严格的全过程风
险管理,强调各开发阶段的质量,提供机会评估项目,确定是否有价值继续

(1)对管理水平提出较高要求,需管理者专注及具备管理经验,并需较多人员、资金与时间的投入。
RUP 流程(统一软件过程,Rational Unified Process)  汇集了现代软件开发多方面的最佳经验,并为适应各种软件项目及开
发组织的需要提供灵活形式,作为一种商业开发模型,它具有非常详细的过程指导与应用模板。 
该开发模型比较复杂,因此在模型的运用掌握上需花费较大的成本,并对项目管理提出了较高的要求。 

IPD

集成产品开发流程(Integrated Product Development) 

(1)适于复杂、大型软件开发项目,尤其是涉及到软、硬件结合的开发项目

(2)综合考虑了从系统工程、研发(硬件、软件、结构设计、测试、资料开发等)、制造、财务到市场、采购、技术支援等所有流程。

(1)通过流程成本来提高整个产品的质量。

(2)由于该流程没有定义如何进行流程
回退的机制,因此对于需求经常变动的项目并不适合,且对小软件项目也不适用。       

总共划分六个阶段:

  •        概念阶段、计划阶段、开发阶段、评审(验证)阶段、发布阶段和生命周期阶段。

四个决策评审点:

  • 概念阶段决策评审点、
  • 计划阶段决策评审点、
  • 可获得性决策评审点
  • 生命周期终止决策评审点以及
  • 六个技术评审点
 敏捷模式  简单、灵活与效率   迭代式增量开发过程(Scrum); 
特征驱动软件开发 FDD(Feature-Driven Development); 
自适应开发(Adaptive Software Development); 
动态系统开发方法 DSDM(Dynamic Systems Development Method)
极限编程 XP(Xtreme Programming) 
等方法。 
 V模型

(1)体现“尽早地和不断地进行软件测试”原则

(2)遵循软件验证与确认的原则

(3)测试对象不仅是程序,需求、设计同样需要进行测试(评审),测试与开发
实行同步,从而有利尽早发现软件潜在问题

(1)需求、设计、编码活动被视为串行

(2)同时,测试和开发活动也保持线性的前后关系,只有上一阶段完成才开始下一阶段活动,因此该模式难于支持迭代方式和不适应开发过程中作变更调整。 

W 模型 V 模型的发展,相对于 V 模型,强调测试伴随整个软件开发周期,
而且测试对象不仅是程序,需求、功能和设计同样要进行测试(或评审),测试
与开发同步,从而有利于尽早发现软件潜在问题。
需求、设计、编码等活动被视为串行,同时,测试和开发活动也保持着一种线性的前后关
系,只有上一阶段完成,才开始下一阶段活动,因此,这种模式不支持迭代模式
和不适应开发过程中的变更调整。 
X 模型分

(1)已通过集成测试的成品进行封版,并提交用户,
也可作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可在各部分
发生。 

(2)X 模型还定位了探索性测试,帮助有经验的测试人员在测试计划之前,探索发现更多的缺陷。 

X 模型没有明确的需求角色确认

针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序

测试前置模型

(1)提供灵活方式,可使软件开发加快进度

(2)用较
低成本及早发现错误,并且充分强调测试对确保系统高质量的重要意义

 

(1)开发和测试相结合

(2)对每一个交付内容进行测试

(3)包括两项测试计划技术

  • 开发基于需求的测试用例
  • 定义验收标准

(4)在设计阶段进行计划和测试设计

(5)前置测试增加了静态审查质量保证)测试

(6)验收测试和技术测试应保持相互独立

(7)反复交替的开发与测试

5、软件生命周期与测试流程

  •  组件测试
  •  集成测试
  • 系统测试
  • 确认、验收测试
  • 变更测试

猜你喜欢

转载自blog.csdn.net/qq_37503890/article/details/88327052