CN107229617A - 一种对指定数据字段进行赋值的方法 - Google Patents
一种对指定数据字段进行赋值的方法 Download PDFInfo
- Publication number
- CN107229617A CN107229617A CN201610167736.7A CN201610167736A CN107229617A CN 107229617 A CN107229617 A CN 107229617A CN 201610167736 A CN201610167736 A CN 201610167736A CN 107229617 A CN107229617 A CN 107229617A
- Authority
- CN
- China
- Prior art keywords
- data
- values
- uniqueness
- numerical
- numerical value
- 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.)
- Pending
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/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种对指定数据字段进行赋值的方法,能够解决在性能测试脚本开发过程中模拟LoadRunner参数化问题,极大地提高了生成铺底数据的速度。本发明对给定数据类型的N个数据记录中指定数据字段进行赋值的方法,其中N是正整数,该方法包括:生成唯一性数值集,该唯一性数值集包括互不相同的N个数值;从所述唯一性数值集中逐个读取所述N个数值并通过与所述数据类型对应的写入过程分别写入所述N个记录的该指定字段。
Description
技术领域
本发明涉及计算机及其软件技术领域,特别地涉及一种对指定数据字段进行赋值的方法,尤其是指一种对给定数据类型的N个数据记录中指定数据字段进行赋值的方法。
背景技术
软件测试的目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。
在进行软件的性能测试时,经常需要往数据库中存入上千万、甚至上亿的虚拟的海量铺底数据来模拟真实业务。这些数据中的某些数据字段要求具有唯一性,这就需要我们对数据字段进行参数化,也就是赋予唯一可识别(identifiable uniquely)的值。比如电子商务行业的订单编号、运单号等字段。例如如下的SQL语句:
INSERT INTO`table_name`VALUES(字段1,字段2,?);
其中,如果字段2是对应业务订单编号,则要求所构造的数据是唯一值,不可重复。
目前常用的字段参数化的方法是HP LoadRunner(LoadRunner是一种预测系统行为和性能的负载测试工具)参数化技术,即使用指定数据源中的值来替换程序脚本录制生成的语句中的参数。参数定制规则可以有顺序、随机和唯一三种方式。
我们在选择HP LoadRunner通过调用java数据库连接JDBC(JavaData Base Connectivity)的方式往数据库中直接插入数据,基本上已能解决大部分简单参数化的问题。但是,LoadRunner毕竟不是免费软件,而且现在很多企业使用自己熟悉的开发工具来开发测试工具。例如使用IntelliJ IDEA(一种java语言开发的集成环境)开发工具等。因此,如何使用多种开发工具来高效地生成参数就成了我们性能测试工程中一个重要的步骤。
举个例子来说,参见如下的SQL语句:
INSERT INTO`table_name`VALUES(字段1,字段2,字段3),
其中,字段3是一个含JSON串的字段,例如是JSON串:
{\"operatorCode\":"+num+",\"closeTime\":null}}。
现在,如果需要对JSON串内部中的一个变量operatorCode进行参数化,那么此时LoadRunner可能是通过这种方式进行参数化的,Stringnum=“parameter”;然后对“parameter”进行参数化。
因此,本发明要解决的就是模拟LoadRunner在性能测试过程中灌入铺底数据时的参数化问题。
发明内容
有鉴于此,本发明提供一种对指定数据字段进行赋值的方法,能够解决在性能测试过程中的参数化问题,既提高了数据准确性,也极大地提高了生成铺底数据的速度。
为实现上述目的,根据本发明的一个方面,提供了一种对指定数据字段进行赋值的方法。
一种对给定数据类型的N个数据记录中指定数据字段进行赋值的方法,其中N是正整数,该方法包括:生成唯一性数值集,该唯一性数值集包括互不相同的N个数值;从所述唯一性数值集中逐个读取所述N个数值并通过与所述数据类型对应的写入过程分别写入所述N个记录的该指定字段。
可选地,通过调用数值生成器来生成所述唯一性数值集。
可选地,所述数值生成器的参数包括初值、步长和数目,其中,当所述数值生成器被调用时,该数值生成器从所述初值开始,逐次以所述步长来递增以产生数值,直到产生所述数目的数值。
可选地,其中N=kn,k和n是正整数,所述N个数据记录被分成k组,每组n个数据记录,其中生成所述唯一性数值集包括:调用k个所述数值生成器的实例生成k个唯一性数值集,其中选择这些数值生成器的参数,使得生成的k个唯一性数值集彼此不重叠,即其中任何两个唯一性数值集的交集为空集;并行地分别从所述k个唯一性数值集逐个读取数值,并通过所述写入过程分别写入所述k组数据记录中每个数据记录的所述指定数据字段中。
可选地,所述唯一性数值集实现成数据列表。
可选地,所述写入过程是SQL语句表示的过程。
根据本发明的技术方案,通过使用数值生成器来对指定数据格式的变量进行参数化,可以很方便地生成满足测试需求的参数,并将生成的数据快速插入到数据库,从而解决了参数化问题,保证了生成铺底数据的准确性以及极大提高了数据生成效率。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种对指定数据字段进行赋值的方法的主要步骤示意图;
图2是本发明实施例的数值生成器实现原理示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种对指定数据字段进行赋值的方法的主要步骤示意图。本发明的对给定数据类型的N个数据记录中指定数据字段进行赋值的方法中,N是正整数。如图1,本发明的对给定数据类型的N个数据记录中指定数据字段进行赋值的方法主要包括如下的步骤S11和步骤S12。
步骤S11:生成唯一性数值集,该唯一性数值集包括互不相同的N个数值;
步骤S12:从该唯一性数值集中逐个读取该N个数值并通过与数据类型对应的写入过程分别写入N个记录的该指定字段。
本发明是通过调用数值生成器来生成所述唯一性数值集。并且,该数值生成器的参数包括初值、步长和数目,其中,当所述数值生成器被调用时,该数值生成器从所述初值开始,逐次以所述步长来递增以产生数值,直到产生所述数目的数值。
该唯一性数值集包括互不相同的N个数值,其中N=kn,k和n是正整数,所述N个数据记录被分成k组,每组n个数据记录。其中生成所述唯一性数值集包括:
调用k个所述数值生成器的实例生成k个唯一性数值集,其中选择这些数值生成器的参数,使得生成的k个唯一性数值集彼此不重叠,即其中任何两个唯一性数值集的交集为空集;
并行地分别从所述k个唯一性数值集逐个读取数值,并通过所述写入过程分别写入所述k组数据记录中每个数据记录的所述指定数据字段中。
其中,唯一性数值集实现成数据列表。
根据本发明的实施例,写入过程例如是SQL语句表示的过程。针对一个给定的复杂数据类型的数据记录中指定字段的赋值,构造一个写入过程,例如是一个SQL语句。
根据本发明,利用唯一性数值生成器来产生唯一性(unique)数值集合。例如是一个方法initNum(),该方法的代码如下:
该方法包括如下参数:
初值start;
步长step;
数值集合的大小length(即集合中元素的数目);和
objKey。
该方法执行时,从所述初值start开始,逐次以所述步长step来递增,直到产生数目为length的数值。根据实施例,该方法产生的数值集是一个列表numList。
根据本发明的实施例,使用多线程来调用该方法,操作简单便捷,便于处理大规模数据。
对大规模数据可进行分组,例如分成k组,利用k个线程来分别对k组数据记录的指定字段进行唯一性赋值。
对k个并发的线程,分别调用数值生成器生成k个唯一性数值集。唯一性数值集与每一个线程是一一对应的。
根据本发明的实施例,线程调用从相应数值集中取出数值,例如使用numList.get方法从mumList取第一个数据,并赋给一个中间变量。
根据本发明的实施例,线程在取出numList中的第一个数据后,删除该数据,这样第二个数据变成第一个数据。循环进行取数据操作,直到取完数据为止。
根据本发明的实施例,通过运行脚本就可以执行消费。例如通过SQL操作,将赋值给中间变量的数值传递到给定的复杂类型如JSON数据记录中的指定字段,并通过多线程调用插入到数据库中。
每个线程都会调用initNum方法。通过锁机制来保证线程间取数不重复。通过start=nums.get(nums.size()-1)+step来保证线程间循环每一个线程的start值都不一样。
图2是本发明实施例的数值生成器实现原理示意图。下面将结合图2对本发明的实施过程进行介绍。
根据本发明的方法主要包括如下步骤。
步骤1:建立一个运行环境。本发明使用的编程工具例如IntelliJIDEA或者eclipse。
步骤2:创建“数值生成器”。原理是,使用“数值生成器”生成N组“规则”的数据,每一组数据是相互衔接,连续的,然后把每组数据分配给创建的多个线程,并实现一一对应。数据“规则”常用的如“有序”、“唯一”、“等差数列”等,另外,还可以有“随机”和“在某范围内随机取值”等。指定数据“规则”时,主要是看业务需要,例如:如果是数据库表中的主键,我们一般设置递增和等差1,来对应数字规则的autoincreament条件。如果是思考时间的参数,则可以设置随机值,等等。
创建“数值生成器”的思路是:在脚本里面,通过先定义一个initNum()方法,其参数包括初始值、步长、每组长度,并使用keyMap存储分配线程列队数据,将keyMap定义的多个Key,每个Key对应存放一个List,List里面存放每组生成的参数,最后,把数据放在numList中。根据生成数据的规则,例如:有序、等差数列、唯一,生成符合规则的参数数值,并将生成的参数存放在每个Key对应的List中,并且每个List里存放的参数数量是相同的。之后,将这些List里的数据分配给创建的多个线程,其中1个List里的数据分配给一个线程,亦即一个KEY对应一个线程。具体的原理图请参见图2。
步骤3:把“数值生成器”中的数值赋给变量。创建的多个线程通过调用initNum()方法,从数值生成器中取出生成的参数并赋给变量,如SQL语句中的变量。在进行数值取出时,每个线程可使用numList.get方法从mapList中取出第一个数据,并赋给变量,并且设定每个线程在一次迭代时,取List中的第一条数据,并在该数据取出后,即删除该数据,从而将第二个数据变成第一个数据,依次循环,直到取完List里的所有数据为止。
步骤4:运行工程执行消费。通过将上述步骤3中赋值给变量的数据传递给JSON串中的变量,如通过SQL语句把数据写入JSON串中的变量,并使用多线程调用功能将数值插入到数据库中。
经过以上的步骤1至步骤4,即可通过构建数值生成器,并使用数值生成器来实现变量的参数化。
根据本发明实施例的技术方案,通过使用数值生成器来对指定数据格式的变量进行参数化,可以很方便地生成满足测试需求的参数,并将生成的数据快速插入到数据库,从而解决了在性能测试过程中参数化问题,提高了数据的准确性,同时也极大地提高了生成铺底数据效率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (6)
1.一种对给定数据类型的N个数据记录中指定数据字段进行赋值的方法,其中N是正整数,其特征在于,该方法包括:
生成唯一性数值集,该唯一性数值集包括互不相同的N个数值;
从所述唯一性数值集中逐个读取所述N个数值并通过与所述数据类型对应的写入过程分别写入所述N个记录的该指定字段。
2.根据权利要求1所述的方法,其特征在于,通过调用数值生成器来生成所述唯一性数值集。
3.根据权利要求2所述的方法,其特征在于,所述数值生成器的参数包括初值、步长和数目,
其中,当所述数值生成器被调用时,该数值生成器从所述初值开始,逐次以所述步长来递增以产生数值,直到产生所述数目的数值。
4.根据权利要求3所述的方法,其特征在于,其中N=kn,k和n是正整数,所述N个数据记录被分成k组,每组n个数据记录,
其中生成所述唯一性数值集包括:
调用k个所述数值生成器的实例生成k个唯一性数值集,其中选择这些数值生成器的参数,使得生成的k个唯一性数值集彼此不重叠,即其中任何两个唯一性数值集的交集为空集;
并行地分别从所述k个唯一性数值集逐个读取数值,并通过所述写入过程分别写入所述k组数据记录中每个数据记录的所述指定数据字段中。
5.根据权利要求1所述的方法,其特征在于,所述唯一性数值集实现成数据列表。
6.根据权利要求1所述的方法,其特征在于,所述写入过程是SQL语句表示的过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610167736.7A CN107229617A (zh) | 2016-03-23 | 2016-03-23 | 一种对指定数据字段进行赋值的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610167736.7A CN107229617A (zh) | 2016-03-23 | 2016-03-23 | 一种对指定数据字段进行赋值的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107229617A true CN107229617A (zh) | 2017-10-03 |
Family
ID=59932730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610167736.7A Pending CN107229617A (zh) | 2016-03-23 | 2016-03-23 | 一种对指定数据字段进行赋值的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107229617A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN103186639A (zh) * | 2011-12-31 | 2013-07-03 | 腾讯科技(北京)有限公司 | 数据生成方法及系统 |
CN104380663A (zh) * | 2012-06-29 | 2015-02-25 | 惠普发展公司,有限责任合伙企业 | 基于规则的自动化测试数据生成 |
CN104572122A (zh) * | 2015-01-28 | 2015-04-29 | 中国工商银行股份有限公司 | 一种软件应用数据的生成装置及方法 |
CN104615667A (zh) * | 2015-01-13 | 2015-05-13 | 联动优势电子商务有限公司 | 一种基础数据生成方法、测试用数据生成方法及其装置 |
-
2016
- 2016-03-23 CN CN201610167736.7A patent/CN107229617A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186639A (zh) * | 2011-12-31 | 2013-07-03 | 腾讯科技(北京)有限公司 | 数据生成方法及系统 |
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN104380663A (zh) * | 2012-06-29 | 2015-02-25 | 惠普发展公司,有限责任合伙企业 | 基于规则的自动化测试数据生成 |
CN104615667A (zh) * | 2015-01-13 | 2015-05-13 | 联动优势电子商务有限公司 | 一种基础数据生成方法、测试用数据生成方法及其装置 |
CN104572122A (zh) * | 2015-01-28 | 2015-04-29 | 中国工商银行股份有限公司 | 一种软件应用数据的生成装置及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rajpal et al. | Not all bytes are equal: Neural byte sieve for fuzzing | |
CN105389402B (zh) | 一种面向大数据的etl方法和装置 | |
Bavoil et al. | Vistrails: Enabling interactive multiple-view visualizations | |
CN105335412B (zh) | 用于数据转换、数据迁移的方法和装置 | |
AU2018253478B2 (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
CN104050223B (zh) | 用于文本挖掘和搜索的数据透视面 | |
Sarhan et al. | A survey of challenges in spectrum-based software fault localization | |
CN110287097A (zh) | 批量测试方法、装置及计算机可读存储介质 | |
CN109299003A (zh) | 一种面向复杂软件的全自动测试用例驱动生成系统 | |
CN102855178B (zh) | 一种单元测试中生成Mock库的方法和装置 | |
CN103942099B (zh) | 基于Hive的并行执行任务方法及装置 | |
Wang et al. | CCSharp: An efficient three-phase code clone detector using modified PDGs | |
CN108121757A (zh) | 一种数据同步方法、装置、系统、计算设备及存储介质 | |
CN110287002A (zh) | 一种以太坊虚拟机缺陷检测方法及系统 | |
EP3387525B1 (en) | Learning from input patterns in programing-by-example | |
Gupta et al. | Using genetic algorithm for unit testing of object oriented software | |
Gurevich | Abstract state machines: An overview of the project | |
Seidl et al. | A software product line of feature modeling notations and cross-tree constraint languages | |
Heinen et al. | Juggrnaut: Graph grammar abstraction for unbounded heap structures | |
Taentzer et al. | Generation of Sierpinski triangles: A case study for graph transformation tools | |
Zirkelbach et al. | Combining Kieker with Gephi for performance analysis and interactive trace visualization | |
Li et al. | Research and application of computer aided design system for product innovation | |
Škopljanac-Mačina et al. | Towards automated assessment generation in e-learning systems using combinatorial testing and formal concept analysis | |
Allen et al. | Component specification in the cactus framework: The cactus configuration language | |
CN108170953A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171003 |
|
RJ01 | Rejection of invention patent application after publication |