实施自动化功能测试的解决方案

摘要

  当今的企业需要掌控其关键业务应用的所有功能测试,以确保所有业务流程工作符合预期。通过实施自动化的功能测试,企业可以极大提高测试速度和精度,从挼间项目中得到更高的投资回报并且显著地降低风险。

  本文简要描述了自动化功能测试的优势和挑战,帮助企业考虑实施最佳测试自动化的方法。

  1.介绍

  毫无疑问,严格的功能测试是成功开发应用的关键。开发人员,测试小组和管理人员所面临的挑战是,如何加速测试流程和提高测试的精确性和完备性,同时还不能增加已然很紧张的预算。

  通过将功能测试的关键环节自动化,可以满足有挑战性的发布时间安排,测试得更加全面和可靠,检验业务过程功能的正确性,从而从上线的运营中,获得极高的产值和客户满意度。然而,功能测试的自动化会产生一些新的顾虑:

  测试过程自动化的成本是多少?其投资回报率(ROI)是什么?

  哪些应用/过程适合做自动化测试,哪些不合适?

  是否需要新的培训,这将对当前的开发计划安排产生怎样的影响?

  自动化测试得正确地方法论是什么?

  自动化测试时涉及到哪些情况?

  当比较自动化测试产品时,哪些功能最重要?

  在自动化测试项目开始之前,以上和其他一些问题应该得到全面地调查和了解。

  2.功能测试与单元测试

  功能测试是指确保应用按期望运行,也就是按照用户的期望运行。功能测试以一种有效的方式捕获用户的需求,让用户和开发人员对业务过程满足需求充满信心,同时使得QA团队可以检验软件已发布就绪。

  功能测试是单元测试的补充,但有很大不同。简言之,单元测试说明了代码执行是否正确;功能测试说明了完成的应用是否做正确的事情。单元测试往往是从代码开发人员的角度来看,而功能测试是从最终用户和业务过程角度来看。

  3.为什么将功能测试过程的自动化?

  现在,IT部门的压力越来越大。管理部门希望IT部门通过软件可以交付新功能,抓住新的商业机会和提供有竞争力的优势。这就意味着需要完成更多的业务应用开发项目,而时间会很紧迫,并不是都有更多的预算或资源。

   同时,管理部门越来越意识到软件和销售额的重要关系。Web Services,联机事务处理和ERP应用不仅是非常关键的,而且,它们直接关系到公司的产值能力。现在企业非常依赖非常复杂的计算机基础设施。如图, 一个典型的企业可能依靠多个应用,运行在不同的系统上,使用几种不同的前端客户端,涉及到大量的业务过程并且与很多种数据集交互。

  可能的组合是高度复杂,需要成百上千的测试场景。

