测试启发法速查表

本文是测试大师Elisabeth Hendrickson的测试启发法速查表。

一、通用启发法

这些启发法绝对适用于任何种类的接口和任何种类的系统。

抽象

剔除模型中的细节。忽略低层级的细枝末节,以此进行简化,让模型可以更少地关注具体细节,而更多地聚焦与概念层面。

例如,对于交互图来说,无需详尽地描述一组通信,你也可以只画一条线,再取个名字来描述这些通信的核心交互即可。如果是在测试邮件客户端,那么在发送邮件时客户端可能要经历如下步骤:连接到服务器、鉴权、传输数据。与其在模型中记录所有步骤,你可以直接把客户端服务器端之间的这个完整交互过程标记为“发送邮件”,以此剔除细节、提升抽象层级。

绝不和始终

就是软件应该始终都要做(例如确保账目平衡)或绝不会做(例如毁坏用户数据)的那些事情。多找领域专家和业务干系人聊聊天,可以摸清系统有哪些“绝不”和“始终”。

开始、中间、结束

改变元素所处位置。你可以改变某个特定序列中的元素,或者也可以针对某个特定位置的元素采取行动。如一下做法都是对此启发法的运用:

  • 删除列表开始、中间或结束位置的条目。
  • 将文本粘贴至某一行的开头、中间或结尾位置。
  • 在某个值的开始、中间或结束位置放一个特定字符。
  • 针对某个序列的开始、中间或结束位置执行操作。

注意观察那些因位置改变而导致的迹象。同样也要留意不良行为,例如,附于结束位置的数据被删减,插于开始或中间位置的数据导致其他内容被删减。

集中一切

如果事物被散落至、细分为或编组成一个一个的独立块,那就把他们都放到同一个地方。例如:

  • 以文件夹结构来整理条目的软件:选中大量的非空文件夹,全部移入某个单一文件夹或者是某个嵌套很深的文件夹。
  • 可以在账户间转移条目所有权的软件:把大量不同账户持有物的所有权全部转移到某个单一账户名下。

改变模型

以一种不同的呈现形式来描绘你所测系统的模型。

状态图通常以圆圈和箭头来呈现其状态及转换,把它改成表格的形式,例如,状态用列来表示、事件用行来表示,然后用单元格数据来表示其结果状态。

把线性纲要改为思维导图,或是把思维导图改为线性纲要。

CRUD(增删改查)

创建(C)、读取(R)、更新(U)、删除(D)。这些都是你可以针对系统内任何数据元素所执行的基本操作。连同其他启发法一起使用CRUD启发法。例如:

  • 结合“开始、中间、结束”:在列表的开始位置、中间或结尾创建元素。
  • 结合“金发女孩”:更新某数据元素的值,改成太小、太大或刚刚好的值。
  • 结合“零、单、多”:删除没有子记录、只有子记录或是有很多条子记录的条目。

分散一切

如果东西全部都在一个地方,那就把它们进行拆散、细分或是编组做成独立块。同样,也要跨越分布式系统建立连接。例如

  • 以文件夹结构来整理条目的软件:创建大量文件夹,各自放入少量数目。
  • 可以在分布式环境下配置使用的软件:配置该系统,让每个部分都可以存在于各自独立的机器上,用子网或防火墙于其他部分隔开。

跟随数据

执行一系列数据相关的操作,每执行一步都要检查数据的完整性。此方法适合于用户可以对数据执行输入、搜索、报告、导入、导出、更新和查看等操作的任何系统。在结合其他数据相关启发法使用的时候,跟随数据启发法的效果尤佳。例如

  • 使用含有特殊字符的数据,包括SQL或JavaScript注入攻击,导入它,搜索它,查看它,运行包含它的报告,导出它。
  • 创建违反领域特定规则的数据,再将之导入。有的时候,批量导入功能里会漏掉可以阻止破坏数据进入的功能逻辑。
  • 结合“零、单、多”:针对拥有零条、一条或多条子记录的实体执行以数据为核心的操作,例如运行报告或导出数据。

金发女孩

太小、太大或是刚刚好。这适用于有固定大小范围的任何事物,例如日期范围、数字值,字串或文本长度,文件大小,等等。需要留意其行为表现,包括如下一些:

  • 删减大量数据却不做通告。
  • 保存数据失败却不做通告。

