全局探索式测试

探索式测试目标

1、理解应用程序如何工作,它的接口看起来怎样?它实现了哪些功能?
2、强迫软件展现其全部能力
3、找到缺陷
漫游测试将软件特性分成了互相重叠的“区域”,分别是商业区、历史区、旅游区、娱乐区、旅馆区和破旧区。

商业区测试类型

商业区测试类型侧重于测试软件宣传的商业特性。

指南测试法

遵守用户手册,严格按照手册的建议执行操作。并特别留心特性和描述以及是否实现了该特性。——既可以验证软件确实实现了手册所描述的各种特性,也可以验证用户手册的准确性,即使bug结果是需要更新用户手册,这也是在服务用户。
这一阶段需要测试人员按照用户的使用方式把软件特性串起来测试,同时还要按照用户的真实使用方式相互交互。
也可以根据第三方的建议的测试方法来测试,或者根据怒气冲冲的评论者的抱怨来建立测试用例。

卖点测试法

如果确定某些某些特性能够吸引用户,那就是软件的卖点,软件就能从那上面赚钱。测试人员应该找到那些最能卖钱的特性,也就是说他们跟着卖点走,也是跟着钱走。这些卖点和金钱自然直接和销售人员相关。销售人员在展示时,会创建出一些新的用户场景,这些场景并非来自于任何专门需求或用户经历,但销售为了使软件看起来光彩夺目,会凭空想象。
测试人员应该设想有一个爱问问题的客户,不断打断演示,提出一些苛刻的问题,“如果这样做,会怎样?”,这些假设会对创建测试用例很关键。
多去参加销售人员的发布会,可以发现更多的测试用例来源。

地标测试法

找到地标,才不会迷失。
软件测试中,通过指南测试法或卖点测试法,可以确定那些关键的软件特性,作为软件测试的地标。
找到地标以后,地标的前后顺序,然后从一个地标执行到另一个地标来探索应用程序,直到访问了所有的地标。在这一过程中,需要纪录已经使用过哪些地标,并创建一个地标覆盖图来标识工作的进展。

极限测试法

极限测试法采用的途径是向软件提出很多难以回答的问题。比如:
- 如何使软件发挥到最大程度?
- 哪些输入和数据会消耗软件最多的运算能力?
- 哪些那些输入可能欺骗它的错误检验例程?
- 如果软件用于产生某些特定输出时,使用哪些输入和内部数据可以不断挑战软件的这种能力?

例子:网上购物系统测试
- 用户能一下子订购200件商品吗?
- 付账的时候,用户可以不断更换想要使用的信用卡吗?
- 如果用户在数据表单中每个字段都填错了,会出现什么情况?
- 用户选出最贵的商品购买,然后马上退货。
总之,所做的一切不一定要有什么实际意义,这么做的原因时:软件允许这么做。毕竟,我们知道有时候有用户也曾经这么做过。

快递测试法

包裹从托运开始,经过上门取货,转运到各地分发中心,然后派送到最终目的地。
数据类似于包裹,从输入开始生命周期,先被存储在内部变量和数据结构中;然后在计算中被频繁操作、修改、使用;最后作为输出被“递送”给用户或目的地。
这个测试中,要求测试人员找到每个跟数据有接触的软件特性,“跟踪”数据走遍软件,参与数据生命周期的每个阶段。

深夜测试法

深夜过后,人们休息了,软件的卖点特性代码将不再运行,但是软件还有其他应用需要工作:维护任务,数据归档,文件备份,等等。这些特性也需要执行。
每天早上开始工作时,需要测试软件的启动过程和脚本是否顺利执行。

输入

输入指的是由环境产生的一种刺激,该刺激导致被测试的应用程序有所响应。
比如:用户单击一个按钮属于一种输入,但是在文本框中键入文本就不算输入,只有文本被实际传递给应用程序,应用程序有机会处理时,才算得上是一种输入。输入必须导致软件执行某些代码,并以某种方式做出反应。
在选择输入集合时,需要考虑两个因素:
1.软件分别处理两个或多个原子输入时没有问题,但是当这些输入组合起来时,可能会报错。如分别查找所有的CD文件、查找所有视频文件没有问题,但是查找所有的视频+CD文件时可能就会出错。
2.输入值的组合可能导致问题。输入a和输入b没有问题,但是输入aa,ab,bb,ba可能有问题。

