测试-测试方法
#####白盒测试(代码测试):测试代码的覆盖率
#####黑盒测试(功能测试)
- 什么是黑盒测试?
- 把被测对象看成一个黑盒,只考虑
整体特性
,不考虑其内部具体实现。 - 被测对象可以时一个系统,一个子系统,一个模块,一个子模块,一个函数等。
- 黑盒测试又可以被称为基于规格的测试。
- 把被测对象看成一个黑盒,只考虑
- 常见的黑盒测试类型
- 功能性测试:
- 是顺序测试每个程序特性或功能
- 一个模块一个模块的测试,即每个功能在其最先调用的地方被测试
- 容量测试:检测软件在处理海量数据时的局限性,能发现系统效率方面的问题。
- 负载测试:检测系统在一个很短时间内处理一个巨大的数据量或执行许多功能调用上的能力
- 恢复性测试:主要保证系统在崩溃后能够恢复外部数据的能力
- 功能性测试:
- 什么是黑盒测试?
黑盒测试来源于质量模型
功能性测试所测试的软件质量特性
- 外部和内部质量
- 功能性:适合/准确/互操作/保密安全性
- 可靠性:成熟/容错/易恢复性
- 易用性:易理解/易学/易操作/吸引性
- 效率: 时间特性/资源利用性
- 维护性:易分析/易改变/稳定/易测试性
- 可移植性:适应/易安装/共存/易替换性
- 外部和内部质量
常用黑盒测试方法:
- 等价类划分法
- 边界值分析法
- 因果图分析法
- 判定表法
- 状态迁移法
黑盒测试特点:
- 优点:
- 对于更大的代码单元来说(子系统/系统级),比白盒测试
效率高
- 测试人员不需要了解现实的细节,包括特定的编程语言
- 从用户的视角进行测试,很容易被大家理解和接受
- 有助于暴露任何规格不一致或有歧义的问题
- 对于更大的代码单元来说(子系统/系统级),比白盒测试
- 缺点:
- 没有清晰的和简明的规格,测试用例时很难设计的
- 不能控制内部执行路径,会有很多内部程序路径没有被测试到
- 不能直接针对特定的程序段,这些程序可能非常复杂
- 优点:
灰盒测试(黑盒测试和白盒测试结合)
- 典型的灰盒测试比如集成测试和系统测试时借助log信息
以下属于什么测试
- LLD:详细设计文档 —> 单元测试-白盒
- SRS:需求分析文档 —> 系统测试-黑盒
- HLD:概要设计文档 —> 集成测试-灰盒
- LLD(详细设计文档 )
- 单元测试UT
- 白盒测试范畴 主要测试单元内部的数据结构 逻辑控制 异常处理等
- HLD(概要设计文档)
- 集成测试IT
- 灰盒测试范畴 主要测试模块之间的接口和接口数据传递关系,以及模块组合后的整体功能
- SRS(需求设计文档)
- 系统测试ST
- 黑盒测试范畴
- 主要测试整个系统相对于需求的符合度
产品软件:把行业的共同点抽出来做一套软件。
- 软件研发可以看成一个生成过程,在这个过程中会有产品输出,或者叫做工件输出
- 输出的产品分为两类:
- 最终产品:编译后的软件,用户手册
- 中间产品:SRS,HLD,LLD,代码等
- 无论是最终产品还是中间产品,都可以分为代码和文档
- 文档进一步细分:
- 开发文档:SRS,HLD,LLD
- 测试文档:测试计划,测试方案,测试用例
静态测试/动态测试
- 静态测试:不运行被测试软件,而是采用其它手段和技术对被测试软件进行检测的一种测试技术,常用技术有
静态分析技术
- 动态测试:按照预先设计的数据和步骤去运行被测软件系统,从而对被测软件系统进行检测的一种测试技术。常用技术有
动态分析技术
- 静态测试:不运行被测试软件,而是采用其它手段和技术对被测试软件进行检测的一种测试技术,常用技术有
静态分析技术
- 定义:静态分析是一种不通过执行程序二分析程序执行的技术
- 功能:检查软件的表示和描述是否一致,没有冲突或者没有歧义,它瞄准的是纠正软件系统在描述,表示和规格上的错误,因此是任何进一步测试执行的前提。
- 主要有三种不同的程序测试可能性
- 考虑程序是否满足编码规则,语法上是否具有一致性和完整性
- 考虑文档描述是否符合规范,准确,便于查阅
- 考虑程序和文档之间的一致性
动态分析技术
- 定义:对软件系统运行行为进行分析,包含程序在受控的环境下使用特定的输入进行正式的运行,和期望的结果比较以检查系统运行是正确还是不正确。
- 常用的动态分析技术
- 路径测试
- 分支测试
- 性能测试
人工测试和自动化测试
- 人工测试:测试活动由人来完成,狭义上是指测试执行由人工完成,是最基本的测试形式
- 自动化测试:一般是指通过计算机模拟人的测试行为,替代人的测试活动,狭义上是指测试执行由计算机来完成
- 自动化测试的意义:
- 对程序新版本运行前一版本执行的测试,提高回归测试效率
- 可以运行更多更频繁的测试,比如冒烟测试
- 更好的利用资源
- 可以执行手工测试困难或不可能做的测试
- 测试具有一致性和可重复性,即自动化测试的步骤和结果是完全一样的
- 测试的复用性,即自动化测试脚本可以拆分开给其它测试脚本使用
- 可以更快的将软件推向市场,软件发布前进行高效的回归测试,减少软件发布的时间
- 增加软件的信任度,通过自动化测试提高了测试效率。
- 自动化测试的限制
- 不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发现更多缺陷
- 手工测试比自动测试发现的缺陷更多
- 对测试设计依赖性极大,测试设计的不好会遗漏问题
- 自动化测试对软件开发具有很大的依赖性,开发上出现变更可能导致前面的自动化测试完全失效
- 工具本身并不具备想象力,智能。
性能测试
- 什么是软件性能:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。
理解:
由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完成之后。另外,由定义中的及时性可知性能也是一种指标,可以用时间或其它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。
- 性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
- 性能测试类型
- 基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
- 负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
- 压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
- 稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
- 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,
- 性能测试包含那些方面:
- 响应时间
- 吞吐量
- 并发数
- 资源利用率
- 什么是软件性能:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。