软件自动化测试方法的发展现状分析
杨丽波
摘要:随着计算机技术的高速发展和软件技术的不断提高,软件已经应用在各行各业,软件的质量也越来越得到人们的重视。软件测试是提高软件质量的一个重要手段。文章对软件测试方法中的自动化测试方法的发展现状作了简单的分析,列举了现阶段常用的软件自动化测试方法,并对在采用自动化测试方法中容易出现的误区和不适合采用自动化测试方法的情况~_45-了分析。
关键词:软件技术;软件测试;自动化测试
软件的质量就是软件的生命。随着软件产品的应用范围越来越广、功能越来越复杂,软件质量的管理也越来越困难,虽然人们在进行软件开发的过程中使用了许多有效的分析、设计和实现方法,但仍然不能避免出现各种各样的错误,因此,采用更加切实有效的方法发现软件产品中的错误和缺陷将成为软件测试人员的首要任务。现阶段可以采用的软件测试方法包括人工测试和自动化测试,人工测试就是测试人员模拟用户对软件产品进行操作,从而发现软件的功能和性能与用户的需求不一致的地方,即软件缺陷。软件的自动化测试就是使用自动化测试工具或手段,按照测试工程师的预定计划自动实现多次重复测试,并分析测试结果。采用自动化的测试方法可以大幅度地提高测试的效率,具有良好的可操作性。
1.自动化测试方法
1.1最初的软件自动化测试技术
最初的软件自动化测试技术出现在20世纪90年代初期,主要采用硬件方式来录制键盘输入和操作过程,然后通过播放实现重复的测试过程,在一定程度上提高了测试的效率,但是不能实现检查点的功能,即不能针对某个功能点进行功能和属性的检查。在这种模式下,记录操作过程的脚本和所操作的数据是混在一起的,因此维护的成本很高。而且,一旦界面进行了简单的变化,从前的脚本就完全无法使用,必须重新录制,这种方式不但使脚本的使用率降低,而且也降低了整个测试工作的效率。
1.2基于数据驱动的自动化测试技术
在20世纪90年代后期,随着软件测试技术的不断发展,使得录制和播放测试脚本的功能由硬件实现转变为软件方式实现,并且增加了检查点的功能,即可以通过对某个功能实现所涉及的参数值或者属性值与预期值进行比对来判断该功能是否正确实现。
这种技术与最初的自动化测试不同的是可以实现从数据文件中读取数据,数据和操作过程脚本实现了分离,被称为基于数据驱动的自动化测试技术。它将输入数据、预期输出组织成表,表中的一行数据就对应着一次测试过程,测试时从表中一行一行的读取数据,然后通过变量的形式传入事先录制好的或者是手工编写的测试脚本中,这样利用相同的测试过程测试不同的输入、输出数据的组合。这种方法对于具有很多不同数据作为测试用例的被测系统来说是非常有效的。
1.3基于关键字驱动的自动化测试技术
基于关键字驱动的自动化测试技术的应用开始于2001年,是基于数据驱动测试技术的扩展,关键字驱动的自动化测试用自然语言来描述测试用例,将测试脚本抽象化,使不懂任何代码的非技术人员,也可以使用测试工具进行测试。基于关键字驱动的自动化测试用关键字组成测试的业务逻辑,其主要思想是:脚本和数据实现分离、测试描述与具体实现细节分离、界面元素名和测试内部对象名實现分离。主要关键字包括:被操作对象(Item),操作(Operation)和价值(value),用面向对象形式可将其表现为Itern.Operation(Value)。
1.4基于领域驱动的自动化测试技术
基于领域驱动的自动化测试是在关键字驱动测试的基础上发展而来的,主要特点是:从领域模型出发,使用被测软件产品的领域语言描述测试用例,进行建模,并对测试用例和领域关键字进行分析、设计、开发和组织管理,从而进行有效的测试。领域驱动的自动化测试优点如下:(1)测试用例用领域语言描述,易于理解:(2)测试用例可以通过将领域关键字和设置参数进行组合来得到;(3)当被测软件产品的实现方式发生变化时,可以更新领域驱动测试库以适应新的变化,测试用例不需要做任何修改。
1.5基于功能驱动的自动化测试技术
基于功能驱动的自动化测试技术首先将整个系统划分为多个独立的模块,在执行自动化测试时首先要实现每个模块的自动化测试,每个模块都是一个可实现的测试载体,每个测试体被实现为一个包含测试信息的测试函数,代表着一个独立的测试用例,并可以根据需要调用代表一个独立功能模块的应用模块,读取驱动这些应用所需的测试数据。在应用模块中封装着所有对系统界面的操作和输入。由于应用模块代表独立的功能,所以对其进行维护也相对独立。
由于在整个基于功能驱动的自动化测试中,所有与被测软件系统有关的操作及属性,都被封装在每个应用模块脚本中,当系统界面变化以后,只需去修改被影响的应用模块的脚本,其他脚本可以保持稳定。
1.6基于指令驱动的自动化测试技术
基于指令驱动的自动化测试是基于数据驱动自动化测试技术的改进,其整个过程所包含的功能都是由指令驱动的,可以支持由不同序列或多个不同路径组成的测试。指令驱动的自动化测试建立在数据驱动自动化测试方法之上,但是表中存放的不是数据,而是指令,其独立于执行测试的自动化工具,是对数据驱动的自动化测试的有效改进,也是到目前为止,被学术界认为是比较理想的自动化测试。
2.使用自动化测试的误区
软件的自动化测试技术具有良好的可重复性和高效率等优点,但也有一些局限性,下面来分析一下人们在使用自动化测试的过程中存在的一些误区。
2.1采用自动化测试能够完全取代手工测试
在很多情形下,软件系统的测试过程必须由人来进行控制,只有当上一个步骤执行完毕,才可以根据执行结果判定下面如何执行,或是输入哪些测试数据,这样的决策必须由人来做出,机器是无法完成的,所以不能期望在所有的情况下都使用自动化测试来取代手工测试。
2.2能够对易用性方面的属性进行测试
因为工具本身不具有审美观和想象力,所以对于一些界面美观和易用性方面的测试无法作出判断,也就无法实现自动化测试。
2.3只要使用自动化测试就能缩短测试时间、提高测试效率
要采用自动化的测试方法,必须在测试执行之前花费更多的时间搭建测试环境、录制脚本、建立数据表格并输入数据等等,与采用手工测试相比,要花费5~10倍的时间来开发一个自动化测试用例。因此如果不能增加額外的资源和时间,不可能进行大量的投入来搭建自动化测试框架,对于规模较小,测试用例较少的被测软件系统来说采用自动化测试反而会增加测试时间、降低效率。
自动化测试工具采用图形化界面,操作容易掌握,对测试人员的技术要求不高。“录制/回放”的方法操作简单容易掌握,但是并不能实现有效的、长期的自动化测试,要想根据被测系统的特点来创建有效的自动化测试脚本,测试人员必须能够熟练掌握脚本语言,可以对脚本进行编辑和优化,最理想的测试人员是既有编程经验,又有测试经验。测试过程中,测试人员要对测试脚本库中的脚本实时进行维护。
3.不适合自动化测试的情况
软件的自动化测试技术虽然具有较好的可重复性、高效率等优点,但是并不适合测试所有类型的软件产品。以下情况不适合采用自动化测试方法。
定制型软件项目:有些项目是根据客户要求定制的,其维护阶段是由客户自己承担的,而且有些定制型项目采用的开发语言、运行环境也是客户方特别要求的,这就使得公司里对这个项目所积累的测试信息很少,所以这样的项目不适合做自动化测试。
周期很短的项目:如果项目的开发周期短,那么测试周期就短,就不值得花费精力去投资自动化测试,即使有足够的时间和资源搭建好测试环境,建立好测试脚本,但是不能得到充分的重复利用,也是不可取的。
业务规则复杂的软件产品:如果被测软件系统具有复杂的业务规则,有很多逻辑关系、运算关系,那么就必须由人来参与,工具就很难实现测试。
易用性、美观性和声音等方面的测试:与人的感受、感官和体验有关的测试,包括系统界面的美观性、声音的效果、系统的易用性的测试只能由人来实现,机器是无法完成的。
很少运行的软件系统:采用自动化的测试技术就是让软件不厌其烦地反复运行,以此来提高测试效率,很少运行的软件使用自动化测试就是一种浪费。
4.结语
本文从软件测试是提高软件质量的重要手段谈起,重点讨论了软件的自动化测试的不同方法的特点和实现原理,以及人们在采用自动化测试过程中存在的误区,并且对不适合采用自动化测试的情况进行了分析,可以为从事软件测试工作的人员提供参照。