聊聊探索性测试

探索性测试定义及来源:​

特意度娘了一下,探索性测试的定义:

探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。

探索性测试最早提出者,还是测试专家 Cem Kaner 博士在 1983 年提出的,并受到当时语境驱动的软件测试学派的支持。

对于测试工作者来说,你首先根据软件功能描述来设计最初的测试用例,然后执行测试;测试执行后,可能你得到的输出和预期输出不完全一致,于是你会猜测这种不一致是否可能是软件的缺陷造成的;为了验证你的想法,你会根据错误输出设计新的测试用例,然后采用不同的输入再次检查软件的输出。

在一次测试中,你可能会经过几轮这样的猜测和验证,进行反复“探索”,最终确定了一个软件的缺陷。而这个过程中,你会发现,识别缺陷的思路和测试用例的设计,并没有出现在最初的测试设计和测试用例文档中,而是以很快的速度在你的脑海中以及实际测试执行和验证中快速迭代。

探索性测试是如何开展的?

探索性测试是一种灵活而动态的测试方法,它强调测试人员在执行测试的同时进行学习、设计测试案例以及执行测试。这种方法不依赖于详尽的预先编写好的测试用例,而是依靠测试者的直觉、经验和对系统的理解来发现潜在的问题。以下是探索性测试开展的主要步骤和策略:

  1. 理解需求和背景:

    • 开始前,测试人员需深入理解软件的业务需求、用户场景以及非功能性需求,这有助于构建测试思路。

  2. 设定测试目标:

    • 明确本次探索性测试的目标,比如要验证的功能点、预期探索的范围或想要发现的特定类型缺陷。

  3. 设计测试章程:

    • 制定测试章程,这是一个简短的测试任务说明,包括测试的重点区域、时间限制和探索的目标。章程帮助聚焦测试活动并提供探索的方向。

  4. 实施测试:

    • 测试人员根据章程开始探索,边学边测,不断调整测试策略。可能会采用不同的测试技术,如遍历测试法快速检查基本功能,反叛测试法输入极端或恶意数据,以及基于场景的探索等。

  5. 记录与反馈:

    • 实时记录测试过程中发现的问题、使用的测试数据、观察到的现象及任何相关的思考。这不仅有助于后续分析,也是团队间知识共享的基础。

  6. 迭代与优化:

    • 根据测试执行的结果和反馈,不断调整测试策略和方向。探索性测试鼓励快速迭代,基于新发现的信息优化测试计划。

  7. 利用工具辅助:

    • 可以利用思维导图工具(如Xmind)来组织思路、记录测试想法或创建测试场景,帮助更好地规划和回顾测试活动。

  8. 经验总结与分享:

    • 完成测试后,总结成功的测试模式、遇到的问题和学到的经验教训,通过培训或文档形式分享给团队成员,提升整个团队的测试能力。

探索性测试重视测试人员的主动性和创造性,是一种适应性强、能够快速适应变化的测试方法,尤其适合于时间紧迫或需求频繁变更的项目环境。

探索性测试优点和不足之处:

探索性测试的优点:

  1. 灵活性和即时性:探索性测试允许测试人员根据实时的发现和理解立即调整测试策略,迅速应对需求变化或新发现的问题,特别适合敏捷开发环境。

  2. 提高发现缺陷的能力:由于其非线性和创新性,测试人员可能发现那些按照传统脚本测试难以捕捉到的缺陷,尤其是边缘情况和交互问题。

  3. 促进学习和理解:测试过程中同步进行的学习,加深了测试人员对软件系统的理解,有助于发现更深层次的问题。

  4. 减少前期准备时间:相比传统测试需要事先设计大量测试用例,探索性测试可以更快启动,节省了宝贵的项目时间。

  5. 鼓励创新和创造力:测试人员被赋予更多自主权,可以自由发挥创意,尝试新颖的测试方法,有利于激发潜在的测试思路。

  6. 增强测试覆盖率:通过即兴的测试路径和策略,可以覆盖到脚本化测试可能忽略的场景,提高整体的测试覆盖面。

不足之处:

  1. 依赖测试人员技能:探索性测试的效果很大程度上取决于测试人员的经验、技能和直觉,缺乏经验的测试人员可能难以高效执行。

  2. 可追溯性和重复性问题:由于测试活动是非脚本化的,复现发现的问题或进行回归测试可能较为困难,影响缺陷管理的效率。

  3. 测试结果的主观性:测试结果可能受到测试人员个人判断的影响,缺乏标准化评估可能导致测试结果的不一致性。

  4. 测试文档不足:相较于传统测试详尽的测试计划和用例文档,探索性测试可能缺乏充分的书面记录,不利于知识传递和团队协作。

  5. 测试深度与广度的平衡:在有限的时间内,追求测试的广度可能牺牲了对某些领域的深度测试,反之亦然。

