探索式测试

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
能观察到软件能生产任何一个输出,直到自己可以放心断言已经到达了每个 地方,看了每样东西,完成了所有的收集任务。
• 长路径测试法:到达目的地之前尽量多地在应用程序中穿行,选择最长
的路径,把那个埋在应用程序最深处的界面作为测试目标。甚至可以在到达 目的地后再使用收藏家测试法。
• 超模测试法:测试软件的界面 • 测一送一测试法:只测试同时运行同一程序多个拷贝的情况 • 苏格兰酒吧测试法:特别适用于大规模的复杂应用程序。要找到用户组
非法输入
• 非法输入
• 输入筛选器/过滤器
• 开发人员是否实现了该功能 • 是否可以绕过屏蔽器
• 输入检查
• 抓住显示的错误信息
• 异常代码处理
• 抓住显示的错误信息 • 反复测试同一段函数
• 同1个输入值 • 不同的输入值
使用输出指导输入
• 合法输出
• 特别关注第一次输入时的输出 • 尝试寻找和改变那些被保存起来的输出结果
商业区的测试
• 指南针测试法:阅读用户手册,并严格遵照手册的建议执行操作,不仅
可以验证软件确实实现了手册所描述的各种特性,同时也验证了用户手册的 准确性 • 博客测试法:遵循第三方的建议来测试 • 专家测试法:根据抱怨者来创建测试用例 • 竞争对手测试法:遵循专家或博客为竞争对手们提供的建议来测试
合法输入
• 非常规输入
• 与Shift,Ctrl、Alt、Esc按键组合的字符 • 特殊字符、特殊字符集、各国语言 • 平台特殊字符
• OS、编程语言、浏览器、保留字符
• 常规输入
• • • •
Hale Waihona Puke Baidu
正常值 不输入任何内容 NULL 默认输入
• 清除默认值 • 默认值附近的值 • 修改默认值(增,删,改)
Bug的预防和检测
1. 缺陷预防 2. 缺陷检测
探索式测试与传统的手工测试最大的差别
• 没有测试脚本
• 自由测试?
探索式测试是一种自由的软件测试风格,强调测试人员同时展开测 试学习,测试设计,测试执行和测试结果评估等活动,以持续优化 测试工作。
探索式测试的指导方法
• 局部探索式测试法 • 全局探索式测试法
探索式测试
历史
• 测试专家Cem Kaner博士在1983年提出,受到了语境驱动测试学 派的支持。 • 2004-01由Cem Kaner、James Bach和Bret Pettichord合著的 《软件测试的经验与教训》对语境驱动测试和探索性测试做了精 要且深刻的论述。 • 微软测试架构师和Google测试总监James A. Whittaker(Cem Kaner曾经的同事),基于微软的工作经验,编写了《探索式软件 测试》一书。
• 反叛测试法:要求输入最不可能的数据,或者已知的恶意输入
• 逆向测试法 • 歹徒测试法 • 错序测试法
• 强迫症测试法:反复地执行同样的操作
混合探索式测试
• 场景测试 + 探索性测试 • 场景测试
• • • • • • 讲述用户故事 需求描述 演示产品功能 演示集成场景 描述设置和安装 描述警告和出错情形
• 非法输出
• 根据非法输入和之前产生错误信息的方法
输入、状态、代码路径、用户数据、执行环境
软件状态可以看成是用于描述软件记住过去发生的所有输入和输出 的一种方式。状态可以是临时的,也可以是长期保存。 例如:
• 拿起没有开通电话网的话筒,电话不会有什么反应 • 开通电话网,如果当前电话没有振铃,拿起话筒,电话就会发出拨号音 • 开通电话网,如果当前电话在振铃,电话就会被接通 状态:电话网的开通与否和电话机是否在振铃
• 用户的隐私问题
• 用户个人识别信息数据被盗的风险
输入、状态、代码路径、用户数据、执行 环境
• 当软件安装到一个崭新的且它从来没见过的环境中是,可能会失 效。环境本身就算是一种输入源。 • 运行环境非常关键,同时又很难测试
全局探索性测试
• 探索式测试有以下几个目标:
• 理解应用程序如何工作,它的接口看起来怎么样,它实现了哪些功能 • 强迫软件展示其全部能力 • 找到缺陷
• 清晨测试法
商业区的测试
• 遍历测试法:测试中只检查哪些明显的东西。通常是选择1个目标,然后
用可以发现最短路径来访问目标包含的对象
指南针测试法、卖点测试法、地标测试法、极限测试法、快递测试法、深夜测 试法、遍历测试法
历史区测试法
• 恶邻测试法:一旦确定了某个代码区域缺陷很多,建议对邻近功能使用遍
• 混合探索式测试技术
局部探索式测试法
• 测试人员不需要知道很多信息就可以完成测试任务
• 重点是把测试经验、专业知识、软件在操作环境下如何构建和运
行的知识结合在一起,使我们做出正确决定
• 关注点:输入、状态、代码路径、用户数据、执行环境
输入、状态、代码路径、用户数据、执行环境
• 接收输入、存储数据、进行计算、产生输出 • 合法输入、非法输入、使用输出指导输入
标的前后顺序)
• 极限测试法:向软件提出很多难以回答的问题。如:用户能一次订购200
件商品吗? • 找麻烦测试法:要求测试人员故意设置各种障碍来看待软件如何应对。
商业区的测试
• 快递测试法:测试人员必须专注于数据。应该确认那些被存储起来的输入
数据并“跟随”它们走遍软件。
• 深夜测试法:测试软件的启动和脚本
历测试法进行测试,以此来验证哪些修复已知缺陷的代码没有引入新的缺陷
• 博物馆测试法:测试人员应该找出那些遗留代码和老的可执行文件,并
确保它们在测试中受到和新代码同样的待遇。
• 上一版测试法:如果产品对先前版本进行了更新,必须运行先前版本上
支持的所有厂家和测试用例,这样可以验证用户已经熟悉的功能在新产品上 依然可行;如果是重新实现或者删除了一些功能,应该仔细检查那些在新版 本中无法再运行的测试用例
这些状态和拿起话筒这个动作结合起来决定了产生什么样的输出。
状态测试的建议
• 使用状态信息来帮助寻找相关的输入
• 如果两个或者更多个输入在某种程度上是相关联的,那么它们应该放在 一起测试。
• 使用状态信息来辨识重要的输入序列
• 当一个输入导致状态信息被更新是,紧接着再多次使用同样的输入会导 致一连串状态的变化。如果状态变化在某种方式上被累加起来,就必须 考虑是否会发生溢出。
输入、状态、代码路径、用户数据、执行 环境
• 一连串的代码语句构成了一个代码路径,起始于软件开始运行的 语句,终止于一条特定的语句。所以测试人员必须明确知道程序 有哪些分支,尽量覆盖所有分支
输入、状态、代码路径、用户数据、执行 环境
• 真实用户的数据通常包含测试人员不了解的很多相互关系和结构, 而且测试人员往往也无法推测真实数据中可能会有什么样的关系 和结构,这种情况往往会导致软件在测试环境中运行正常,但是 一旦真实的用户数据,软件就会出问题。
漫游测试
• 特性一般会相互依赖,单独测试某个特性可能无法发现多个特性交集 的缺陷 • 使用游客来比喻测试的时候,就不需要进行特性的划分了
• 游客选择多个景点:把应用程序的多个特性和功能以新的方式组合起来
• 旅游指南手册通常把目的地划分成各种区域
• • • •
商业区:在这里完成实际业务,包含用户所要使用的软件特性和功能。 历史区:从以前版本留下代码,以及那些曾经出现较多缺陷的特性和性能 旅游区:有些特性和功能对新用户非常有新引力,然而老用户不再使用 娱乐区:帮助测试人员测试那些辅助特性,并确保主要,辅助特性能够实用而 又有意义的结合在一起 • 旅馆去:经常被忽略的或者在测试计划中较少描述的次要及辅助功能 • 破旧区:输入恶意数据以破坏软件和做一些通常有害的事情
娱乐区测试
• 配角测试法:专注于紧邻主要功能的的辅助功能。 • 深巷测试法:指的是最不可能被用到或是那些最不吸引用户的特性
• 混合测试法:把最流行和最不流行的特性放在一起混着测
• 通宵测试法:永远不关闭程序,连续不断的使用某些特性
旅游区测试
• 收藏家测试法:收集软件的输出,收集得越多越好。测试人员应该确保
探索式测试是一种自由的软件测试风格,强调测试 人员同时展开测试学习,测试设计,测试执行和测 试结果评估等活动,以持续优化测试工作。
Thank You!
商业区的测试
• 卖点测试法:找到最能卖钱的特性,也就是跟着钱走。执行测试的时候按
照产品演示的步骤自己执行一遍,由于代码在修复缺陷和新增功能时做了修 改,很有可能发现缺陷。 • 质疑测试法:测试过程中不断发出质疑。对于创建那些最终用户非常在 意的测试用例非常有用
商业区的测试
• 地标测试法:先选择地标,在地标间跳跃(按照顺序,新增地标,改变地
通过场景操作引入变化
• 插入步骤
• 增加更多数据 • 使用附加输入 • 访问新的界面
• • • • •
删除步骤 替换步骤 重复步骤 替换数据 替换环境
• • • •
替换硬件 替换容器 替换版本 修改本地设置
通过漫游测试引入变化
• • • • • • • • • • •
卖点测试法 地标测试法 深巷测试法 强迫症测试法 通宵测试法 破坏测试法 收藏家测试法 超模测试法 配角测试法 取消测试法 混票测试法
并参与他们的讨论,读产业博客,花大量时间深入了解待测的应用,才能找 到它们。
旅馆区测试
• 取消测试法:启动操作然后停止它 • 懒汉测试法:指测试人员做尽量少的实际工作,意味着接收所有 默认值,保持输入字段继续为空,等等
破旧区测试
• 破坏者
• 强迫软件做一些操作 • 掌握软件成功完成操作必须使用的资源 • 在不同程度上移除那些资源或限制使用那些资源
相关文档
最新文档