什么是HTSM
启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)是测试专家James Bach提出的一组帮助测试设计的指南(Guide line)。HTSM由一组指导性词语组成,它们构成一个
层次结构,让测试人员从高层抽象到底层细节对产品和测试进行思考。
为什么需要HTSM
HTSM中指导性词汇是测试的指南,其作用不是教导如何具体地测试,而是启发测试人员的思维,发掘测试对象和测试策略,重点在于"启发式"。HTSM对于测试设计的意义:
(1)测试设计以风险驱动。测试人员分析质量标准、项目环境、产品元素中的风险,设计有针对性的测试策略。
(2)在测试设计时,质量标准启发测试先知(Oracles),项目环境启发测试过程(Procedures),产品元素启发测试覆盖(Coverage),观察到的质量启发测试报告(Reporting)。
(3)对于测试,HTSM强调测试策略的多样性(Diversification),平衡代价和收益(Cost vs. Value),利用启发式方法(Heuristics)充分发挥测试人员的技能(Skill)。
HTSM的内容
上图是HTSM的概要描述,测试人员利用质量标准(Quality Criteria)、项目环境(Project Environment)、产品元素(Product Element),指导测试技术(Test Techniques)的选择与应
用,并产生观察到的质量(Perceived Quality)。
HTSM是层次结构,其顶层元素(质量标准、项目环境、产品元素、测试技术)可以分解为次层元素,而次层元素可进一步分解为第三层元素。本文只概要介绍次层元素,更多的细节请参考
James Bach的文档。
测试技术:生成测试的策略。有效地选择和实施测试技术,需要综合分析项目环境、产品元素和质量标准。
功能测试(Function Testing):测试系统能够完成的功能。
(1)找出产品能够做的事情(功能和子功能)。
(2)判断你将怎么才能知道一个功能是否能正常工作。
(3)测试每个功能,一次测试一个。
(4)看看每个功能是否做了应该做的,而没有做不应该做的。
域测试(Domain Testing)
(1)分析产品的输入输出数据集。
(2)判断测试的特殊值。考虑边界值,典型值,常用值,无效值,以及最具代表性的值。
(3)考虑需要在一起测试的数据的组合。
压力测试(Stress Testing)
(1)找出在挑战性的数据或者压倒性的资源面前对超载或者“破坏”敏感的子系统和功能。
(2)辨识出与那些子系统和功能相关的数据和资源。
(3)选择或生成测试所需的挑战性的数据或约束条件的资源:例如,大量或复杂的数据结构,高负载,长时间运行,大量的测试用例,低速存储器的情况。
工作流测试(Flow Testing):做完一件事再做另一件。
(1)定义把具体的多个活动首尾链接起来测试过程或者高水平的用例。
(2)在两个测试之间不要重置系统。
(3)改变时间和顺序,并且尝试并发的线程。
场景测试(Scenario Testing):作为一个强制性