本申请涉及自动化测试,具体涉及一种适用于批量任务的测试数据生成方法和装置。
背景技术:
1、软件测试是软件系统开发流程中的重要环节,它保证了系统交付的质量。软件测试主要包括单元测试、集成测试、系统测试和验收测试,在以上各个测试阶段中,准备好符合业务要求的测试数据是顺利开展测试工作的前提,这一过程也统称为测试造数。
2、批量任务例如常见的文件处理任务、报表加工任务,通常是指日终对数据进行逻辑处理的任务,这类任务具有作业数量多、数据类型多、前后作业依赖关系复杂、在指定时间内完成等特点。在软件系统开发中常见的批量任务运行场景如下:文件接收解析入库、报表生成、数据的计算、定时的数据状态的更新等。现有的自动化测试工具如jmeter、robotframework并不能完全适配批量任务的测试造数。
3、现阶段针对批量任务测试,测试人员一般通过手工插值、编写脚本等方式在批量任务测试链路关联的各个数据库中预埋测试数据来实现造数,这样生成的测试数据满足测试要求,但是存在以下缺点或不足:
4、第一,测试数据生成的效率低下。测试批量任务时,测试人员如使用现有造数方式需要在批量任务链路中所有作业节点造数。
5、第二,测试数据生成技术成本高。由于批量任务在开发阶段使用了除mysql、postgresql等关系型数据库外还使用了hive、hbase等nosql数据库来存储数据,使用传统造数方式在这些数据库中造测试数据的前提是测试人员需要了解这些数据库组件客户端的操作,但学习这些技术的成本较高。
6、第三,测试数据生成容易出错。一个复杂批量任务中作业之间的依赖并不是简单的一对一关系,而是一对多或者多对多的关系,当反复测试一个包含数十个或者数百个前后依赖甚至互相依赖的作业的批量任务时,测试人员通过人工方式依次准备测试数据容易出错。
技术实现思路
1、本申请的目的在于提出一种适用于批量任务的测试数据生成方法和装置,以解决上述提及的一个或多个问题。
2、依据本申请的第一方面,提出了适用于批量任务的测试数据生成方法,包括步骤:
3、s1,根据批量任务测试场景获取测试数据模板,所述测试数据模板中展示了本次测试过程中使用的数据库类型、数据表名、表的字段名、表的字段值、以及数据表之间的关联关系,其中所述数据表之间的关联关系是通过注解方式标注批量任务之间的依赖关系;
4、s2,解析所述测试数据模板,将模板中数据表映射成实体类,并根据所述数据表之间的关联关系依次创建数据表对象;
5、s3,采用自动装配的方式给各个数据表对象的属性赋值,生成属性值装配成功的数据表对象;
6、s4,根据数据库的类型调用一公共写入库方法读取所述属性值装配成功的数据表对象,将数据表对象中的属性及赋值持久化写入到对应数据库中,生成测试数据。
7、依据本申请的第二方面,提出了一种适用于批量任务的测试数据生成装置,包括:
8、测试数据模板获取单元,用于根据批量任务测试场景获取测试数据模板,所述测试数据模板中展示了本次测试过程中使用的数据库类型、数据表名、表的字段名、表的字段值、以及数据表之间的关联关系,其中所述数据表之间的关联关系是通过注解方式标注批量任务之间的依赖关系;
9、数据表对象创建单元,用于解析所述测试数据模板,将模板中数据表映射成实体类,并根据所述数据表之间的关联关系依次创建数据表对象;
10、属性赋值单元,用于采用自动装配的方式给各个数据表对象的属性赋值,生成属性值装配成功的数据表对象;
11、持久化写入单元,用于根据数据库的类型调用一公共写入库方法读取所述属性值装配成功的数据表对象,将数据表对象中的属性及赋值持久化写入到对应数据库中,生成测试数据。
12、依据本申请的第三方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或多个程序,在所述程序运行时控制所述计算机可读存储介质所在设备执行前述的方法。
13、依据本申请的第四方面,提出了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述的方法。
14、本申请实施例的技术方案能够达到以下有益效果:
15、本申请实施例的方案,根据批量任务测试场景获取测试数据模板,批量任务之间的依赖关系已经通过注解方式配置到测试数据模板中,而且解析模板过程中,也是根据数据表之间的关联关系依次创建数据表对象,在给各个数据表对象的属性赋值过程中采用的是自动装配的方式,从而本申请只需要在批量任务链路的开始作业提供初始数据,链路中后续节点所需要的数据都可以通过注解依赖和自动装配的方式自动生成,有效提高了测试数据生成的效率。而且本申请的测试数据模板只需要在第一次造数时填写导入,后续测试相同场景造数时可以重复使用,一键生成测试数据,降低了反复测试一个包含数十个或者数百个前后依赖或者互相依赖的作业的批量任务时,测试人员通过人工方式依次准备测试数据出错的风险,减少了测试造数过程中的出错。此外,本申请在将测试数据写入不同类型数据库的步骤中,是通过调用一公共写入库方法作为整个全自动造数流程的持久化操作,整个实现流程对测试人员是透明的,测试人员只需填写测试数据模板即可得到满足要求的埋点数据,取代了测试人员使用数据库组件客户端进行手工插数的造数方式,有效降低了测试人员的技术学习成本和工作量。
1.一种适用于批量任务的测试数据生成方法,其特征在于,包括步骤:
2.根据权利要求1所述的方法,其特征在于,所述步骤s2具体包括:
3.根据权利要求1所述的方法,其特征在于,所述步骤s3具体包括:
4.根据权利要求1所述的方法,其特征在于,所述步骤s4具体包括:
5.一种适用于批量任务的测试数据生成装置,其特征在于,包括:
6.根据权利要求5所述的装置,其特征在于,所述数据表对象创建单元具体用于:
7.根据权利要求5所述的装置,其特征在于,所述属性赋值单元具体用于:
8.根据权利要求5所述的装置,其特征在于,所述持久化写入单元具体用于:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或多个程序,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至4中任意一项所述的方法。
10.一种电子设备,其特征在于,包括: