一种基于反射的自动化测试方法,首先得到被测系统的所有测试单元模块,并对每个测试单元模块编写对应的Java代码后进行编译;然后选取需要的测试单元模块组成测试用例,并将测试用例及对应测试用例信息存至数据库;最后从数据库中依次读取测试用例,并根据测试用例中的测试单元模块创建Object[]类型的参数数组、Java类的Class对象及对应的Java对象后执行完成测试。本发明专利技术与现有技术相比,避免了从测试用例到脚本的翻译转换过程,可以直接根据测试单元模块动态执行测试,同时无需额外的脚本解释器,执行效率高且易扩展。
【技术实现步骤摘要】
本专利技术涉及一种自动化测试领域技术,特别是一种基于反射的自动化测试方法。
技术介绍
传统的自动化测试领域,测试用例一般通过直接编写脚本来描述与执行。但基于脚本的开发语法较为复杂,且不直观、可维护性较差。与脚本相比,图形化的测试用例开发方法更为简单快捷、直观和易维护。图形化测试用例设计一般由测试用例设计人员通过组合各种测试单元模块来完成,如何驱动测试用例的执行,是一个关键问题。专利“一种自动化测试系统及测试脚本的生成和运行方法”(申请号CN200710086936)提出一种图形化界面供测试人员选择测试动作(相当于测试单元模块),并设置相应的参数,然后通过测试脚本生成模块提取和显示测试动作库中包含的测试动作信息,并根据选定的测试动作和设置的测试动作的参数生成测试脚本,最终执行测试脚本。这种将测试单元模块序列翻译成中间脚本,再驱动脚本的执行的方法具有代表性。但该方法不足之处在于需要处理测试动作(测试单元模块)到测试脚本的映射关系,生成语法正确的脚本,比较复杂。同时,测试用例的执行实际是通过执行测试脚本实现的,需要事先开发相应的脚本函数,并依靠脚本解释器来解释执行脚本,扩展性较差、复杂度较高,且解释执行的效率较低。专利“一种基于测试原子的卫星自动化测试方法”(申请号CN201010597273.0)提出了一种基于测试原子的卫星自动化测试方法,通过对测试用例的抽象提炼,归纳出可独立执行的最小测试单元,把这种测试单元定义为测试原子,在该基础上搭建自动化测试平台,测试过程中的测试用例由这些测试原子组合而成,在自动化测试平台上自动执行测试用例。该专利技术将卫星待测项目进行分解形成多个最小的测试方法序列,使用测试脚本编辑工具,从测试原子库中选择需要的测试原子并按测试顺序进行排列形成与最小测试方法序列相一致的测试脚本,将形成的所有测试脚本集合在一起形成测试脚本库。可见该专利技术同样是基于生成的中间脚本来驱动执行测试用例的。
技术实现思路
本专利技术解决的技术问题是:克服现有技术的不足,提供了一种基于反射的自动化测试方法,无需将组成测试用例的测试单元模块序列翻译为中间脚本,能够直接根据测试用例中每个测试单元模块的测试业务Java类并使用Java反射技术直接执行该测试业务Java类。本专利技术的技术解决方案是:一种基于反射的自动化测试方法,包括如下步骤:(1)对被测系统的所有测试业务进行封装得到对应的测试单元模块后存入测试单元库;所述测试单元模块包括名称、绑定的Java类名及可定制参数,其中,名称为测试单元模块代表的测试业务,绑定的Java类名为用于执行该测试单元模块测试业务的Java类的类名,可定制参数为执行该测试单元模块时需要的输入数据;(2)对每个测试单元模块编写对应的Java代码并进行编译,其中,测试单元模块对应的代码中Java类名与该测试单元模块的绑定的Java类名相同;(3)选取一个或多个测试单元模块后组成测试用例,将得到的所有的测试用例保存至数据库;(4)从数据库中依次读取测试用例,并根据当前测试用例中每个测试单元模块的可定制参数,分别创建Object[]类型的参数数组;(5)根据当前用例中每个测试单元模块的绑定的Java类名,通过Java反射机制,分别创建Java类的Class对象,然后将步骤(4)创建的参数数组作为newInstance( )方法的参数,并执行Class对象的newInstance( )方法后得到当前用例中每个测试单元模块的绑定的Java类名对应的Java对象;(6)依次调用当前测试用例中各个测试单元模块的Java对象的run( )方法执行,遍历数据库中测试用例直至测试用例均被执行完成。本专利技术与现有技术相比的优点在于:(1)本专利技术与现有技术相比,避免了从组成测试用例的测试单元模块序列到脚本的翻译转换过程,可以直接根据测试单元模块动态执行测试业务Java类,执行简单且易扩展;(2)本专利技术与现有技术相比,无需额外的脚本解释器,能够直接编译执行测试单元模块,执行效率更高;(3)本专利技术与现有技术相比,实现测试单元模块功能的测试业务Java类使用Java语言开发,与脚本相比,可以实现复杂的功能。附图说明图1为本专利技术与图形化测试用例传统执行方法的技术对比图;图2为本专利技术基于反射的自动化测试方法原理图。具体实施方式本专利技术提出一种基于反射的自动化测试方法,对传统的传统的图形化测试用例执行技术进行改进,如图1所示为本专利技术与图形化测试用例传统执行方法的技术对比图。图1中上方为传统的图形化测试用例执行技术,经历了从用例模块翻译到中间脚本再到执行的过程,图1下方为本专利技术基于反射的用例执行方式,可直接根据模块信息并基于反射技术实时执行测试用例,如图2所示,本专利技术具体步骤包括:(1)针对被测系统的所有典型的不可再拆分的测试业务,使用多个对应的测试单元模块封装对应的测试业务,测试单元模块可在建立测试用例时重复使用,由3个字段组成:名称、绑定的Java类名以及可定制参数,其中,名称用于说明测试单元模块所代表的测试业务;绑定的Java类名是一个用于执行该测试单元模块具体测试过程的Java类的类名;可定制参数是执行该测试单元模块时需要的输入数据。(2)将所有测试单元模块存入测试单元库,其中测试单元库是所有测试单元模块的集合。(3)为每个测试单元模块编写对应的Java代码,其中1个测试单元模块对应1个Java类,代码中Java类名应与测试单元模块的绑定的Java类名(包括包名)相同,并且对应的Java代码须实现run()方法,在run()方法中实现测试单元模块的测试功能。(4)将编写好的Java类代码进行编译。(5)根据测试需要,从测试单元库中选取特定的测试单元模块,作为测试用例的一个步骤。通过若干测试单元模块的组合,形成测试用例并将测试用例保存至数据库。(6)从数据库中读取测试用例的测试用例信息,其中测试用例信息是组成该测试用例的每个测试单元模块信息(包括名称,绑定的Java类名以及可定制参数)组成的序列。(7)根据每个测试单元模块的可定制参数,创建Object[]类型的参数数组。(8)根据每个测试单元模块绑定的Java类名,通过Java反射机制,创建Java类的Class对象。(9)执行Class对象的newInstance( )方法,并将步骤(7)中创建的参数数组作为newI本文档来自技高网...
【技术保护点】
一种基于反射的自动化测试方法,其特征在于包括如下步骤:(1)对被测系统的所有测试业务进行封装得到对应的测试单元模块后存入测试单元库;所述测试单元模块包括名称、绑定的Java类名及可定制参数,其中,名称为测试单元模块代表的测试业务,绑定的Java类名为用于执行该测试单元模块测试业务的Java类的类名,可定制参数为执行该测试单元模块时需要的输入数据;(2)对每个测试单元模块编写对应的Java代码并进行编译,其中,测试单元模块对应的代码中Java类名与该测试单元模块的绑定的Java类名相同;(3)选取一个或多个测试单元模块后组成测试用例,将得到的所有的测试用例保存至数据库;(4)从数据库中依次读取测试用例,并根据当前测试用例中每个测试单元模块的可定制参数,分别创建Object[]类型的参数数组;(5)根据当前用例中每个测试单元模块的绑定的Java类名,通过Java反射机制,分别创建Java类的Class对象,然后将步骤(4)创建的参数数组作为newInstance()方法的参数,并执行Class对象的newInstance()方法后得到当前用例中每个测试单元模块的绑定的Java类名对应的Java对象;(6)依次调用当前测试用例中各个测试单元模块的Java对象的run()方法执行,遍历数据库中测试用例直至测试用例均被执行完成。...
【技术特征摘要】
1.一种基于反射的自动化测试方法,其特征在于包括如下步骤:
(1)对被测系统的所有测试业务进行封装得到对应的测试单元模块后存入
测试单元库;所述测试单元模块包括名称、绑定的Java类名及可定制参数,
其中,名称为测试单元模块代表的测试业务,绑定的Java类名为用于执行该
测试单元模块测试业务的Java类的类名,可定制参数为执行该测试单元模块
时需要的输入数据;
(2)对每个测试单元模块编写对应的Java代码并进行编译,其中,测试
单元模块对应的代码中Java类名与该测试单元模块的绑定的Java类名相同;
(3)选取一个或多个测试单元模块后组成测试用例,将得到的所有的测试
用例保存至...
【专利技术属性】
技术研发人员:吕伟,宋宏江,何晓宇,孙波,张海祥,
申请(专利权)人:北京空间飞行器总体设计部,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。