单元测试 集成测试 系统测试 验收测试

        根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。

        单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。

        黑盒测试不考虑程序内部结构和逻辑结构,主要是用来测试系统的功能是否满足需求规格说明书。一般会有一个输入值,一个输入值,和期望值做比较。白盒测试主要应用在单元测试阶段,主要是对代码级的测试,针对程序内部逻辑结构,测试手段有:语句覆盖、判定覆盖、条件覆盖、路径覆盖、条件组合覆盖。集成测试主要用来测试模块与模块之间的接口,同时还要测试一些主要业务功能。系统测试是在经过以上各阶段测试确认之后,把系统完整地模拟客户环境来进行的测试。

       单元测试的重点是系统的模块,包括子程序的正确性验证等。集成测试的重点是模块间的衔接以及参数的传递等。系统测试的重点是整个系统的运行以及与其他软件的兼容性。


单元测试
在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。
(1) 模块接口测试
"    在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:
–   调用本模块的输入参数是否正确;
–   本模块调用子模块时输入给子模块的参数是否正确;
–   全局量的定义在各模块中是否一致;
"     在做内外存交换时要考虑: 
–   文件属性是否正确;
–   OPEN与CLOSE语句是否正确;
–   缓冲区容量与记录长度是否匹配;
–   在进行读写操作之前是否打开了文件;
–   在结束文件处理时是否关闭了文件;
–   正文书写/输入错误,
–   I/O错误是否检查并做了处理。
(2) 局部数据结构测试
"     不正确或不一致的数据类型说明
"     使用尚未赋值或尚未初始化的变量
"     错误的初始值或错误的缺省值
"     变量名拼写错或书写错
"     不一致的数据类型
"     全局数据对模块的影响
(3) 路径测试
"    选择适当的测试用例,对模块中重要的执行路径进行测试。
"    应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。
"    对基本执行路径和循环进行测试可以发现大量的路径错误。
(4) 错误处理测试
"     出错的描述是否难以理解
"     出错的描述是否能够对错误定位
"     显示的错误与实际的错误是否相符
"     对错误条件的处理正确与否
"     在对错误进行处理之前,错误条件是否已经引起系统的干预等
(5) 边界测试
"     注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。
"     如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。
2. 单元测试的步骤
"     模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。
–    驱动模块 (driver)
–    桩模块 (stub) ── 存根模块 
"     如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。
"     对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。


集成测试(Integrated Testing)
"     集成测试 (集成测试、联合测试)
"     通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
–   在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;
–   一个模块的功能是否会对另一个模块的功能产生不利的影响;
–   各个子功能组合起来,能否达到预期要求的父功能;
–   全局数据结构是否有问题;
–   单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
在单元测试的同时可进行集成测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。
"    子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。
"    通常,把模块集成成为系统的方式有两种
–   一次性集成方式
–   增殖式集成方式
1. 一次性集成方式(big bang)
"    它是一种非增殖式组装方式。也叫做整体拼装。
"    使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。 
2. 增殖式集成方式
"     这种集成方式又称渐增式集成
"     首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统
"     在集成的过程中边连接边测试,以发现连接过程中产生的问题
"     通过增殖逐步组装成为要求的软件系统。
(1) 自顶向下的增殖方式
"      这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。
"      自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。
"      选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。 
(2) 自底向上的增殖方式
"     这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。
"     因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。
"    自顶向下增殖的方式和自底向上增殖的方式各有优缺点。
"    一般来讲,一种方式的优点是另一种方式的缺点。
(3) 混合增殖式测试
"    衍变的自顶向下的增殖测试
–   首先对输入/输出模块和引入新算法模块进行测试;
–   再自底向上组装成为功能相当完整且相对独立的子系统;
–   然后由主模块开始自顶向下进行增殖测试。 
"    自底向上-自顶向下的增殖测试
–   首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;
–   然后对含写操作的子系统做自顶向下的组装与测试。
"    回归测试
–   这种方式采取自顶向下的方式测试被修改的模块及其子模块;
–   然后将这一部分视为子系统,再自底向上测试。
关键模块问题
"     在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。    关键模块的特征:
① 满足某些软件需求;
② 在程序的模块结构中位于较高的层次(高层控制模块);
③ 较复杂、较易发生错误;
④ 有明确定义的性能要求。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值