干扰

想办法干扰关键进程,比如退出登录、关机、重启、杀操作系统进程、断网、强制休眠、致使会话超时、取消操作等。观察不良行为,例如:

  • 无效的错误信息,例如显示堆栈踪迹的异常,或是谜一般的错误代码。
  • 不能(再也不能)再次启动进程。
  • 无法恢复的数据丢失或损坏。

逆向

掉头换个方向做事。撤销一切。跳到结尾处,反向执行。例如:

  • 支持撤销操作的软件爱呢:执行大量多种操作,然后在一步一步地全部撤销。
  • 既定工作流的软件:一律接受所有默认值,直至工作流最后一步;然后使用“后退”按钮逐个修改页面上的值。

部分、全部、全无

某个组套可能包含了一部分条目在内,也可能一个条目也没有,也可能包含了所有条目。跟“零、单、多”很像,但更适合成组套出现的条目或属性,比如说权限、配置选项、标签、多选字段和复选框等。需要留意的行为表现包括如下一些:

  • “全无”跟“全部”享受相同的待遇----例如,系统对没有任何权限的普通用户和享有全部权限的超级用户一视同仁。
  • 个数或百分比计算的问题,包括除零和差一错误。
  • 显示问题,特别是“全无”或“全部”的情况。
  • “全部”情况下的数据阶段。

挨饿

让程序挨饿,包括CPU、内存、网络带宽或磁盘空间在内的所需资源都不给它。注意观察一下响应:

  • 不可恢复的数据丢失或损坏。
  • 无效的错误信息,例如显示堆栈踪迹的异常,或是谜一般的错误代码。
  • 意外的程序或会话终止。

过少

适用于可以统计数量的情况。制造出数量低于预期的状况让软件处理,例如,植入列表的条目太少或发票排列项太少的情况。

过多

适用于可以统计数量的情况。制造出数量超额的状况让软件处理,例如,活跃会话或连接过多的情况。

有效近似值

特别是在处理复杂领域的时候,几乎不可能精确地判断出某个特定试验应该得到的结果。在那种情况下,你可以用一个近似值判断其准确度。你可以用该结果跟可能值范围进行比较,看看它是否在此范围内。你也可以检查结果所具备的特点,例如,计算值是增大了还是减小了。

违反数据格式规则

软件期待其所获数据是否符合规则的。年龄不应该是负数。IP地址应该由4个0到255之间的数值组成。电邮地址应该包含用户名和域名,有‘@’符号隔开。自定义的文件结构具有特定的结构。尝试违反这些规则,看看软件如何从容(或者不从容)地处理格式上存在严重问题的数据。

Cem Kanner的零法则是,只要有0存在,就会有东西想要去除以它。通常意味着,如果软件期待的是一个集合,那么它往往都无法妥善地处理空集合(0元素)的情况。

零、单、多

零个事物、一个事物、多个事物。可计数物可能包括搜索返回的结果、字符串里面的字符、数据流中的字节、层级结构中的子节点、一些文件、文件中的行、账目、日志里的活动,或者是任何领域特定对象的属性。注意观察其行为,包括如下一些:

  • 复数格问题,例如“0 record found”或“1 record found”。
  • 个数或百分比计算的问题,包括除零和差一错误。
  • 数量增加导致性能问题的迹象。

变焦

注重具体细节,必要时收窄视野。

例如,在状态模型中,你可以先找出模型中的事件,然后再把软件的状态转换拆分为详细的步骤,以便从中发现子状态。举个具体的例子,针对允许用户创建和更新条目的软件,你可以选择吧“保存”事件拆分为传输数据、验证数据和响应等步骤。其中的每一步都由一个状态和触发其状态转换的事件所组成。

二、Web启发法

这些启发法特别适合针对基于web的应用程序使用。

后退、前进、历史

用户可以通过直接交互的形式使用web应用,也可以借助于浏览器的历史记录功能,包括后退、前进按钮以及历史记录。富web应用不是总能处理得当的。留意如下情况:

  • 关于POST数据被重发给服务器的警告。
  • 重复事务。
  • 404错误。
  • 只显示部分数据的网页。
  • 各种错误,包括已损坏的图像和已损坏的链接。