综上所述,探索性测试是一种强大的工具,特别是在快速迭代和高度不确定性的项目中,但它要求测试团队具备高度的专业能力和良好的自我管理。为了最大化其效益,通常建议结合其他测试方法,如自动化测试和结构化测试,以形成互补。

探索性测试常见的测试场景有哪些?

  1. 用户登录与权限验证:

    • 尝试不同类型的用户账户登录,包括正常用户、管理员、未激活账户、已锁定账户等。

    • 输入无效凭据,如错误的密码、不存在的用户名,以及特殊字符的使用。

    • 登录后尝试访问不同权限级别的功能,测试权限控制是否准确。

  2. 功能交互与异常流:

    • 在进行某个功能操作时,中途打断或切换到其他功能,检查数据一致性与状态恢复。

    • 强制测试法,如重复提交表单、快速连续点击按钮,测试系统稳定性。

    • 删除或修改关键数据后,观察系统反应及错误处理机制。

  3. 边界条件与极限值:

    • 输入数据的边界值测试,如文本框的最大最小长度、数值字段的上下限。

    • 大量数据的输入,测试性能和处理能力。

    • 时间和日期的边界测试,如选择最早和最晚的有效日期。

  4. 兼容性与平台多样性:

    • 在不同浏览器、操作系统、设备或屏幕尺寸上测试应用的表现。

    • 网络条件变化下的应用响应,如慢网络、断网重连情况。

  5. 多用户并发与同步:

    • 多个用户同时进行相同或相关操作,测试数据同步与并发控制。

    • 模拟高负载情况,检查系统处理能力和稳定性。

  6. 国际化与本地化:

    • 测试不同语言环境下界面显示和文本翻译的准确性。

    • 输入非英文字符,测试对多语言字符的支持。

  7. 安全性测试:

    • 尝试SQL注入、跨站脚本(XSS)等常见安全漏洞。

    • 测试未授权访问限制,尝试绕过认证机制。

  8. 基于场景的探索:

    • 重现用户报告的问题场景,寻找复现路径。

    • 模拟真实用户使用路径,包括正常与异常流程。

  9. 性能与压力测试:

    • 逐步增加用户负载,观察系统响应时间和资源使用情况。

    • 在高并发场景下,测试系统的稳定性和恢复能力。

每个场景都鼓励测试者利用自己的判断和创造力,灵活地探索应用的各个方面,以发现可能被标准测试遗漏的问题。

网上了解一下,这几篇文章感觉不错,值得浏览:

探索性测试01什么是探索性测试:

https://blog.csdn.net/wxt_hillwill/article/details/115910345

什么是探索性测试?探索性测试有哪些方法?

https://mp.weixin.qq.com/s/vgxQHmdKUTq1xRvzZ19IpQ

2023 年 20 种最佳探索性测试工具

https://mp.weixin.qq.com/s/jfZLUeq5X79fme3Z4E3_mA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/727099.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用opencv合并两个图像

本节的目的 linear blending(线性混合)使用**addWeighted()**来添加两个图像 原理 (其实我也没太懂,留个坑,感觉本科的时候线代没学好。不对,我本科就没学线代。) 源码分析 源码链接 #include "opencv2/imgc…

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建 软件版本一、软件安装1、Python安装2、Pycharm安装3、pyside6或pyqt6安装①安装pyside6②安装PyQt6和pyqt6-tools二、Pycharm项目配置1、插件安装2、新建项目以及环境配置3、包管理安装三、在Pycharm中配置PySide61、pyside6 Qt…

MySQL功能测试-之应用工程

MySQL功能测试-之应用工程 前言pom.xmlapplication.yml 文件common.vo 包ResultVO config 包properties 包DruidConfigPropertyDruidMonitorProperty AutoFillMetaObjectHandlerDruidConfigFluxConfigurationMyBatisPlusConfig controller 包ClientControllerDruidControllerWe…

人工智能产品经理,行业巨头争夺的稀缺人才

前言 在当今这个由数据驱动的时代,人工智能(AI)正迅速成为推动各行各业创新的核心力量。随着行业巨头纷纷布局人工智能领域,对于专业人才的需求也日益增长。特别是人工智能产品经理这一岗位,缺口高达6.8万&#xff0c…

[机器学习算法] Q学习

Q学习(Q-Learning)是一种基于值的强化学习算法,用于在给定状态下选择动作,以最大化累积奖励。它通过不断更新一个称为Q表(Q-table)的表来学习动作的价值。 一、理解基本概念 状态 (State, S) 这是环境的…

戏剧之家杂志戏剧之家杂志社戏剧之家编辑部2024年第14期目录