组件 数量 事例
平台 1 Intel
操作系统 5 Windows XP, ME, 2000, NT4, and 98
前端客户端 4 Internet Explorer 6, Netscape 7.1 Java, Visual C++
业务过程 5 Login, Search, Order Entry, Order Confirmation, Order Fulfillment
数据集 15 usernames, passwords, search strings, order numbers, ship dates,等的组合
需求的测试数量 1x 5 x 4 x 15 = 1,500 可能的测试场景!!

  当软件出现故障时,其代价是非常大的,包括销售额下降,员工的低效率,客户的不满和开发和QA人员的士气低落。在软件开发周期中,缺欠发现的越晚其代价越高。上线后发现的缺欠的改正成本可能比在设计阶段发现的高出100倍。自动化是提高软件测试过程的速度,精确度和灵活性的关键,使公司可以更早发现和改正缺欠。

  4.手工功能测试的挑战

  手工功能测试过程本身存在很多挑战:

   时间过长。有限的IT资源和紧张的交付时间使得手工测试对于满足业务目标来说过于耗时。采用手工测试,测试和开发人员不得不计划冗长的每步测试过程,然 后手工执行,再现问题,快速消耗了有价值的时间和资源。根据Aberdeen Group,一个独立行业分析公司,90%的IT项目交付出现延迟,手工测试是其中一个因素。

  覆盖不完全。平台,操作系统,客户端设备,业务过程和数据集等的组合对于手工测试过程来说,工作量非常大。需要验证功能的测试用例数量非常巨大。所以当修改完成后手工回归测试花费的时间过长,以至于不能做全面的回归测试。

  风险更高。手工测试过程比计算机过程的错误和疏忽更多。人们会变得疲倦,输入数据错误,不能总是正确执行测试,并不是总有时间测试所有应该测试的内容。

  5.自动化测试的好处

  自动化测试有很多好处,包括:

   快速执行。计算机在执行功能测试脚本的时候比人快得多,因此在有限的时间里能测试的更多,在给定的时间里更多的应用可以被测试,可以按时完成更多的工 程。并且和人不同,计算机一天工作24小时,还包括晚上,周末和假期;他们不会感到无聊或者疲倦;而且他们从不对该作的事情和不该作的事情自作主张。

   提高测试覆盖。自动测试产品支持在所有流行的浏览器,操作系统等上执行测试脚本,用自动化的工具对不断变化的应用和环境做回归测试,要比手工测试容易得 多。通过整合的数据驱动表单的功能,自动化测试产品允许开发和测试团队执行计算,操作数据集,以及快速创建多种反复的测试,使得扩大测试覆盖范围。使用自 动测试工具可以仿效任何混合的事务和任意的用户负载。

  提高测试精确度并提早发现更多错误。自动化测试给开发人员提供了一种再现和记录软件缺陷的非常容易的方法。这将在所有环境,数据集和业务过程等之间确保功能的正确性,同时对开发过程起到加速作用。

  提供规范化的过程。自动化测试鼓励测试团队规范化他们的过程,以得到更高的一致性和更好的文档记录。

  提高测试的重用性。测试一旦脚本化,开发人员可以使用和重用这些脚本,可以将脚本添加到测试套件中,以适应应用的变化。没有必要为每个应用的相同功能而重新创建脚本。

  支持ERP/CRM。现在越来越多的用户使用ERP/CRM解决方案,对端到端的回归测试的需求正变得越来越频繁和越来越重要。

  6.在什么情况下采用自动化测试?

  一般来说,把自动化测试的工作集中在关键的业务过程,复杂应用,以及由这些组成的用例方面(相对于低级别任务,例如系统级的验证)是很有意义的。

   如果一个企业拥有众多每天工作很多小时的软件测试人员,但是产品仍然出现质量和功能问题,那么这家企业肯定能从自动化测试中受益。是否决定实行自动化测 试应当充分考虑到投资回报,但是一般情况下,如果一个应用需要多次构造/补丁/修改;需要在大量的硬件或软件配置下进行测试;并且支持众多并发用户等,那 么将会是值得采用自动化测试。另外,如果涉及到重复性的工作,例如数据装载和系统配置等,或者应用需要满足特定的服务等级协议(SLA),那么自动化测试 当然也会节约成本。

  7.如何确定自动化测试的投资回报?

  任何投资回报都可以从一个简单的计算得出:

  投资回报=投资的净现值/总初始成本

  当采用测试过程的自动化时,成本是切实可见的,但是净现值仍旧包含许多无形的因素。最好的方法就是尽量精确计算直接成本,然后与自动化测试产生的直接和间接的效益进行对比。

  在ROI计算中需要考虑的直接成本包括:

  购买成本:购买自动化测试软件产品的成本。

  硬件成本:功能测试所必需的硬件成本。有代表性的是,功能测试不需要特殊的硬件,只需带有以太网端口的标准台式电脑或者工作站即可。

  劳动力成本:培训职员编写测试用例脚本或进行手工测试的成本因素。确认要包括招聘,雇佣,支付工资,和保留熟练的QA工程师的成本。

  培训成本:依赖于所选择的测试产品,培训使用者精通编写自动测试脚本是值得的。当然,公司可以选择雇用专业的服务公司创建最初的自动化测试。

  当衡量自动化的潜在益处时,考虑隐性效益是很重要的,例如测试人员高涨的士气和对工作的满意度,改进的客户满意度和忠实度,还有因为最终用户使用的可信赖的软件而不断提高的知名度。

  8.如何评估自动化测试软件?

  很多商家提供自动化测试产品。每个解决方案都有自身的优势和劣势,独特的功能,和市场环境。每个企业需求的特殊性决定了最适合的一种选择。然而,任何自动化测试产品都应当包含一些关键的性能:

  自动化测试的“Scriptless”表示法:产品应该提供一个可点击的界面,在测试时与应用组件进行访问和交互——而不是呈现出一行行的脚本。测试者应该可以可视化每一步的业务过程,并且直观的观察和编辑测试用例。这将减少测试者在学习上走弯路,并帮助测试团队面对紧迫的最终期限。

  集成的数据表:自动化功能测试的一个关键的好处就是可以使系统快速产生大量数据。还有一个重要的功能就是操作数据集,执行计算,并以最小的代价快速创建数以百计的重复测试和组合。企业应该寻找拥有提供强大计算能力的集成电子数据表单的产品。

   清晰明确的报告:如果测试结果不容易理解或解释,那么即使运行大量测试数据也不会有什么好处。测试产品应当自动的产生并显示所有测试运行方面的报告,并 用易读的格式解释结果。报告应当提供的细节包括:应用在什么地方发生了失败和使用了什么样的测试数据;为应用的每一步提供高亮或有差别的屏幕显示;并提供 每个检查点通过和失败的详细解释。当然还应当能够在不用修改的情况下,在测试和开发团队之间共享报告。

  9.要点列表:自动化测试成功的五个关键

  即使已经证明了测试的自动化是经济有效的,然而如何确定转变到自动化测试过程上的最佳方法依然是困难的。这部分略述了执行自动化测试过程的五个基本原则。

  1.完成一个测试计划文档。理解被测应用的目标是任何测试成功的基础。这包括全面的预先计划以确保测试需求被正确的实施。测试工具应提供为所有被测应用管理测试用例和需求的能力。

  2.将测试细分为自动测试用例。一个组织自动执行一个测试计划的所有方面是不可能的。自动化测试应该集中围绕在需求设计的复杂应用上和急迫的业务过程功能上,许多组织发现他们使用自动化测试只占总测试用例的60%,而余下的40%为手工测试。

   3.创建自动化测试。测试工具极大简化了准备测试数据和脚本的过程。这使得更多的完全测试可最佳地使用测试资源和结果。使用测试工具,使用者可以不必作 任何实际脚本而创建测试。测试工具应能自动捕获目标应用的业务过程,并允许使用者创建一个可以被保存的而且可以被管理的测试流程。

  4.提高测试覆盖的数据驱动测试。测试者就可以为应用创建一个使用储藏在Excel电子表格里的特殊关键字的依赖于数据的测试。这就允许测试者通过应用驱动大量的测试数据。

  5.给测试增加验证。需要在测试中添加了“通过或失败”的测试标准。这包括了应用的前端,中间层,或后端数据库的验证。内置的数据库验证使数据库值的存储得到确认,并确保处理的精确性和已更新、删除或增加的数据记录的完整性。

  10.总结

  功能测试可以不是耗时或高成本的问题。采用自动化功能测试,企业可以将重点放在改进自动业务过程方面。开发和QA组可以增加测试过程的速度和精确度。整个IT部门可以获得更高的投资回报,而且降低了大量风险。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-18 15:45:03

