测试启发式问题

这是测试大师Elisabeth Hendrickson测试启发式问题。

一、一般启发式

这些启示法绝对适用于不论什么种类的接口和不论什么种类的系统。

抽象

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

比如,对于交互图来说,无需详尽地描写叙述一组通信,你也能够仅仅画一条线,再取个名字来描写叙述这些通信的核心交互就可以。

假设是在測试邮件client。那么在发送邮件时client可能要经历例如以下步骤:连接到server、鉴权、数据传输。与其在模型中记录全部步骤,你能够直接把clientserver端之间的这个完整交互过程标记为“发送邮件”,以此剔除细节、提升抽象层级。

绝不和始终

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

開始、中间、结束

改变元素所处位置。

你能够改变某个特定序列中的元素。或者也能够针对某个特定位置的元素採取行动。如一下做法都是对此启示法的运用:

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

  • 针对某个序列的開始、中间或结束位置运行操作。

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

集中一切

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

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

改变模型

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

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

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

CRUD(增删改查)

创建(C)、读取(R)、更新(U)、删除(D)。

这些都是你能够针对系统内不论什么数据元素所运行的基本操作。连同其它启示法一起使用CRUD启示法。

比如:

  • 结合“開始、中间、结束”:在列表的開始位置、中间或结尾创建元素。

  • 结合“金发女孩”:更新某数据元素的值。改成太小、太大或刚刚好的值。
  • 结合“零、单、多”:删除没有子记录、仅仅有子记录或是有非常多条子记录的条目。

分散一切

假设东西所有都在一个地方。那就把它们进行拆散、细分或是编组做成独立块。相同。也要跨越分布式系统建立连接。

比如

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

尾随数据

运行一系列数据相关的操作。每运行一步都要检查数据的完整性。此方法适合于用户能够对数据运行输入、搜索、报告、导入、导出、更新和查看等操作的不论什么系统。

在结合其它数据相关启示法使用的时候,尾随数据启示法的效果尤佳。

比如

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

金发女孩

太小、太大或是刚刚好。这适用于有固定大小范围的不论什么事物,比如日期范围、数字值。字串或文本长度,文件大小。等等。

须要留意其行为表现,包含例如以下一些:

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

干扰

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

  • 无效的错误信息。比如显示堆栈踪迹的异常,或是谜一般的错误代码。

  • 不能(再也不能)再次启动进程。

  • 无法恢复的数据丢失或损坏。

逆向

掉头换个方向做事。

撤销一切。跳到结尾处。反向运行。比如:

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

部分、所有、全无

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

  • “全无”跟“所有”享受同样的待遇----比如,系统对没有不论什么权限的普通用户和享有所有权限的超级用户一视同仁。
  • 个数或百分比计算的问题。包含除零和差一错误。
  • 显示问题,特别是“全无”或“所有”的情况。

  • “所有”情况下的数据阶段。

挨饿

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

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

过少

适用于能够统计数量的情况。

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

过多

适用于能够统计数量的情况。

制造出数量超额的状况让软件处理,比如,活跃会话或连接过多的情况。

有效近似值

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

违反数据格式规则

软件期待其所获数据是否符合规则的。

年龄不应该是负数。IP地址应该由4个0到255之间的数值组成。

电邮地址应该包括username和域名,有‘@’符号隔开。

自己定义的文件结构具有特定的结构。

尝试违反这些规则。看看软件怎样从容(或者不从容)地处理格式上存在严重问题的数据。

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

零、单、多

零个事物、一个事物、多个事物。

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

  • 复数格问题。比如“0 record found”或“1 record found”。

  • 个数或百分比计算的问题。包含除零和差一错误。
  • 数量添加导致性能问题的迹象。

变焦

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

比如,在状态模型中,你能够先找出模型中的事件。然后再把软件的状态转换拆分为具体的步骤,以便从中发现子状态。

举个具体的样例,针对同意用户创建和更新条目的软件。你能够选择吧“保存”事件拆分为数据传输、验证数据和响应等步骤。

当中的每一步都由一个状态和触发其状态转换的事件所组成。

二、Web启示法

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

后退、前进、历史

用户能够通过直接交互的形式使用web应用,也能够借助于浏览器的历史记录功能。包含后退、前进button以及历史记录。富web应用不是总能处理得当的。

留意例如以下情况:

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

存为书签

用户会将各种类型的网页保存为书签。当中包含一些没有被设计为可存为书签的网页。尤其要尝试将那些在操作流程中间出现的页面保存为书签。比如购买流程中的结算页面。须要注与意大利的问题观察“退却、前进、历史”喜欢。

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-27 03:42:08

测试启发式问题的相关文章

[ 测试思维 ] 转载:启发式测试策略模型(HTSM)

启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)是测试专家James Bach提出的一组帮助测试设计的指南(guideline).本文将介绍HTSM的内容与应用. 为什么需要HTSM 根据产品的风险(risk)设计测试是一种常见的测试设计思路.在复杂的现实世界,产品面临的风险多种多样,只有全面考虑.周密测试才能避免风险暴露导致的严重后果.因此,测试人员需要一个相对完整.可以定制.容易扩展的风险列表或参考模型,来帮助他们发现产品风险.HTSM就是一个结

