生成测试数据的方法与流程

文档序号:12887103阅读:911来源:国知局
生成测试数据的方法与流程

本发明属于软件测试领域,尤其涉及一种生成测试数据的方法。



背景技术:

软件测试是软件研发活动中必不可少的环节,对于大型互联网电子商务平台来说,软件测试活动更是确保软件平台正确、可靠、稳定运行的强有力保障。大型电商平台业务流程长、软件架构复杂,相应的软件测试工作也会更加繁杂,而测试数据维护、管理是确保软件测试可持续发展的基础及核心工作。传统的软件测试数据管理通常使用人工写程序或数据库辅助管理工具批量生成单一场景的模拟测试数据,或简单粗暴的备份还原生产环境数据作为测试使用。人工编写sql(structuredquerylanguage,结构化查询语言)脚本成本高、效率低;使用辅助工具又难以满足复杂业务场景需求;直接使用生产环境数据则存在数据安全问题。对于内存存储测试数据的维护,通常需要借助项目过程中开发帮忙写操作内存存储的测试页面,开发成本高、复用程度低。



技术实现要素:

本发明要解决的技术问题是现有技术中人工编写sql成本高、效率低、复用度低;使用辅助工具又难以满足复杂业务场景需求;直接使用生产环境数据存在数据安全问题的缺陷。

本发明通过以下技术方案解决上述技术问题:

一种生成测试数据的方法,所述生成测试数据的方法包含如下步骤:

s1、生成至少一个用于产生测试数据的程序,所述程序采用参数化变量;

s2、配置所述参数化变量;

s3、运行所述程序,生成测试数据。

较佳地,s2包含:将所述程序封装为api(applicationprogramminginterface,应用程序编程接口)接口;通过所述api接口配置所述参数化变量;

s3包含:通过所述api接口运行所述程序,生成测试数据。

较佳地,s2包含:将所述程序封装为ui(userinterface,用户界面)页面;通过所述ui页面配置所述参数化变量;

s3包含:通过所述ui页面运行所述程序,生成测试数据。

较佳地,s3包含:将完成参数化变量配置的程序封装为job;运行所述job,生成测试数据。

较佳地,s2包含:

s21、将所述程序分别封装为api接口;

s22、将所述api接口封装为ui页面,通过所述ui页面配置所述参数化变量;

s3包含:

操作ui页面,运行所述程序,生成测试数据。

较佳地,s2包含:

s21、将所述程序分别封装为api接口;

s22、将所述api接口封装为job,通过所述job配置所述参数化变量;

s3包含:

运行所述job,生成测试数据。

较佳地,所述程序包含用于新增数据的程序、用于修改数据的程序、用于删除数据的程序、用于查询数据的程序中的至少一项。

较佳地,所述程序包含sql脚本。

较佳地,所述程序包含操作内存存储数据的程序。

本发明的积极进步效果在于:本发明能够解决大型互联网电商平台测试活动中的手工测试、ui/api自动化测试、性能测试等具体测试活动中的测试数据需求,确保测试数据易于生成、管理,确保测试数据稳定,测试数据维护高效率、低成本,方便测试数据的下游使用者在无需熟悉上游数据源业务逻辑的情况下,高效使用上游测试数据源完成测试活动。

附图说明

图1为实施例1的生成测试数据的方法的流程图。

图2为实施例2的生成测试数据的方法的流程图。

图3为实施例3的生成测试数据的方法的流程图。

图4为实施例4的生成测试数据的方法的流程图。

图5为实施例5的生成测试数据的方法的流程图。

图6为实施例5的生成测试数据的方法中的第一ui页面效果图。

图7为实施例5的生成测试数据的方法中的第二ui页面效果图。

图8为实施例5的生成测试数据的方法中的第三ui页面效果图。

图9为实施例5的生成测试数据的方法中的第四ui页面效果图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

本实施例的生成测试数据的方法如图1所示,包含以下步骤:

s101、生成至少一个用于产生测试数据的程序,所述程序采用参数化变量。从功能的角度上,所述用于产生测试数据的程序可以是用于新增数据的程序、用于修改数据的程序、用于删除数据的程序、用于查询数据的程序等;从形式的角度上,所述用于产生测试数据的程序可以是sql脚本,用于访问关系型数据库;也可以是操作内存存储数据的程序,用于访问内存数据库。内存数据库是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。

具体地,在s101中预生成新增数据的sql脚本,根据表特性对脚本字段值进行参数化,用于生成新数据;预生成修改数据的sql脚本,该脚本用于根据表特性对已存在的不符合使用要求的数据进行修正;预生成删除数据的sql脚本,该脚本用于根据表特性对已存在的不符合业务逻辑的脏数据(dirtyread)进行清理;预生成查询数据的sql脚本,根据表特性对脚本字段值进行参数化,该脚本用于查询符合条件的新数据。

s102、配置所述参数化变量。

s103、运行所述程序,生成测试数据。

因为用于产生测试数据的程序中采用参数化变量,可以方便地同时对多个用于产生测试数据的程序进行配置,进而运行该程序,生成测试数据,大大提高了生成测试数据的效率。

实施例2

作为一种较佳的实施例,本实施例的生成测试数据的方法,如图2所示,包含以下步骤:

