单元测试、集成测试、系统测试基础知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单元测试
1、单元的基本属性:
1)明确的功能
2)可定义的规格
3)与其他单元接口的清晰划分
2、单元测试的目的:
在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。
a)验证代码是与设计相符合的;
b)发现设计和需求中存在的错误;
c)发现在编码过程中引入的错误。(和设计不相符或和设计相符,但是由于
编码疏漏引起)
3、单元测试关注的重点:
出错处理、单元接口、局部数据结构、独立路径、边界条件
4、单元测试的主要关注点:
1)参数的属性、顺序、个数是否与LLD一致
2)不能修改只做输入用的形参,否则可能导致数据的错误修改
3)约束条件是否通过形参来传送
4、驱动和桩的功能:
1)驱动单元:被测函数的主函数,能接受输入数据,输出实际测试结果
2)桩单元:用来代替所测单元调用的子单元
5、单元测试策略:
孤立的测试策略、自顶向下、自底向上的单元测试策略
1) 孤立的测试策略:
·方法:不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块和驱动
模块。每个模块进行独立的单元测试。
·优点:该方法是最简单,最容易操作的。可以达到高的结构覆盖率。该方法是纯粹的单元测试。
·缺点:桩函数和驱动函数工作量很大,效率低。
2) 自顶向下的单元测试策略:
·方法:先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。其次对
第二层进行测试,使用上面已测试的单元做驱动模块。如此类推直到测试完所有
模块。
·优点:可以节省驱动函数的开发工作量,测试效率较高。
·缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且开发和维护的成本将增加。
3) 自底向上的单元测试策略:
·方法:先对模块调用层次图上最低层的模块进行单元测试,模拟调用该模
块的模块做驱动模块。然后再对上面一层做单元测试,用下面已被
测试过的模块做桩模块。以此类推,直到测试完所有模块。
·优点:可以节省桩函数的开发工作量,测试效率较高。
·缺点:不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产
生很大的影响。
5、单元测试的四个阶段:·测试计划:完成单元测试计划;
·测试设计:完成单元测试方案;
·测试实现:完成单元测试用例、单元测试规程、单元测
试脚本及数据文件;
·测试执行:执行单元测试用例,修改发现的问题并进行
回归测试,提交单元测试报告。
集成测试
1.集成测试的目的:确保各组件组合在一起后能够按照既定意图写作运行,并确保增
量的行为正确(属于灰盒测试)
1)验证接口是否与设计相符
2)发现设计和需求中存在的错误
2.集成测试关注的重点:单元间的接口、集成后的功能
3.集成测试的层次:模块内集成、子系统内集成、子系统间集成
4.集成测试策略:
1)大爆炸集成
2)自顶向下集成
3)自底向上集成
4)三明治(混合式)集成
5)基干集成
6)分层集成
7)基于功能的集成
8)基于消息的集成
9)基于进度的集成
10)基于风险的集成
5.各种集成测试策略的优缺点:
优点缺点适用范围
大爆炸集成 1.只要极少数的驱动和桩
2.可并行工作,人力、物力
资源利用率较高1.一次运行成功的可能性不
大
2.定位和修改错误比较困难
3.会有很多接口错误进入到
系统测试
1.维护型项目(增强型)
2.每个函数都经过了充
分单元测试的小规模系
统(特别是接口函数)
自顶向下 1.较早验证了主要的控制
点和判断点
2.选用按深度方向组装的
方式,可首先实现和验证一
个完整的软件功能
3.功能可行性较早得到证
实(带来信心)
4.最多只需一个驱动,减少
驱动开发费用1.桩的开发和维护成本大
2.底层组件行为的验证被推
迟了
3.底层组件的测试不充分
1.产品控制结构比较清
晰和稳定
2.产品高层接口变化较
小
3.产品底层接口未定义
或经常可能被修改
4.产品控制组件具有较
大的技术风险,需要尽早
被验证
5.支持故障隔离 5.希望尽早看到产品的
系统功能行为
自底向上 1.允许对底层组件行为的
早期验证
2.工作初期可以并行进行
集成
3.减少了桩的工作量
4.支持故障隔离1.驱动的开发和维护成本高
2.对高层的验证被推迟到了
最后,设计上的错误不能被及
时发现
1.底层接口比较稳定、变
动较少的产品
2.高层接口变化较频繁
的产品
3.底层组件较早被完成
的产品
三明治集成集合了自顶向下和自底向
上策略的优点中间层在被集成前测试不充
分
大部分软件开发项目
基干集成具有三明治集成的优点 1.必须对系统的结构和相互
依存性进行仔细分析
2.必须开发驱动和桩
3.有些接口可能测试不充分
大型复杂项目
基于功能集成/基于消息集成1.可尽快看到关键功能的
实现,并验证正确性
2.进度上要短
3.可减少驱动的开发
1.对有些接口测试不充分,会
丢失许多接口错误
2.可能会有较大的冗余测试
基于进度集成1.具有比较高的并行度
2.能有效缩短项目开发的
进度
1.许多接口要到后期才能验
证,无法发现有效的接口问题
2.桩和驱动开发工作量大
3.由于进度,组件很不稳定且
会不断变动,导致测试的重复
和浪费
进度优先级高于质量的
项目
基于风险集成最具有风险的组件最早进
行验证,有助于系统的快速
稳定
需要对各组件的风险有一个
清晰的分析