国外的一些测试技术网站

http://bdonline.sqe.com/ 一个关于网站测试方面的网页,对这方面感兴趣的人可以参考 http://citeseer.nj.nec.com/ 一个丰富的电子书库,内容很多,而且提供著作的相关文档参考和下载,是作者非常推荐的一个资料参考网站 http://groups.yahoo.com/group/LoadRunner 性能测试工具LoadRunner的一个论坛 http://groups.yahoo.com/grorp/testing-paperannou-nce/mess

全程软件测试之测试需求分析与计划

全程软件测试之测试需求分析与计划 在项目启动之后,就要着手软件项目的计划,包括软件测试计划.软件测试计划是整个开发计划的组成部分,同时,它又依赖于软件组织过程.项目的总体计划.质量文化和方针.在测试计划活动中,首先要确认测试目标.范围和需求,其中"测试需求分析"是关键任务,然后在测试需求基础上制定测试策略,并对测试任务.时间.资源.成本和风险等进行估算或评估. 无论何时进行估算,我们都是在预测未来,并会接受某种程度的不确定性.软件项目计划的目标是提供一个框架,不断收集信息,对不确定性进

国外的一些测试技术网站(转载)

国外的一些测试技术网站 http://bdonline.sqe.com/ 一个关于网站测试方面的网页,对这方面感兴趣的人可以参考 http://citeseer.nj.nec.com/ 一个丰富的电子书库,内容很多,而且提供著作的相关文档参考和下载,是作者非常推荐的一个资料参考网站 http://groups.yahoo.com/group/LoadRunner 性能测试工具LoadRunner的一个论坛 http://groups.yahoo.com/grorp/testing-paperan

探索式测试中的几种误区

探索式测试(Exploratory Testing)是敏捷测试中的重要组成部分,其价值与一般性测试如用户故事测试或者自动化测试不同,它所关注的是“意料之外”的软件缺陷,探索式测试作 为一个研究性.启发性和严肃性并存的测试方法,是一般性测试的重要补充.随着敏捷测试的推广,探索式测试逐渐受到大家的关注和重视.本文主要探讨了测试工 程师在探索式测试方面的一些误区,并尝试纠正这些问题. 误区1:探索式测试是一种测试技术. 探索式测试本身不是一种测试技术,相反,它是一种可以应用于广泛测试技术的方式或态度.

测试的艺术:测试用例的设计

由于时间和成本的约束,软件测试的最关键问题是: 在所有可能的测试用例中,哪个子集最有可能发现最多的错误 测试方法: 黑盒测试 等价类划分(Equivalence Partitioning) 1. 严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量 2. 它覆盖了大部分其他可能的测试用例. 划分了等价类后,就可以说,如果对该集合中某个元素所进行的测试没有发现错误的话,那么对该集合中其他元素所进行的测试也不大可能会发现错误. 使用等价类划分方法设计测试用例主要

赢在测试-读书小总结

总结了很多有意义.有意思的话: 1.郑文强 机会来自于能力,而能力来自于日常的学习和积累. 合格的测试人员首先具备的一个技能——深入了解你的测试对象,它的架构.功能以及客户如何使用它们的业务知识的.对软件产品了解到什么程度,测试才能做到什么程度. 除了你的测试对象外,你需要深入了解软件产品是如何开发出来的,开发与测试间的关系是什么,主要的测试活动与测试任务,等等. 不管多好的测试理念.测试技术与方法,我们都需要和实际测试工作结合起来,不断提高测试效率和有效性,不断提升测试质量. 优秀的测试人员与

转:测试用书(出处:cnblog--liangshi)

列表格式为:图书分类.中文书名.英文书名.作者.排名不分先后,用红色标记出我推荐的书籍. 测试入门 软件测试(第2版) Software Testing (2e), Ron Patton 一本测试入门的好书,较全面地介绍了各种测试领域和方法,为测试新手提供了正确的观念和宽泛的基础. 软件测试的艺术(第2版) The Art of Software Testing (2e), Glenford J. Myers, Corey Sandler, Tom Badgett, Todd M. Thomas

分析卡巴斯基启发式扫描及其绕过方案

转载自:http://blog.sina.com.cn/s/blog_63a4534c01012ugj.html 卡巴斯基2010有强大的启发式扫描,其实启发式扫描有很多弱点,有一个就是不能完全的模拟程序的运行环境,这就可能给我们留出来了一块空间来绕过启发式扫描,其实其它杀毒软件的启发式扫描都存在这些空间,下面就来分析一下卡巴斯基的启发式扫描吧! 首先要编一段程序来完成测试,程序一定要非常的针对启发式扫描这一块的,不然的话没有效果,选那段代码来测试呢?恩,有段代码启发式扫描几乎都要扫描的,那就是