存为书签

用户会将各种类型的网页保存为书签,其中包括一些没有被设计为可存为书签的网页。尤其要尝试将那些在操作流程中间出现的页面保存为书签,例如购买流程中的结算页面。需要注意观察的问题跟“后退、前进、历史”一样。

测试启发法速查表

时间: 2024-10-08 00:26:09

测试启发法速查表的相关文章

汇编指令速查表

一.数据传输指令───────────────────────────────────────它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把 AX,CX,DX,BX,SP,BP,SI,DI 依次压入堆栈.POPA 把 DI,SI,BP,SP,BX,DX,CX,AX 依次弹出堆栈.PUSHAD 把 EAX,ECX,EDX,

Git操作手册|命令速查表

这篇文章主要介绍Git分布式版本管理与集中式管理的一些差异,总结下Git常用命令作为日后的速查表,最后介绍Git进阶的一些案例.本文分为以下几个部分: Git与SVN差异 Git常用命令 Git进阶指南 Git与SVN差异 Git的第一个版本是Linux之父Linus Torvalds亲手操刀设计和实现的,Git 基于 DAG 结构 (Directed Acyclic Graph),其运行起来相当的快,它已经是现在的主流. Git 和 SVN 思想最大的差别有四个: 去中心化 直接记录快照,而非

正则表达式学习资料与速查表汇总

基本教程: 来自w3c的零基础教程:正则表达式 来自脚本之家的快速入门:正则表达式30分钟入门教程 来自微软的正则表达式语言 - 快速参考:正则表达式语言(需要全局FQ,否则可能打不开) 正则表达式速查表: 正则表达式速查表 正则表达式速查表 正则表达式在线测试: 正则表达式在线测试 在线正则表达式测试 在线练习网站: HackerRank

故障代码含义速查表 DEBUG代码

故障代码含义速查表 DEBUG代码 1.特殊代码"00"和"FF"及其它起始码有三种情况出现: ①已由一系列其它代码之后再出现:"00"或"FF",则主板OK. ②如果将CMOS中设置无错误,则不严重的故障不会影响BIOS自检的继续,而最终出现"00"或"FF". ③一开机就出现"00"或"FF"或其它起始代码并且不变化则为板没有运行起来. 2.本

正则 表达式速查表

脚本之家首页正则表达式速查表 正则表达式30分钟入门教程 | 常用正则表达式 | 正则表达式测试工具 | 正则表达式 | 正则练习器在线版 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符.例如,“n"匹配字符"n"."\n"匹配一个换行符.串行"\\"匹配"\"而"\("则匹配"(". ^ 匹配输入字符串的开始位置.如果设置了

windows端口号速查表

windows端口号速查表 1 tcpmux TCP 端口服务多路复用  5 rje 远程作业入口  7 echo Echo 服务  9 discard 用于连接测试的空服务  11 systat 用于列举连接了的端口的系统状态  13 daytime 给请求主机发送日期和时间  17 qotd 给连接了的主机发送每日格言  18 msp 消息发送协议  19 chargen 字符生成服务:发送无止境的字符流  20 ftp-data FTP 数据端口  21 ftp 文件传输协议(FTP)端口

bash基本命令速查表

来源:https://github.com/skywind3000/awesome-cheatsheets/blob/master/languages/bash.sh ############################################################################## # BASH CHEATSHEET (中文速查表) - by skywind (created on 2018/02/14) # Version: 32, Last Modi

pandas基础命令速查表

pandas基础命令速查表 数据的导入 数据的导出 创建测试对象 数据的查看与检查 数据的选取 数据的清洗 数据的过滤(filter)排序(sort)和分组(group) 数据的连接(join)与组合(combine) 一.数据的导入 pd.read_csv(filename) # 导入csv格式文件中的数据 pd.read_table(filename) # 导入有分隔符的文本 (如TSV) 中的数据 pd.read_excel(filename) # 导入Excel格式文件中的数据 pd.r

【转】shell速查表

shell速查表 转自:https://www.jianshu.com/p/a98a334bfb25 1. 变量 #!/bin/bash msg="hello world" echo $msg 变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头. 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 2. 传参 #!/bin/bash echo "执行的文件名:$0&q