首页 > 范文大全 > 正文

浅议软件测试自动化

开篇:润墨网以专业的文秘视角,为您筛选了一篇浅议软件测试自动化范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:软件测试是保证软件质量的重要手段。软件自动化测试对于提高测试效率与测试质量起着重要作用,但由于被测系统的复杂性,使得软件自动化测试变得难以实施。因此,对软件自动化测试技术的研究具有十分重要的理论和实用价值。

自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,其目的是降低测试的劳动量,达到提高软件质量的目的。涉及到测试流程、测试体系、自动化化编译、持续集成、自动测试系统以及自动化测试等方面。

一、 软件测试自动化的概念

软件测试自动化就是执行用某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手工测试步骤,进行全自动或半自动测试。全自动测试指在自动测试过程中,根本不需要人工干预,由程序自动完成测试的全过程。半自动测试指在自动测试过程中,需要由手工输入测试脚本或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试。

为保证软件的质量,必须按照软件工程的方法,在软件生命周期的各个阶段进行有效的管理和度量,软件测试是软件生命周期的重要阶段。目前软件测试普遍采用传统的测试方法,即白盒测试和黑盒测试。在测试工具上大多采用手工测试,或编制一些简单的测试程序进行测试,既耗时间又不规范。更大的隐患在于当将软件分发给用户使用时,常常会发生问题,严重时导致系统瘫痪。自动测试技术目的在于消除手工测试中人为的错误,加快测试循环,有效利用资源,提高工作效率。同时,使测试具有一定的规范性,提高测试的可重复性。

二、软件测试与自动化的联系

测试是一种技术。根据IEEE的定义,软件测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果和实际结果之间的差别,尽可能发现存在的缺陷。它的目标是以较少的测试用例、时间和人力找出软件中潜在的各种错误和缺陷,以确保系统的质量。

自动测试也是一门技术,但与测试技术有很大不同。自动化测试是利用策略、工具以及产出等,减少人工介入到非技术性、重复性、冗长的测试活动里,从而达到无人监守完成测试,并自动产生测试报告,分析测试结果等一系列活动。自动化测试的目标是对被测试系统进行自动测试。总的来说,自动化测试的目的就是用较少的开销,获得彻底的测试,并提高产品的质量。

软件测试是由一系列有序活动组成的,始于测试计划,着重测试开发。软件测试自动化是针对这一系列活动及其管理的自动化,包括软件测试过程规范管理的自动化和软件测试活动的自动化。

无论自动测试还是手工测试都不影响测试的有效性,即测试的有效性和测试方式无关。测试脚本的设计与选择和测试质量有着直接关系,好的测试脚本方案应该可以以有限的数量发现软件中的大部分缺陷。因此选择何种测试脚本进行测试十分重要。实验和经验表明随机选择测试脚本并不是测试的有效方法,好的测试方法应该是开发好的测试脚本。

什么样的测试脚本是好的测试案例?有四个特性可以描述测试脚本的质量,它们分别是有效性,可拓展性,经济性和可维护性。监测软件缺陷的有效性是最重要的一个方面。好的测试脚本应该是可拓展的。可拓展性的意思是,这个测试脚本可以测试多项内容,这样就有效减少了测试脚本的数量。另外还应从成本出发去衡量一个测试脚本的经济性,包括测试脚本的执行、分析和调试是否经济,以及测试案例的可维护性,即每次软件变更后修改测试脚本的成本。

通常对这四个方面要进行平衡。例如,一个测试脚本可以覆盖到很多的测试内容,但要其执行和调试的成本可能很大。可能在每次软件变更后需要对测试脚本进行大量的维护。一次高拓展性可能导致经济性和可维护性比较低。因此测试技术不仅要保证测试脚本具有发现缺陷的高可能性,而且还要保证测试脚本的经济性,避免过高的执行、分析和维护成本。

对于手动测试脚本来说,无论测试执行的次数是多少,其经济性和可修改性都不会发生变化。然而对于自动化系统测试来说,在该测试第一次被执行时,其经济性和可维护性都比手动测试脚本要低,但伴随着测试的持续反复执行,自动测试的经济性迅速增长,可维护性也伴随着提高,当一个测试需要被重复执行时,自动化系统测试开始显示它的价值。自动测试的方法越好,长期使用获得的收益越大。

三、 测试自动化的现状

目前对于软件自动化测试主要有如下几种方法:

1、手写静态测试自动化方法 该方法应用静态的测试脚本和固定的测试脚本在被测应用的GUI上运行。这种自动化实际上只是体现在测试执行过程中,并且脚本需要反复调试,健壮性差。

2、随机输入自动化测试方法 这种方法的原理是让计算机模拟真实用户去进行各种GUI操作,只不过是测试过程本身涉及的行为是随机产生的,顺序也是随机产生的,它虽然可以发现一些测试人员无法发现的缺陷,但机会是很偶然的,因为测试程序本身并不知道对于它所产生的每一步操作及被测软件系统应该是如何反应的。

3、基于捕获/回放(C/P)机制的测试自动化方法 这种方法的本质是由测试人员与包含被测GUI的软件系统进行交互,基于C/P的工具负责将交互过程的场景和GUI操作捕获,生成测试脚本,再将这些操作进行回放。其优点是脚本生成相对容易;但是缺点也很明显,交互过程对测试人员的操作要求极高,并且脚本的可重用性非常差,对于回归测试过程无法提供有效支持,这些缺点使得该方法无法完美解决GUI测试的主要问题。

4、基于模型描述的自动化方法 这种方法的关键是对被测系统的行为进行形式化表述,形成模型,然后采用有穷状态机FSM ( Finite State Machine)从模型中产生测试脚本。通过这种方法产生的测试脚本可以有效的测试系统的具体行为是否满足系统设计要求,同时可以根据测试标准有选择地进行测试脚本生成和运行,但是缺点在于目前的系统规模越来越大,对于系统行为的模型描述越来越困难。这也是为什么这种方法一直无法在业界推广的一个主要原因。

四、测试自动化的挑战

伴随着开发及软件所使用的技术的更新,软件测试正面临新的机遇与挑战,图形用户界面GUI、分布式处理和庞大的分散网络就是这些新技术的代表。

不仅技术是新的,而且它们比传统软件更加难于测试,因为这些软件更加复杂。用户界面更加丰富。其中客户服务器(C/S)应用构成了重要表现的一类软件,且已成为主流。它们采用了较多的新技术,在C/S软件体系结构中,处理被分散在客户机和服务器上,其中客户机处理在专门的PC机上实施并提供图形用户界面和一些本地处理,而服务器处理在共享机上实现并为客户机提供特定的服务,如数据库管理及通信。通常客户机软件具有一个GUI界面,并且可以运行在相对便宜的PC机上;服务器软件需要具有多用户能力和较高的性能。在这种环境下应用系统的测试面临着新的挑战。

首先基于GUI的软件大多采用事件驱动模式,这与传统的顺序型有很大的不同,条件组合的数量庞大且多变,传统的测试手段难以覆盖所有的运行状态;另外,由于迫使测试需求急剧上升的快速应用开发技术的普及和多个客户站点的软硬件配置的差异,更使得自动化测试成为不可缺少的环节。从服务器来看,许多客户机并发访问的测试,用手工的方式是很难模拟和再现的。为此,基于图形用户界面的客户服务器应用软件质量的保证必须依赖自动化测试工具。