CN106681921A - 数据参数化的实现方法和装置 - Google Patents
数据参数化的实现方法和装置 Download PDFInfo
- Publication number
- CN106681921A CN106681921A CN201611229995.4A CN201611229995A CN106681921A CN 106681921 A CN106681921 A CN 106681921A CN 201611229995 A CN201611229995 A CN 201611229995A CN 106681921 A CN106681921 A CN 106681921A
- Authority
- CN
- China
- Prior art keywords
- data
- placeholder
- configuration
- parameter file
- test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据参数化的实现方法和装置。所述方法包括:获取已配置的测试用例中的占位符;判定所述占位符类型;根据所述占位符类型获取对应的预设的参数化策略;采用所述参数化策略将所述占位符生成对应的实例化数据。本实施例中数据参数化的实现方法和装置,通过获取已配置的测试用例中的占位符,判定占位符类型后,根据占位符类型获取对应的参数化策略,根据参数化策略将占位符生成对应的实例化数据,因采用占位符占有位置,可动态生成对应的实例化数据,根据不同的测试场景调整参数得到对应的实例化数据,满足不同的需求,扩大了适用范围。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种数据参数化的实现方法和装置。
背景技术
随着互联网覆盖率和终端普及率的提高,互联网业务的用户量非常巨大,特别是在一些活动推广或在特殊时刻用户集中进行某个操作,会对生产环境的服务带来高并发量的访问,为了保证用户对业务的正常使用,需要在业务上线前对服务进行压力测试,获取业务服务可支持的最大并发量、响应时间等各项性能指标数据,发现***的瓶颈及处理极限,或者检验业务服务是否能够满足预定的性能要求。
传统的压力测试工具所使用的测试用例一般是用户请求中的固定的测试用例,只能针对单一的测试场景使用,测试用例无法扩展到其他场景中,适用范围有限。
发明内容
基于此,有必要针对传统的测试用例只能针对单一场景,适用范围有限的问题,提供一种数据参数化的实现方法和装置,能适用不同的场景,扩大了适用范围。
一种数据参数化的实现方法,包括:
获取已配置的测试用例中的占位符;
判定所述占位符类型;
根据所述占位符类型获取对应的预设的参数化策略;
采用所述参数化策略将所述占位符生成对应的实例化数据。
一种数据参数化的实现装置,包括:
占位符获取模块,用于获取已配置的测试用例中的占位符;
判定模块,用于判定所述占位符类型;
参数化策略获取模块,用于根据所述占位符类型获取对应的预设的参数化策略;
生成模块,用于采用所述参数化策略将所述占位符生成对应的实例化数据。
本实施例中数据参数化的实现方法和装置,通过获取已配置的测试用例中的占位符,判定占位符类型后,根据占位符类型获取对应的参数化策略,根据参数化策略将占位符生成对应的实例化数据,因采用占位符占有位置,可动态生成对应的实例化数据,根据不同的测试场景调整参数得到对应的实例化数据,满足不同的需求,扩大了适用范围。
附图说明
图1为一个实施例中数据参数化的实现方法的应用环境示意图;
图2为一个实施例中终端的内部结构示意图;
图3为一个实施例中数据参数化的实现方法的流程图;
图4为一个实施例中获取被测目标服务,根据所述被测目标服务配置测试用例的流程示意图;
图5为一个实施例中获取被测目标服务,根据所述被测目标服务配置测试用例的详细流程示意图;
图6为另一个实施例中数据参数化的实现方法的流程图;
图7为一个实施例中参数文件的示意图;
图8为一个实施例中数据参数化的实现装置的结构框图;
图9为另一个实施例中数据参数化的实现装置的结构框图;
图10为另一个实施例中数据参数化的实现装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。
图1为一个实施例中数据参数化的实现方法的应用环境示意图。如图1所示,该应用环境包括终端110和服务器120。终端110与服务器120进行数据通信。终端110上运行的测试工具利用测试用例向服务器120上的服务发起访问请求,服务器120对测试用例发起的访问请求进行响应。终端110对响应的情况进行分析,判断服务器120上所提供的服务所能处理的最大并发量、响应时间等各项性能指标数据。终端110可为个人计算机、平板电脑、个人数字助理、穿戴式设备、智能手机等。服务器120可为一台或多台计算机等。其中,测试用例是指用于检测某一服务的服务性能的数据。测试用例与服务相对应。不同的服务,测试用例所涵盖的种类不同,数据内容也不同。
图2为一个实施例中终端的内部结构示意图。如图2所示,该终端包括通过***总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,终端的非易失性存储介质存储有操作***,还包括一种数据参数化的实现装置,该数据参数化的实现装置用于实现一种数据参数化的实现方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存储器为非易失性存储介质中的数据参数化的实现装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种数据参数化的实现方法。网络接口用于与服务器进行网络通信,如发送测试请求至服务器,接收服务器返回的响应数据等。该终端可以是手机、平板电脑或者个人数字助理或穿戴式设备等。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图3为一个实施例中数据参数化的实现方法的流程图。如图3所示,一种数据参数化的实现方法,运行于图1和图2中的终端上,包括:
步骤302,获取已配置的测试用例中的占位符。
本实施例中,测试用例是指用于检测某一服务的服务性能的数据。测试用例与服务相对应。不同的服务,测试用例所涵盖的种类不同,数据内容也不同。例如订单服务,则测试用例可包括登录数据、未支付状态的订单数据等。已配置的测试用例是指根据参数化策略动态配置的测试用例,在已配置的测试用例中包含有一些占位符。占位符是指用于占住一个固定的位置,用以表示此位置最终会被替换的符号。占位符可根据需要预先设定。例如占位符可为%s,表示可由小写字符替换。占位符可为%10d,表示可由10位十进制数字替换等。
步骤304,判定所述占位符类型。
本实施例中,占位符类型是用于表示占位符类别的,占位符类型包括格式化类型和修饰符。格式化类型可包括小写字符串、大写字符串、十进制、八进制、十六进制小写、十六进制大写、取参数文件等。其中,小写字符串可采用第一字符表示,如s;大写字符串可采用第二字符表示,如S;十进制可采用d表示;八进制可采用o表示;十六进制小写可采用x;十六进制大写可采用X表示;取参数文件可采用第三字符表示,如p。修饰符可包括表示随机生成数值类型参数时字长为16的第一修饰符(如h)、表示随机生成数值类型参数时字长为64或取参数文件时顺序取的第二修饰符(如m)、表示随机生成数值时同一次迭代中随机数值相同的第三修饰符(如r)、表示生成的数据为原子自增类型的第四修饰符(如I)。修饰符是根据后面的格式化类型定的,是对参数的格式化类型的一种补充。例如第二修饰符m一般与格式化类型p配合,有修饰符m则表示顺序取,否则表示随机取参数文件中的一行。
步骤306,根据所述占位符类型获取对应的预设的参数化策略。
本实施例中,预先建立有占位符类型与参数化策略的对应关系。根据占位符类型可从占位符类型与参数化策略的对应关系中查找到对应的参数化策略。例如占位符类型为取参数文件,则对应的参数化策略可为在同一次迭代中多处引用参数文件时的位置相同,也可为每次引用参数文件时,位置都加1等。
占位符类型为%010x,对应的参数化策略为生成固定10个小写16进制字符。占位符类型为%s,对应的参数化策略为生成随机的、小写a到z组成的字符串,长度为随机等。
参数化策略是指对参数进行处理的方式。参数化策略可支持生成定长/随机长度的大写/小写字符串,随机但指定长度的数字,支持生成自增数字序列(如2进制、8进制、10进制、16进制数字等),支持从给定的参数文件中随机或顺序读取一行作为参数序列,支持在同一次参数化迭代中,随机值相同或不同,顺序位置相同或不同。其中,随机值可控制在同一次迭代过程中,多处参数化占位符参数化后的值相同,也可控制在同一次迭代过程中,多处参数化占位符参数化后的值不同。顺序位置可控制在同一次迭代过程中,多处引用参数文件时的位置相同,也可控制在同一次迭代过程中,多处引用参数文件时的位置不同。
步骤308,采用所述参数化策略将所述占位符生成对应的实例化数据。
本实施例中,获取数据,采用参数化策略将占位符替换为对应的数据,将测试用例生成对应的实例化数据。
本实施例中,数据参数化的实现方法,通过获取已配置的测试用例中的占位符,判定占位符类型后,根据占位符类型获取对应的参数化策略,根据参数化策略将占位符生成对应的实例化数据,因采用占位符占有位置,可动态生成对应的实例化数据,根据不同的测试场景调整参数得到对应的实例化数据,满足不同的需求,扩大了适用范围。
在一个实施例中,上述数据参数化的实现方法还包括:获取被测目标服务,根据所述被测目标服务配置测试用例。
本实施例中,被测目标服务是指需要测试性能的业务服务。不同的服务所需的测试用例不同。针对被测目标服务配置相应的测试用例。
图4为一个实施例中获取被测目标服务,根据所述被测目标服务配置测试用例的流程示意图。如图4所示,获取被测目标服务,根据所述被测目标服务配置测试用例包括:
步骤402,获取被测目标服务的测试属性数据。
本实施例中,测试属性数据是指用于表示本次测试的服务和测试端身份的数据。被测目标服务的测试属性数据可包括被测目标服务的URL(Uniform Resoure Locator,统一资源定位符)、cookie(可包括用户标识和SSID)和post(传送数据的内容)等。Cookie是在HTTP(Hyper Text Transfer Protocol,超文本传输协议)协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由web服务器保存在用户浏览器上的文本文件,可以包含有关用户的信息。SSID是指Service Set Identifier,服务集标识,用于表示一个局域网的名称。Post是将传输的数据放置在HTTP包的包体中。
测试人员或其他人员通过终端配置被测目标服务的测试属性数据。
步骤404,获取配置的并发数、总请求数、响应结果检查条件、参数文件及测试环境。
本实施例中,并发数是指客户端向服务器发起请求,并建立了TCP(TransmissionControl Protocol,传输控制协议)连接,每秒服务器链接的总TCP数量。
总请求数是并发数乘以单并发请求数。单并发请求数是指单个并发的请求数,即单个并发数。
响应结果检查条件是指测试期望得到的响应结果需要满足的条件。响应结果检查条件可配置为正则表达式,对响应结果作正则表达式匹配。若匹配上,则认为此次迭代中测试通过,否则认为测试失败。正则表达式可根据需要设置,如length:[3-9]。
参数文件可包括测试账号、登录态等文件。测试账号是指用于测试需要登录态所设置的试用账号。登录态是指通过注册账号登录所处的状态。
测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。
此外,还可可获取施压机器。施压机器是指模拟客户端的机器。施压机器与测试环境对应。施压机器的数量根据测试需求进行选择。
步骤406,根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件及测试环境配置测试用例。
本实施例中,根据配置的测试属性数据、并发数、总请求数、响应结果条件及参数文件等配置测试用例,测试用例构造简单,缩短了测试准备时间,可以快速有效地支持压力测试任务。
在一个实施例中,还可根据配置的测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境及施压机器配置测试用例。
在一个实施例中,所述获取被测目标服务,根据所述被测目标服务配置测试用例,还包括:获取配置的关联参数文件;根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境及关联参数文件配置测试用例。
本实施例中,关联参数文件是指参数文件的顺序及参数化中占位符引用参数文件时的位置关联。采用关联参数文件可支持多个参数文件,且可在一次迭代中保证多个参数文件中取值的关联性,更加真实的模拟用户的使用场景。
在一个实施例中,所述获取被测目标服务,根据所述被测目标服务配置测试用例,还包括:获取数据库数据和测试属性数据模版;根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、关联参数文件、数据库数据和参数化数据模版配置测试用例。
本实施例中,数据库数据可作为测试用例中占位符的替换的数据来源。配置数据库中的数据是指配置哪些数据供测试用例使用。根据数据库数据及参数化数据模版构造测试数据,再根据构造的测试数据生成测试用例。模版是指某一事物的固定格式。参数化数据模版是指数据进行参数化的固定格式。通过关联参数文件可支持多个参数文件,且可在一次迭代中保证多个参数文件中取值的关联性,更加真实的模拟用户的使用场景,通过选取数据库中的数据以及参数化数据模板配置测试用例,操作更加简便,降低了生成测试用例的操作要求,节省了测试准备时间。
在一个实施例中,还可获取数据库数据和测试属性数据模版;根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、施压机器、关联参数文件、数据库数据和参数化数据模版配置测试用例。
在一个实施例中,所述获取被测目标服务,根据所述被测目标服务配置测试用例,还包括:获取数据库数据和测试属性数据模版;根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、数据库数据和参数化数据模版配置测试用例。
本实施例中,数据库数据可作为测试用例中占位符的替换的数据来源。配置数据库中的数据配置哪些数据供测试用例使用。模版是指某一事物的固定格式。参数化数据模版是指数据进行参数化的固定格式。通过选取数据库中的数据以及参数化数据模板配置测试用例,操作更加简便,降低了生成测试用例的操作要求,节省了测试准备时间。
在一个实施例中,还可根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、施压机器、数据库数据和参数化数据模版配置测试用例。
图5为一个实施例中获取被测目标服务,根据所述被测目标服务配置测试用例的详细流程示意图。如图5所示,获取被测目标服务,根据所述被测目标服务配置测试用例包括:
步骤502,获取被测目标服务的测试属性数据。
本实施例中,测试属性数据是指用于表示本次测试的服务和测试端身份的数据。被测目标服务的测试属性数据可包括被测目标服务的URL、cookie和post等。cookie是在HTTP(Hyper Text Transfer Protocol,超文本传输协议)协议下,服务器或脚本可以维护客户工作站上信息的一种方式。cookie是由web服务器保存在用户浏览器上的文本文件,可以包含有关用户的信息。SSID是指Service Set Identifier,服务集标识,用于表示一个局域网的名称。post是将传输的数据放置在HTTP包的包体中。
步骤504,获取配置的并发数、总请求数、响应结果检查条件、参数文件、测试环境及施压机器。
本实施例中,并发数是指客户端向服务器发起请求,并建立了TCP连接,每秒服务器链接的总TCP数量。总请求数是并发数乘以单并发请求数。单并发请求数是指单个并发的请求数,即单个并发数。响应结果检查条件是指测试期望得到的响应结果需要满足的条件。响应结果检查条件可配置为正则表达式,对响应结果作正则表达式匹配。若匹配上,则认为此次迭代中测试通过,否则认为测试失败。正则表达式可根据需要设置,如length:[3-9]。参数文件可包括测试账号、登录态cookie等文件。测试账号是指用于测试需要登录态所设置的试用账号。登录态是指通过注册账号登录所处的状态。测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。施压机器是指模拟客户端的机器。施压机器与测试环境对应。施压机器的数量根据测试需求进行选择。
步骤506,判断配置的参数文件是否需要关联,若是,执行步骤508,若否,执行步骤510。
本实施例中,判断配置的参数文件是否需要关联,若需要,则关联参数文件,若不需要,则进一步判断是否需要数据库数据,若需要,则获取参数化数据模板,构造测试数据,若不需要,则配置测试用例。
步骤508,关联参数文件,再执行步骤510。
步骤510,判断是否需要数据库数据,若是,则执行步骤512,若否,执行步骤514。
步骤512,获取参数化数据模版,构造测试数据,再执行步骤514。
步骤514,配置测试用例。
本实施例中,根据配置的测试属性数据、并发数、总请求数、响应结果条件、参数文件及施压机器等配置测试用例,测试用例构造简单,缩短了测试准备时间,可以快速有效地支持压力测试任务;采用关联参数文件可支持多个参数文件,且可在一次迭代中保证多个参数文件中取值的关联性,更加真实的模拟用户的使用场景;通过选取数据库中的数据以及参数化数据模板配置测试用例,操作更加简便,降低了生成测试用例的操作要求,节省了测试准备时间。
在其他实施例中,步骤504中的施压机器可以省略。
图6为另一个实施例中数据参数化的实现方法的流程图。如图6所示,在一个实施例中,一种数据参数化的实现方法,包括以下步骤:
步骤602,获取测试用例的总量,将所述总量作为迭代总次数。
本实施例中,测试用例的总量是指测试用例的总数量,可采用压力测试的总次数作为测试用例的总量。一次迭代测试使用一个测试用例,将测试用例的总量作为迭代总次数。
步骤604,获取设置的当前迭代次数。
本实施例中,当前迭代次数是指迭代测试中正在进行迭代测试所处的次数,例如迭代总次数为N,记录为1至N次,当前迭代次数为L,则L表示第L次迭代。
步骤606,获取已配置的测试用例中的占位符。
本实施例中,占位符是指用于占住一个固定的位置,用以表示此位置最终会被替换的符号。
步骤608,判定所述占位符类型。
本实施例中,占位符类型是用于表示占位符类别的占位符类型包括格式化类型和修饰符。
步骤610,根据所述占位符类型获取对应的预设的参数化策略。
本实施例中,预先建立有占位符类型与参数化策略的对应关系。根据占位符类型可从占位符类型与参数化策略的对应关系中查找到对应的参数化策略。
步骤612,采用所述参数化策略将所述占位符生成对应的实例化数据。
步骤614,判断所述是否当前迭代次数的测试用例中是否还有占位符,若是,执行步骤606,若否,执行步骤616。
步骤616,判断所述当前迭代次数是否大于或等于所述迭代总次数,若是,则结束,若否,执行步骤604。
本实施例中,当判断出当前迭代次数小于迭代总次数时,再获取设置的当前迭代次数,继续执行步骤606至步骤616,直到当前迭代次数等于或大于所述迭代总次数为止。
本实施例中,数据参数化的实现方法,通过获取已配置的测试用例中的占位符,判定占位符类型后,根据占位符类型获取对应的参数化策略,根据参数化策略将占位符生成对应的实例化数据,因采用占位符占有位置,可动态生成对应的实例化数据,根据不同的测试场景调整参数得到对应的实例化数据,满足不同的需求,扩大了适用范围。通过设置迭代总次数,判断是否迭代测试完成,实现压力测试,测试简便。
下面结合具体应用场景描述数据参数化的实现方法。以HTTP类协议的被测目标服务中用户请求和构造数据库数据两种场景为例进行描述。
首先,使用上述数据参数化的实现方法参数化用户请求中的URL、cookie、post内容。
本实施例中,采用格式类似c语言中的printf函数,如%010d、%010x%s%p,具体的参数化策略举例如下:%010d表示此处会被替换成10位随机数,不足10位时前导补0,例如0123456789。%010x表示生成固定10个小写16进制字符,如123456789a。%s表示生成随机的、小写a到z组成的字符串,长度为随机。%p表示此处会被替换成参数文件中随机的一行。%mp表示此处每次迭代时会被替换成参数文件中顺序第一行到最后一行。%0p表示此处替换是取第一个参数文件中的内容。%1p表示此处的替换是取第二个参数文件中的内容。此外还支持-i参数,当参数化时有两处%mp,则在替换时,会替换成两个参数文件中相同行号的内容,如果没有指定-i参数,则两处%mp在替换时,第二处%mp所指的行号是第一处%mp的行号加1。
本实施例中,以领取好友分享的卡片的CGI(Common Gateway Interface,通用网关接口)为例,服务的URL内容为http://abc.com/tws/greetcard/GetCard?uin=xxx&packageid=xxx;cookie内容为uin=xxx,ssid=xxx。
URL和cookie中共有uin(unit identity name,唯一身份凭证)、packageid(卡片id)、SSID(10位10进制随机数)三个可变参数。由于对同一个好友的卡片领取数量有限制,一般限制为只允许领取一次,因此压力测试该CGI时需要准备大量归顺于不同好友(对应参数uin)的卡片(对应参数packageid)以规避单个好友的领取数量限制来实现压力测试。假设uin存储在第一参数文件abc_uin.txt中,packageid存储在第二参数文件package_id.txt中,如图7所示。
在压力测试过程中,每次迭代实例化uin和packageid时需要保持packageid和uin的一一对应关系,且保持URL中的uin和cookie中的uin一致,则测试用例配置如下:
(1)将请求URL内容设置为:
http://chong.abc.com/tws/greetcard/GetCard?uin=%0lp&packageid=%1lp
(2)将cookie内容设置为uin=%0mp;ssid=%010d。
(3)将第一参数文件abc_uin.txt和第二参数文件package_id.txt设置为同步更新参数文件,则在压力测试过程中参数实例化时,参数uin从第一参数文件abc_uin.txt中取值,packageid从第二参数文件package_id.txt中取值,且每次迭代时取两个参数文件中相同行号的值,URL和cookie中的uin每次迭代都取abc_uin.txt中同一行值,SSID为动态生成的随机数,得到如下请求数据:
http://chong.adc.com/tws/greetcard/GetCard?uin=1195667267&packageid=test_pack775030785(cookie:uin=1195667267;ssid=7790620533)
http://chong.abc.com/tws/greetcard/GetCard?uin=1224507247&packageid=test_pack445595964(cookie:uin=1224507247;ssid=2365415897)
http://chong.abc.com/tws/greetcard/GetCard?uin=1274969732&packageid=test_pack966887652(cookie:uin=1274969732;ssid=5426589635)
......
当参数文件个数大于2个时,也可以采用关联参数文件的方式保持多个参数文件之间取值的关联性和多处引用同一个参数文件时取值相同。
其次,按指定参数化策略构造数据库中数据。
本实施例中,对于分库分表参数化策略,在参数化数据模版中填写分库数和分表数。其中,分库数是指数据库的分库个数。分表数是指每个分库中包含的数据表的个数。在分库分表字段填入分库分表字段在数据表中位置的占位符(即在数据表中属于第几个字段,从0开始,默认-1时不分库不分表),通过以下公式计算出分库索引值和分表索引值。
分库索引值=分库分表字段/分表数%分库数
分表索引值=分库分表字段%分表数
其中,%表示取余数。
假设需要构造测试数据的表结构如表1。
表1
其中,uid是指唯一身份凭证,name是用户名称。
假设分库数为128,分表数为10,以uid为分库分表字段,则分库分表字段占位符填0,构造数据时会取uid字段的值为分库分表字段值,比如uid为1200000549的数据会被分到的分库和分表如下:
分库索引值=1200000549/10%128=54
分表索引值=1200000549%10=9
本实施例中,对于字段的参数化策略,使用参数化占位符来表示具体的参数化策略,参数化的占位符用类似c语言中的format函数中格式化符表示,格式为%[field_width][qualifier]<format>,三个部分的含义及使用规则实例如下:
(1)field_width:位宽,为一个整数数字或*,参数化后字符串或数字字符长度不超过其指示的长度,比如:大于0时,表示右对齐......
本实施例中,field_width会定义位宽、从第几个参数文件开始、参数的初始值、原子自增时的起始值等。
(2)qualifier:修饰符,比如:
h:生成的数字为两字节(短整型)
I:生成的数字比上次迭代递增1,初始值用field_width指定。......
其中,h表示随机生成数值类型参数时字长为16;I表示生成的数据为原子自增类型。
(3)format:格式类型,比如:
s:生成a-z字符串
p:引用参数文件中的一行。其中,具体引用的第几个参数文件由field_width指定(第一个从0开始)。qualifier为m时,表示依次引用参数文件第1行到第n行循环,无qualifier时为随机引用参数文件中的一行。
......
在添加一个表的数据模版后,再次添加另一个关联表的数据模版时,二者之间有关联的字段使用%rd或%rx表示,造数据过程中这两个关联字段生成10进制数或16进制数的值一样。
参数化效果示例:
%010d表示生成最多10个字符长度的十进制数,如不够10个字符长,则前面用0填充。
%0lp表示顺序引用第一个参数文件。
a=%010rX&b=%010rX表示a和b的值都是相同的随机生成的16进制数,但第二次和第一次生成的值不相同。
%10086Id表示第一次迭代时会生成10086的整数,第二次迭代时会生成10087,依次类推。
此外,上述数据参数化的实现方法除了应用于压力测试外,还可应用于其他需要参数化的场景中。
图8为一个实施例中数据参数化的实现装置的结构框图。如图8所示,一种数据参数化的实现装置800,包括占位符获取模块802、判定模块804、参数化策略获取模块806和生成模块808。其中:
占位符获取模块802用于获取已配置的测试用例中的占位符。
判定模块804用于判定所述占位符类型。
参数化策略获取模块806用于根据所述占位符类型获取对应的预设的参数化策略。
生成模块808用于采用所述参数化策略将所述占位符生成对应的实例化数据。
本实施例中,数据参数化的实现装置方法,通过获取已配置的测试用例中的占位符,判定占位符类型后,根据占位符类型获取对应的参数化策略,根据参数化策略将占位符生成对应的实例化数据,因采用占位符占有位置,可动态生成对应的实例化数据,根据不同的测试场景调整参数得到对应的实例化数据,满足不同的需求,扩大了适用范围。
图9为另一个实施例中数据参数化的实现装置的结构框图。如图9所示,一种数据参数化的实现装置800,包括占位符获取模块802、判定模块804、参数化策略获取模块806和生成模块808,还包括配置模块810。其中:
配置模块810用于获取被测目标服务,根据所述被测目标服务配置测试用例。
如图9所示,所述配置模块810包括第一获取单元8101、第二获取单元8102、配置单元8103。
第一获取单元8101用于获取被测目标服务的测试属性数据。
第二获取单元8102用于获取配置的并发数、总请求数、响应结果检查条件、参数文件、测试环境及施压机器。
配置单元8103用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境及施压机器配置测试用例。
本实施例中,根据配置的测试属性数据、并发数、总请求数、响应结果条件、参数文件及施压机器等配置测试用例,测试用例构造简单,缩短了测试准备时间,可以快速有效地支持压力测试任务。
进一步的,配置模块810还包括第三获取单元8104。第三获取单元8104用于获取配置的关联参数文件。
所述配置单元8103还用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、施压机器及关联参数文件配置测试用例。
进一步,配置模块810还包括第四获取单元8105。
第四获取单元8105用于获取数据库数据和测试属性数据模版。
所述配置单元8103还用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、施压机器、关联参数文件、数据库数据和参数化数据模版配置测试用例。
或者,所述配置单元8103还用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、施压机器、数据库数据和参数化数据模版配置测试用例。
图10为另一个实施例中数据参数化的实现装置的结构框图。如图10所示,一种数据参数化的实现装置,除了包括占位符获取模块802、判定模块804、参数化策略获取模块806和生成模块808,还包括迭代总次数获取模块812、计数模块814和判断模块816。其中:
迭代总次数获取模块812用于在所述获取已配置的测试用例中的占位符之前,获取测试用例的总量,将所述总量作为迭代总次数。
计数模块814用于获取设置的当前迭代次数。
判断模块816用于在所述采用所述参数化策略将所述占位符生成对应的实例化数据之后,判断所述是否当前迭代次数的测试用例中是否还有占位符,若是,则再由所述占位符获取模块执行所述获取已配置的测试用例中的占位符,若否,则判断所述当前迭代次数是否大于或等于所述迭代总次数,若是,则结束,若否,则再所述计数模块还用于获取设置的当前迭代次数,继续迭代,直到当前迭代次数等于或大于所述迭代总次数为止。
在其他实施例中,一种数据参数化的实现装置,可包括占位符获取模块802、判定模块804、参数化策略获取模块806、生成模块808、配置模块810、迭代总次数获取模块812、计数模块814和判断模块816所有可能的组合。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种数据参数化的实现方法,包括:
获取已配置的测试用例中的占位符;
判定所述占位符类型;
根据所述占位符类型获取对应的预设的参数化策略;
采用所述参数化策略将所述占位符生成对应的实例化数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取被测目标服务,根据所述被测目标服务配置测试用例。
3.根据权利要求2所述的方法,其特征在于,所述获取被测目标服务,根据所述被测目标服务配置测试用例,包括:
获取被测目标服务的测试属性数据;
获取配置的并发数、总请求数、响应结果检查条件、参数文件及测试环境;
根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件及测试环境配置测试用例。
4.根据权利要求3所述的方法,其特征在于,所述获取被测目标服务,根据所述被测目标服务配置测试用例,还包括:
获取配置的关联参数文件;
根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境及关联参数文件配置测试用例。
5.根据权利要求3或4所述的方法,其特征在于,所述获取被测目标服务,根据所述被测目标服务配置测试用例,还包括:
获取数据库数据和测试属性数据模版;
根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、关联参数文件、数据库数据和参数化数据模版配置测试用例;
或者,根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、数据库数据和参数化数据模版配置测试用例。
6.根据权利要求1所述的方法,其特征在于,在所述获取已配置的测试用例中的占位符之前,所述方法还包括:
获取测试用例的总量,将所述总量作为迭代总次数;
获取设置的当前迭代次数。
7.根据权利要求6所述的方法,其特征在于,在所述采用所述参数化策略将所述占位符生成对应的实例化数据之后,所述方法还包括:
判断所述是否当前迭代次数的测试用例中是否还有占位符,若是,则再执行所述获取已配置的测试用例中的占位符,若否,则判断所述当前迭代次数是否大于或等于所述迭代总次数,若是,则结束,若否,则再获取设置的当前迭代次数,继续迭代,直到当前迭代次数等于或大于所述迭代总次数为止。
8.一种数据参数化的实现装置,其特征在于,包括:
占位符获取模块,用于获取已配置的测试用例中的占位符;
判定模块,用于判定所述占位符类型;
参数化策略获取模块,用于根据所述占位符类型获取对应的预设的参数化策略;
生成模块,用于采用所述参数化策略将所述占位符生成对应的实例化数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
配置模块,用于获取被测目标服务,根据所述被测目标服务配置测试用例。
10.根据权利要求9所述的装置,其特征在于,所述配置模块包括:
第一获取单元,用于获取被测目标服务的测试属性数据;
第二获取单元,用于获取配置的并发数、总请求数、响应结果检查条件、参数文件及测试环境;
配置单元,用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件及测试环境配置测试用例。
11.根据权利要求10所述的装置,其特征在于,所述配置模块还包括:
第三获取单元,用于获取配置的关联参数文件;
所述配置单元还用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境及关联参数文件配置测试用例。
12.根据权利要求10或11所述的装置,其特征在于,所述配置模块还包括:
第四获取单元,用于获取数据库数据和测试属性数据模版;
所述配置单元还用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、关联参数文件、数据库数据和参数化数据模版配置测试用例;
或者,所述配置单元还用于根据所述测试属性数据、并发数、总请求数、响应结果检查条件、参数文件、测试环境、数据库数据和参数化数据模版配置测试用例。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
迭代总次数获取模块,用于在所述获取已配置的测试用例中的占位符之前,获取测试用例的总量,将所述总量作为迭代总次数;
计数模块,用于获取设置的当前迭代次数。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
判断模块,用于在所述采用所述参数化策略将所述占位符生成对应的实例化数据之后,判断所述是否当前迭代次数的测试用例中是否还有占位符,若是,则再由所述占位符获取模块执行所述获取已配置的测试用例中的占位符,若否,则判断所述当前迭代次数是否大于或等于所述迭代总次数,若是,则结束,若否,则再所述计数模块还用于获取设置的当前迭代次数,继续迭代,直到当前迭代次数等于或大于所述迭代总次数为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611229995.4A CN106681921B (zh) | 2016-12-27 | 2016-12-27 | 数据参数化的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611229995.4A CN106681921B (zh) | 2016-12-27 | 2016-12-27 | 数据参数化的实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106681921A true CN106681921A (zh) | 2017-05-17 |
CN106681921B CN106681921B (zh) | 2020-11-10 |
Family
ID=58871718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611229995.4A Active CN106681921B (zh) | 2016-12-27 | 2016-12-27 | 数据参数化的实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106681921B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388548A (zh) * | 2018-02-24 | 2018-08-10 | 浪潮软件集团有限公司 | 一种实现脚本参数化的方法及装置 |
CN109241039A (zh) * | 2018-09-19 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种全局唯一参数化文件的实现方法、***、服务器及存储介质 |
CN109446099A (zh) * | 2018-11-09 | 2019-03-08 | 贵州医渡云技术有限公司 | 自动化测试用例生成方法、装置、介质及电子设备 |
CN110297774A (zh) * | 2019-07-02 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种基于python的接口自动化测试方法 |
CN111459824A (zh) * | 2020-04-01 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 并发服务的测试用例处理方法及装置 |
CN112114893A (zh) * | 2020-08-14 | 2020-12-22 | 中国科学院电子学研究所苏州研究院 | 一种面向过程的服务配置管理与集成工具及方法 |
CN113127327A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 一种用于性能测试的测试方法及装置 |
CN113407457A (zh) * | 2021-07-08 | 2021-09-17 | 软子数字软件(广州)有限公司 | 多数据类型参数化定义及程序引用处理方法和*** |
CN113778889A (zh) * | 2021-09-16 | 2021-12-10 | 行云智网络科技(北京)有限公司 | 一种自动化测试的动态参数设置方法及*** |
CN113778846A (zh) * | 2020-11-30 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 用于生成测试数据的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102665231A (zh) * | 2012-05-23 | 2012-09-12 | 北京中创信测科技股份有限公司 | 一种lte***自动生成参数配置文件的方法 |
CN102722437A (zh) * | 2012-05-29 | 2012-10-10 | 北京空间飞行器总体设计部 | 一种基于组件与脚本的航天器测试***及测试方法 |
CN103544107A (zh) * | 2013-11-01 | 2014-01-29 | 深圳市通力科技开发有限公司 | 生成测试用例文档的方法及装置 |
CN103746885A (zh) * | 2014-01-28 | 2014-04-23 | 中国人民解放军信息安全测评认证中心 | 一种面向下一代防火墙的测试***和测试方法 |
CN104616682A (zh) * | 2015-03-09 | 2015-05-13 | 广东欧珀移动通信有限公司 | 蓝光播放器测试方法及智能设备、蓝光播放器 |
CN105262644A (zh) * | 2015-11-03 | 2016-01-20 | 株洲南车时代电气股份有限公司 | 一种基于协议配置的通用测试***及测试方法 |
US20160283349A1 (en) * | 2015-03-27 | 2016-09-29 | International Business Machines Corporation | Determining importance of an artifact in a software development environment |
-
2016
- 2016-12-27 CN CN201611229995.4A patent/CN106681921B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102665231A (zh) * | 2012-05-23 | 2012-09-12 | 北京中创信测科技股份有限公司 | 一种lte***自动生成参数配置文件的方法 |
CN102722437A (zh) * | 2012-05-29 | 2012-10-10 | 北京空间飞行器总体设计部 | 一种基于组件与脚本的航天器测试***及测试方法 |
CN103544107A (zh) * | 2013-11-01 | 2014-01-29 | 深圳市通力科技开发有限公司 | 生成测试用例文档的方法及装置 |
CN103746885A (zh) * | 2014-01-28 | 2014-04-23 | 中国人民解放军信息安全测评认证中心 | 一种面向下一代防火墙的测试***和测试方法 |
CN104616682A (zh) * | 2015-03-09 | 2015-05-13 | 广东欧珀移动通信有限公司 | 蓝光播放器测试方法及智能设备、蓝光播放器 |
US20160283349A1 (en) * | 2015-03-27 | 2016-09-29 | International Business Machines Corporation | Determining importance of an artifact in a software development environment |
CN105262644A (zh) * | 2015-11-03 | 2016-01-20 | 株洲南车时代电气股份有限公司 | 一种基于协议配置的通用测试***及测试方法 |
Non-Patent Citations (1)
Title |
---|
顾玲芳: "《C语言程序设计基础与实验指导》", 28 February 2015, 中国铁道出版社 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388548A (zh) * | 2018-02-24 | 2018-08-10 | 浪潮软件集团有限公司 | 一种实现脚本参数化的方法及装置 |
CN108388548B (zh) * | 2018-02-24 | 2021-08-31 | 浪潮软件股份有限公司 | 一种实现脚本参数化的方法及装置 |
CN109241039A (zh) * | 2018-09-19 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种全局唯一参数化文件的实现方法、***、服务器及存储介质 |
CN109446099A (zh) * | 2018-11-09 | 2019-03-08 | 贵州医渡云技术有限公司 | 自动化测试用例生成方法、装置、介质及电子设备 |
CN110297774A (zh) * | 2019-07-02 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种基于python的接口自动化测试方法 |
CN110297774B (zh) * | 2019-07-02 | 2022-08-19 | 四川长虹电器股份有限公司 | 一种基于python的接口自动化测试方法 |
CN113127327A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 一种用于性能测试的测试方法及装置 |
CN111459824B (zh) * | 2020-04-01 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 并发服务的测试用例处理方法及装置 |
CN111459824A (zh) * | 2020-04-01 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 并发服务的测试用例处理方法及装置 |
CN112114893A (zh) * | 2020-08-14 | 2020-12-22 | 中国科学院电子学研究所苏州研究院 | 一种面向过程的服务配置管理与集成工具及方法 |
CN113778846A (zh) * | 2020-11-30 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 用于生成测试数据的方法和装置 |
CN113407457A (zh) * | 2021-07-08 | 2021-09-17 | 软子数字软件(广州)有限公司 | 多数据类型参数化定义及程序引用处理方法和*** |
CN113407457B (zh) * | 2021-07-08 | 2023-11-07 | 软子数字软件(广州)有限公司 | 多数据类型参数化定义及程序引用处理方法和*** |
CN113778889A (zh) * | 2021-09-16 | 2021-12-10 | 行云智网络科技(北京)有限公司 | 一种自动化测试的动态参数设置方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN106681921B (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681921A (zh) | 数据参数化的实现方法和装置 | |
CN108156237A (zh) | 产品信息推送方法、装置、存储介质和计算机设备 | |
US7392294B2 (en) | Decreasing data transmission volume from server to client device in data processing network | |
CN101193007A (zh) | 统一资源定位符命令测试方法、场景测试方法和相应设备 | |
CN108304498A (zh) | 网页数据采集方法、装置、计算机设备和存储介质 | |
US20140310691A1 (en) | Method and device for testing multiple versions | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理*** | |
CN108446221A (zh) | ***测试方法、装置、计算机设备和存储介质 | |
CN102932332A (zh) | 数据校验***和数据校验方法 | |
US20150302466A1 (en) | Data determination method and device for a thermodynamic chart | |
CN109726108B (zh) | 基于模拟数据的前端代码测试方法、装置、***和介质 | |
CN111858296B (zh) | 接口测试方法、装置、设备和存储介质 | |
CN110069764A (zh) | 表单配置方法、装置、计算机设备和存储介质 | |
CN109783543A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN110795305A (zh) | 用于处理和管理web流量数据的***、装置和方法 | |
CN109582560A (zh) | 测试文件编辑方法、装置、设备及计算机可读存储介质 | |
US20190094299A1 (en) | Ensuring completeness of interface signal checking in functional verification | |
CN108388796B (zh) | 动态域名验证方法、***、计算机设备和存储介质 | |
CN114185765A (zh) | 测试数据处理方法、装置、电子设备及存储介质 | |
CN106648823A (zh) | 代码发布的方法及装置 | |
CN106126517A (zh) | 将pc端应用页面转换为移动端应用页面的方法及装置 | |
CN116225690A (zh) | 基于docker的内存多维数据库计算负载均衡方法及*** | |
CN112882758B (zh) | 一种iOS设备标识符的生成方法及*** | |
KR101103642B1 (ko) | 관심상품을 등록한 구매자의 쇼핑 목록을 통해 상품 정보를 수집하고 갱신하는 방법 및 시스템 | |
CN110134843A (zh) | 一种目标文件的生成方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |