`

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

 
阅读更多
软件自动化测试,作为手工测试的替代,越来越受到关注。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。
分享到:
评论

相关推荐

    自动化测试基础PPT

    自动化测试是现代软件开发过程中的重要组成部分,它能够提高测试效率,减少人为错误,并且在持续集成和持续交付(CI/CD)流程中扮演关键角色。这份“自动化测试基础PPT”涵盖了自动化测试的核心概念,实施策略以及...

    web版本自动化测试报告

    1. 提升效率:相对于手动测试,自动化测试可以显著减少重复性工作,提高测试速度,尤其在回归测试阶段,自动化测试的优势更为明显。 2. 减少错误:人为操作可能导致遗漏或错误,自动化测试则能严格按照预设逻辑执行...

    软件自动化测试流程及方法

    在进行自动化测试之前,首先需要对项目进行需求分析,明确测试的目标、范围以及预期结果。这一阶段需要与开发团队、项目经理以及其他利益相关者紧密合作,确保自动化测试能够覆盖所有重要的功能点。 ##### 2.2 自动...

    什么是自动化测试

    自动化测试是一种将原本由人类执行的测试步骤转化为计算机程序自动执行的过程,旨在减少手动测试的繁琐和时间消耗,提升测试效率。它涉及到测试用例设计、脚本编写、执行和维护等多个环节,适用于那些需要重复执行、...

    WEB自动化测试框架文档.doc

    自动化测试在WEB应用开发中扮演着至关重要的角色,因为它能有效地减少手动测试的工作量,提高测试覆盖率,同时缩短产品上市时间。关键思路在于将非图形界面的测试任务自动化,通过编程语言或脚本语言生成测试用例,...

    软件测试--自动化测试

    实践环节中,学习者应该选择不同类型的自动化测试工具进行初步学习,如白盒测试工具(用于结构测试,关注代码内部逻辑),黑盒测试工具(关注软件功能表现,不涉及内部结构)和负载自动化测试工具(模拟大量并发用户...

    自动化测试讲解.ppt

    * 在资源受限的情况下,应以最小化占用资源的方式进行自动化测试。 四、自动化测试的实施难度与风险 自动化测试的实施难度与风险包括: * 设计、实现自动化测试技术平台的难度。 * 自动化测试可行性分析的难度。 ...

    自动化测试用例设计

    1. **前期发展阶段**:在这一阶段,自动化测试主要聚焦于构建完整的测试环境系统,以支持自动化例行测试。然而,实践中遇到了许多挑战: - **系统规模过大**:导致测试结果中包含大量错误信息,难以区分是产品缺陷...

    自动化测试详细介绍!

    1. 为什么要进行自动化测试? - 应用系统日趋复杂:随着技术的发展,软件系统包含了更多的功能和交互,手动测试难以覆盖所有场景,自动化测试能更高效地进行大规模的测试。 - 避免重复测试:在迭代开发过程中,...

    Robot自动化测试环境搭建

    在进行 Web 自动化测试时,浏览器兼容性测试也是非常重要的。Robot Framework 结合 Selenium2Library 支持 ChromeDriver 和 IEDriver,分别用于自动化测试 Google Chrome 和 Internet Explorer 浏览器。确保安装相应...

    自动化测试练习源代码.zip

    本资源“自动化测试练习源代码.zip”提供了一套用于学习和实践自动化测试的源代码,帮助开发者掌握自动化测试的基本概念和技术。下面将详细探讨自动化测试的相关知识点。 1. 自动化测试基础: 自动化测试是使用...

    自动化测试可行性分析报告

    在进行自动化测试评估时,项目进度是一个关键因素。根据提供的数据,项目分为需求阶段、开发阶段和测试执行阶段。理解这些阶段的工期内部结构,可以预估何时最适合引入自动化测试,以最大程度地发挥其优势。 二、...

    软件测试自动化 软件测试自动化

    本书强调了在进行自动化测试前,需要设定合理的预期,并明确何时、在哪些部分可以实施自动化测试。此外,书中提出对自动化测试进行周密的规划,并介绍了如何实现控制同步数据驱动测试(CSDDT)框架。这种框架旨在...

    软件测试,自动化测试 测试

    标题和描述中提到的“软件测试”和“自动化测试”是IT行业中两个关键的领域,它们对于确保软件产品的...通过阅读和实践,你可以掌握如何有效地进行软件测试,提升软件产品的质量,以及如何在团队中实施自动化测试策略。

    自动化测试在测试内存泄露中的应用

    通过合理的测试用例设计和高效的自动化测试工具,开发者能够在软件开发早期阶段就发现并修复内存泄露问题,从而确保软件的稳定性和可靠性。在未来,随着自动化测试技术的不断发展和完善,其在内存泄露测试中的作用将...

    走出自动化软件测试的乌托邦

    - **必须信任自动化测试**:虽然自动化测试能够提供可靠的结果,但在某些情况下,仍需要人工干预来进行更深入的验证。 - **了解测试开发的模式**:不同的测试策略和方法适用于不同类型的应用程序,理解这些模式可以...

Global site tag (gtag.js) - Google Analytics