快捷搜索:

浅谈软件测试自动化解决方案

【择要】 测试是软件开拓的一个紧张环节。本文叙述了软件测试自动化测试的实施。从自动测试的好处. 影响软件测试自动化实施的身分孕育发生缘故原由等几个方面启程.总结软件自动化测试的规划。

【关键字】软件测试  软件自动化测试

软件测试自动化,已经成为海内软件工程领域一个众所周知的课题;不言而喻,软件测试从业者都意识到软件测试这项事情走向成熟化、标准化的一个必经之路便是要实施自动化测试。大概您觉得实施自动化测试不是必须,大概您觉得测试的思惟是开展该事情的精髓、而对象只是帮助,那么我要奉告你我的设法主见:从谋略机这一宏大年夜学科成长至今,它最根本的意义是办理人类手工劳动的繁杂性,成为替代人类某些重复性行径模式的最佳对象;我们弗成推翻测试思维在测试事情中的指示思惟职位地方,但若何将思惟转化成可操作的规划,本文大概会给您一些启示。

曩昔听过北京中软的一个业内专家讲一句话,感觉挺经典:凡是说既是科学又是艺术的学科,便是阐明它是不成熟的学科!他将软件工程和修建行业做类比,让我们深深体会到软件工程走向成熟化的任重与道远。而软件测试,更是一个新兴的领域,虽然近几年获得了快速成长,也跟着该领域从业者数量的一日千里,培养了一批高档的人才;然则依然有若干企业和小我事情在迷茫中:这种利诱是由于工程师们手中的测试事情与抱负的测试模式造成的强烈反差,这种无奈是由于他们和开拓职员一样的努力却有不合的报酬,这种迷茫是由于测试事情者不知道这个领域里是否还有自己的成漫空间和人生代价的表现!笔者觉得:如今的软件测试行情,正处在群雄逐鹿的混战岁月,每小我、每个有测试部门或从事测试营业的企业,都该发扬百花齐放、百家争鸣的精神,多多借鉴国内外先辈的测试履历,参考业界盛行的行业标准,找到得当自己团队的测试措施和模式,创造更大年夜的社会代价,发挥更大年夜的人生代价。

实施软件测试自动化的来由阐发

首先,测试职员的事情比以往任何时刻都加倍艰苦,由于公司和组织盼望以更快的速率和更低的资源开拓出高质量的利用法度榜样。

此外,在很多项目中,测试职员的所有义务实际上都是手动处置惩罚的,而实际上,有很大年夜一部分重复性强的测试事情,是可以自力开来自动实现的。

还有,在大年夜型项目中测试团队和其他的团队之间没有足够的相助,无法匆匆进彼此的事情。

着末,从小我角度来说,测试职员平日很难花费大年夜量光阴来进修新技能;这是今朝海内测试从业者的现状,太多的企业为了节约资源而将刚刚走出校门的卒业生作为测试工程师,他们逐日做着忙碌的重复事情,又基于自身技能的不深,虽怀博览群书的心愿却不知从何进脱手。所谓光阴似箭,由于一转眼我们就说到未来的5年、10年后,我们这些技能不深的测试工程师能做什么呢?而软件测试自动化,也是未来测试工程师或即将成为测试工程一项强有力的事情技能。

可以说,实施测试自动化是软件行业一个弗成逆转的趋势,假如在这个领域走在了前列,无论从企业的核心竞争力照样小我的事情技能来说,都有伟大年夜的良好性,而海内浩繁的软件厂商也切实其其实相继而至的动手开展着这项事情。

当然海内软件测试自动化实施现状阐发

跟着浩繁具有了必然优秀实施自动化测试履历的企业陆续呈现,也伴跟着很多组织对这项事情依然是丈二的和尚-摸不着头脑。对当前海内软件企业实施或故意向实施测试自动化时面临的主要问题,按实施的不合层次来说:

——干脆觉得测试自动化是个遥弗成及的工作,我们这样的小公司不必实施,职员、资金、资本都不够,今后再说吧!

——热血沸腾的实施测试自动化,购买了对象,执行了新的测试流程;几个月后,对象放在那里成了共享资本,测试流程又涛声依旧,回到原本的模式。

——公司实施了自动化测试;然而开拓与测试之间,以致与项目经理之间抵触重重,出了工作不知若何穷究责任;虽然还在勉强保持的自动化测试,但实施的资源比手工测试增添了,事情量比早年更大年夜了,从而造成项目团队职员怨声载道,更怀念起那段手工测试的自在岁月,唉!那一场风花雪月的事,既然要停止又何必开始…