文艺评论 南戏瓯剧跨文化传播研究 陈晓东;高阳;许赛梦; 3-7 论互联网时代的戏剧传播与批评——以西法大剧社和南山剧社为例 邬慧敏; 8-10 “左手荒诞,右手温情”——《西西弗神话》在戏剧《第七天》中的接受探究 赵稳稳; 11-13 戏剧研讨《戏剧之家》投稿…

计算机毕业设计师hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

流程: 1.Python爬虫采集中华健康网约10万医生数据,最终存入mysql数据库; 2.使用pandasnumpy/hadoopmapreduce对mysql中的医生数据进行数据分析,使用高德地图解析地理位置,并将结果转入.csv文件同时上传到hdfs文件系统&…

Github生成Personal access tokens及在git中使用

目录 生成Token 使用Token-手工修改 使用Token-自动 生成Token 登录GitHub,在GitHub右上角点击个人资料头像,点击Settings → Developer Settings → Personal access tokens (classic)。 在界面上选择点击【Generate new token】,填写如…

西米支付:【风控升级】同一商户集中交易,将会限制正常用卡

支付公司风控策略再升级!近日,有某支付公司代理透漏,客户反馈机器突然不能刷卡了,换卡也无法交易,交易均提示06-超出商户限额,然而该款机器刷卡限额为单日30万,单月300万,客户并未触…

ctr/cvr预估之FM模型

ctr/cvr预估之FM模型 在数字化时代,广告和推荐系统的质量直接影响着企业的营销成效和用户体验。点击率(CTR)和转化率(CVR)预估作为这些系统的核心组件,其准确性至关重要。传统的机器学习方法,如…

怎么把答案去掉打印?超详细步骤告诉你!

在数字化教育日益普及的今天,我们时常需要在电子试卷和纸质试卷之间进行转换。然而,许多时候我们并不需要答案部分,这就需要我们掌握一些工具来去除答案,以便打印出纯净的试卷。本文将为您详细介绍如何使用试卷星、拍试卷以及WPS …

如何避免群发引起反感?

微信群发信息引起反感主要是因为缺乏情感,尽管最初微信群发旨在传递有价值信息,但由于滥用,现在人们对其印象非常负面。但是,还是有办法挽救的! 群发消息时按照这3个标准发,可以避免被反感。 1、短信群发目…

SDK编译IO Domain电压选择

开源鸿蒙硬件方案领跑者 触觉智能 本文适用于在Purple Pi OH开发板进行分区镜像烧录。触觉智能的Purple Pi OH鸿蒙开源主板,是华为Laval官方社区主荐的一款鸿蒙开发主板。 该主板主要针对学生党,极客,工程师,极大降低了开源鸿蒙…

MEMS六轴陀螺仪工作原理介绍

MEMS(微机电系统)六轴陀螺仪主要包括三轴陀螺仪和三轴加速度计,以下是其工作原理的简要介绍: 三轴陀螺仪工作原理: 陀螺仪利用科里奥利力原理来测量角速度。它通常有一个可振动的质量…

VScode开发ARM环境搭建

1. vscode安装 直接访问官网: Visual Studio Code - Code Editing. Redefined 2. 安装插件 2.1. 安装Embedded IDE 2.2. 安装Cortex-debug 3. 工程初始化 3.1. 导入现有工程(推荐) 3.2. 或可创建新的工程 3.2.1. 选择Cortex-M项目 指定项目名称&…

一文简述AI自动化漏洞修复实践

2024年,人工智能(AI)技术正以其前所未有的速度和影响力,革新着网络安全领域。AI在自动化漏洞修复方面的应用,标志着我们迈入了一个全新的网络安全时代。近日,在中国电信组织的一场技术交流会上,…

【React】Axios请求头注入token

业务背景: Token作为用户的数据标识,在接口层面起到了接口权限控制的作用,也就是说后端有很多接口都需要通过查看当前请求头信息中是否含有token数据,来决定是否正常返回数据 // 添加请求拦截器 request.interceptors.request.use(config …

多模块开发

简介 Git 通过子模块来解决复用模块的问题。 submodule允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。而subtree可以将子模块合并到主模块由主模块完全管理。 git subModule Git地址&#…

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07 1. 数据重复1.1 数据传递语义1.2 幂等性1.2.1 如何开启幂等性1.2.2 同一个消息,多个分区都会存在吗? 1.3 事务1.3.1 Kafka 事务原理1.3.2 Kafka事务的作用和意义作用具体应用场景 2. 数据有序3. 数…

Docker 部署项目,真的太雅了~

大家好,我是南城余! 最近在找工作,正好手里有台服务器,之前项目上线用的宝塔部署项目上线,在公司实习了一年后,发现如今项目部署都使用的是容器化部署方案,也就是类似于和 Docker 一样的部署方案…