软件测试与维护(七):Unit Test
单元测试基本概念
单元测试的定义
- 定义:单元测试是对软件基本组成单元进行的测试。
- 时机:一般是在代码完成后由开发人员完成,QA人员辅助。
- 概念
- 单元:有明确的功能、性能定义、接口定义的软件设计最小单元–模块。
- 不是函数或类中的方法!而是模块或者类。
单元测试的内容
- 单元模块:局部数据结构、模块接口、出错处理、独立路径、边界条件
辅助模块
- 单元测试示意图
驱动模块(driver):用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。
桩模块(Stub):模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。主模块作为驱动模块,与之直接相连的模块用桩模块代替。
单元测试策略
- 白盒测试与黑盒测试
- 静态白盒测试在现实中较少使用
- 正式代码审查的基本要素 Essential elements of a formal code review
- 识别问题 Idetify problems
- 遵循规则 Follow rules
- 准备 Prepare
- 书写报告 Write a report
- 非正式代码检查 Informal code inspections
- 同级审查 Peer Reviews
- 采用讲解、提问方式进行,一般有正式的计划、流程和结果。主要方法采用缺陷检查表。
- 会议形式、报告、缺陷检查表
- 走查 Walk throughs
- 采用讲解、讨论和模拟运行的方式进行的查找错误的活动
- 同级审查 Peer Reviews
- 正式的代码检查
- 正式的代码检查有利于发现代码和设计中的问题
- TDD 测试驱动开发 Test-Driven Development
- 先编写测试用例,再进行开发
单元测试工具
- xUnit框架
- JUnit, CppUnit
- 针对自动化单元测试框架的实际标准
- 测试、测试装置、测试套件、测试运行器
- JUnit
- 开发源代码的Java测试框架,用于编写和运行可重复的测试。一般用来进行单元测试。
- 测试类(TestCase)、测试套件(TestSuite)、测试方法、测试运行器
- Parasoft Jtest、Parasoft C++ Test
单元测试的过程和文档管理
- 过程
- 在详细设计阶段完成单元测试计划
- 建立单元测试环境,完成测试设计和开发
- 执行单元测试用例,并且详细记录测试结果
- 判定测试用例是否通过
- 提交《单元测试报告》
- 文档
- 软件需求规格说明书、软件详细说明书 –> 单元测试计划
- 单元测试计划、软件详细设计说明书 –> 单元测试用例
- 单元测试用例、软件需求规格说明书、软件详细设计说明书 –> 缺陷跟踪报告/缺陷检查表
- 单元测试用例、缺陷跟踪报告、缺陷检查表 –> 评估 –> 单元测试报告