——自动化测试实施比拟较较成功,但或多或少还有些问题,比如对象选择不准确,培训不到位,文档不完整,职员分配分歧理,脚本可掩护度不高等等,造成一种外面上的自动化测试流程,是一幅空架子,犹如山间竹笋,嘴尖皮厚腹中空。

海内软件测试自动化实施不成功缘故原由阐发

——公司高层意识不到软件测试自动化的紧张性;殊不知,其他竞争对手们都大年夜张旗鼓的开展这方面钻研和策划的时刻,自己还对此持忽视立场,等到全部行业都前进到一个新的层次,那时再动手做,可能便是热锅上的蚂蚁了。

——所谓凡事预则立,不预则废。一个软件企业实施测试自动化,绝对不是拍脑袋说干就醒目好的,它不仅涉及测试事情本身流程上、组织布局上的调剂与改进,以致也包括需求、设计、开拓、掩护及设置设置设备摆设摆设治理等其他方面的共同。

——软件开拓是团队事情,在这一领域要尤其重视以工本钱;以是职员之间的共同、测试组织布局的设置异常紧张,每个角色必然要将自己的责任完全担任起来,这也是削减和办理前述团队抵触的需要手段。

——对开展自动化测试的监督和评估相称紧张,也包括对事情产品的反省和职员的稽核。必然要将自动化测试周全深入的贯彻到测试事情中,不能应付了事,不能做外面事情。这项事情在CMM三级里规范的很好,只可惜我们的很多公司对CMM真的只是“过级”!

精确熟识海内未实施软件测试自动化的根源

今朝海内的软件公司,很多照样处于获取本钱的原始积累阶段,我们不能说公司引导完全不注重测试,而是测试整体行业都没有被注重起来,这是其一;其二是公司高层有更必要注重的环节,例如探求客户签订单,或者开拓,这些是直接关系公司逝世活的命脉性器械。

即便企业注重测试,假如公司做一番对照周全的评估(在后续的测试自动化引入入前提里,再具体阐明),也不必然非要实施自动化测试。笔者觉得一些中小软件公司在大年夜刀阔斧执行自动化测试之前,在测试流程治理、测试缺陷流程、测试职员技能培训等方面干事情,这样可以用对照少的资源投入来获取相对较大年夜且经久的收益回报。

着末,针对通俗测试工程师的一些建议,在这样的公司里,着实有着很多意想不到的良好性:

(一)这样的公司测试假如不正规,那么你就有更大年夜更多的发挥空间。

(二)你可以零丁进修自动化测试技巧,自己先试着利用到日常事情的软件项目中。

(三)你可以直接和开拓职员沟通,以致向他们进修开拓技巧,这对将来的自动化测试中开拓脚本很有好处。

(四)每个优秀测试工程师的生长都是个循规蹈矩的历程。我碰到很多测试界的新手向我发牢骚,很忸捏我没有什么可以告诫他们的,只是盼望这样的新人降服浮躁情绪,步步为营练好基础功,想成为优秀的测试专家,就要经历这个阶段。

软件测试自动化的引入前提

假如你的测试部门故意向引入自动化测试,那么首先要从思惟上统一熟识。

自动化测试能大年夜大年夜低落手工测试事情,但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标,实际上想要达到 100% 的自动化测试,不仅价值相称昂贵,而且操作上也是险些弗成能实现。一样平常来说,一个 40-60% 的使用自动化的程度已经是异常好的了,达到这个级别以上将过大年夜的增添测试相关的掩护资源。

测试自动化的引入有必然的标准,要颠末综合的评估,绝对不能理解成测试对象简单的录制与回放历程。实际上,从实现成熟度来说,自动化测试分五个级别:

级别

阐明

优点

毛病

用法

一级

录制和回放

自动化的测试脚本能够被自动的天生,而不必要有任何的编程常识

拥有大年夜量的测试脚本,当需乞降利用发生变更时响应的测试脚本也必须被从新录制

当测试的系统不会发生变更时,实现小规模的自动化

二级

录制、编辑和回放

削减脚本的数量和掩护的事情

必要必然的编程常识;频繁的变更难于掩护

回归测试时,用于被测试的利用有很小的变更

三级

编程和回放

确定了测试脚本的设计,在项目的早期就可以开始自动化的测试

要求测试职员具有很好的软件技能,包括设计、开拓

大年夜规模的测试套件被开拓、履行和掩护的专业自动化测试

四级

