技术开发 频道

测试管理的若干建议

【IT168 技术文章】

  下面是可以提高软件测试管理的一般建议。

  尽早开始测试管理活动

  虽然这一点看起来像最显而易见的建议,但是很少软件项目真正地应用这一观念。在早期开始确定测试资源很容易而且很常见,但是许多测试分析(如识别关键的、优先的测试用例)可以而且应该尽快开始。一旦用例被充分开发产生事件流,就可以得到测试程序。如果一个项目没有使用用例需求,那么仍可以从确认初始需求说明中得到测试。尽快开发测试能帮助减轻未来不可避免的时间限制。

  迭代化测试

  软件测试应该是一个反复的过程,在整个项目周期的早期生成有价值的测试工件和工作。这是遵循尽早开始测试流程的首要建议:一个迭代的测试流程应该很早就关注测试管理。测试管理通过组织迭代的各类工件和资源来指导这一点。这个基于风险的方法有助于确保以最有效的方式处理项目时间线里可能出现的变更、延迟和其他一些不可预见的障碍。

  重用测试工件

  在一个项目或多个项目里重用测试工件能够极大地提高测试团队的有效性。这样可以极大地缓解时间和资源有限造成的压力。可以重用的工件不仅包括自动操作测试对象,还包括测试程序和其他的计划信息。为了有效地重用工件,测试管理必须在组织和描述给定项目的与测试相关的各种信息方面做得很好。在创建工件时,重用总是需要一些预先计划,而且这一原则通常可以应用于测试管理。

  使用基于需求的测试

  测试可以被分成两种常用的方法:

  确认事情按照计划进行

  尽力找出什么使得事情停止下来

  虽然后面的探索性测试对于发现导致错误的难以预测的场景或情形来说非常重要,但是确认基本的需求可能是测试团队执行的最重要的评估。

  基于需求的测试是确认一个应用软件或系统的主要方式,它既适用于传统需求也适用于用例需求。基于需求的测试往往没有探索性测试那么主观,它也可以带来其他的益处。软件开发团队的其他部分可能质疑或者谴责探索性测试的结果,但是他们不能怀疑直接确认需求的测试。另一个好处是它可以更容易地计算所需的测试工作(与探索性测试相反,它总是受限于可以利用的时间)。

  它也可以提供各类统计数据,他们可能是有用的度量,例如测试覆盖率。测试用例是由需求产生的,并且随着事情变化对其关系的跟踪也更为重要,这是一件复杂的工作,应该通过工具进行处理。RequisitePro 和 ClearQuest 中的测试管理能力提供了满足这一需求的结果方案。

  这一流程的局限性是它信赖于一个好的系统需求和一个十分有效的合理的需求管理计划。从另一方面来说,探索性测试可能更加特殊。它很少依赖软件开发团队的其他部分,这有时会导致测试工作很少被关注在确认需求的重要任务上。虽然较好的测试工作应该将不同的方法集成起来,但是不应该忽视基于需求的测试。

  协调远程测试资源

  为了避免资源不足或者只是为充分利用人员,您应该协调可以运用的任何资源,不管它们在什么地方。这些重要的资源很可能存在于多种区域,通常在不同的地方。这需要仔细有效的协同合作使得各地区的大多数测试人员和其他人参与到测试管理中。为了使之生效可能有相当多的技术挑战,因此需要适当的处理。ClearQuest 的 MultiSite 版本的测试管理能力能够帮助简化区域分布式测试协调的复杂度。

  我应该使用 Web 客户还是自动复制的数据呢?有两种解决方案使得相距较远的参与者能够协同工作。前者简单并且相对容易,但是如果从各地进行访问,仍有网络方面的潜在约束。对于受到人员或者功能限制的远程访问来说,这是一个好的解决方案。但是,对于由许多不同地方的人组成一个测试团队的情况,您需要具有复制到本地服务器上的数据使得他们的运行速度达到最大化。这也意味着您将需要一个简单无缝的方式使得每个地方的数据自动同步。这是 ClearQuest MultiSite 对于测试管理来说十分重要的地方。

  定义并执行灵活的测试流程

  一个好的、可重复的流程能够帮您了解项目的当前状态,并通过预测了解其趋势。尽管如此,不同的项目对测试工作将有不同的特定需要,因此使得工作流程自动化的测试管理流程需要是灵活的并且可以定制的。流程应该是可重复的(为了提供预测),但是更重要的是,它必须允许改进。它必须使得修正十分容易,包括在迭代项目过程中的调整,因此它可以通过改变需要使其达到最优。

  如果不能以任何方式执行,那么定义一个指导团队成员的带有工作流程的过程意义并不大。需要怎样的力度来执行根据不同的企业和项目而有所不同。许多企业的软件项目需要遵循不同的法规,如 SOX 和 HIPPA。有些需要变更审核、项目历史和其他像电子签名等严格的遵守确认。不管您的项目测试管理需要严格地执行流程还是有更多的临时选择,您都需要一个机制来定义和执行某些事情。像 ClearQuest 这样测试管理工具是能够提供测试管理所需的所有能力。

  调整并整合开发的剩余部分

  从传统意义来看,软件测试与开发的其他部分是严格分开的。这样做部分源于保持评估公正和有更多的机会发现开发中可能没有察觉的缺陷的合理需要。这一需要在验收测试中尤为明显,因为在验收测试中最好的测试人员往往对设计和执行因素缺乏判断力。尽管如此,这种特定需要仅仅代表软件测试中的一个方面,不应该对最终要进行的软件质量开发制造障碍。

  软件测试必须与软件开发的其他部分结合起来,特别是像需求管理和变更管理这样的规程。这包括不同的流程角色和活动之间重要协作、重要信息的高级沟通以及支持这一点的集成工具。没有这些协同分工,质量将会由于缺少或误解需求、没有测试代码、没有发现缺陷和缺少关于现行软件质量水平的信息而降低。

  沟通状态

  工作的价值等取决于它被认知的程度,而工作如何被认知取决于传递给涉众的信息。好的测试管理必须提供所有相关信息的完整和正确的报告。在软件开发项目里实时状态、目标的测量方法以及结果应该提供给所有相关的团队成员。

  报告应该不仅仅只是传统意义的静态文件。假定变化是持续的,为了准确地交流信息需要有多种形式的易更新的输出。所有这些会帮助不同的项目角色在随着项目的进展对变化如何做出反应方面做出正确的决策。

  来自不同的软件规程的信息不是完全独立的。这篇文章已经提到了测试管理和其他像需求、变更和配置管理和开发这样的规程之间的重要关系。因此来自测试管理的输出可以很容易地与其他项目数据结合起来是至关重要的。当前的技术使得将所有的项目方法结合成为统一视图成为可能,这样可以确定所有项目的健康状态。工具也使得清楚地展示和评估测试、开发和其他项目工件的关系成为可能。

  关注目标和结果

  为项目确定质量目标并决定如何有效而准确的测量这些目标。测试管理是详细说明目标、用于测量这些目标的方法以及将如何收集这些数据的地方。测试中许多工作可能没有明显的完成标准。定义正在进行的流程和变更的特定输出和测量方法将更详细地说明测试工作的活动和任务。牢记测试的特定目标和测试方法不仅有助于跟踪状态和结果,还能避免最终将所需报告混在一起。

  在一个单一的、公共的知识库或数据库储存测试管理的结果以确保更加容易地对他们进行分析或使用。这也促进了工件(包括工作)的版本控制,避免出现过时或无效信息的问题。这一切将有助于项目成员了解流程并在测试工作的基础上做出决策。

  通过自动化来节约时间

  测试管理的内容有很多,而且许多工作非常耗时。为了节约时间,可以使用工具让许多工作自动化,或者至少半自动化。虽然像字处理程序和电子数据表这样的简单的工具提供了很大的灵活性,但是专门用于测试的自动化工具更加有效,更加有助于节约时间。通过自动化收益极大的工作包括:

  跟踪需求测试和其他测试激发因素的关系

  组织和重用测试用例

  记录和组织测试配置

  计划和协调各种工作版本和应用软件的测试执行

  计算测试覆盖率

  各种各样的报告工作

  在测试管理中对适当工作的使用工具以使其自动化将极大地提高其价值和收益。

0
相关文章