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

启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)是测试专家James Bach提出的一组帮助测试设计的指南(guideline)。本文将介绍HTSM的内容与应用。

为什么需要HTSM

根据产品的风险(risk)设计测试是一种常见的测试设计思路。在复杂的现实世界,产品面临的风险多种多样,只有全面考虑、周密测试才能避免风险暴露导致的严重后果。因此,测试人员需要一个相对完整、可以定制、容易扩展的风险列表或参考模型,来帮助他们发现产品风险。HTSM就是一个结构化的、可定制的参考模型,从测试技术、产品元素、项目过程、质量标准等多个角度启发测试设计。

HTSM能够在测试全程提供有益的提示。在制定测试计划初稿时,它可以帮助测试人员完整地思考产品的方方面面,从而产生系统性的(systematic)测试计划。在测试过程中,它可以帮助测试人员组合测试想法、深入探索产品,以开发出强有力的测试策略。在回归测试中,它可以帮助测试人员确定测试范围,制定测试方案。

HTSM的内容

上图是HTSM的概要描述,测试人员利用质量标准(Quality Criteria)、项目环境(Project Environment)、产品元素(Product Element),指导测试技术(Test Techniques)的选择与应用,并产生观察到的质量(Perceived Quality)。

HTSM是层次结构,其顶层元素(质量标准、项目环境、产品元素、测试技术)可以分解为次层元素,而次层元素可进一步分解为第三层元素。本文只概要介绍次层元素,更多的细节请参考James Bach的文档

测试技术:生成测试的策略。有效地选择和实施测试技术,需要综合分析项目环境、产品元素和质量标准。

  • 功能测试(Function Testing)
  • 域测试(Domain Testing)
  • 压力测试(Stress Testing)
  • 流测试(Flow Testing)
  • 情景测试(Scenario Testing)
  • 声明测试(Claims Testing)
  • 用户测试(User Testing)
  • 风险测试(Risk Testing)
  • 自动测试(Automatic Testing)

项目环境:资源、约束和其他影响测试的项目元素。测试总是受到项目环境的约束。在某个团队运转良好的策略不一定适合另一个相似的团队,以往富有成效的方法未必适应当前的项目。有经验的测试人员会根据当前语境(Context),在约束条件下充分运用资源,以高效地测试。

  • 用户(Customers):理解产品的用户
  • 信息(Information):发现测试所需的信息
  • 开发者关系(Developer Relations):与开发者协作加速开发
  • 测试团队(Test Team):利用团队的力量支持测试
  • 设备与工具(Equipment & Tools):可利用的硬件、软件、文档等
  • 进度(Schedule):项目实施的流程
  • 测试条目(Test Items):测试范围和重点
  • 交付品(Deliverables):测试的产出

产品元素:需要测试的对象

  • 结构(Structure):产品的物理(physical)元素(如代码、接口、配置文件、可执行文件等)
  • 功能(Functions):产品的功能
  • 数据(Data):产品所操作的数据
  • 平台(Platform):产品所依赖的外部元素
  • 操作(Operations):产品将被如何使用
  • 时序(Time):影响产品的时间因素

质量标准之操作性标准(Operational Criteria):面向用户和运营团队

  • 能力(Capability)
  • 可靠性(Reliability)
  • 可用性(Usability)
  • 安全性(Security)
  • 可伸缩性(Scalability)
  • 性能(Performance)
  • 可安装性(Installability)
  • 兼容性(Compatibility)

质量标准之开发标准(Development Criteria):面向开发团队

  • 可支持性(Supportability)
  • 可测试性(Testability)
  • 可维护性(Maintainability)
  • 可移植性(Portability)
  • 本地化(Localizability)

由以上介绍可知,HTSM由一组指导性词语(guide word)组成,它们构成一个层次结构,让测试人员从高层抽象到底层细节对产品和测试进行思考。这些指导性词汇是测试的指南,其作用不是教导如何具体地测试,而是启发测试人员的思维,发掘测试对象和测试策略。

下图摘录自James Bach的培训教材Rapid Software Testing,体现了HTSM对于测试设计的意义。

  • 测试设计以风险驱动。测试人员分析质量标准、项目环境、产品元素中的风险,设计有针对性的测试策略。
  • 在测试设计时,质量标准启发测试先知(Oracles),项目环境启发测试过程(Procedures),产品元素启发测试覆盖(Coverage),观察到的质量启发测试报告(Reporting)。
  • 对于测试,HTSM强调测试策略的多样性(Diversification),平衡代价和收益(Cost vs. Value),利用启发式方法(Heuristics)充分发挥测试人员的技能(Skill)。

