第1步:基本策略轮廓
拿出一个空白的写字板,和大家一起开始。首先,把每个你想要捕获、制定的测试方面写到写字板上,分成列的形式。对于我们的项目,我把测试阶段(包含了项目所执行的测试类型)、不同的代码环境和衡量指标各分成了一列,其中的衡量指标决定我们何时在不同的环境之间移动代码。图一展现了它的基本面貌。
图一写字板—-轮廓
我使用红色标注出这些定义。列出项目组当前并存执行的每个测试阶段;在测试阶段的下面,列出要执行的测试类型。而寻找测试类型的过程,会帮助你清晰地定义测试阶段,同时,你可以把每个阶段所代表的含义和产生的内容分成一组。这里没有所谓的“正确”定义;唯一重要的一点,就是大家都认可你所使用的定义。你也可能需要定义测试的类型,但更重要的是确保每个人都能够理解如何区分不同的测试类型。记住,你要使大家能够自由地讨论测试策略,一个清晰的框架需要清晰的定义。
第2步:目前的安排
接下来,列出不同的项目环境,以及当前所使用的衡量指标,后者决定了何时在环境之间移动构建。在我们的项目中,我询问了每一个参加会议的人,发现项目组会执行系统测试和一些回归测试,以及为少量用户提供的专门的接受测试。而这里缺少单元测试和集成测试的一致性,以及通常在代码提交给用户之后所要进行的代码复查工作。系统测试中,我们利用一些功能测试和生命周期测试,将大部分的需求做了验证。而在前面的迭代中,项目组执行了一个或两个临时的潜在测试,所以我们已经包含了那些测试。所有的回归测试,在时间允许的情况下,从前面的一次发布开始,是手工地基于测试用例的测试。
我们具有5个项目环境。每个开发人员有着他们自己的本地环境,接着,他们要将其全部集成到一个普遍的开发环境中。一旦被集成,项目要构建一个测试环境,以进行系统测试的工作。然后,基于需求验证和发布日期(关键的衡量指标),把代码移动到质量保证(QA)的环境中。用户根据发布的版本对大多数的期望功能进行复查,然后在一系列的结束标志(另一个关键的衡量指标)出现后,代码即可移动到产品中。图2展现了我们的测试策略,它包含了上面所说的全部内容。在衡量指标的那一列中,我们对每个环境中的需求验证级别进行了讨论,确定了那些能准确地反映当前过程的数字。
图2写字板—-测试的当前状态
第3步:突如其来的改进
一旦所有的人都同意了写字板上有关衡量指标的内容,我们就可以开始制定项目测试希望达到的目标了。我们谈论了一些有关实践和工具的内容,后者可以帮助我们提高效率,并与我们当前的资源(人力和财力)水平相符合。同时,我们意识到,很可能不能再扩大测试组的规模了,这样我们会设法让开发人员为测试提供帮助,而谈论的关注点也随之开始围绕在此问题上。当然,我们也可以把关注点放在我们所经历的那些关键问题上。(还记得前面我所罗列的那些问题吗?)
在第六届IEEE关于Web Site发展的国际研讨会上,Hung Nguyen为我们描述了一种制定测试策略的技术—-获得一个“bug centric”。他的方法是查看产品中已发现的问题,然后将这些具体问题视为目标,反向地创建策略。他的关注点是设法添加可见性,以此确定成本,来提高产品的发布速度。无论你的上下文背景是什么,都要确保自由讨论的小组能够了解到他们所要解决的问题。如果你的测试策略没有一个明确的完成目标,那么就后退一步,先建立一个清晰的目标。最糟的莫过于你的测试策略具有一个错误的目标—-这个策略注定会以失败告终。它会产生新的问题,也会把现有的问题变得更糟。最好的情况,它偶尔可能会解决一些问题,但同时,会让我们更加的难于解决剩余的问题(实际没有如此困难)。
在我们自由讨论的时候,商定了许多问题,并得到了一些结论:
· 利用单元测试和集成测试,我们可以尽早地发现更多的问题,并准备好自动化测试的初始级别,同时,它们为我们提供了一些衡量指标,这些指标让我们可以更好的跟踪开发过程,这样,我们可以做出决定—-何时移动我们的代码。(多数情况下,我们使用J2EE和Oracle来构建应用程序,同时,也使用一些其他的技术补充。但不论J2EE或Oracle,它们都具有非常健壮和自由的单元和集成测试工具。)
· 系统测试中,我们以每次发布用户基线为结束,用户基线会增长,同时他们也会逐渐地要求一些更为精确的性能测试—-尽管我们对此还只是略知皮毛。
· 我们不能再依赖于需求验证,不能再继续将其作为我们主要的测试类型了。尽管那是非常重要的事情,因为我们不能忽略安全性测试、可用性测试、配置测试和数据完整性测试,以及上百种其他类型的测试。
· 我们决定进行一些基于session(session-based)的探索性测试,而最初是以成对的方式执行该测试的,直到我们更为适应这种类型测试的过程,同时,也发展了我们快速学习和解决问题的能力。一旦我们适应了探索性测试的工作,那么我们可以开始执行更多的sessions。
文章来源于领测软件测试网 https://www.ltesting.net/