数据驱动的测试

能够掩护和应用优越的并且有效的模拟真实生活中数据的测试数据

软件开拓的技能是根基,并且必要造访相关的测试数据

大年夜规模的测试套件被开拓、履行和掩护的专业自动化测试

五级

应用动作词的测试自动化

测试用例的设计被从测试对象平分离了出来

必要一个具有对象技能和开拓技能的测试团队

专业的测试自动化将技能的应用最优化的结合起来

自动化测试能前进测试效率,快速定位测试软件各版本中的功能与机能缺陷,但不会创造性的发明测试脚本里没有设计的缺陷。测试对象不是人脑,要求测试设计者将测试中各类分歧路径的校验点进行定制;没有定制完备,即便事实上掉足的地方,测试对象也不会发觉。是以,制订周全、系统的测试设计事情是相称紧张的。

自动化测试能前进测试效率,但对付周期短、光阴紧迫的项目不宜采纳自动化测试。执行自动化测试的前期事情相称宏大年夜,将企业级自动化测试框架利用到一个项目中也要评估其相宜性,是以决不能盲目的的利用到任何一个测试项目中,尤其不得当周期短的项目,由于很可能必要大年夜量的测试框架的筹备和实施而会被拖跨。

实施测试自动化必须进行多方面的培训,包括测试流程、缺陷治理、职员安排、测试对象应用等。假如测试历程是分歧理的,引入自动化测试只会给软件组织或者项目团队带来更大年夜的纷乱;假如我们容许组织或者项目团队在没有关于应该若何做的任何常识的环境下实施自动化测试,那将肯定会以掉败了却。

假如软件企业故意向实施自动化测试,那么应该具备什么样的前提才可以引入自动化测试呢,才可以最大年夜可能的削减引入风险,并能够可持续性的开展下去呢?

? 对企业自身现状的评估阐发

第一,从企业规模上来说,没有严格限定。无论公司大年夜小,都必要前进测试效率,盼望测试事情标准化,测试流程正规化,测试代码重用化。以是第一要做到的,便是企业从高层CTO开始,直到测试部门的任何一个通俗工程师,都要树立实施自动化测试的坚决决心,不能抱着碰命运运限的立场。一样平常来说,一个这样的软件开拓团队可以优先开展自动化测试事情:测试-开拓职员比例相宜,比如1:1到1:1.5;开拓团队总人数不少于10个。当然,假如你的公司只有三五个测试职员,要实施自动化测试绝非易事;不过可以先让一个、两个测试带头人首先试着开展这个事情,赓续总结、赓续前进,并和层层上司常常陈诉请示事情的开展环境,再终极抉择是否周全执行此事。

第二,从公司的产品特性来说,一样平常开拓产品的公司实施自动化测试要比开拓项目的公司要良好些。缘故原由很简单,便是测试掩护资源和风险都小。产品软件开拓周期长,需求相对稳定,测试职员可以有对照富裕的光阴去设计测试规划和开拓测试脚本;而项目软件面向单客户,需求难以一次性统一,变化频繁,对开拓、掩护测试脚本迫害很大年夜,呈现问题时一样平常都以开拓代码为主,很难照应到测试代码。但决不是说做项目软件的公司不能实施自动化测试,当前海内做项目的软件公司居多,有很多正在执行CMM等级标准,这是好工作;只要软件的开拓流程、测试流程、缺陷治理流程规范了,执行自动化测试自然迎刃而解。

第三,说说标准化的开拓和治理流程。不管是CMM照样ISO,不管是开拓流程、测试流程照样缺陷治理流程,这里不能逐一阐述,可以参考RUP(Rational Unified Process, Rational 统一历程),可以参考很多业界文献,我只阐明一点,也是我们IT从业职员以致任何从业职员一个很好的事情原则:

把你想做的写下来(计划治理)

按照你写下来的去做(行径治理)

把做的工作记录下来(申报治理)

呈现的问题要设法办理(跟踪治理)

在测试流程里,这几个要点都逐一有所落实;假如你的软件开拓团队据此开拓软件,那么完全具备实施自动化测试的前提。当然,大概一些公司的测试治理对照纷乱,出了问题不知道谁认真,测试职员或开拓职员全日碌碌却无为,软件缺陷不胜罗列,那么笔者觉得照样首先从治理角度来规范一下公司的开拓流程和测试流程吧!

