软件测试基础知识
软件测试的标准定义
指使用人工和自动手段来运行或测试某个系统的过程,目的在于检验其是否满足规定的需要或弄清楚预期结果与实际结果之间的差别。
软件测试阶段
测试计划、测试设计、测试开发、测试执行、测试评估
软件生命周期
制定计划、需求分析、软件设计、程序编码、软件测试、软件运行、软件维护、软件停用
系统生命周期(SDLC)
问题的定义与规划、需求分析、软件设计、程序编码、软件测试、运行维护
软件测试的重要性
- 寻找软件错误,以便进行修正
- 验证软件是否符合要求
- 证明软件符合要求,是可用的
- 知道软件的开发过程
- 提供软件的相关特征
软件缺陷的定义
标准定义
- 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题
- 从外部看,软件缺陷是系统所需实现的某种功能的失效或违背
典型定义
- 未曾预料到的系统行为
- 代表系统中的一种非主观现象,是系统已具备的功能出现定义上的差错
- 是程序与规格说明间的不匹配
- 是计算机系统或程序种存在的任何一种破坏正常运行能力的问题、错误或隐藏的功能缺陷、瑕疵
正式定义
- 软件未达到需求规格说明书种指明的功能
- 软件出现了需求规格说明书中指明不会出现的错误
- 软件功能超出需求规格说明书中指明的范围
- 软件未达到需求规格说明书中虽未指出但应达到的目标
- 软件测试员认为软件难以理解、不易使用、运行速度缓慢或者最终用户认为不好
测试用例
测试用例 = 输入 + 输出 + 测试环境
测试用例的重要性
- 指导测试的实施
- 规划测试数据的准备
- 编写测试脚本的“设计规格说明书”
- 降低工作强度
测试用例的评价标准
有效性、经济型、可效仿性、可修改性、独立性、可跟踪性
测试用例设计基本原则
测试用例的代表性、测试用例的完整性、测试结果的可判定性、测试结果的可再现性
测试原则
- 应追溯到用户需求
- 应尽早和不断地测试
- 穷尽测试是不可能的
- 具有良好的测试态度
软件测试分类
黑盒测试、白盒测试、静态测试、动态测试、单元测试、集成测试、系统测试、验收测试、α测试、β测试、数据和数据库完整性测试、UI测试、性能测试(负载测试、强度测试、数据库容量测试、基准测试、竞争测试)、安全性和访问控制测试、故障转移和恢复测试、配置测试(浏览器\操作系统\硬件兼容性)、安装测试、多语种测试、文字测试、分辨率测试、发布测试(说明书测试、宣传材料测试、帮助文件测试、广告语)、文档审核测试(需求文档测试、设计文档测试)
黑盒测试方法
等价类划分、边界值分析、因果图分析、错误推测法、功能图分析等
黑盒测试优点
- 黑盒测试用例与程序如何实现无关
- 测试用力的设计与程序的开发可以并行
- 没有编程经验的人也可以设计黑盒测试用例
黑盒测试缺点
- 不可能做到穷举测试
- 很有可能存在漏洞
- 自动化测试复用性低
白盒测试方法
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等
白盒测试优点
- 可利用不同的覆盖准则测试分支
- 可发现内存泄漏直接定位缺陷
- 可进行缺陷预防
白盒测试缺点
- 不能做到穷举测试
- 可能会漏掉一些功能需求