默认输入

看到开发设置的默认值后,首要任务就是把默认值删除,留下空白的字段,或者改为默认值附近的其他值,尝试一下。
一个字段如果被预先设置好默认值,便和不含默认值的字段在程序处理时往往有很大 的不同。

二次输入

当软件第一次针对输入产生某种响应时,通常处于一种默认的情形,很多内部的变量和数据结构刚刚被初始化,输出结果第一次被生成。当输出结果被第二次生成时,很多变量的值还是上一次运行时被设定的值。这意味着第二次测试的情况和第一次的完全不同。第一次我们测试的是软件处于一个未被初始化的状态下如何产生输出的,第二次我们测试的是软件处于一个被初始化过后的状态下如何产生输出的。

历史区测试

城市的历史区会有一些年代久远或者时曾经发生过重大历史时间的建筑。
软件中的历史区,则指的是那些遗留代码,或是在前几个版本就已经存在的软件特性,也指那些用于修复已知缺陷的代码。最后一点尤为重要。因为对于软件缺陷来说,历史经常会重演,所以重新测试那些曾经含有很多缺陷的代码特别重要。

恶邻测试法

每个值得旅游的城市都有很不好的社区,旅游者通常会被告知应避免访问那里。软件也有这样的情况——那些缺陷横行的代码段。不同的是游客会试图避开这些区域,而测试人员需要在这里花尽量多的时间。
测试人员不可能提前预知哪些特性称得上是恶邻,随着测试的深入,发现和报告越来越多的缺陷后,就可以把缺陷数目同产品特性联系起来,从而发现恶邻。缺陷通常扎堆出现,一旦确定了某个代码区域缺陷很多,建议对临近功能使用遍历方式测试,以此来验证那些修复已知缺陷的代码没有引入新的缺陷。

博物馆测试法

软件中的古董指的是那些遗留代码,老代码或者接受重新修改,或者没做改动就放到新环境中运行,很容易发生失效的情况。测试人员应该找出那些遗留代码和老的执行文件,并确保它们在测试中受到和新代码一样的待遇。

上一版测试法

如果当前版本是对上一版本的更新,很重要的一点就是运行先前版本上支持的所有场景和用例测试,兼容老版本。

娱乐区测试法

文本处理器的商业区可以看成创建文件、输入正文文本、插入图表、表格和插入共鞥呢。而娱乐区则是页面布局、文本格式化、背景或模板修改等辅助特性。

配角测试法

当一个导游给你介绍某个著名建筑时,你的注意力可能被旁边的一个矮房子吸引了。
当销售正在讲解的时候,用户很容易被与讲解有关的其他的某些特性吸引了。
配角测试法鼓励测试人员专注于某些特定的特性,它们虽然不是用户使用的主要特性,但和那些主要的特性一桶出现在显示器上。越紧邻主要功能,越要给予足够的重视。

混合测试法

把最流行的和最不流行的特性放在一起混着测。
独立测试某个特性可能没有问题,但是当两个输入一起测试时,可能会有意想不到的结果。
如何设置混合特性组合:
1、关于输入:这两个特性会不会处理同一个输入?
2、关于输出:这两个特性功能是否在可见的用户界面上操作同一块区域?它们会产生同一个输出吗?
3、关于数据:这两个特性会操作共享的一些内部数据?是读取共享数据,还是修改共享数据?
当三个问题的回答都为“是”的时候,这两个功能就会相互交互,就需要放在一起测试。

通宵测试法

熬夜最考验人的身体素质,能坚持到最后吗?能熬过通宵吗?
通宵测试法就是要提出类似的问题:应用程序能坚持到最后吗?它能多长时间持续运行处理数据而不崩溃?
对软件来说这是很大的挑战,由于内存数据的不断积累和对内存变量持续读写(并多次重复读写),如果运行时间足够长,就可能出现问题。内存泄漏、数据毁坏、竞争条件等,凡此种种可能出现的情况都说明应该让测试运行足够长的时间。
由于关闭和打开应用程序会重置时间点,并清除内存,所以这个测试法背后的逻辑是永远不要关闭程序。这个概念也被引申为连续不断地使用某些特性或将文件一直保持在打开的状态。

旅游区测试

逛旅游区的路线具有多种风格,它可以非常简短,也可以时冗长的旅行,这种旅游不关心软件是否工作,它关心的时快速访问软件的各种功能,其目的时为了到此一游。