第四,从测试职员小我本质和角色分配来说,除了有一个CTO级人物做后盾外,还应该有个具有优越自动化测试背景和富厚自动化测试履历的测试主管,不仅在技巧方面,更紧张的是在往后的自动化测试治理位置起着引导的感化。还要有几个出色的开拓履历优越的测试职员,当然也可所以开拓工程师,认真编写测试脚本、开拓测试框架;他们不必要对产品营业懂得深刻,但要具有将软件营业逻辑转化成可测试逻辑的阐发能力,属于自动化测试设计者。还有一些测试履行者,他们要对软件产品营业逻辑相称纯熟,共同测试设计者完成设计事情,并在履行自动测试时,敏锐的阐发和判断软件缺陷。假如你的测试团队具有这样的职员角色雏形,那么具备了实施自动化测试的又一前提。

综合阐发上述四个前提,企业可以抉择是否执行自动化测试;然则为了削减实施风险,我们还要猜测到其他潜在的风险,做好事先办理思路。

对企业执行自动化测试的风险阐发

其一是资金风险。虽然你的公司具备实施自动化测试的前提,但假如企业效益不好,照样先扭亏为盈吧。一款正版的测试对象价格宏大年夜,企业要首先斟酌资金是否容许购买正版的测试对象软件,以是进行测试对象的资源估算,以及引入自动化测试后组织布局调剂等方面的资源估算是很需要的。假如你的公司处在犹如前面所言的自动化测试实验阶段,可以应用试用版测试对象。当然具有实力的公司可以按照自身的事情流程自立开拓测试对象,本文不斟酌这种环境。

其二是自动化测试对软件功能类型的切入点的风险。企业开拓的产品营业和功能是否必要自动化测试,包括白盒自动化测试、功能自动化测试和机能自动化测试。比如一些公司开拓单机版软件,只必要做功能测试,那便不必斟酌第三种;有的公司开拓简单界面之类的软件,例如搜索引擎,也可不必斟酌第二种;而大年夜多半海内公司开拓的软件,因为各类缘故原由,一样平常都不斟酌第一种。也有可能公司开拓的软件特殊性很强,市场上根本没有支持它的自动化测试对象,此时要另辟途径。这种评估相称紧张,要根据自身的产品功能特性来综合评估。针对不合阶段采纳自动化测试的各种上风,我引用一个表格供读者参考:

测试阶段

描       述

备    注

单元测试/组件测试

这个测试事情平日是开拓职员的职责,很多不合的措施能够被应用,比如"测试先行",它是一个测试框架,开拓职员在编写代码前编写不合的单元测试,当测试经由过程期,代码也被完成了。

经由过程应用正式的单元测试,不仅能够赞助开拓职员产出加倍稳定的代码,而且能够是软件的整体质量加倍的好。

集成测试

这里的测试事情集中在验证不合的组件之间的集成上。

这种类型的测试平日是被测试系统的加倍繁杂测试的根基,大年夜量的边缘测试被合并以制造出不合的差错处置惩罚测试。

系统测试

这种测试是经由过程履行用户场景模拟真实用户应用系统,以证实系统具有被期望的功能。

这里不必要进行自动化的测试。安装测试、安然性测试平日是有手工完成的,由于系统的情况是恒定不变的。

其它两种异常紧张的测试

回归测试

回归测试实际上是重复已经存在的测试,平日假如是手工完成的化,这种测试只在项目的结尾履行履行一到两次。

这里完全有潜力利用自动化的测试,你能够在每次构建完成后履行自动化的回归测试,以验证被测试系统的改变是否影响了系统的其他功能。

机能测试

机能测试包括以下不合测试形式:

- 负载测试

- 压力测试

- 并发测试

-.....

假如没有自动化的测试对象,你将不能履行经由过程模拟用户的负载实现的高密集度的机能测试。

其三是软件自动化测试切入要领的风险。正如前面所言,必然要记着将自动化测试与手工测试结合起来应用,分歧理的筹划会造成事情事倍功半。首先,对付自动化测试率的目标是 10/90 (10% 的自动化测试和 90% 的手工测试)。当这些目标都实现了,可以将自动化测试的应用率前进。对付何种测试环境下引入自动化测试,何时依然采纳手工测试,我们分开阐述。

一样平常这样的测试前提下应用自动化测试:

项目没有严格的光阴压力

具有优越定义的测试策略和测试计划(知道要测试什么,知道什么时刻测试)

对付自动化测试你拥有一个能够被识别的测试框架和候选者

能够确保多个测试运行的构建策略

多平台情况必要被测试

拥有运行测试的硬件

拥有关注在自动化历程上的资本

