| 网站首页 | 测试咨讯 | 新手入门 | 专注性能 | 测试技术 | 测试管理 | 测试工具 | 开发社区 | 工具下载 | 资料下载 | 测试论坛 | 

[CNTester联盟群]交流群:34446273/21968356/64461572 白盒群:18400216 自动化群:2706508 性能群:4498858 外包群:59649884 管理群(需有管理经验):64442523

新手入门
 入门指南
 经验之谈
测试咨讯
 行业新闻
 网站动态
 人才就业
 CNTester基金
 标准规范
专注性能
 性能测试知识
 性能测试工具
 程序设计性能
 数据库性能
 Web应用服务器性能
 操作系统性能
 服务器与网络性能
测试技术
 用例设计
 性能测试
 自动化测试
 Web测试
 面向对象测试
 综合技术
 阶段性测试
 行业类测试
测试管理
 项目管理
 项目案例
 质量管理
 软件过程
测试工具
 Mercury系列
 Rational系列
 测试管理工具
 性能测试工具
 功能测试工具
 单元测试工具
 其它测试工具
开发社区
 Java技术
 DotNet技术
 C技术
 数据库技术
 操作系统
 服务器与中间件
工具下载
 测试工具
 开发工具
 企业工程
 网络通信
 媒体桌面
 游戏娱乐
 其他工具
资料下载
 测试资料
 程序设计
 数据库
 操作系统
 应用服务器
 电子期刊
 其他资料
 
 
您现在的位置: 中国测试员网站 >> 测试技术 >> 自动化测试 >> 文章正文
  段念:企业自动化的策略、过程和误区          【字体:
段念:企业自动化的策略、过程和误区
作者:佚名    文章来源:希赛网    点击数:    更新时间:2007-5-26    

  2006年9月23日,由希赛网承办的2006中国软件工程大会暨系统分析员年会在湖南长沙召开。以下是与会专家段念“企业自动化的策略、过程和误区”主题演讲具体内容。


段念在分会场上做主题演讲(本图由新浪科技提供)

  各位好,首先自我介绍一下。我是北京测试时代的段念,从1998年开始从事软件测试工作,目前主要从事软件测试咨询、培训和测试服务。很高兴有这个机会和大家就软件测试自动化方面的内容进行探讨。

  本次报告分为四个部分:“梦想和现实——测试自动化理想与现状”、“冲出迷雾——真实的测试自动化及发展趋势”、“拨云见日——建立企业的测试自动化体系”和“过犹不及——谨防测试的过度自动化”。在这四个部分的介绍中,我们首先讨论自动化测试的现状,然后介绍测试自动化的过去和现在,在接下来的部分中,我们介绍在企业中建立测试自动化体系的具体方法,并用几个案例和大家分享这方面的经验,在最后一个部分中,我们讨论如何预防测试过度自动化。

  在介绍自动化测试之前,我们先看看“什么是测试”。简单来说,测试的目标是两个:“发现系统中存在的问题”和“证明系统能够满足用户的需求”。就“发现系统中存在的问题”来说,其主要的工作是“寻找一个最小的测试集合,使其能够发现大多数问题”。

  那么,如何评价一个已有的测试呢?一般来说,可以从四个方面对一个测试进行评价:“测试能否发现问题或是证明系统功能的正确性?”、“测试的覆盖如何(能够测试多个行为)?”、“测试执行、分析、调试的开销如何?”、“测试的维护开销如何?”。一个好的测试,就是能够发现问题或是证明系统功能正确性、能够良好覆盖需求、具有较少的测试执行、分析、调试,以及维护开销的测试。

  接下来我们看看自动化测试。第一个问题是,为什么需要自动化测试?Boris Beizer在《 黑盒测试: 软件和系统功能测试技术》中有一段经典的描述:“我看到的最悲哀的景象之一就是一个人在键盘上手动操作一些可以自动运行的东西。这是悲哀的但也是有趣的。”为什么说是悲哀的?——对于从事这件重复的冗余的事情来工作者说,日复一日的重复工作是悲哀的;为什么又说是有趣的?——对旁观者来说,一个人用一些机械的手工工作来完成本可以用自动化测试工具完成工作,有时候也是一件有趣的事情。

  那么,自动化测试到底能给我们带来什么呢?首先,自动化测试是建立在测试的基础上的,因此我们不能指望自动化测试能解决我们所有的问题——至少,一个设计不出来的测试自动化测试也对此无能为力。自动化测试能够带来的好处主要是两个方面:减少测试的维护开销,以及减少测试的执行、分析和调试开销。对于其他的两个评价测试的方面,自动化测试也不能比手工测试做得更好。

  曾经有个测试工程师向我描述过他对于“自动化测试”的梦想:“一个宽大的控制台,控制台上有一个闪烁着红光的按钮,只要轻轻一按这个按钮,一阵喀嚓喀嚓声音之后,一张完整的报告就出现在面前”——很美好的梦想,可惜,这个梦想距离现实还很有些距离。

  自动化测试的现状究竟如何呢?其实就目前来说,自动还测试还远远不能达到完全不需要测试工程师干预的程度。我们都知道,软件测试可以被划分成软件测试需求、软件测试计划、软件测试设计、软件测试执行和软件测试评估总结这几个阶段,自动化测试仅仅能够在软件测试设计、执行和评估总结的阶段发挥有限的作用,因此,我们通常把测试自动化理解为“测试的部分过程的部分自动化”