实施自动化功能测试的解决方案的相关文章

测试工具-GWT框架的web项目如何实施自动化

问题描述 GWT框架的web项目如何实施自动化 公司有个web项目是用google的GWT框架做的,我试图使用selenium获取页面元素几乎都是失败的,请问遇到这种项目自动化有何好方法求指点. 解决方案 路过水一贴,O(∩_∩)O.

使用QTP进行silverlight的自动化功能测试

问题描述 我使用的是qtp11来进行silverlight自动化功能测试的,一些控件都能识别,但是遇到一些覆盖类型(在一个控件上叠加一个控件)的就识别不出来了,我用对象探测器来探,根本就探不到外面那层的,只能识别到最里面的那层!在录制的时候我看到脚本里好像识别出来了.特别是silverlight里面有一些控件识别不了,比如自己制作的按钮就识别不了,录制的时候是使用坐标来进行点击的.求解决方案啊! 解决方案 解决方案二:自己先顶下,希望能帮我解决,我只想在公司立足啊!解决方案三:该回复于2011-

基于IBM Rational Robot的自动化功能测试框架

简介: 本文介绍了构建在 IBM Rational Robot 基础之上的自动化功能测试框架,来帮助组织更好的 进行自动化的功能测试. 1. 前言 测试本身就是一项异常艰苦的工作,而成功的进行自动化的功能测试,对很多软件开发组织来讲,更 是困难重重.本文介绍了构建在IBM Rational Robot基础之上的自动化功能测试框架,来帮助组织更好的 进行自动化的功能测试. 2. 现实的挑战 2.1 自动化测试的迫切需求 随着业务的变化,软件产品的种类越来越多,软件产品的升级越来越快,在很多的软件开