s201、生成至少一个用于产生测试数据的程序,所述程序采用参数化变量。具体地,根据数据库表定义及表关联关系,生成整理操作数据表的sql脚本,包括新增、修改、删除、查询四种脚本,并在脚本中对需要维护的字段进行参数化。

s202、配置所述参数化变量。具体地,插入脚本主要用来新增测试数据,修改脚本主要用来对表中已存在的不符合使用要求的数据进行修正,删除脚本用来对表中已存在的不符合业务逻辑的脏数据进行清理,查询脚本主要用来查询表中满足条件的数据。在脚本完成参数化变量配置后,将其录入数据中心(如数据银行平台,数据银行平台提供多种类型数值的参数化基准方法,包括日期类型、字符串类型、整型、浮点型等不同类型)。

s203、将完成参数化变量配置的程序封装为job(作业);运行所述job,生成测试数据。具体地,sql脚本完成参数化变量配置后,使用数据银行平台的定时器模块来生成不同数据操作的定时作业(job),可以通过设定作业(job)的运行频次来生成大批量的性能测试数据或日常功能测试数据。

例如,将生成新数据的sql脚本封装为定时执行job,对sql中的变量参数化,使job在重复执行时生成不同的测试数据;将修改不符合业务逻辑数据的sql脚本封装为定时执行job,通过job重复执行修复不符合业务场景的测试数据;将删除数据的sql脚本封装为定时执行job,通过job重复执行删除过期测试数据或脏数据;将生成新数据的api接口封装为定时执行job,对api接口中的变量参数化,使job在重复执行时生成不同的测试数据。

实施例3

本实施例的生成测试数据的方法,如图3所示,包含以下步骤:

s301、生成至少一个用于产生测试数据的程序,所述程序采用参数化变量。具体地,针对关系型数据库,生成对数据进行新增、修改、删除、查询的四种sql脚本;针对内存数据库,生成新增内存存储数据的程序、更新内存存储数据的程序、删除内存存储数据的程序、查询内存存储数据的程序。

s302、将所述程序封装为api接口,使api接口可以实现实施方案一中的sql操作同样的功能;通过所述api接口配置所述参数化变量。

具体地,针对关系型数据库,封装新增数据的sql脚本为api新增接口,通过调用该api接口可执行生成新数据的动作;封装查询数据的sql脚本为api查询接口,通过调用该api接口可执行对已存在的符合业务逻辑数据的查询动作;针对内存数据库,封装新增内存存储数据的api接口,通过调用该api接口可执行生成新数据的动作;封装更新内存存储数据的api接口,通过调用该api接口可执行修改数据的动作;封装删除内存存储数据的api接口,通过调用该api接口可执行删除数据的动作;封装查询内存存储数据的api接口,通过调用该api接口可执行查询数据的动作。

将所述程序封装为api接口,可以使使用者忽略所述程序的细节,便于通过api调用所述程序,提高效率。

本领域技术人员能够理解,可以将前述4种sql脚本分别封装为api接口,也可以根据需求将前述4种sql脚本封装为同一个api接口。

s303、通过所述api接口运行所述程序,生成测试数据。

前述api接口可单独被第三方测试系统如自动化测试平台、性能测试平台等调用执行,从而为这些测试活动提供独立的测试数据。

实施例4

本实施例的生成测试数据的方法,如图4所示,包含以下步骤:

s401、生成至少一个用于产生测试数据的程序,所述程序采用参数化变量。

s402、将所述程序封装为ui页面;通过所述ui页面配置所述参数化变量。

s403、通过所述ui页面运行所述程序,生成测试数据。

将所述程序封装为ui页面,通过ui页面进行配置参数化变量和运行程序的操作,提高了交互的便捷性和舒适性。

实施例5

本实施例的生成测试数据的方法,如图5所示,包含以下步骤:

s501、生成至少一个用于产生测试数据的程序,所述程序采用参数化变量。

s502、将所述程序封装为api接口;将所述api接口封装为ui页面,通过所述ui页面配置所述参数化变量。

具体地,对api接口使用可读易于理解的方式进行二次封装(封装为ui页面),例如api接口的调用需要传入节点值1、0(1代表付款成功、0代表付款失败),则二次封装后,下游使用方可以通过ui页面传入付款成功、付款失败,从而使下游使用方从业务角度更易于使用。

如图6所示,在api接口封装完毕后,将该api接口添加为ui页面的一条具体的数据操作条目111,该条目实现一个具体的数据操作,比如查询满足某个条件的数据。

如图7所示,在ui页面中逐一添加不同api接口112满足不同的数据操作,将这些api接口112组合为一个复杂测试数据构造的场景。

如图8、图9所示,为每个api接口112设置不同的运行参数113,从而为所述api接口封装的sql脚本配置相关参数化变量,包括在什么环境生成测试数据,随机测试数据的生成数量等。

s503、操作ui页面,运行所述程序,生成测试数据。具体地,参数设置完毕后,可以通过ui页面单条运行sql脚本,也可以批量运行sql脚本,实时生成测试数据。较佳地,还可以保存该测试数据构造场景为一个定时运行的job(即将一个或多个api接口封装为job),用于定时生成测试数据。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1