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

(整期优先)网络出版时间:2010-03-13
/ 2

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

宋婷

宋婷(同济大学北京中软资源信息科技服务有限公司)

摘要:进行测试是软件开发的一个重要环节。本文论述了软件测试自动化测试的实施。从自动测试的好处。影响软件测试自动化实施的因素产生原因等几个方面出发.总结软件自动化测试的方案。

关键词:软件测试软件自动化测试

0引言

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)、完全度(completeness)和质量(quality)的软件过程,是SQA(softwarequalityassurance)的重要子域。一个软件从设计到编程,再到最后成功运行乃至成型上市,是一项庞大的工程,中间涉及到数量惊人的代码,出现错误的可能性很大,加上人脑设计所固有的缺点,就更容易出现运行错误。因此,软件测试也就成为了软件工程开发中必不可少的一项程序。随着计算机行业的发展越来越快和越来越完善,整个软件工程的项目流程变得更为精密,软件测试同样也是如此,它需要标准化和规范化的运行,以最大程度的减少出现错误的可能。以前我们在对软件进行测试的时候都是人工测试,其实质是人类的测试思维在整个流程中占据主导地位,但是任何软件经过人工设计后都不可避免的要在计算机上运行,在转化的过程中就极易出现错误。

以前听过北京中软的一个业内专家讲一句话,觉得挺经典:凡是说既是科学又是艺术的学科,就是说明它是不成熟的学科!他将软件工程和建筑行业做类比,让我们深深体会到软件工程走向成熟化的任重与道远。而软件测试,更是一个新兴的领域,虽然近几年得到了快速发展,也随着该领域从业者数量的与日俱增,培养了一批高级的人才;但是依然有多少企业和个人工作在迷茫中:这种困惑是因为工程师们手中的测试工作与理想的测试模式造成的强烈反差,这种无奈是因为他们和开发人员一样的努力却有不同的待遇,这种迷茫是因为测试工作者不知道这个领域里是否还有自己的发展空间和人生价值的体现!笔者认为:如今的软件测试行情,正处在群雄逐鹿的混战岁月,每个人、每个有测试部门或从事测试业务的企业,都该发扬百花齐放、百家争鸣的精神,多多借鉴国内外先进的测试经验,参考业界流行的行业标准,找到适合自己团队的测试方法和模式,创造更大的社会价值,发挥更大的人生价值。

1实施软件测试自动化的理由分析

第一,软件测试人员的任务将会面临越来越多的挑战和困难,因为随着中国计算机行业和行业的快速发展,行业标准越来越规范,国际竞争也是越来越激烈,各个软件公司出于商人本性,毫无疑问的总是希望和组以软件能以更快的速度和更低的成本得到开放,而且还要保证质量、此外,在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上,有很大一部分重复性强的测试工作,是可以独立开来自动实现的。还有,在大型项目中测试团队和其他的团队之间没有足够的合作,无法促进彼此的工作。最后,从个人角度来说,测试人员通常很难花费大量时间来学习新技能,这是目前国内测试从业者的现状。随着中国计算机行业和行业的快速发展,行业标准越来越规范,越来越向着国际水平前进,因此软件测试最终实现自动化也是一个必然的趋势,这将帮助我国的软件行业提高质量和编程水平,可以大大的提高企业的核心竞争力,有助于我国的软件企业做大做强,进行集约化经营,根据目前的形式,也确实有更多的国内厂商注意到了这个问题并正在这么做。

2国内软件测试自动化实施现状分析

随着众多具有了一定优秀实施自动化测试经验的企业陆续出现,也伴随着很多组织对这项工作依然是丈二的和尚-摸不着头脑。对当前国内软件企业实施或有意向实施测试自动化时面临的主要问题,按实施的不同层次来说:有的小公司人员、资金、资源都不足,以后再说吧;公司实施了自动化测试,但又由于各种原因中途而废的;自动化测试实施相对比较成功,其实是一种表面上的自动化测试流程,是一幅空架子,如同山间竹笋,嘴尖皮厚腹中空。

3国内软件测试自动化实施不成功原因分析

公司高层意识不到软件测试自动化的重要性;殊不知,其他竞争对手们都大张旗鼓的开展这方面研究和策划的时候,自己还对此持漠视态度,等到整个行业都提高到一个新的层次,那时再着手做,可能就是热锅上的蚂蚁了。所谓凡事预则立,不预则废。一个软件企业实施测试自动化,绝对不是拍脑袋说干就能干好的,它不仅涉及测试工作本身流程上、组织结构上的调整与改进,甚至也包括需求、设计、开发、维护及配置管理等其他方面的配合。

软件开发是团队工作,在这一领域要尤其注重以人为本;所以人员之间的配合、测试组织结构的设置非常重要,每个角色一定要将自己的责任完全担负起来,这也是减少和解决前述团队矛盾的必要手段。对开展自动化测试的监督和评估相当重要,也包括对工作产品的检查和人员的考核。一定要将自动化测试全面深入的贯彻到测试工作中,不能敷衍了事,不能做表面工作。

4正确认识国内未实施软件测试自动化的根源

目前国内的软件公司,很多还是处于获取资本的原始积累阶段,我们不能说公司领导完全不重视测试,而是测试整体行业都没有被重视起来,这是其一;其二是公司高层有更需要重视的环节,例如寻找客户签订单,或者开发,这些是直接关系公司存亡的命脉性东西。即便企业重视测试,如果公司做一番比较全面的评估(在后续的测试自动化引入入条件里,再详细说明),也不一定非要实施自动化测试。笔者认为一些中小软件公司在大刀阔斧推行自动化测试之前,在测试流程管理、测试缺陷流程、测试人员技能培训等方面做工作,这样可以用比较少的成本投入来获取相对较大且长期的收益回报。

5软件测试自动化的引入条件

自动化测试能大大降低手工测试工作,但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标,实际上想要达到100%的自动化测试,不仅代价相当昂贵,而且操作上也是几乎不可能实现。一般来说,一个40-60%的利用自动化的程度已经是非常好的了,达到这个级别以上将过大的增加测试相关的维护成本。

自动化测试能提高测试效率,快速定位测试软件各版本中的功能与性能缺陷,但不会创造性的发现测试脚本里没有设计的缺陷。测试工具不是人脑,要求测试设计者将测试中各种分支路径的校验点进行定制;没有定制完整,即便事实上出错的地方,测试工具也不会发觉。因此,制订全面、系统的测试设计工作是相当重要的。

自动化测试能提高测试效率,但对于周期短、时间紧迫的项目不宜采用自动化测试。推行自动化测试的前期工作相当庞大,将企业级自动化测试框架应用到一个项目中也要评估其合适性,因此决不能盲目的的应用到任何一个测试项目中,尤其不适合周期短的项目,因为很可能需要大量的测试框架的准备和实施而会被拖跨。

实施测试自动化必须进行多方面的培训,包括测试流程、缺陷管理、人员安排、测试工具使用等。如果测试过程是不合理的,引入自动化测试只会给软件组织或者项目团队带来更大的混乱;如果我们允许组织或者项目团队在没有关于应该如何做的任何知识的情况下实施自动化测试,那将肯定会以失败告终。