自动化功能测试的逻辑

持续交付涉及到软件开发从需求到上线.运维全生命周期的各个活动.其中很重要的一个活动就是测试.如果没有自动化测试,整个交付的节奏就会慢下来.接下来我们来聊一聊这背后的逻辑和如何才能把它做好. 软件开发中的自动化测试可以粗略的分为自动化单元测试和自动化功能测试.二者有很多的相似之处,但同样也有很多不同的关注点.本文主要关注的是 自动化功能测试 . 为什么要做自动化测试 如果你的软件是Web形态的,则用户可以通过浏览器来使用你的软件:如果你的软件是手机游戏,则用户需要有一台手机才能使用你的软件.而 功

《Linux/UNIX OpenLDAP实战指南》——1.8 自动化运维解决方案

1.8 自动化运维解决方案 1.8.1 互联网面临的问题 当今局域网.互联网不断发展,其网络规模也在不断扩大,为了集中管理主机及其相关资源,我们可以通过DHCP及DNS服务器来自动分配IP地址.子网掩码.网关.主机名等相关网络配置信息.随着企业规模不断发展,系统规模不断增加,那么作为系统运维管理人员维护服务器有些力不从心,比如: 当公司业务不断发展,当前业务系统无法满足需求,这时该如何快速部署系统并且应用到当前的业务系统? 批量对业务系统进行变更以及管理,传统方式需要通过登录每台机器进行操作管理

Rational Functional Tester一款Jazz协作平台自动化功能测试工具

Rational Team Concert(RTC)是 Jazz 协作平台上的一款 Rational 产品.结合 Jazz 平台高透明性和清晰度的特点,RTC 的优势也很明显地表现出来: 非常适合团队的协同合作,能够极大的提高产品的开发效率. 在一个产品的开发周期中,为团队协作开发提供很好的扩展功能. 使软件的开发更有效率,更智能,更灵活多样. 项目的更新,会实时地反馈到团队以及与项目相关的的每一个成员,使整个项目的进度变得清晰明了(该特点正是本文下面将要 重点讲解的内容). 另外 RTC 还支

自动化功能测试的基本原则

介绍 每个实行持续交付的项目,都有生产流水线的元素,如持续集成和自动化测试.这些测试是在不同层面进行的,从单元测试到冒烟测试再到功能测试.自动化功能测试的优点之一是可重复性和可预测的执行时间.出于这个原因,它应该作为软件质量的每一个构建之后的指标.功能测试自动化往往会成为一个瓶颈,所以你应该熟悉一下如何创建这样的测试的基本原则. 首先设计你的测试 测试集合可以比作盆景树. 最初的时候,我们照顾树根和树干.我们选择会成长的主要分支,我们每天都细心照料这棵树并等待它长出健康的叶子. 我们可以以类似的

如何创建自动化功能测试的基本原则

介绍 每个实行持续交付的项目,都有生产流水线的元素,如持续集成和自动化测试.这些测试是在不同层面进行的,从单元测试到冒烟测试再到功能测试.自动化功能测试的优点之一是可重复性和可预测的执行时间.出于这个原因,它应该作为软件质量的每一个构建之后的指标.功能测试自动化往往会成为一个瓶颈,所以你应该熟悉一下如何创建这样的测试的基本原则. 首先设计你的测试 测试集合可以比作盆景树. 最初的时候,我们照顾树根和树干.我们选择会成长的主要分支,我们每天都细心照料这棵树并等待它长出健康的叶子. 我们可以以类似的

太平洋保险实施联成互动CRM解决方案

作为中国发展较快的几家保险企业之一,金融保险企业的信息化也如润物细雨在不知不觉的改变着太平洋保险公司.近日,中国太平洋保险公司北京分公司再次向联成互动公司购买使用授权,扩大其SFA的应用.此举表明,保险企业的信息化工作已经迈上了一个新的高度. 为什么要采用CRM? 中国太平洋财产保险股份有限公司是国内金融保险行业具有重要地位的企业,已进入了世界保险企业前200强.其北京分公司的业务范围面向北京地区的集体与个人,从成立伊始就以非常健康的态势发展,保险业务量急剧增长,企业形象与信用保证已得到客户的广