单元测试
1、 单元的基本属性:
1) 明确的功能
2) 可定义的规格
3) 与其他单元接口的清晰划分
2、 单元测试的目的:
在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。
a) 验证代码是与设计相符合的;
b) 发现设计和需求中存在的错误;
c) 发现在编码过程中引入的错误。(和设计不相符或和设计相符,但是由于
编码疏漏引起)
3、 单元测试关注的重点:
出错处理[XHC1] 、单元接口、局部数据结构、独立路径、边界条件
4、 单元测试的主要关注点:
1) 参数的属性、顺序、个数是否与LLD一致
2) 不能修改只做输入用的形参,否则可能导致数据的错误修改
3) 约束条件是否通过形参来传送
4、 驱动和桩的功能:
1) 驱动单元:被测函数的主函数,能接受输入数据,输出实际测试结果
2) 桩单元:用来代替所测单元调用的子单元
5、 单元测试策略:
孤立的测试策略、自顶向下、自底向上的单元测试策略
1) 孤立的测试策略:
· 方法:不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块和驱动模块。每个模块进行独立的单元测试。
· 优点:该方法是最简单,最容易操作的。可以达到高的结构覆盖率。该方法是纯粹的单元测试。
· 缺点:桩函数和驱动函数工作量很大,效率低。
2) 自顶向下的单元测试策略:
· 方法:先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。其次对第二层进行测试,使用上面已测试的单元做驱动模块。如此类推直到测试完所有模块。
· 优点:可以节省驱动函数的开发工作量,测试效率较高。
· 缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且开发和维护的成本将增加。
3) 自底向上的单元测试策略:
· 方法:先对模块调用层次图上最低层的模块进行单元测试,模拟调用该模
块的模块做驱动模块。然后再对上面一层做单元测试,用下面已被
测试过的模块做桩模块。以此类推,直到测试完所有模块。
· 优点:可以节省桩函数的开发工作量,测试效率较高。
· 缺点:不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产
生很大的影响。
5、 单元测试的四个阶段:· 测试计划:完成单元测试计划;
· 测试设计:完成单元测试方案;
· 测试实现:完成单元测试用例、单元测试规程、单元测试脚本及数据文件;
· 测试执行:执行单元测试用例,修改发现的问题并进行回归测试,提交单元测试报告。
集成测试
1. 集成测试的目的:确保各组件组合在一起后能够按照既定意图写作运行,并确保增量的行为正确(属于灰盒测试)
1) 验证接口是否与设计相符
2) 发现设计和需求中存在的错误
2. 集成测试关注的重点:单元间的接口、集成后的功能
3. 集成测试的层次:模块内集成、子系统内集成、子系统间集成
4. 集成测试策略:
1) 大爆炸集成
2) 自顶向下集成
3) 自底向上集成
4) 三明治(混合式)集成
5) [XHC2] 基干集成
6) 分层集成
7) 基于功能的集成
8) 基于消息的集成
9) [XHC3] 基于进度的集成
10) 基于风险的集成
5. 各种集成测试策略的优缺点:
系统测试
1. 系统测试目的:
1) 通过与需求做比较,发现与系统定义不符合或与之矛盾的地方
2) 系统测试的用例应根据需求分析说明书来设计,并在实际使用环境下运行
2. 系统测试对象
1) 软硬件集合在一起的系统
2) 验证时应尽可能模拟实际的运行环境与条件
3. 系统测试常用类型:功能、性能、压力、容量、安全性、GUI、可用性、安装、配置、异常(恢复性)、备份、健壮性、文档、在线帮助、网络、稳定性测试
4. 功能测试:
1) 概念:根据产品的SRS和测试需求列表,验证产品的功能实现是否符合产品的需求规格
2) 目标:为了发现以下几类错误
a) 是否有不正确或遗漏了的功能
b) 功能实现是否满足用户需求和系统设计的隐藏需求
c) 输入能否正确接受?能否正确输出结果?
5. 性能测试:
1) 概念:用来测试软件在集成系统中的运行性能
2) 目标:度量系统相对于预定义目标的差距
3) 工具:LoadRunner、WebLoad、SilkPerformer
4) 重要性:a) 性能是质量的重要组成部分
b) 给用户树立良好形象
c) 节省成本的重要手段
6. 性能测试的关键:有效的协调、正确的模型、瓶颈的定位、合理的建议
7. 性能需求五大特性:需求行、代表性、完整性、可测试性、可用性
8. 压力测试:关注稳定性和破坏性
1) 目的:调查系统在其资源超负荷的情况下的表现
2) 目标:通过极限测试方法,发现系统在极限或恶劣环境中自我保护能力,主要验证系统的可靠性。
9. 容量测试:
1) 目的:使系统承受超额的数据容量来发现它是否能够正确处理
2) 关注点:a) 整体的业务流量(一般关注静态容量)
b) 数据库的容量
c) 最大文件数目
d) 最大事务数
10. 安全性测试:口令认证、加解密技术、权限管理、安全日志
11. GUI测试:
1) 关注点:界面实现与界面设计的吻合情况、确认界面处理的正确性
2) 对象:简单界面元素、组合类界面元素、完整界面(窗口)
3) 内容:外观、界面元素行为、布局、友好功能
12. 可用性测试:关注点:
1) 过分复杂的功能或指令
2) 困难的安装过程
3) 错误信息过于简单
4) 用户被迫去记住太多的信息
5) 语法、格式和定义不一致
13. 配置测试:
概念:测试系统在各种软硬件配置、不同的参数配置下系统具有的功能和性能
目标:验证全部配置的可操作性和有效性,特别需要对最大配置、最小配置或特殊配置进行测试
14. 异常测试:
概念:又叫系统容错和可恢复性测试,通过人工干预手段使系统产生软、硬件异常,通过验证系统异常前后的功能和运行状态,达到检验系统的容错、排错和恢复的能力。它是系统可靠性评价的重要手段。
容错处理:系统自动处理、人工干预处理
系统可靠性指标:平均失效时间间隔(MTBF)、平均恢复时间(MTTR)
系统可靠性设计技术:
1) 避开错误
2) 容错技术:结构冗余(动、静态)、信息冗余、时间冗余、硬件冗余、附加冗余技术
15. 健壮性测试:Robustness Testing
用于测试系统在出现故障时,是否能够自动恢复或忽略故障继续运行
16. 网络测试:
概念:在网络环境下和其他设备对接,进行系统功能、性能与指标方面的测试,保证设备对接正常。
内容:考察系统的处理能力、系统兼容性、系统稳定可靠性及用户使用等方面。
1) 一致性测试:检测系统与协议规范符合程度
2) 性能测试:检测协议实体或系统的性能指标
3) 互操作性测试:
4) 坚固性测试:检测协议实体或系统在各种恶劣环境下运行的能力
17. 系统稳定性测试:
目的是评价系统在一定负荷情况下、长时间的运行情况。
体现软件的成熟性和容错性
重要
实际中应用较多
第二篇:黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别
黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别
由安博测试空间技术中心/提供
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。 黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。 2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。 3、在循环的边界和运行的界限内执行循环体。 4、测试内部数据结构的有效性,等等。
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
单元测试的主要目的是针对编码过程中可能存在的各种错误,例如用户输入验证过程中的边界值的错误。
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。
集成测试主要目的是针对详细设计中可能存在的问题,尤其是检查各单元与其它程序部
分之间的接口上可能存在的错误。
系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。
(常见的联调测试)
系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。
系统测试主要针对[b]概要设计[/b],检查了系统作为一个整体是否有效地得到运行,例如在产品设置中是否达到了预期的高性能
验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。
验收测试通常由业务专家或用户进行,以确认产品能真正符合用户业务上的需要(需求)。
北京测试空间科技发展有限公司是注册于北京市海淀区高新技术园的软件企业,目前主要业务范围包括软件测试管理
工具研发、软件测试项目外包和软件测试专业技术人才培养及派遣。在软件测试管理工具研发领域已成功开发具有
自主知识产权的STMP管理软件。在软件测试项目外包领域已建立广泛的业务渠道,服务客户包括北大软件工程中心、
东软股份、海辉高科、用友软件、莱博智科技、电子部5所、11所,航天704所、中国金融认证管理中心、国安创想、
清华同方、中软融鑫、长峰科技等100余家企业,项目覆盖行业包括军工、航天、金融、通信等领域。
地址:北京市海淀区学院路40号大唐电信测试空间楼
联系电话:010-62303223 62303260 62303230