`

自动化测试应该在什么阶段进行?(转)

 
阅读更多
软件自动化测试,作为手工测试的替代,越来越受到关注。Pekka Klärck,作为Robot Framework的创建者和核心开发者,按照系统级别,介绍了几种不同的自动化测试方法的区别。

一、记录回放的方式流行于商业工具之中,无需编程技能即可快速上手。然而这种方法相对脆弱,一旦UI变化测试就会受到影响,分散的脚本不可重用且难以维护,而且系统在测试前必须可用(也就意味着无法使用A-TDD方法)。因此这种方法并不适合大型自动化测试。

二、线性脚本允许使用各种语言来编写非结构化脚本,脚本直接与被测系统交互。能够快速上手,灵活性强。但是编写脚本需要编程技能,系统中一个改动会影响所有脚本,没有经过模块化或重用的大量脚本难以维护。因此这种方法适合简单任务,不适合大型自动化。

三、模块化脚本由两部分组成:驱动脚本执行测试,测试库函数完成与被测系统交互。驱动脚本编写起来非常简单,这样可以更快地建立新测试,容易维护。然而需要花时间和编程技能建立测试库,并将测试数据嵌入脚本,建立新测试就需要新的测试脚本。因此,只要拥有编程技能,这种方法还是适合大型项目,但不适合非编程人员。

四、数据驱动方法,将数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试,这样非常容易建立新测试。维护工作可以分离,测试人员负责数据,程序员负责写测试库。然而,不同类型测试仍需要新的驱动脚本,初始建立数据解析器和重用组件需要花人力。这种方法适合大型项目,只需要较少的编程技能。

五、关键字驱动,将数据与关键字结合来描述如何使用数据执行测试。这种方法具备数据驱动的优势,同时非编程人员也能建立新类型测试。所有测试由同一个框架来执行,无需不同的驱动脚本。然而初始成本很大,但是可以使用开源方案!因此非常适合大型项目。

Pekka对以上五种方法的介绍其实也是对自动化测试发展史的介绍,同时也体现了RobotFramework背后的设计思想。

除了测试框架的选择,要想做好自动化测试,还要关注其他方面。

自动化测试需要关注可测性。自动化最难的部分是与被测系统交互,特别是GUI层。确保系统容易被测试,比如给GUI元素增加标识、输出易于解析的文本、提供自动化接口等。

系统一般可以分为GUI层以及GUI之下的业务层。GUI层测试需要调用与普通用户同样的接口,但是某些GUI技术缺乏好的工具支持,会使测试变得脆弱,而且执行相对较慢。从业务层开始测试相对容易,执行快。但GUI层仍然需要被测试,以保证GUI正确连接到了业务层,甚至有时GUI层也具有业务功能。Pekka建议考虑对业务层进行完全测试,而部分地对GUI层实行端到端测试。 不是所有系统都具有GUI层,却可能具有API、数据库、服务器、命令行等。自动化测试框架可以调用不同驱动来进行测试。这些非GUI层相对容易测试,只要把测试用例看作另一个客户端而已。

那么自动化测试应该在什么阶段进行?如果开发完成后单独做自动化,这是典型的瀑布式过程,不同团队之间存在沟通障碍,反馈周期慢,产品在后期难以获得可测性,从而导致复杂和脆弱的测试方案。相反,典型敏捷式过程中,程序员和测试人员协同完成自动化。把自动化看作团队开发的一部分,可测性不再是问题,团队做技术决定时就可以考虑可测性和工具选择,程序员可以提前加入提供可测性的钩子特性。

自动化测试需要版本控制和持续集成来支持。将测试和代码放在一起,像管理代码一样管理测试脚本,那么多可用工具,SVN、GIT、Mercurial,没道理不用。持续集成是全方位自动化的关键,当测试或代码有所改动立即执行测试。如果测试运行时间比较长,也可以定期运行。使用Jenkins、Hudson、Cruise Control、 BuildBot吧,自己写定时脚本或Cron Job可以休矣。

选择商业自动化工具还是开源工具?好东西肯定贵,但是贵的不见得好,再便宜的许可证也会阻止整个团队的协作。而且商业化工具难以和其他自动化工具(特别是其他厂商的)或版本控制、持续集成进行整合和定制化。另外,产品终止或公司关门是潜在的风险。开源工具可供选择余地很大,当然也是良莠不齐。开源工具通常容易与其他工具整合,关键是免费,谁都可以随意使用和定制化,还永远不会消失。至于免费软件,越来越少了,很多自由软件都已经开源。免费软件同样不能定制化,且存在中止的风险。

做自动化需要哪些技能?一般来说,包括Python、Ruby、Perl、JavaScript、正则表达式、XPath和CSS定位、SQL语句、版本控制等。

有了自动化,手工测试还需要吗?当然需要!! 不过,要避免手工执行脚本来测试,还是将其完全自动化吧,测试人员可以更多关注于探索性测试。 记住,机器擅长回归测试,人类善于寻找Bug。
分享到:
评论

相关推荐

    QTP自动化测试进阶

    自动化测试项目计划 1 工作阶段分解 1.1 项目启动阶段 1.1.1 评估过去的项目 1.1.2 目标范围 1.1.3 效果衡量 1.1.4 团队成员构成 1.1.5 招聘 1.2 早期项目支持阶段 1.2.1 目标和目的 1.2.2 约束调研 1.2.3 可测试性...

    LOADRUNNER进行自动化性能和压力测试

    LOADRUNNER进行自动化性能和压力测试

    自动化测试实施方案-测试框架、脚本设计、数据设计

    编写本文的主要目的是引导公司的自动化工作的切实开展,是对自动化测试的具体实施方案的讨论;对于自动化测试过程的理论分析不是本文的重点。本文目录如下内容: 一、概述 1.1 文档总述 1.2 目标读者 1.3 词语...

    自动化测试完整案例

    移动应用自动化测试是一个新的领域,移动端平台多样化(Andriod、Ios、 FirefoxOS)为自动化测试带来了挑战与困难,随着Appium框架的推出,移动自动化测试进入一个崭新的阶段,自动化入门容易、上手快,轻轻松松测试...

    精通qtp——自动化测试技术领航

     很多测试朋友在论坛中常问各种各样的QTP问题,但发现很多问题其实都是大同小异的,《精通QTP:自动化测试技术领航》在最后以附录的形式把经典的疑难问题浓缩成“QTP科普问答典藏30例”,它涵盖了一些很值得关注的...

    精通QTP:自动化测试技术领航(余杰 赵旭斌) [高清扫描版]

    《精通QTP:自动化测试技术领航》共分为6章,书中实例新颖、趣味性强、案例贴近实际,在逼真的软件测试模拟项目环境下试验。第1章和第2章帮助读者系统地学习QTP最实际的应用。 第1章将需要掌握的自动化测试知识依次...

    软件自动化测试脚本的编写方法

    软件自动化测试项目也像普通的软件开发项目一样,有编码阶段,自动化测试的编码阶段主要是编写测试脚本实现所设计的自动化测试用例。自动化功能测试脚本地开发方法主要有以下几种:1.线性的2.结构化的3.共享的4.数据...

    基于Android平台应用程序的关键字驱动自动化测试-理论,工具

    鉴于此,并结合传统桌面系统上的自动化测试经验,我们在此探讨基于Android平台应用程序的关键字驱动自动化测试的可能性,并摸索一条适合在移动应用开发过程日新月异的现实情况中切实有效的实施自动化测试的方法。

    selenium2 python自动化测试实战

    集成测试阶段的自动化测试工作,所以,在分层的自动化测试中,我们有必要对这些定义重新理解和定义。 单元测试:我们需要规范的来做单元测试同样需要相应的单元测试框架,如java 的Junit、testNG, C#的NUnit ,...

    精通QTP——自动化测试技术领航

    第1章 测试脚本开发从零开始 1.1 自动化测试从零开始  阶段要点  自动化测试的优势与劣势。  引入自动化测试的条件。  避免自动化测试的因素。  实例解读软件测试自动化...1.1.1 什么是自动化测试 1.1.1.1 引言

    软件测试中自动化测试框架设计参考准则

    自动化测试框架设计参考准则,测试框架是在所有不同的测试自动化阶段定义的一整套指导准则:需求分析阶段、脚本设计阶段、执行阶段、报告和维护阶段。框架即对于内部复杂架构的一种包装,这样的包装可以使得最终用户...

    如何进行测试自动化的成本估算通常需要结合测试用例的复杂度的评估来考虑选择的测试用例以及个数。首先把测试用例按一定的原则分为简单、中等、复杂3大类。然后从这3大类的测试用例中按一定的比例来抽取需要实现自动化的用例。

    分析这些问题的根源,我们可以看到,自动化测试必须分阶段逐步开展,而不能局限在某个阶段完成自动化测试。因此,建议自动化测试从选择那些重要的、合适的测试用例开始,然后慢慢地扩展到其他方面。这样会带来较低的...

    Python实现自动化测试资源合集

    python自动化测试 python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 自动化测试是一种质量保障的方式,最重要的还是以做好一款高质量产品为前提。...

    我们的自动化测试为什么这么难?

    我们的自动化测试为什么这么难?笔者在别的贴子里面曾提过,自己所在部门的自动化测试经历了几次步进式的建设,都具有阶段性的成果,但是总的看来却不是一个成功的案例。  笔者在别的贴子里面曾提过,自己所在部门...

    自动化测试用例设计平台.pptx

    简称:ETest)是针对嵌入式系统进行实时、闭环、非侵入式测试的自动化测试平台,适用于嵌入式系统在设计、仿真、开发、调试、测试、集成验证和维护等各阶段配置项级别和系统级别的动态测试与验证。 主要特点 是...

    为什么要做自动化测试?

    不可否认自动化测试的作用,但是对于下面两个问题:  “自动化测试总是任何时间内、任何条件下、任何项目阶段中的最佳选择吗?”  “进行/不进行自动化测试的决策是怎样做出来的?”  答案会是什么?  为了回答这两...

    精通qtp自动化测试技术领航

    《精通QTP:自动化测试技术领航》共分为6章,书中实例新颖、趣味性强、案例贴近实际,在逼真的软件测试模拟项目环境下试验。 第1章和第2章帮助读者系统地学习QTP最实际的应用。第1章将需要掌握的自动化测试知识依次...

    软件测试之单元测试和自动化测试及UTF应用

    单元测试是一种自动化测试,它可以通过编写测试用例,执行代码,并验证代码的行为是否符合预期。在单元测试中,测试用例应该涵盖各种可能的输入和边界情况,以确保代码在所有情况下都能正确地运行。 单元测试是...

    软件工程与软件测试自动化教程

    2. 3 Panorama自动化测试工具和支撑环境 2. 3. 1 系统特点 2. 3. 2 采用领先的技术 2. 3. 3 Panorama工具系列和功能 第3章 软件工程范畴中软件测试的一般性理论 3. 1 基本概念 3. 1. 1 软件测试基础 3. 1. 2...

    你为什么要做自动化测试

    不可否认自动化测试的作用,但是对于下面两个问题: “自动化测试总是任何时间内、任何条件下、任何项目阶段中的最佳选择吗?” “进行/不进行自动化测试的决策是怎样做出来的?” 答案会是什么? 为了回答这两个问题,...

Global site tag (gtag.js) - Google Analytics