如下前提下是宜采纳手工测试:

没有标准的测试历程

没有一个测试什么、什么时刻测试的清晰的蓝图

在一个项目中,你是一个新人,并且还不是完全的理解规划的功能性和或者设计

你或者全部项目在光阴的压力下

在团队中没有资本或者具有自动化测试技能的人

没有硬件

其四是企业软件的开拓说话风险。当前业界盛行的测试对象有几十种,相同功能的测试对象所支持的情况和说话各不相同,这里笔者总结了当前国际优势行的几个软件测试对象临盆厂商及一些主要IDE产品,读者可根据参考网址去懂得枚举对象和更多对象的具体资料。

临盆厂商

对象名称

测试功能简介

网址链接

Mercury

Interactive

Corporation

winrunner

功能测试

http://www.mercury.com/us/products/

Loadrunner

机能测试

QuickTest Pro

功能测试

Astra LoadTest

机能测试

testdirector

测试治理

IBM

Rational

Rational robot

功能测试和机能测试

http://www-900.ibm.com/cn/software/rational/

products/index.shtml

Rational xde tester

功能测试

Rational testmanager

测试治理

Rational purifyplus

白盒测试

compuware corporation

QARun

功能测试

http://www.compuware.com/products/

QALoad

机能测试

QADirecto

测试治理

DevPartner  Studio Professional Edition

白盒测试

Segue software

SilkTest

功能测试

http://www.segue.com/products/index.asp

SilkPerformer

机能测试

SilkCentral  Test/Issue Manager

测试治理

Empirix

e-Tester

功能测试

http://www.empirix.com/Empirix

/Web+Test+Monitoring/Testing+Solutions

Integrated+Web+Testing.html

e-Load

机能测试

e-Monitor

测试治理

parasoft

Jtest Java

白盒测试

http://www.parasoft.com/jsp/products.jsp?itemId=12

C++test

C/C++白盒测试

.test

.NET 白盒测试

RadView

WebLOAD

机能测试

http://www.radview.com/products/index.asp

WebFT

功能测试

MicroSoft

Web Application Stress Tool

机能测试

http://www.microsoft.com/technet/archive/itsolutions/ intranet/downloads/webtutor.mspx

Quest Software

Benchmark Factory

机能测试

http://www.quest.com/benchmark_factory/

Minq Software

PureTes

功能测试

http://www.minq.se/products/

其五还要做光阴估算。在评估完前面几项指标后,必要估算实施测试自动化的光阴周期,以防止挥霍不需要的光阴,削减在职员、资金、资本投入上的无故耗损。虽然到测试自动化步入正轨今后,会起到事半功倍的效果,但前期的投入伟大年夜,要周全斟酌各类身分,明确凿施计划并按计划严格履行,才能最大年夜限度低落风险。

其六是事情流程变化风险。测试团队甚至全部开拓组织实施测试自动化,或多或少会由于适应测试对象的事情流程,带来团队的测试流程、开拓流程的响应变化,而且,假如变化不善,会引起团队成员的诸多诉苦情绪;以是应该只管即便削减这种变化,并降服变化中可能存在的艰苦。

其七是职员培训与变化风险。简单而言,便是测试团队职员的培训具有风险性,例如每个角色的定位是否准确,各角色职员对培训技能的掌握程度是否知足,尤着实施途中假如发生职员变化等风险,都要事先做出猜测和响应的处置惩罚规划。

一个企业或软件团队实施测试自动化,会有来自方方面面的压力和风险,然则凭借团队成员的智慧才智和公司高层的大年夜力支持,事先做好评估,做好风险猜测,那么可以奉告你一个冲感民心的消息:你的团队成功引入了测试自动化!有了测试自动化,我们即可享受它带来的超凡代价和无穷魅力:我们的测试事情变得更简单、更有效,我们事情在一个专家级的团队里,是以我们天天都在享受这种成功的喜悦!

关于本文:本文主要阐发当前海内软件企业的测试团队现状,并从治理角度阐发测试团队实施软件测试自动化时所应斟酌的问题,并从几个角度阐发实施的风险,终极才可以成功引入自动化测试。在后续文章里,会结合实例讲述若何详细实施测试事情的自动化。谢谢我的好同伙pcl 和王威的大年夜力支持,并在百忙中无怨无悔的为文章批点、建议;作者本人才疏学浅,文中难免有欠深刻、周全的地方,望大年夜家品评斧正,也盼望同业同伙们多多弥补、交流。

您可能还会对下面的文章感兴趣: