目录

Web 测试

5、探索式软件测试概述

探索式软件测试的概念

什么是探索式软件测试

探索式测试是一种测试思维技术。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略

不同测试对比

  • 手工测试:手工测试通常是指完全按照预先设计好的步骤一步一步人工测试直到验证了所要验证的功能,过程单调没有思考变通。
  • 自动化测试:自动化测试就是把手工测试的每个步骤有测试自动化工具来完成。好处是不用人做了,缺点是测试过程中仍然没有思考没有变通。
  • 随机测试:没有预先设计好的步骤,也没有明确目标,也没有策略

探索式测试的方法

探索式测试的方法

  • 探索式测试的缺点是:测试人员可能在测试过程中没有重点,有些模块可能会重复测试,而有些会遗漏掉。
  • 这时必要的指导方法显得尤为重要,在指导方法的引导下,我们测试人员在测试过程中应时刻明确到底要测什么,实现什么功能

探索式测试方法包括

  • 局部探索式测试法
  • 全局探索式测试法
  • 混合探索式测试

局部探索式测试

局部探索式测试法:辅助测试人员在执行测试中即时做出决定,注重指导在测试中如何做抉择、应注意哪些测试细节的方法。

局部探索式测试在测试过程中应注意的内容

  • 用户输入
  • 软件状态
  • 代码路径
  • 用户数据
  • 运行环境

用户输入

用户输入:由应用程序外部引发的,并导致应用程序执行某些代码

测试用户输入应注意的事项

  • 合法输入和非法输入
  • 输入筛选器
  • 输入检查
  • 异常代码处理
  • 非常规输入
  • 默认输入和用户提供的输入
  • 使用输出来指导输入

软件状态

软件状态:软件的状态是状态空间中的一个点,是由所有内部数据结构的取值来唯一确定的一个点。

输入会导致应用程序执行某些代码,相关信息会被存储在软件的内部数据结构中,从而改变被测软件的状态。如果再进行相同输入,由于软件状态不同,输出结果也会不同

如何测试软件状态
  • 测试软件是正确更新了它自身的当前状态

  • 测试软件当前状态接收某些输入时是否发生异常

  • 软件是否进入了不应该有的状态

  • 测试人员应根据自己的时间和预算,结合考虑最终用户可以承担怎样的风险,来确定测试尽可能多的状态

测试软件状态方法:

  • 使用状态信息帮助寻找输入,观察状态对结果有什么影响,得到相关输入和状态信息后,就可以通过某种方式确定需要测试那些组合
  • 使用状态信息来识别重要的输入序列,当一个输入导致状态发生变化时,接着多次使用同样的输入导致一连串的状态变化,观察一连串状态变化会不会导致溢出
  • 代码路径:一条代码路径就是一连串代码语句,它起始于软件开始运行的语句,终止于一条特定的语句,往往就是那条代表软件运行结束的语句。
  • 测试人员必须明确知道程序有哪些分支,尽量覆盖所有分支
  • 用户数据:尽量用真实的用户数据测试,因为这些数据中包含测试人员不了解的很多相互关系和结构,有利于发现问题
  • 运行环境:即被测应用程序具体的用户环境,主要包括操作系统及当前的配置,任何可以影响被测试软件行为的因素都是运行环境的一部分,测试中都必须考虑

全局探索式测试

全局探索式测试法:用来设计整体测试计划和测试策略,帮助测试人员在全局方面所必须做出的各种决定,比如在考虑特性交互、数据流以及在应用程序的用户界面上如何选择不同路径完成某些实际功能时。

全局探索式测试叫做漫游测试,把我们测试对象,比喻成我们将要旅游的一个城市

旅游指南手册通常根据物理的界限把目的地划分成各种区域,有商业区、娱乐区、剧院区等等

对于软件测试人员来说,应该探索应用程序的运行路径,以不同的顺序执行许多特性,因此对旅游指南做了一些修改,将软件特性分成了相互重叠的"区域",分别为:商业区、历史区、旅游区、娱乐区、旅馆区和破旧区

商业区

商业区:就是软件包装盒上描述的那些特性,还包括市场商业活动中或者销售演示中的各种特性和实现这些特性的程序代码

商业区测试类型侧重于测试重要特性,并指导测试人员如何对执行这些特性的测试代码路径进行测试。包括以下测试方法:

  • 指南测试法:要求测试人员通过阅读用户手册并严格遵照手册的建议执行操作。如果手册描述了某个特性以及如何使用该特性时,测试人员要特意留心那些指令。其目的是尽量忠实地执行用户手册中描述的每个场景
  • 卖点测试法:按照销售人员给客户展示的场景进行测试,还要采用质疑测试法来想到用户可能问道的问题
  • 地标测试法:将指南测试法及卖点测试法中的特性定义为一个地标,然后随机打乱这些地标的顺序,从一个地标执行到另一个地标来探索应用程序,直到访问了列表中的所有地标
  • 极限测试法:极限测试法的宗旨是,挑战软件,向他提困难的问题
  • 快递测试法:专注于数据,数据输入后,在所有用到该数据的地方都能正确的展示和应用
  • 深夜测试法:软件测试人员有时应该刻意的关注在冷门时间段软件所做的附属工作,比如数据备份归档、维护监控任务的运行等等
  • 遍历测试法:通过选定一个目标,然后使用可以发现的最短路径来访问目标所包含的对象

历史区

软件中的"历史区"指的是那些遗留代码,或是前几个版本就存在的软件特性,也指那些用于修复已知缺陷的代码,以下所说的各种测试历史区的测试方法主要针对老的功能和缺陷修复代码:

  • 恶邻测试法:缺陷通常扎堆出现的地方
  • 博物馆测试法:针对软件的遗留代码和老的可执行文件进行验证,确认是否出现功能失效
  • 上一版测试法:必须运行先行版本上支持的所有场景和测试用例

娱乐区

娱乐区的测试法帮助测试人员测试那些辅助特性,而不是主线特性,并确保这两种特性能够实用而又有意义结合在一起。主要包括以下测试法:

  • 配角测试法:专注于紧邻主要功能的辅助功能
  • 深巷测试法:最不可能被用到的或者是那些最不吸引用户的特性,使用列表中排在最下面的几项特性
  • 通宵测试法:让程序一直保持运行而不关闭它

旅游区

旅游区:许多城市设有只有旅游者才去的区域,本地人会避开这些拥挤的地方。软件也类似,有些特性和功能对新用户而言非常有吸引力,然而老用户不再使用他们

旅游区测试主要包括以下测试法:

  • 收藏家测试法:收集软件可能生成的任何一个输出
  • 长路径测试法:指导思想是到达目的地之前尽量多地在应用程序中穿行
  • 超模测试法:只是测试界面
  • 测一送一测试法:测试同时运行同一应用程序多个拷贝的情况
  • 苏格兰酒吧测试法:就像一些隐藏在各餐馆、社区的热闹酒吧一样。需要测试人员找到用户关注的一些热点功能,进行测试

旅馆区

旅馆区:任何目的地城市都需要为旅游者提供晚上休息的地方。对于软件来说,就是当软件"休息"或者不再使用时,其实际还在忙碌工作的功能,或者是很少由用户干预的功能

旅馆区测试类型是指软件测试人员放过那些主要的和最受欢迎的功能,而去测试一些经常被忽视的或者在测试计划中较少描述的次要及辅助功能。主要包括以下测试法:

  • 取消测试法:启动操作后再停止它,确认应用程序还能正常工作
  • 懒汉测试法:接收所有默认值,做尽量少的实际工作

破旧区

破旧区:破旧区是那些不吃香的地方,这些地方有很多违法乱纪之事的人,尽管它们也吸引了某些旅客,但是最好还是少去为妙。可是破旧区对测试人员来说是必须要去的,因为这里可能存在非常令人讨厌的漏洞

破旧区测试类型是指输入恶意数据以破坏软件和做一些通常有害的事情。主要包括以下测试法:

  • 破坏测试法:强迫软件做一些操作,在不同程度上移除或限制软件完成操作必须使用的资源
  • 反叛测试法:输入最不可能的数据或已知的恶意输入
  • 强迫症测试法:重复执行同样的操作

混合探索式测试

混合探索式测试法:把探索式测试的思维方法与传统的基于场景的测试方法结合起来。这种混合技术充分利用了探索式测试的指导思想,它打破了脚本测试法所固有的那种死板,提供了更多的灵活性

混合探索式测试主要包括两种测试技术:

  • 场景操作
  • 漫游测试

通过场景操作引入变化

  • 插入步骤
  • 删除步骤
  • 替换步骤
  • 重复步骤
  • 替换数据
  • 替换环境

通过漫游测试引入变化

  • 卖点测试法:任何不在场景中的主要功能都能轻易地加入到场景中吗?如果是,加入一个或多个这样的新功能。许多用户都是通过学习某个功能,掌握它,然后随着对应用程序的熟悉而逐渐转移到新功能上。卖点测试法技术模拟了该使用模式
  • 地标测试法:从场景中选取特定的功能,然后随机打乱这些地标的顺序,这样得到的场景就和原始场景不同了
  • 极限测试法:挑战软件,检查并修改场景,向它提困难的问题
  • 深巷测试法:卖点测试法的一个变种,两者都建议我们为场景注入新的功能,但是深巷测试法建议的是使用最不可能用到的或最没用的功能
  • 强迫症测试法:重复场景中的每个步骤两次或三次,可以按自己的喜好来做
  • 通宵测试法:当测试场景可以被自动化或者使用录像回放时,最适合使用的是通宵测试法,只需要不断重复运行场景而不需退出被测应用程序
  • 破坏测试法:场景是破坏活动的绝好开始,场景测试时,在资源调用处进行破坏活动
  • 收藏家测试法:执行场景和衍生场景使用文档记录下所观测到的每个输出,甚至可以根据产生的输出数量来给场景打分
  • 超模测试法:运行场景时只关注界面
  • 配角测试法:测试人员不是执行脚本的功能,而是找到最近的邻居功能来执行。记住,总是选择那些在某种意义上"最邻近的"选择
  • 取消测试法:不但充分利用了取消按钮(运行场景时看见就点击),而且执行了启动和停止功能
  • 混票测试法:专门针对基于场景的测试,概念是有些人旅游开始时没有交钱报名,逐渐加入进来,融入旅游人群并假装一直在那里。作为测试人员我们能这么做是因为两个场景都经过应用程序的同一部分,我们会跟随一个场景到那里,然后跟随另外的场景离开
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
kfepiza26 分钟前
HttpSessionListener 的用法笔记250417
java·笔记·servlet·tomcat
铭阳(●´∇`●)1 小时前
Python内置函数---anext()
笔记·python·学习
路上^_^2 小时前
CSS核心笔记001
前端·css·笔记
十年之少2 小时前
网络请求——微信小程序学习笔记
笔记·学习·微信小程序
郭涤生3 小时前
QML 信号与槽
c++·笔记·qt
cwtlw3 小时前
PhotoShop学习10
笔记·学习·其他·photoshop
跨境卫士-小卓3 小时前
50%时效提升!中巴新航线如何重构ebay跨境电商物流成本?
经验分享·重构
梦の3 小时前
C++Cherno 学习笔记day20 [81]-[85] 可视化基准测试、单例模式、小字符串优化sso、跟踪内存分配、左值与右值
c++·笔记·学习
BIOS菜鸟工程师4 小时前
UEFI Spec 学习笔记---12 - Protocols —CONSOLE SUPPORT(一)
人工智能·笔记·学习
MrsBaek4 小时前
前端笔记-JavaScript部分(中)
前端·javascript·笔记