你的组织为自动化测试做好准备了吗?
2006-01-06 10:10
176 查看
|
2004 年 8 月 01 日 本文关注于一个实施自动化测试框架的组织的主要方面和影响。本文的意图是提供一些能够成功的实施自动化测试的指导方针。 1. 简介 本文关注于一个实施自动化测试框架的组织的主要方面和影响。本文的意图是提供一些能够成功的实施自动化测试的指导方针。
有很多关于自动化测试的神话。其中的一些是真实的,而其他的一些是不正确的设想,这些不正确的设想会严重的威胁到实施自动化测试的成功。本文将向大家介绍几种我们面临的主要几种关于测试自动化的神话: 2.1. 我们在时间上是紧迫的-项目已经落后了-让我们使用自动化测试吧! 这种情况将不能成为现实。实际上,正确的思想应该是 - 我们时间急迫 - 我们决不应该使用自动化测试。 如果项目已经陷入到了麻烦之中,不建议实施自动化的功能测试。项目很可能因为需要大量的测试框架的准备和实施会被托跨。我饿建议将重点放在以下的事情上: 优化测试的过程。调查并建议在目前工作基础上的测试方法和过程。建议借鉴 RUP 的相关思想和过程。 引进或者使单元/组件测试正式化。这是我们能够快速获得受益的很好的方法。如果正式的组件测试被使用,我建议可以使用 Rational PurifyPlus 进行单元或者组件测试。根据我的经验尽早的使用 Rational PurifyPlus 是非常值得的。在一个引入和 Rational PurifyPlus 的项目中,通常会在组件的级别得到 百分之三十的性能提升。 仅仅在项目团队能够对 下列问题的回答是"Yes"时: 项目能够被适当的推延。 存在能够通过实施自动化测试被达到的精确的目标。 项目具备建立适当的测试框架的必要条件。 那么,你可以在一个时间紧迫的项目中适当的实施测试自动化。但是根据经验这种情况是很难发生的。总而言之,我只能说"对不起,银弹根本不存在"。 2.2. 测试自动化就是捕获和回放 在过去的日子中,自动化的测试工具只是被看作是一种捕获和回放的工具。当前这个神话仍然在很多测试人员的思想中。而事实上自动化测试已经远不止捕获和回放这么简单了。按照成熟度自动化的测试可以被划分为 5 个级别。 2.2.1. 级别 1:捕获和回放 这是使用自动化测试的最低的级别,同时这并不是自动化测试最有用的使用方式。
这个级别是面对多个构建版本的有效使用测试自动化的第一个级别。你需要在实际的投资开始显现之前确保团队和客户对项目的安全感。如果没有对测试自动化工具的适当的培训测试人员将不具备到达这个级别的能力。在自动化测试工具中的所有测试功能都必须被很好的理解,并且要掌握测试脚本语言的知识。
对于自动化测试来说这是一个专业的测试级别。你现在要利用测试工具提供的所有的测试功能。你拥有一个强大的测试框架,这个测试框架是基于能够使你根据被测试系统的变化快速创建一个测试脚本的测试功能库的。维护的成本相对是比较低的。你在你的测试中会使用到大量真实的数据。
这是自动化测试的最高级别。主要的思想是将测试用例从测试工具中分离出来。这个级别要求有一个具有高技能测试人员测小的团队,这些测试人员能够将测试工具的非常深层次的知识与他们具备的较深的编程能力结合起来。这个团队负责在测试工具中生成并维护测试的功能性,能够使测试工具从外部的来源,比如 excel 表或者数据库中执行测试用例。这种测试概念最初是由 CMG 开发的。与 CMG 方案相比,其他的可能的开放源码的方案有被 Carl Nagle 和SAS Institute 开发的 DDE。使用 DDE 的概念,关注点是当在Excel表中创建测试用例的时候,放置使用包括被使用的特定动作词语的一些类型的模板。执行的过程是从 Excel 表中读取测试用例,并将测试用例转换成为测试工具能够理解的形式,然后使用不同的测试功能来执行测试。 这个概念变得越来越流,因为测试与用例一起使用是非常有用的。
2.3. 我们不需要培训! 我们所有的人都在某一些方面具有一定的经验,我们没有时间能够花费在使用新工具的培训上。当一个对自动化工具还不是很熟悉的组织或者项目团队开始实施自动化测试时,培训和指导是至关重要的。如果我们允许组织或者项目团队在没有关于应该如何做的任何知识的情况下实施自动化的测试,那将肯定会以失败告终。用于实施自动化测试方案的预算会被超出,测试会被延误并且更坏的情况是自动化测试将被放弃。组织和项目团队需要尽量避免一些认识上的缺陷,尤其是自动化测试的维护成本和当测试人员尝试和确认工具如何工作时产生的挫败感。你需要确保你的测试过程是适当的 - 如果测试过程是不合理的,引入自动化测试只会给软件组织或者项目团队带来更大的混乱。因此,我建议希望实施自动化测试方案的组织或者项目团队应该在实施之前建立"训练营",并将重点放在培训测试团队能够很好的利用一个原型的项目上。 为第一个原型项目制定一个实施计划,下面包括原型项目的最小化的描述: 当先状态 我们希望实现什么 - 建立成功的因素 期待的回报(第一次自动化测试工作被期望验证什么) 找到一个"简单的"测试的痛处并尽力的通过自动化测试解决它,这可以被作为在同一时间上使测试运行在多个平台上的样例 说明被需要的资源和时间 ...... 一开始你就要大声的说出成功的信心 - 让人们了解你所展示的进展。这将吸引更多的关注和资源。2.4. 我们必须 100% 的自动化 从管理的角度来说,100% 的自动化目标只是一个从理论上可能达到的,但是实际上达到 100% 的自动化的代价是十分昂贵的。 一个 40-60% 的利用自动化的程度已经是非常好的了。达到这个级别以上将增加测试相关的维护成本。由于对每一个构建版本的需求变化的复杂度,你将花费更多的时间在变更测试用例上以使他们能够正确的运行。在这种情况下,通过告知管理层 100% 的自动化目标是相当昂贵的来确立一个合理的期望值才是明智之举。对于决定自动化一个测试用例的一般规则是这个测试用例必须被运行 4 次以上。这个数字是基于用户对测试工具有良好的技能并且有一个良好的测试框架的。如果情况不是这样的化,整个数字能够是 10-20次或者更高。一个例子,在一个项目中测试人员花费和两周的时间将手工测试的 23天的任务转换成了自动化测试的用例。在完成使,项目能够在 4 个小时在多个平台上运行相同数量的测试用例。 2.5. 测试框架 测试框架对于产生成功的测试自动化的适当基础是重要的。很多考虑必须被解决以使测试自动化更加有效地被使用。重点必须在: 维护成本 维护成本是成功的使用自动化测试的最重要的问题之一。维护成本直接联系到前面已经提到过的自动化测试的成熟度。组织或者项目必须至少要在成熟度的 3 级使用高度的测试库才能使维护和更新测试功能变得容易。 测试数据 什么样类型的数据将被使用?要为每一个测试用例生成测试数据还是使用在被测试应用中已有的数据。在很多的情况下一个测试数据被创建了,删除他们是不可能的。 可测试性 自动化测试方案能够有效的测试吗?例如,被适当命名的对象(不仅仅是索引 Id)。一个简单的例子是所有的对话框都有相同的 #id 和相同的标题,所不同的仅仅是显示的文字信息。当测试应该覆盖多种语言的方案时,对话框的测试就是一个挑战。 测试人员的技能 被包括在自动化测试的创建中的人员应该具有什么样的技能呢?如果他们具有良好的开发背景,那么成熟度 3 级是足够了。如果他们有很少的或者根本没有开发的经验,我们被迫使找到或者培训一个自动化测试专家的小组,并直接到达成熟度 5 级,在成熟度 5 级测试的创建与实际的测试执行被分离开。 一个好的构建过程 自动化测试的引入在"构建团队"上加入了一些约束。为了实现自动化测试的高利用率(回归测试),要求具有一个高的构建频率。每周仅仅运行自动化的测试不是好的自动化测试的使用率。将回归测试增加到每天一次将帮助快速的发现新的问题并使开发人员更加容易的发现问题的根源,因为对测试的反馈时间是比较短的(开发人员能够记住他们昨天做了什么)。 所有权 不同的测试库的所有权的定义是重要的。一个好的方案会将测试库的组织划分为三个级别: 级别 1 - 全局的 这个一个通常的级别。被存储在这个级别的测试功能能够被所有的项目访问。通用的和通常的功能象登陆、创建一个用户都是这个级别很好的候选者。 级别 2 - 项目 在这个级别的测试功能是与特定的测试项目相关的,但是通常在项目中有用的比一定在项目外是有用的。通常级别 2 是级别 1 的功能的提供者。 级别 3 - 脚本 功能被直接关联到特定的测试脚本。 I在这个级别中,通常一个测试功能的第一个版本是被开发的。在新的测试脚本的创建期间已有测试功能的重用性被发现,并被移到了级别 2 中。 在这个级别上尽量最小化功能的数量,因为它将增加维护工作量。还有很多有关测试框架的问题,但是这里所提及的是一些基本的要被解决的问题。
有很多的情况下使用自动化的测试可以降低测试成本。我将尽量的突出在自动化测试中的不同的测试技术
我对什么时候应该使用自动化测试和什么时候应该使用手工测试进行了一个概要的总结:
如果你正在你的组织中引入自动化测试,记住有很多不同的方面被包含了进了。今天在测试工作如何被进行上有很多不同的视图。为了能够成功的实施自动化测试你应该提出这些问题: 测试覆盖什么?- 我们没有覆盖什么? 由于遗漏的测试我们没有发现的"bug"会带来什么样的成本? 由于不好的测试,破坏已有功能性的成本是多少? 如果"琐碎的"测试被每天的运行,对于你的项目意味着什么? 如果我们能够每天向开发人员提供他们最近代码变更相关的反馈,对项目有怎样的影响? 这些问题都能够被自动化测试满足。你必须从自动化测试成熟度的级别 1 或者 级别 2 开始,并开始测量结果。根据我的经验快速的向开发人员反馈并每天运行测试对于向自动化测试成熟度的级别 4或者 级别 5 是非常有好处的。自动化测试有以下的贡献: 降低风险 - 你知道你测试了什么和没测试什么 测试能在项目的早期开始并随着时间一直扩展 快速的反馈 - 自动化测试用例能够随时的运行 在多个平台上的测试能够同时进行 更好的估计 - 你能够对测试进度和被使用的时间有更好的了解 优秀人员的集中 - 你能够得到一个专家的团队,并将他们的知识传播给其他的项目 喜悦 -你和你的团队正获得着成功
1. Rational 培训课程 TST170: Principles of Software Testing for Testers 2. Rational培训课程TST275: Essentials of Test Management with Rational TestManager 3. Rational培训课程PRJ480 Mastering the Management of Iterative Development v2003.06.00 4. 参考书:Software Test Automation by Fewster & Graham 5. http://safsdev.sourceforge.net/FRAMESDataDrivenTestAutomationFrameworks.htm |
相关文章推荐
- 〔转贴〕你的组织为自动化测试做好准备了吗?
- 你的组织为自动化测试做好准备了吗?
- 〔转贴〕你的组织为自动化测试做好准备了吗?
- 你的组织为自动化测试做好准备了吗?
- 你的组织为自动化测试做好准备了吗?
- 你的组织为自动化测试做好准备了吗
- 自动化测试之页面元素组织
- C#的内存组织
- 设计一个简易的处理器(3)--SEQ CPU的实现(1): 将指令组织成阶段
- 自动化测试角色分类
- 《重构改善既有代码的设计》之重构列表--重新组织数据(三)
- QTP自动化测试视频教程系列第8、9集已发布
- 项目组织对ERP软件实施的影响
- 自动化测试脚本的编写和执行——自动执行cts测试10遍
- QTP自动化测试视频教程系列第12、13、14集已发布
- Android自动化测试在多种屏幕下的注意事项
- 基于风险的用例组织方式
- QTP自动化测试视频系列(第18、19、20集)
- 使用 UI Automation 实现自动化测试--4.4
- QTP自动化测试视频系列(第23、24、25集)