注:关于探索性测试内容来自:做好探索性测试,体现你的价值 - 维森特 - 博客园
一、探索性测试
1、定义:
1.1 非书面化语言:
作为一个研究性的工具,它是用户故事测试和自动化回归集的重要补充。它是一种经过深思熟虑的测试方式,没有测试脚本,可以使你的测试超出各种明显已经测试过的场景
1.2 书面化语言:
- 明确测试范围
- 识别被测对象的期望功能和需求
- 了解被测对象的基本性状
- 发现被测对象的潜在不稳定区域
- 创建一个测试纲要并用它来指导测试

图1 探索性测试
2、探索性测试的常用方法
- 破坏法 - 用常规手段破坏系统的正常运作进程 - 比如在提交表单的过程中刷新页面中断提交操作
- 极限法 - 尝试去接触到系统处理的极限所在 - 比如在文本处理的控件内尝试最大输入的可能性
- 取消法 - 测试系统能不能正确的处理用户的取消和删除操作 - 比如在一个手机APP打开某模块时,按下home键后,APP有没有正确处理?
- 暴力法 - 使用非常规操作,看看软件会不会发生崩溃或异常 - 比如测试手机输入键盘时,同时按下多个按键
- 逆向法 - 通过相反的思维来思考问题,软件能处理异常情况吗 - 比如我们通常都会关注一个系统的支付能不能正常工作,那么当遇到无效支付信息的处理呢?
3、探索性测试的益处
- 探索性测试可以帮助我们定位到隐藏比较深的问题 -常规测试没有覆盖到的深度,我们可以在探索性测试里去一探究竟
- 探索性测试可以为后续测试覆盖的延申提供思路 - 在探索性测试中我们可以发现常规测试忽视掉的细节,从而指导我们后续对测试用例库的维护
- 探索性测试可以加深测试人员对被测系统的了解 - 越探索越了解,越了解越想把他测个明白
4、探索性测试总结
- 探索性测试更像是对于常规测试的补充
- 探索性测试虽然自由但仍然存在主线,不可偏离主线
- 探索性测试是对于整个项目的思考和学习,是发现问题,可以参考的是软件测试中的反向思维
二、软件测试的分类
1、测试设计依据
- 黑盒: 只关注输入输出,不考虑内部结构(如代码、设计)。基于需求规格说明书。
- 白盒: 基于软件内部结构(如代码、设计)设计测试用例。需要了解实现细节。
- 灰盒: 介于黑盒与白盒之间。通常基于有限了解的内部结构(如接口定义、架构图)来设计测试,但执行时仍从外部观察行为。常用于集成测试、接口测试。
2、 测试范围与层次 (测试级别)
- 单元: 测试最小的可测试单元(通常是一个函数、方法、类)。属于白盒范畴。
- 集成: 测试多个单元/模块/组件组合在一起后的交互。可以是灰盒或黑盒。
- 接口: 特指测试不同系统、模块或服务之间交互的接口(API, Web Service等)。是集成测试的一种重要形式,通常属于灰盒。
- 系统: 测试整个集成完成的软件系统作为一个整体,验证其是否符合需求规格。属于黑盒范畴。
- 验收: 由客户或用户代表执行(或基于其需求执行),验证系统是否满足业务需求和合同要求,决定是否可交付/上线。属于黑盒范畴。
3、测试状态
- 动态: 在软件运行状态下执行测试(如执行测试用例、性能测试)。绝大多数功能和非功能测试属于此类。
- 静态: 在软件不运行状态下进行检查(如需求/设计文档评审、代码走查/审查、静态代码分析工具扫描)。目的是在早期发现缺陷。
4、测试执行方式
- 手工: 由测试人员手动执行测试步骤、观察结果、记录缺陷。
- 自动化: 使用工具或脚本自动执行测试用例、比较实际结果与预期结果、生成报告。常用于回归测试、性能测试、大量重复执行的测试。
5、测试策略
- 随机: 测试策略/方法。无预先设计的测试用例,测试人员凭经验或直觉随机输入数据和操作,旨在发现意外缺陷。
- 冒烟: 测试策略/方法。在主要新构建(Build)交付后执行的一套最基本、最核心功能的测试。目的是快速验证构建是否足够稳定,以进行后续更深入的测试(“冒烟测试”通不过,通常就不继续测了)。通常手工或自动化执行,属于系统测试级别的入口测试。
- 安全: 测试目标/特性。专门评估软件在抵御恶意攻击、保护数据和功能方面的能力。可以在多个测试级别(单元、集成、系统)进行,可以是黑盒、灰盒或白盒,常用自动化工具辅助。
- 探索性: 测试策略/方法。将测试设计、执行和学习结合在一起的手工测试方法。测试人员一边探索软件、一边设计测试、一边学习、一边调整策略,高度依赖测试人员的技能和经验。常用于需求不明确或快速迭代的场景。
- 回归: 测试目标/策略。在软件修改(修复缺陷、新增功能、环境变更)后,重新执行之前已通过的测试用例,以确保修改没有引入新的缺陷或破坏现有功能。是动态测试,可以在多个级别执行(单元回归、集成回归、系统回归),自动化是高效回归的关键。
- 阿尔法: 测试级别 (接近验收) 和 执行方式。由开发组织内部人员(非项目组成员,如QA、产品、UI/UX)在开发环境或模拟环境中进行的验收测试。通常是黑盒 + 手工。
- 贝塔: 测试级别 (验收) 和 执行方式。由最终用户或客户代表在真实环境中进行的验收测试。用户在实际使用场景下自由操作,提供反馈。通常是黑盒 + 手工。
三、软件的生命周期
开发阶段:立项-需求分析-概要设计-详细设计-编码-测试-交付
运维阶段:运维-废弃
注:软件测试需要在需求分析开始介入
四、测试工作流程
1、工作流程图

2、测试出口和入口
入口:定义了结束某个测试阶段必须满足的前提条件(如:代码冻结、环境就绪、测试用例评审通过、冒烟测试通过)。
出口:件测试过程中的质量闸门。它是一些列的标准(如:测试用例的通过率,遗留缺陷数量,时间因素等),只有当这些标准全部或主要部分被满足时,才可以结束当前测试阶段。
3、测试流程各阶段输出
| 需求分析 | 测试计划 | 测试设计 | 测试执行 | 测试报告 |
| 测试点 | 测试计划说明书 | 测试用例 | 测试结果和BUG | 测试报告 |
软件测试基础学习:探索性测试与流程

被折叠的 条评论
为什么被折叠?



