【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试
【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试
- 单元测试
-
- 概述
- 单元测试的内容
- 单元测试的优点
- 单元测试的停止准则
- 单元测试的过程与文档管理
- 单元测试的任务
- 集成测试
-
- 集成测试关注的问题
- 模块分析
- 集成测试与系统测试的区别
- 集成测试与开发的关系
- 集成测试的层次
- 集成测试的原则
- 集成测试重点考虑的内容
- 集成测试策略
- 模块组装方法
-
- 非渐增式集成。
- 渐增式集成。
-
- 渐增方式集成测试策略-自顶向下集成
-
- 自顶向下集成测试的步骤
- 渐增方式集成测试策略-自底向上集成
- 集成测试用例设计
-
- 为正向集成测试设计用例
- 为逆向集成测试设计用例
- 为满足特殊需求设计用例
- 为覆盖设计用例
- 集成测试流程
- 面向对象的集成测试
-
- 对象交互的测试方法分类
-
- 原始类测试
- 汇集类测试
- 协作类测试
- 面向对象集成测试的常用方法
- 分布式对象测试
-
- 线程
- 分布式对象的概念
- 功能测试
单元测试
概述
单元是指一个最小的单元应该有明确的功能、性能、接口定义而且可以清析地与其他单元区分开。
单元测试(Unite Testing)又称为模块测试,主要来检验软件设计中最小的单位——模块。一般来说模块的内聚程度高,每一个模块只能完成一种功能,因此模块测试的程序规模小,易检查出错误。我们可以通过单元测试进行程序语法检查和程序逻辑检查,验证程序的正确性。单元测试非常重要,因为它影响的范围比较广,主要表现在如果一个单元模块的一个函数或者参数出现问题,会造成后面很多问题的出现,而且如果单元测试做不好,使得集成测试或者后面系统测试工作也做不好。做好单元测试是一个重要而且基础性的工作,主要的测试方法分为人工测试和自动化测试两种方式。
单元测试目的是检查单元模块内部的错误,为软件的评审验收提供依据。单元测试是以程序设计说明书和之前所作的测试数据(正常的和错误的)为指导,测试模块内重要的路径,以检查出错误;检验信息能否正确地流入和流出单元;在单元测试工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。以及在为限制数据加工而设置的边界处,能否正确工作。单元的运行能否做到满足特定的逻辑覆盖。单元中发生了错误,其中的出错处理措施是否有效等等方面。
单元测试的内容
目标:确保模块被正确地编码。
依据:详细设计说明书、源程序。
过程:包括设计、脚本开发、执行、调试和分析结果。
执行者:开发人员和测试人员。
测试方法:白盒为主,黑盒为辅。
评估:通过所有单元测试用例,代码没有严重缺陷。
单元测试的优点
单元测试是一种验证行为,其为程序中的每一项功能都是测试来验证它的正确性。单元测试是一种设计技术:单元测试使我们把程序设计成易于调用和可测试的设计,是一种设计技术。单元测试是一种编写文档的行为:单元测试是一种文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。单元测试具有回归性:单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。单元测试保证:保证代码质量,保证代码的可维护性,保证代码的可扩展性。
单元测试的停止准则
单元测试停止至少需要满足以下条件:软件单元功能与设计需求一致;软件单元接口与设计需求一致;能够正确处理输入和运行中的错误;在单元测试中发现的错误已经修改并通过了测试;达到了相关的覆盖率的要求;完成软件单元测试报告。
单元测试的过程与文档管理
单元测试过程由以下5个步骤组成:
在详细设计阶段完成单元测试计划;
建立单元测试环境,完成测试设计和开发;
执行单元测试用例,并详细记录测试结果;
判定测试用例是否通过;
提交《单元测试报告》;
单元测试的任务
模块独立执行通路测试:检查每一条独立执行路径的测试。保证每条语句被至少执行一次。主要解决以下问题:误解或用错了算符优先级。混合类型运算。变量初值错。精度不够。表达式符号错等等。
模块局部数据结构测试:检查局部数据结构完整性。主要解决以下问题:不适合或不相容的类型说明。变量无初值。变量初始化或默认值有错。不正确的变量名或从来未被使用过。出现上溢或下溢和地址异常等等。
模块接口测试:检查模块接口是否正确。主要解决以下问题:输入的实际参数与形式参数是否一致,包含个数、属性、量纲;调用其他模块的实际参数与被调模块的形参是否一致,包含个数、属性、量纲;调用预定义函数时所用参数是否一致,包含个数、属性、量纲;全程变量的定义在各模块是否一致;外部输入、输出相关的问题,包含文件、缓冲区、错误处理等等。
模块边界条件测试:检查临界数据处理的正确性。主要解决以下问题:普通合法数据的处理;普通非法数据的处理;边界值内合法边界数据的处理;边界值外非法边界数据的处理等等。
模块的各条错误处理通路测试:预见、预设的各种出错处理是否正确有效。主要解决以下问题:输出的出错信息难以理解;记录的错误与实际不相符;程序定义的出错处理前系统已介入;异常处理不当;未提供足够的定位出错的信息等等。
集成测试
集成就是把多个单元组合起来形成更大的单元。
集成测试也称为组装测试、联合测试、子系统测试、部件测试。其在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元接口之间的协同工作(参数、全局数据结构、文件、数据库)是否正确。
集成测试通常采用黑盒测试用例设计方法、灰盒测试方法。