长路径测试法

作者一个朋友,出差的时候,故意把酒店订在远离机场和办公室的地方,这样他自己到办公室的过程中会被迫欣赏这里的景色。
测试人员应该访问路径最远的特性,点击N次才能到达。其主要思想是在到达目的地之前,尽可能多地在应用程序中穿行。

超模测试法

这里关注的不是交互过程,而是界面设计。没什么太多可说的。

测一送一测试法

只测试同一应用程序的多个拷贝。当所有不同拷贝同时打开同一个文件,或者让它们同时在网络上传输,也许它们试图读写同一个文件时,会以某种方式互相影响而出错。
只要你在一个拷贝上发现了bug,那么你就在所有的拷贝上发现了同样的bug。

旅馆区测试

宾馆时休息之所,旅馆区测试中要求测试人员放过那些主要的和最受欢迎的功能,去测试一些经常被忽视的测试计划中较少描述的次要及辅助功能

取消测试法

取消测试法的基本思想是:启动操作然后停止它。
测试人员必须使用应用程序最耗时的操作来充分实施这种攻击方法,查询能力是一个明显的例子,使用一些搜索时间长的属于,可使这种操作更容易。
这个测试法中,测试人员见到的失败绝大多数与应用程序自我清除能力不足有关。经擦航有文件保留打开状态,内部变量数据出现阻塞,系统处于停顿状态造成软件不能持续工作。

懒汉测试法

有时,什么也不做反而使得软件更繁忙,它需要不停地执行IF-ELSE操作,当用户不做决定时,默认的逻辑也会执行大量操作。
测试人员做尽量少的实际工作,让应用程序接受所有默认值。变成中经常出现没有对默认值进行处理的情况,但如果正式版品发布后出现这种情况,就时重大失误。

破旧区测试

输入恶意的数据以破坏软件和做一些通常有害的事情会让人生厌,但在这里很合适。

破坏者

利用每个可能的机会暗中破坏应用程序。
我们会要求应用程序从磁盘读取数据(通过打开文件或者使用一些磁盘资源),但是接下来让文件操作失败(比如破坏那个文件)来妨碍打开文件。我们也会让软件在内存很少的计算机上运行,或者当有其他应用程序在后台运行消耗了大量内存资源时,去让软件做一些消耗内存的操作。

对该测试法的直观概括如下:
1、强迫软件做一些操作
2、掌握软件成功完成操作必须使用的资源
3、在不同程度上移除那些资源或限制使用那些资源
在这个测试法中,测试人员会发现很多方法可以操纵环境使它变得更恶劣,比如增加或删除文件,改变文件权限,断开网线,在后台运行其他应用程序,把要测试的程序部署在有问题的机器上,等等。也可以用故障注入的概念人为创建有问题的环境。

反叛测试法

反叛测试法要求输入最不可能的数据,或已知的恶意数据。
1、逆向测试法
每次都输入那些最不可能的数据。测试人员选择和上下文环境无关的输入值,比如商品购买多少个?14657个。 要打印多少页?-12页。
2、歹徒测试法
输入非法输入。输入非法数据后,预期应该反馈错误信息,若没有错误信息则说明发现了一个缺陷。测试人员可以输入错误的类型、错误的格式、太长的输入或太短的输入。想一想这个输入有哪些限制?然后突破这些限制。如果它想要正数,就给个零或者负数。
3、错序测试法
选择一组合法的行为,然后将它们混在一起,造成前后顺序不合法。例如:在将货物添加到购物车之前(购物车为空),就选择结账或者退换一个没买的货物,还有就是在完成购买行为之前改变送货选择。

强迫症测试法

在强迫症测试法中,患有“强迫症”的测试人员一遍又一遍地输入同样的数据,反反复复地执行同样的操作。重复、重做、拷贝、粘贴、借用,最终要的是一直要重复。
在购买一件商品后,然后在买一件来检查是否享受到了多订单的折扣。
在屏幕上输入一些数据,然后马上回来再输入一次。开发人员通常忘记为这些场景编写错误处理程序。
开发人员通常认为用户应该按照特定的顺序做事情,有目的地使用软件。但是用户往往会由于弄错而不得不回头重干,他们不知道开发为他们设计了什么方案,他们只会按照自己的理解来操作软件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值