那么,测试自动化究竟是什么呢?要回答这个问题,我们先看看“测试自动化不是什么”。

  测试自动化不是录制回放——更准确的说,测试自动化不仅仅是录制回放;通过录制回放方式的确可以进行一些简单的自动化测试工作,但这种纯粹的录制回放存在相当多的问题——首先是对结果的验证方式,纯粹的录制回放缺乏对结果的验证支持;其次,如果有多组不同的数据需要进行测试,纯粹的录制回放也很难应付。

  测试自动化不仅仅是测试工具的应用——一说起测试自动化,很多人头脑中立刻反映出来的就是测试工具,当然,测试自动化一定需要工具的支持,但测试自动化不仅仅是测试工具的堆积,就好像在原始社会,有了汽车,那也不能就说明进入了现代社会,测试自动化是一个系统的工程。

  测试自动化不是自发的冲动——在有些组织中,测试自动化是一些测试工程师自发的行为,甚至这些组织还会认为,只要这些工程师足够聪明,他们就能逐渐鼓捣出一个适合公司的自动化测试体系来,这种认识显然是不对的。

  测试自动化不是发现问题的最佳手段——很容易理解,由于测试自动化是建立在手工测试的基础上的,因此测试自动化最合适的是用在验证性质的回归测试阶段,而不能指望它去发现最多的错误。

  因此,我们可以明显地看到,测试自动化具有明显的约束。那么,测试自动化具有这么多的约束,那么它到底能做什么呢?接下来我们就看看“真实的测试自动化及发展趋势“。

  自动化测试真正可以做的事情包括:“减少测试阶段的执行工作量”——但必须说明的是,自动化测试在减少测试阶段的执行工作量的同时,又增加了测试设计和开发的工作量。自动化测试可以减少执行过程中的人为出错的可能性;能够在某些人工无法达到的测试——例如性能测试——中发挥作用,以及辅助进行测试管理

  要在组织内实现测试的自动化,就需要建立自动化测试体系。自动化测试体系是我们经常能够听到的一个概念,那么,它究竟是什么呢?简单的说,自动化测试体系是指适用某种环境的测试工具、过程、人员结构和方法的集合。特别要强调的是,自动化测试体系既不单指某种工具,也不仅仅指某种测试技术,它是工具、过程、人员和方法的组合。

  过程是测试自动化的核心,没有过程,我们的自动化测试就没有了“骨架”,过程中关注了测试自动化中的全部因素:工具、资源和方法,过程是将这些因素合理组织起来的桥梁。

  自动化测试工具是自动化测试的重要组成部分,但光有工具是没有办法建立起组织的自动化测试体系的。很多工具厂商往往会宣称“我的工具就是一个完整的自动化测试体系”,但其实,这种体系仅仅是指一个工具体系,而不是马上能够为企业带来效益的体系,任何工具都必须在过程的指导下才能发挥其作用。

  另一方面,要在组织内引入自动化测试,适应于自动化测试的组织结构是不可或缺的。有些组织对自动化测试的认识有误解,以为要在企业做测试自动化,就必须将全部的测试工程师都变成自动化测试工程师。其实,自动化测试工程师的技能要求更接近开发工程师,需要有较强的设计、编码能力,而对一个组织来说,除了自动化测试工程师,还需要测试业务和设计人员、手工测试人员。一个建议的比例是各占1/3。

  要在一个组织内建立自动化测试的体系是一件很有挑战性的工作,我经历过一些组织的自动化测试尝试过程,有些成功了,有些失败了。这些成功和失败的经历也给我了不少的经验和教训,我希望通过我的经验为大家指出企业自动化测试尝试过程中的有效方法和陷阱。

  在组织中引入自动化测试,可以从“认识自动化测试策略”、“了解测试现状”、“了解测试工具的约束和使用”、“尝试在小规模的项目中引入自动化测试”、“为测试自动化改变组织”、“持续改进”几个方面来入手。

  自动化测试的策略是自动化测试中需要遵循的原则和方针。这里我提醒大家需要注意的是:

  将所有工作中的特定部分作为应用自动化的候选对象。

  从高度冗余的任务或场景开始考虑。

  将乏味且人工容易出错的工作进行自动化。

  首先关注开发成熟、理解透彻的用例或场景。

  优先选择应用中相对稳定的部分,而非易变的部分。

  指派几位专家负责自动化,不要让测试团队的每个人都做这项工作。

  牢记不要追求100%的自动化,手工测试仍然至关重要。

  对组织的测试现状了解,可以作为自动化测试尝试的一个前提条件。主要关注的问题有3个:

  高层对测试自动化的态度如何?

  组织中有人有测试自动化的经验或者经历吗?

  可以在哪个项目中尝试进行测试自动化吗?

  如果高层对测试自动化的期望不正确(一般是抱了太高的期望),首先要做的事情就是纠正他们的想法,因为为一个无法达到的期望去做这件事情,风险太大了。另外,如果组织中有人有测试自动化的经验,对组织的自动化测试引入是非常有好处的;最后,一定要找到至少一个可以进行测试自动化尝试的项目,不能是太大或者太关键的项目,以避免失败的风险。

  对测试工具的了解和掌握也是进行测试自动化工作的重要内容。这里的要点是要“自我主导”,而不要被测试工具厂商牵着鼻子走。我建议的测试工具评估和选择程序是:

  事先要列出“我”希望工具具有的功能,然后按图索骥

  用评估表为工具进行评估

  寻找有经验的帮手

  引入自动化测试往往需要首先在小项目中进行尝试,为什么要选择“小”的项目呢?主要是从风险和可操作性方面来考虑的。大的项目,或是对公司至关重要的项目,容不得闪失,因此也就不适合用来做自动化测试的尝试,而小的项目,便于控制。

  另外,需要指派专人负责自动化测试的尝试工作,否则,缺乏控制的尝试往往会以失败告终。

  除了工具、项目的选择以外,建立适合自动化测试的组织也同样关键。这方面可以从以下内容着手:

  提升测试组织对测试自动化的认识

  分配自动化测试工程师

  建立适合测试自动化的测试流程

  提升开发组织对测试自动化的认识

  组织级的改变

  只有在组织上进行配套的工作,才可能成功实现自动化测试。

  在引入了自动化测试的以后,只有对自动化测试过程进行持续改进,才能让自动化测试尽快地发挥应有的作用,取得应有的效果。持续改进的关键是度量和根据度量结果做出相应的行动。

  可以用于对自动化测试进行度量的指标包括:

  哪些自动化测试的内容提高了测试效率?

  哪些自动化测试的内容取得了最大的收益?

  哪些是影响自动化测试进行的主要因素?

  当然,在企业中成功引入了自动化测试之后,并不是就能够从此高枕无忧了。和开发人员容易犯的“功能镀金”的毛病一样,自动化测试工程师也容易做一些导致过度自动化的事情。

  在前面的策略中我们提到,千万不要试图将所有问题交给自动化解决,但在组织成功引入了自动化测试之后,还是会有一个不自觉地将自动化测试无限扩大的趋势。在这方面,我的建议是一定要做好度量工作,及时发现扩大化的自动化趋势并坚决制止。

  另外的容易导致过度的自动化的问题包括“过于追求精妙的脚本”和“扩大的自动化框架”等内容,因此,需要企业在自动化测试方面通过绩效导向等工作,将测试工程师的注意力转移到真正能体现测试自动化效益的方面来。

