定义
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
-
测试就是发现程序中的错误而执行的过程。
给自己一个心理设定,就是要找出程序中的错误。(克服心理障碍)
原则
- 测试用例中必需部分是对预期输出或结果进行定义
- 程序员应当避免测试自己编写的程序
- 编写软件的组织不应当测试自己编写的软件
- 应当彻底检查每个测试的执行结果
- 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况
- 检查程序是否“ 未做其应该做的” 仅是测试的一半,测试的另一半是检查程序是否 “ 做了其不应该做的”
- 应避免测试用例用后即弃,除非软件本身就是一个一次性的软件
- 计划测试工作时不应默许假定不会发现错误
- 程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正 比
分类
-
是否运行程序
-
动态测试
通过运行软件来检验软件的动态行为和运行结果的正确性。
-
静态测试
通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性
-
-
是否查看源码
是否查看源码
-
黑箱测试
black-box testing,也称黑盒测试,测试应用程序的功能,测试者不需具备应用程序的代码、内部结构和编程语言的专门知识。
-
数据驱动
穷举路径测试
```
- 通过有限的测试用例,最大限度的发现问题。
- 可用性测试
- 灰盒测试
```
多用于集成测试阶段
```
- 白箱测试
```
white-box testing,又称透明盒测试,结构测试等。测试程序内部运作。以编程语言角度来设计测试案例。
逻辑驱动型
```
- 利用错误列表进行代码检查
- 小组代码走查
- 同行评审
- 测试阶段
-
单元测试
对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性。
-
测试的对象是软件设计的最小单位:函数。
```
- 集成测试
```
集成测试也称综合测试、组装测试、联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。目的是检查软件单元之间的接口是否正常。
```
- 系统测试
```
对一个完整的软件以用户的角度测试。
```
- 确认测试
```
验证被测对象有测性
```
- 安全测试
- 回归测试
- QTP
- 验收测试
```
验收测试的目的是确保软件准备就绪
```
-
测试进程
-
Alpha测试
验证测试。模拟运行。由开发人员与测试的测试人员。
-
Beta测试
公众参与的测试的阶段。确认测试,在一个真实的环境中以实际的数据来运行测试,,以确认性能,系统运行有效率,系统撤消与备份作业正常。
-
封闭测试Closed Beta
公开上市前的测试过程。
-
公开测试Open Beta
又称压力测试
-
Gamma测试
对“存在缺陷”产品的测试,这个概念存在着一定的不确定性。
-
-
压力测试与性能测试
压力测试和性能测试常常混淆。
-
压力测试
压力测试要求进行超过规定性能指标的测试。
-
判断准则:
1、系统能够恢复。
2、压力测试过程中,不要有明显的性能下降。
```
- 性能测试
```
通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
```
- 其他
-
探索性测试
没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。
-
探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
```
-
- 冒烟测试
```
检查对象是否具有可测性
```
- 敏捷测试
```
利用测试记录需求和驱动开发的思想。
敏捷测试思想是面向结果的、技术性的、协作的,乐于学习的、勇于不断生产业务价值的。
```
对象
- 程序
- 数据
- 文档
缺陷(bug)
- 缺陷的跟踪流程(流程基本要素)
- 5C原则
- 准确
- 清晰
- 简洁
- 完整
- 一致
- 内容
- bug编号
- 严重级别/优先级
- 产生条件
- 产生模块
- bug摘要
- bug对应版本
- bug详细描述,截图,录屏
测试用例
- 原则
- 单个用例最小化原则
- 测试用例替代产品文档功能原则
- 单次投入成本和多次投入成本原则
- 使测试结果分析和调试最简单化原则
- 方法
- 等价类划分
- 边界值分析
- 错误推测
- 因果图
- 判定表驱动分析
- 正交实验设计
- 场景设计法
- 状态转换图
- 内容
- 用例编号
- 用例描述
- 前提条件
- 输入数据
- 测试步骤
- 期望结果
工具
- 测试管理工具
- TestDirector
- 功能测试工具
- 负载压力测试工具
-
loadrunner
Web性能测试工具
-
- 测试辅助工具
- 白盒测试工具