七、测试类型(按工程阶段划分)
单集系确收
(一)单元测试
1、单元测试/模块测试
- 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。
- 主要依据是模块的详细设计文档。
- 价值在于尽早发现程序的一些问题,降低后期缺陷修复代价。
- 采用白盒、黑盒测试技术等进行,主要看测试需求。
- 单元测试可由开发和测试工程师共同完成。
- 针对软件程序模块进行正确性检验的测试工作
2、测试内容
- 单元测试主要是关注单元是否实现规定的功能,单元的逻辑是否正确,输入输出是否正确
- 局部数据:测试在单元内的数据结构是否保持完整
- 模块接口:模块接口既要调用其它接口,也要接受其它接口。
- 独立路径:信息无关的路径。是指在程序中至少引用了一个新的处理语句的集合,或者一个新条件的任意一条路径。
- 出错处理:单元在运行过程中发生差错时单元是否能有效处理差错,避免程序崩溃。
- 边界条件:对单元边界进行测试,确定单元边界是否正常。
(二)集成测试/组装测试/联合测试
1、概念
- 在单元测试基础上,将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。主要是发现单元接口之间可能存在的问题。
- 概要设计阶段考虑如何进行集成测试
- 单元测试考虑各个单元内部有无问题,集成测试验证将各个单元之间合起来之后能否达到上一级设计的功能要求。
- 集成测试需要提交文档:集成测试计划、集成测试规格说明、集成测试分析报告。
- 检验程序单元或部件的接口关系,即针对软件体系结构的构造进行的测试
2、方式
-
一次性组装:
非增值式组装方式/整体拼装。
首先对每个模块分别进行模块测试,再把所有模块组装在一起进行测试,最终得到所求的软件系统。
优点:节省工时、人力
缺点:当发现问题时很难定位发生问题的地方 -
增值性组装:
渐增式组装
首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大系统,组装中边连接边测试,最后通过增值逐步组成软件系统。
包括自顶向下的增值方式(主干模块先暴露问题)、自底向下的增值方式(最常出错的底层模块先暴露问题)、混合增值式方式(前两种的结合)
3、内容
- 各模块连接时,穿越模块接口的数据是否丢失
- 一个模块的功能是否会对另一个模块的功能产生不利影响
- 各个子功能组合,能否达到预期要求的父功能
- 全局数据结构是否有问题
- 单个模块的误差累积是否会放大
4、完成标志
- 成功执行测试计划中所规范的所有集成测试
- 修正所有错误
- 测试结果通过专门小组评审
5、桩模块/驱动模块
- 桩模块:底层的模块。模拟调用模块功能的模块。也叫存根模块。用以代替所测模块调用的子模块。模块可以做少量的数据操作,不需要把子模块的所有功能都带进来,但不允许什么事情也不做。
- 驱动模块:模拟上一级模块调用测试模块的模块。相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。
(三)系统测试
1、概念
- 发现软件与系统定义不符合或与之矛盾的地方
- 集成整个系统元素(包括硬件、外设、网络和系统软件、支持平台等)
- 目的是验证最终软件系统是否满足用户规定的需求
- 为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试
2、内容
- 按照需求规格说明书逐一验证系统的质量特性
功能测试
健壮性测试:容错能力;恢复能力
3、典型测试
- 恢复测试:主要检查系统的容错能力
- 安全测试:验证系统内部的保护机制
- 压力测试:通常用于测试应用程序或系统在高负载、高压力情况下的性能和稳定性。(异常访问量、频率或数据量)
(四)确认测试/有效性测试
- 验证软件的功能和性能以及其他特性是否与用户要求一致,由开发方组织
- 主要内容:以规格说明书为主来开展、确认软件有效性;做软件配置的复查工作
- 进行有效性测试 <— 黑盒测试
- 软件配置复查
- 检验与证实软件是否满足软件需求说明书中规定的要求
(五)验收测试
- 用户为主
- 一般使用生产中的实际数据进行测试
- 决定是否接收或拒收系统
- 按照项目任务书或合同、约定的验收依据文档等进行的整个系统的测试与评审,决定是否接收或拒收系统。
八、测试类型(按执行代码划分)
(一)动态测试
需要运行代码去发现错误。
1、黑盒测试法
2、白盒测试法
3、灰盒测试法
- 介于黑白盒之间
- 既考虑程序内部结构和逻辑,又考虑功能
(二)静态测试
不需要运行程序,通过人为审查程序发现错误。
1、代码审查
2、代码走查
九、测试类型(按实施主体划分)
(一)开发方测试
- 开发方 开发环境下
- Alpha测试
- 指在软件开发完后,开发方要对提交的软件进行全面的自我检查与验证,它可以队软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
(二)用户测试
- 用户 用户应用环境下
- Beta测试
- 用户通过运行和使用软件,检测与验证软件是否符合自己预期的要求
(三)第三方测试
- 第三方
- 技术、财务、管理等独立于开发方、用户方的第三方组织
- 独立测试
十、测试类型(按关联代码划分)
集成测试阶段采用黑盒和白盒测试相结合的方法
(一)白盒测试
- 逻辑和结构
- 结构测试/逻辑驱动测试/基于代码的测试
- 白盒测试把软件视为一个透明的盒子,盒子中程序的每一步如何进行分支、如何进行控制、数据如何流动……
- 基于程序内部的结构、逻辑来设计测试用例
(二)黑盒测试
- 功能
- 功能测试/基于规格说明书的测试/基于数据驱动的测试
- 不透明的黑色盒子,不清楚内部程序的结构和逻辑
- 从用户角度去考虑产品的功能、特性并验证
- 主要用于集成测试和确认测试阶段
十一、测试类型(按质量特性划分)
十二、测试类型(按符合性情况划分)
(一)符合性测试
测试软件有没有符合相关的要求。
1、先决条件
- 符合性准则文件(标准、合同等)
- 就绪的软件(软件所有项均为可用状态、文档)
- 软件的系统元素
十三、测试类型(回归测试)
(一)软件有变动的情况
软件发生变动时需要进行回归测试。
1、对缺陷修复
- 首先验证缺陷是否正确修复
- 然后测试缺陷修复可能影响到的功能是否正确
2、对新增功能
- 验证新功能的正确性
- 测试可能受到影响的其他功能
3、对删减功能
- 检测是否影响到保留的功能
十四、软件测试工具
JMeter
- JMeter:是一个性能测试工具,同loadrunner类似,他功能较多,我们常用的功能是用imeter模拟多浏览器对网站做压力测试。
LoadRunner
- LoadRunner:是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并评估系统性能。
JTest
-
JTest:是一个综合的发展广泛的实践证明,以提高开发团队的工作效率和软件质量的自动化测试解决方案。侧重于实践验证的Java代码和应用程序,无缝集成Parasoft的SOAtest以使最终结束今天的复杂的,分布式的应用和交易的功能和负载测试。
-
JBuilder:是一个可视化JAVA开发工具。它是在Java2平台上开发商业应用程序、数据库、发布程序的优秀工具。