[2006中国软件工程大会暨系统分析员年会专题报道]

文章录入:root    责任编辑:root 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    最新热点 最新推荐 相关文章
    · 性能测试方法
    · Java 安全的演进
    · Java 安全性的演变和理念 第一部分:安全
    · 第 1 部分: Web 安全与 Rational AppScan
    · 自动化测试实施步骤和最佳实践
    · Web测试方法
    · 站点测试-WebTesting
    · 实施自动化功能测试的解决方案
    · 经典之作《代码大全》中的单元测试---测试
    · IP网络的测试方法
    · 第 2 部分: 使用 Rational AppScan 应对 
    · 第 1 部分: Web 安全与 Rational AppScan
    · 构建安全软件: 选择技术,第一部分
    · 软件安全性原则: 第一部分
    · Java 安全性的演变和理念 第一部分:安全
    · 安全的代价是什么?
    · 保护系统安全: 一个识别用户的三向解决方
    · 穿透企业网络
    · Java 安全的演进
    · 您的 Java 代码安全吗 — 还是暴露在外?
    没有相关文章
     
     
     
    ======> [CNTester联盟群]交流群:34446273/21968356/64461572 白盒群:18400216 自动化群:2706508 性能群:4498858 外包群:59649884 管理群(需有管理经验):64442523
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | 

    Copyright@2007 by CNTester.com 中国测试员网站 桂ICP备07005590

    本站为开源免费网站,非商业赢利性组织。本站文章部分从网络搜索获取,如果您认为某些侵犯了您的权益,麻烦您联系本站,我们会尽快删除相关内容,同时也希望您的谅解,我们的初衷是为了让更多人去学习这方面的知识,让行业有更好的发展。

    联系电话: 15021358905