比较不同的测试级别,从目标、测试依据、测试对象、典型缺陷和失效,以及方法和职责的视角
测试级别
测试活动贯穿于整个软件生命周期
单元测试
集成测试
系统测试
验收测试
针对不同的测试级别,我们应该明确
不同的测试对象;
每个测试级别的测试目的;
测试用例参考的工作产品:测试依据;
发现的典型缺陷和失效;
测试工具的需求和支持;
不同的测试技术和方法;
……
单元测试
基本含义
单元测试的对象可以是模块、类、函数和对象等,不同的软件语言来决定;
单元测试的主要目的是验证单元是否满足了详细设计规格说明,发现需求和设计中的错误;
单元测试设计的主要输入是详细设计规格说明、软件设计和数据模型等;
单元测试主要采用白盒测试技术,黑盒测试技术作为单元测试的辅助;
单元测试应该覆盖功能需求和非功能需求;
单元测试经常会使用测试驱动的方法(测试驱动开发);
测试环境
单元测试处理的对象直接来自开发人员,通常由开发人员来开展单元测试;
单元测试可能并不能形成完成的系统,因此需要驱动模块和桩模块的支持:
桩模块:用以模拟被测模块工作过程中所调用的模块,他们一般只进行很少的数据处理,例如打印入口和返回;
驱动模块:用以模拟被测模块的上级模块,它接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印相应的结果;
驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用;
单元测试的关注点
单元模块接口参数;
实际参数和形式参数的个数是否相同;
实际参数和形式参数的属性是否匹配;
调用函数的参数顺序、个数和属性是否匹配;
单元模块局部数据结构;
不合适或者不相容的类型说明;
变量没有初始化;
不正确的变量名;
单元模块的独立路径测试;
误解或者用错了算符优先级;
混合类型运算;
与控制流相关的测试;
错误的修改了循环变量;
循环中止条件不可能出现;
与异常处理相关的测试;
输出的错误信息难以理解;
错误的信息和实际的错误不符;
集成测试
基本含义
集成测试,又叫组装测试、联合测试等;
集成测试是对组件之间的接口进行测试,以及和系统其他部分的相互作用;
最简单的形式是两个已经测试的单元组合成一个组件,来测试它们之间的接口和数据交换;
集成测试的主要工作:把单元测试通过的各个模块逐步集成在一起,来测试数据是否能够正确传递和调用,以及各个模块是否能正确的协同工作;
集成测试可以应用在不同的测试级别,比如单元集成测试、系统集成测试等;
集成测试的关注点
单元模块是否传输了错误的数据,或者没有传输数据;
接受数据的单元不能操作或者崩溃,比如单元功能缺陷、接口格式不兼容、协议不兼容等;
单元之间通讯正常,但是使用不同的方法来解析收到的数据,比如规格说明矛盾、理解错误等;
数据能正常传输,但是传输时间错误,比如时序问题,或者传输的时间间隔太短,比如吞吐量、负荷、容量等问题;
集成测试策略
自底向上集成测试步骤
明确被测模块并进行先后顺序分层;
按照时间线序关系,将不同单元进行集成;
将不同的模块集成为子系统,或者分系统;
将子系统集成为系统;
自底向上集成测试特点
不需要桩;
需要构造不同的驱动模块;
自顶向下集成测试步骤
以主控模块作为测试驱动,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;
依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;
每集成一个模块立即测试一遍;
只有每组测试完成后,才着手替换下一个桩模块;
为避免引入新错误,须不断地进行回归测试(即全部或部分地重复已做过的测试);
自顶向下集成测试特点
优点:不需要测试驱动器,或者只需要简单的测试驱动,这是因为经过测试的较高级别单元组成了测试环境的主要部分;
缺点:还没有集成的较低级别的单元必须用桩代替,成本很高;
核心系统优先集成测试步骤
对核心系统中的模块进行单独的、充分的测试;
核心系统的所有模块一次性集合到被测系统中,在规模相对较大的情况下,也可以按照自底向上的步骤,集成核心系统的各组成模块。;
按照各外围软件部件的重要程度以及模块间的相互制约关系,拟定外围软件部件集成到核心系统中的顺序方案;
完成外围软件部件内部的集成测试;
按顺序不断加入外围软件部件到核心系统;
随意集成测试步骤
按照单元的完成时间进行集成;
随意集成测试特点
优点:节省时间,因为每个单元可以最快的集成到环境中来;
缺点:桩和测试驱动器都需要;
系统测试
基本含义
系统测试是将已经集成好的软件系统,作为计算机系统的一部分,与计算机硬件、某些支持软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行一系列严格有效的测试;
系统测试关注的是项目或产品范围中定义的整个系统或产品的行为;
在系统测试中,测试环境应该尽量和最终使用的目标或产品使用的环境相一致,从而减少和环境相关的失效;
测试目标
系统测试的目标是确认整个系统是否满足了规格说明中的功能和非功能需求,以及满足的程度;
系统测试应该发现由于需求不正确、不完整或实现和需求不一致而引起的失效,并识别没有文档化或被忘记的需求;
常见的系统测试包括压力测试、容量测试、性能测试、安全测试、容错测试等;
验收测试
基本含义
验收测试通常是由使用系统的用户来进行,同时系统的其他利益相关者也可能参与其中;
验收测试目的是通过验收测试,对系统功能、系统特定部分或特定的系统非功能特征进行测试;
发现缺陷不是验收测试的主要目标,验收测试也可以用来评估系统是否可以在市场部署、用户使用系统的准备情况等;
验收测试类型
合同验收测试
规范验收测试
Alpha和Beta测试
用户验收测试
运行(验收)测试
……
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!