定制HTSM

在定制化之前,HTSM对测试人员的帮助很小,因为此时的HTSM是“James Bach的模型”,而不是符合当前语境的模型。HTSM是通用的模型,虽然能够普遍使用,但是不能快速、高效地指导具体的测试工作。测试人员需要将其“本地化”,才能发挥其威力。

Cem Kaner教授在教程Blank Box Software Testing 中提出利用思维导图(Mind Map)定制HTSM。他将HTSM作为图的为中心,将Quality Criteria、Project Environment、Product Elements和Test Techniques作为主干。

在分支上,Cem Kaner添加了他觉得重要的节点。例如,他在Product Elements下增加了Benefits节点和Time节点,使HTSM符合他的工作需要。

恰如Cem Kaner所说:“大多数严肃对待此模型的人会定制它以符合自己的需要”(Most people who work seriously with this model customize it t meet their needs),测试人员可以也应该修改HTSM,以获得符合项目语境的模型。

  • 增加节点:增加与当前项目相关的测试技术、测试想法、测试对象和任何测试人员认为有价值的元素。
  • 删减节点:忽略一些与项目或任务无关的元素。
  • 增加标记、注释、链接等图元:标记可以突显重要的元素,注释可以增加更多的细节,链接可以指向更详细的信息源。

定制HTSM是理解并掌握HTSM的过程。与大多数方法一样,测试人员需要修改它,加入自己的风格和元素,才能正真掌握它。

测试专家Michael Larsen在XMind.net提供了他制作的HTSM思维导图,为测试人员制作自己的HTSM提供了很好的基础。

应用HTSM

定制HTSM就是应用HTSM的过程。测试人员遵循HTSM的结构化指南,深入地思考产品、项目与测试,添加自己的想法、评论、标记和启发式问题。这本身就是极好的测试学习过程。作为学习的结果,定制化的HTSM为进一步地测试设计提供了坚实的基础。在测试过程中,测试人员会接触新信息,学习新知识。他应该持续地将新知补充到HTSM中,以迭代地优化测试略模型。从这个角度,HTSM既是测试想法的源头,也是测试过程的产出。

在测试设计时,测试人员可以逐个检查HTSM中的每个元素(指导性词语),阅读相关标记、注释和链接,以启发测试思路。他可以自问:

  • 该元素与当前测试任务相关吗?
  • 针对该元素,产品有什么风险?可能会有什么缺陷?
  • 通过什么测试可以发现这些缺陷?
  • 依据当前的进度和资源,如何实施这些测试?

另一种更有威力的方法是综合HTSM中的多个元素,开发测试策略。当开发人员用单元测试检查了组件,测试人员需要在系统层面检查产品。此时,产品的缺陷往往存在于组件的交互和复杂的流程。综合产品的多个方面,开发多样化的测试,以更深入地测试产品,才能够更好地体现测试人员的价值。一些有帮助的启发式问题包括:

  • 该元素与哪些元素相关?
  • 元素的组合有没有揭示出新的风险?
  • 如何设计测试,以同时测试这些元素?
  • 能否让来自元素A的信息帮助元素B的测试?
时间: 2024-12-28 10:59:42

[ 测试思维 ] 转载:启发式测试策略模型(HTSM)的相关文章

[转载]聊聊测试管理

转载自"山丘的测试之道" : 聊聊测试管理(管事篇)   管理:管人+管事. 说到管理,其实就是团队,没有团队,就谈不上管理.个人理解,对个人而言,更多应该是计划,而非管理.做管理的时间并不长,或者说很短,可能很多地方理解的有问题.写这篇文章也是为了能更多的与大家交流,也是记录下在目前这个阶段我的理解.(本文均以在创业型公司工作为背景),全篇分为管事篇跟管人篇. 管事篇 一.测试的工作流程. 关于这个点,其实网络上一搜一大堆,大体都差不多,需求分析,测试计划,设计测试用例,评审用例,执

iOS Developer:真机测试(转载)

