软件单元测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单元测试心得体会

2014/6/9

一、背景/概述:

1、单元测试的概念:

单元测试(unit testing),是指对软件中的最小可测试单元(功能模块)进行检查和验证。

2、单元测试的重要性:

保证功能模块代码的正确性,保证不会有大量的bug遗留到产品系统测试中,让bug尽早的被发现。

二、普遍存在的问题及现状

1、开发人员存在的错误观念

1) 测试是测试部门的责任,我的责任应该关注在与代码上

2) 我们有测试人员,有集成/系统/确认测试,他们迟早会发现我的错误的。

3) 项目进度如此紧急,我没有时间做测试。

2、产品质量隐患

1) 软件的质量完全取决于程序员的个人技能和责任心,具有很大的随机性。

2) 系统测试阶段,发现很多bug,且很难把问题定位。

3) 后期维护成本高昂,1个月的开发,几天的测试,然后花几个月的时间去修补错误。

4) 公司测试不出的bug,总被客户发现。

缺陷的发现时间越晚,修复的成本越高,在部署阶段每个缺陷的修复成本都会及其高昂(每一个major以上的缺陷修复都不得不作完整的系统测试和确认测试),严格实施scm的组织尤其昂贵。

3、根本原因:

1) 错误可能会随机的分布在产品代码的任何一个地方。

2) 编码阶段引入的缺陷远远多于其它阶段。

3) 系统测试发现的缺陷大多数是编码缺陷。

4) 模块功能的缺陷引入到系统集成后,隐藏性会更深,破坏力会更强。

三、正确的意识和理念

1、开发人员方面

1)测试产品的bug,不单是测试人员的工作,更多的是开发人员的职责,开发人员有责任保证产品的质量。

2)程序员必须对自己的代码质量负责,单元测试是对自己代码质量的基本承诺,程序员=UT+CODE。

3)要在开发过程中引入单元测试,使产品的大部分bug在最初阶段被发现。

4)越早发现bug,修复成本越少。

2、测试人员方面

1)测试必须并行的融入到软件开发生命周期的各个阶段,以覆盖软件结构和开发生命周期的不同关注点。

2)测试是基于需求测试,而不是基于开发测试,故测试人员的参考文档除了开发人员提供的技术文档,要更多的依据产品需求文档,以及基于风险测试,基于用户体验测试。

3、项目管理方面

1)在产品的进度与质量权衡中,要坚持以质量为核心。

2)要建立公司知识库,积累开发经验案例及工作总结。

四、单元测试的实施

1、单元测试要尽早的落实到开发中。

1)测试活动融入整个软件开发

的生命周期

2)不同阶段的测试强调的是从

不同视角关注不同的方面,

尽可能早而全的出去错误,

不累计错误。

3)每一种类型测试的效果,将

严格依赖于前期阶段其他类

型测试的执行的正确,完整

与否。

4)测试有分工,合适的人在合

适的时候承担合适的测试

2、规范单元测试的流程

3、单元测试的技术

单元测试技术有两种,静态测试及动态测试

1)静态测试,通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。

方法有如下几种:

- 走查:WalkThrough

- 审查:Inspection

- 评审:Review

辅助的检查工具:

- 代码检查工具PC-LINT

- 内在检查工具Boundschecker

- 覆盖率工具Logiscope

2)动态测试,是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。

由三部分组成:

- 构造测试实例

- 执行程序

- 分析程序的输出结果。

推荐的工具:

- cpp unit

- C Unit

- Visual Unit 4.0 betal

条件:需要编写测试驱动和测试桩

单元本身不能独立运行,所以必须为每个单元测试开发驱动模块(Driver)和桩模块(Stub)以构成一个可运行的软件系统进行测试。

“驱动模块”是一个接收测试数据,并把数据传送给(被测试)模块,然后显示或比较相关结果的“主程序”

“桩模块”是替代那些隶属于本模块(被调用)的模块,使被测对象得以运行

五、关于单元测试的一些建议

结合公司的实际情况,及自身对单元测试的理解,给出一些相关建议。

1、增强开发人员的测试意识及质量责任感。

2、严格遵守编程规范,编写简洁,可靠,可维护,可测试,可移植的代码。

3、对于软件单元测试,最初阶段可以使用静态测试方法,可以用较少的资源达到较好的效果。

把静态测试分为三个活动,每次活动时间控制在1-2小时,在产品的工作样机提交测试前完成。

走查-活动:

- 软件组内部进行,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。- 由代码开发人者进行讲解,回答并记录

- 不要现场修改

- 检查要点为,逻辑错误,代码标准/规范/风格

审查-活动:

- 开发组内部进行的,采用讲解、提问并使用Checklist方式进行的查找错误的

活动,并提交结果报告。

- 由另外一名开发者进行讲解、其他开发者主要按照Checklist进行提问并填表,代码开发者回答问题并记录

- 不要现场修改

- 检查要点为,设计需求,代码标准/规范/风格

评审-活动:

- 软件组、测试组和相关人员(PM、SE等)联合进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。并提交结果报告。

- 由另外一名开发者进行讲解、其他开发者主要按照Checklist进行提问并填表,代码开发者回答问题并记录

- 不要现场修改

- 检查要点为,设计需求,文档的完整性和一致性

单元测试的准则:

- 采用二八定律,20%的常用功能要重点测试

- 新增的功能模块,需重点测试

- 新平台,新组件,新通用模块需重点测试

- 修改变性的代码需重点测试

相关文档
最新文档