目录[-] 一.真机调试所需材料说明 二.开始申请 三.添加App ID 四.添加设备(Devices) 五.添加证书(Certificates) 六.添加描述文件(Provisioning Profiles) 七.配置XCode 八.P12导出证书 转载请注明出处,原文地址http://my.oschina.net/joanfen/blog/167730 如果本文不能解决您的问题请移步:http://my.oschina.net/u/1245365/blog/196420 关于证书选项呈灰色的

smack api 转载未测试

===============================================================主动发送信息给某个用户------------------------------------XMPPConnection.DEBUG_ENABLED = true;//设置服务器地址XMPPConnection conn = new XMPPConnection("127.0.0.1"); conn.connect();//输入账号和密码登陆conn.logi

转载 素性测试

原文地址https://www.douban.com/note/271270932/ 对一个数是n否为素数的判断可以从2到根号n依次去除n,如果n能被其中一个整除则说明n不是素数,否则n是素数.还可以用厄拉多塞筛法,采用构造素数表的方式,从2起,依次列出后续数字,如果某个数是前面数字的倍数,则从表中删除,即删掉所有素数的倍数,最后得到的表就是一个全是素数的表.用于程序实现的话,可以设置一个栈,初始时栈内只有一个元素2,令从3起依次累加,并判断如果i不是栈内任何一个数的倍数,则令i进栈,否则继续循

[转载] 外包测试管理与实践--计划篇

本文围绕这一主题,主要从外包测试服务提供商的角度,探讨外包测试项目的管理方法及实践经验.为了便于读者阅读和理解,笔者将分计划.组织.领导.控制四个篇章来展开论述.   外包测试管理之计划篇 灵活选择外包测试服务的方式及合同类型 实施外包测试首先要确定采取什么样的形式.目前外包测试服务提供商(以下简称“外包公司”)提供的服务方式主要包括“现场测试”和“外部测试”.“现场测试”是指外包公司派遣测试人员到发包方的公司现场工作,开展测试业务.而“外部测试”是指在外包公司将发包方的单子(相关待测产品)拿回

Android Monkey测试(转载)

Monkey是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上.它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试. 官方介绍 :https://developer.android.com/studio/test/monkey.html. 测试?这不是抢测试妹子的饭碗么?肯定不是啦,我们总不能感觉写好了代码,就把一个带有BUG的项目扔给测试妹子吧, 那样的话我们可能还要花一些 时间和测试妹子进行N场口水战.我们要先对我们写地代码进行自测,自测感觉OK了再抛给测试妹

转载:无线测试

本文来源于:http://myeyeofjava.iteye.com/blog/2191124 无线测试是软件测试的一个分支,是针对于无线设备的一种质量保证的活动,例如:Android&IOS手机,Google眼镜,苹果汽车,无线路由等质量保证测试均属于无线测试范畴. 我国从2008年起,第一部智能手机进入中国,开始掀起无线技术的浪潮,突出代表的事件为,Nokia的破产,Kodak的倒台,于此异军突起的互联网产品为,Android智能手机,以Google为代表的无线技术革命,以及Iphone智能

15问答为专业测试人员揭开“精准测试”的面纱

 15问答为专业测试人员揭开"精准测试"的面纱 什么是精准测试?软件测试是否必要达到精准?精准的同时是否提高了测试成本?精准测试对于普通测试工程师乃至测试行业会有怎样的影响?让我们带着这一系列的问题来关注精准测试的15个问答,揭开精准测试的面纱. 1.到底什么是精准测试?它和传统测试的区别和联系 相对于普通测试,精准测试是在传统测试过程中,通过技术手段对被测程序进行360度全景测试,将测试过程可视化.数字化.标准化,从而达到被测程序上线稳定.无风险.维护成本低等优势. 和传统测试比起来

解救测试工程师,应用测试将变得更加高效

说起测试工程师,很多人都会想到是一个专业工种,要想做测试工程师,需要高学历.会写程序.经常参加培训.但是现在却不一样了,我发现了一个神器--Bugtags,可以让普通的小编.客服.甚至扫地大妈都可以做测试--没错,人人都可以成为测试工程师.当然这种不合常规的事情,会有很多人不相信,但是当你知道它的使用方法后,你就知道多么神了. Bugtags 是一个内置在App中的Sdk,只要一段代码就可以集成它,集成完毕后,就可以直接在你的应用里提交所见所得的Bug.同时在Bugtags 后台,不仅可以看到测