CN112732571B - 一种测试数据生成方法及装置 - Google Patents
一种测试数据生成方法及装置 Download PDFInfo
- Publication number
- CN112732571B CN112732571B CN202110008557.XA CN202110008557A CN112732571B CN 112732571 B CN112732571 B CN 112732571B CN 202110008557 A CN202110008557 A CN 202110008557A CN 112732571 B CN112732571 B CN 112732571B
- Authority
- CN
- China
- Prior art keywords
- data
- characteristic
- test
- value
- items
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 235
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000012216 screening Methods 0.000 claims abstract description 118
- 238000001914 filtration Methods 0.000 claims description 31
- 238000000605 extraction Methods 0.000 claims description 23
- 230000003993 interaction Effects 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 12
- 230000001172 regenerating effect Effects 0.000 claims description 4
- 230000003068 static effect Effects 0.000 abstract description 9
- 230000006870 function Effects 0.000 description 32
- 238000012937 correction Methods 0.000 description 18
- 239000000284 extract Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000012546 transfer Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 238000005457 optimization Methods 0.000 description 13
- 230000002452 interceptive effect Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000005587 bubbling Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000010998 test method Methods 0.000 description 4
- 238000013522 software testing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- UOSBUKRDUCFVEX-UHFFFAOYSA-N C(C)C=1OCC=1 Chemical compound C(C)C=1OCC=1 UOSBUKRDUCFVEX-UHFFFAOYSA-N 0.000 description 1
- 229920002943 EPDM rubber Polymers 0.000 description 1
- -1 Polypropylene Polymers 0.000 description 1
- 239000004743 Polypropylene Substances 0.000 description 1
- 125000000484 butyl group Chemical group [H]C([*])([H])C([H])([H])C([H])([H])C([H])([H])[H] 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001155 polypropylene Polymers 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010257 thawing Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本申请实施例提供一种测试数据生成方法及装置,其可用于数据安全领域,本发明不限于此,具体的,该方法包括:根据一测试用例的历史日志信息,提取对应的历史业务数据项;提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;根据所述数据筛选语句生成所述测试用例的业务数据项。本申请保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不破坏测试环境的数据逻辑。
Description
技术领域
本申请涉及计算机技术领域,具体涉及测试数据生成方法及装置。
背景技术
当前自动化测试领域,开发测试人员在编制测试用例时对于业务数据的设置大多数是从数据库中提取一条有效数据放置入测试用例中,但采用这种模式时一旦测试数据库发生变更时,该业务数据即不可使用,针对这种情况,业内出现了一种优化方法,即通过编制程序驱动数据库的数据变更强制使得该条业务数据达到符合程序执行的条件。但即便这样也难以保证程序执行的成功率为100%,同时这种强行修改数据的方式对于一个应用系统的其他业务功能的执行可能就会造成负面影响。例如,通过修改业务数据a,使得程序甲达到了程序执行的条件,但如果程序乙也同样需要业务数据a,甲修改了数据后造成乙又不符合执行条件了,即便甲有后续关于a的恢复机制,但也会破坏数据库中其他关联数据表的数据逻辑。
发明内容
针对现有技术中的问题,本申请提供一种测试数据生成方法及装置,首先根据一测试用例的历史日志信息,提取对应的历史业务数据项;然后提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;最后根据所述数据筛选语句生成所述测试用例的业务数据项,从而本发明保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不破坏测试环境的数据逻辑。
本发明的一个方面,本申请提供一种测试数据生成方法,包括:
根据一测试用例的历史日志信息,提取对应的历史业务数据项;
提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
根据所述数据筛选语句生成所述测试用例的业务数据项。
在优选的实施例中,所述根据一测试用例的历史日志信息,提取对应的历史业务数据项,包括:
提取所述历史日志信息中的程序交互输入信息,其中,所述程序交互输入信息与用例数据中的程序输入参数字段相对应;
根据所述程序交互输入信息搜索预设的用例数据与数据源的映射关系,进而提取得到所述历史业务数据项。
在优选的实施例中,还包括:
建立所述用例数据与数据源的映射关系。
在优选的实施例中,所述程序交互输入信息包括:输入参数名称及输入参数数值;所述提取所述历史日志信息中的程序交互输入信息,包括:
确定待测试程序名称字符;
在所述历史日志信息中,查找包含所述待测试程序名称字符的日志记录;
提取所述日志记录中输入参数名称及输入参数数值,进而生成所述程序交互输入信息。
在优选的实施例中,所述提取所述历史业务数据项的特征信息,包括:
根据一预设的长短字段边界值将所述历史业务数据项划分为短数据特征项和长数据特征项;
提取特征项的最大值小于设定阈值的短数据特征项以及特征项的值范围的数量级低于设定数量级的长数据特征项,其中所述特征信息为提取的所述短数据特征项和所述长数据特征项。
在优选的实施例中,所述根据所述特征信息生成数据筛选语句,包括:
利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
对所有长数据特征项按照数据值大小进行排序,并根据位于所述排序首位和最后一位长数据特征项的数据值生成所述长数据特征项的特征值范围;
根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
在优选的实施例中,所述根据所述特征信息生成数据筛选语句,还包括:
利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
利用第二SQL执行语句从所有所述长数据特征项中提取数据值最大的长数据特征项和数据值最小的长数据特征项,并根据所述数据值最大的长数据特征项和数据值最小的长数据特征项生成所述长数据特征项的值范围;
根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
在优选的实施例中,所述长短字段边界值、所述设定阈值以及所述设定数量级中的至少一个定义为设定参数;所述方法还包括:
将所述业务数据项植入所述测试用例,并调用对应的测试目标程序进行测试,得到测试结果;所述测试结果为执行成功或执行失败;
若所述测试结果中执行成功的占比低于设定标准值,则修正所述设定参数,并利用修正后的所述设定参数替换初始的设定参数,重新生成所述业务数据项,直至所述测试结果中执行成功的占比高于设定标准值。
在优选的实施例中,还包括:
过滤所述数据筛选语句中的所有长数据特征项的特征值范围,得到短数据筛选语句;
将所述短数据筛选语句植入所述测试用例,并调用对应的测试程序进行测试,得到执行成功率结果;
若所述执行成功率低于设定标准值,则选取其中至少一个过滤的长数据特征项的特征值范围增加到所述短数据筛选语句,重新植入所述测试用例;直至所述执行成功率高于设定标准值,形成最终的数据筛选语句。
本发明的又一方面,本申请提供一种测试数据生成装置,包括:
历史业务数据项提取模块,根据一测试用例的历史日志信息,提取对应的历史业务数据项;
数据筛选语句生成模块,提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
测试用例生成模块,根据所述数据筛选语句生成所述测试用例的业务数据项。
本发明的又一方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的测试数据生成方法。
本发明的又一方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的测试数据生成方法。
由上述技术方案可知,本申请提供的一种测试数据生成方法,方法包括:根据一测试用例的历史日志信息,提取对应的历史业务数据项;提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;根据所述数据筛选语句生成所述测试用例的业务数据项。本发明保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不会破坏测试环境的数据逻辑。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是测试数据生成方法流程示意图。
图2是历史业务数据项提取流程示意图。
图3是程序交互信息获取流程示意图。
图4是历史业务数据项特征提取流程示意图。
图5是数据筛选语句生成流程示意图一。
图6是数据筛选语句生成流程示意图二。
图7是数据筛选语句验证流程示意图。
图8是数据筛选语句优化流程示意图。
图9是测试用例文件生成流程示意图。
图10是测试数据生成装置结构示意图。
图11是本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请公开的测试数据生成方法及装置可用于计算机技术领域,也可用于除计算机技术领域之外的任意领域,本申请公开的测试数据生成方法及装置的应用领域不做限定。
自动化测试一般指的是软件测试的自动化,是个从常规的人工驱动软件测试转为机器执行测试的过程。通常情况下,在设计了测试用例并通过评审后,由测试人员根据测试用例中描述的过程逐步执行测试,得到实际结果与期望结果进行比较。在此过程中,为节省人力或时间等提高测试效率,可引入自动化测试。
常规的程序执行步骤一般均分为数据录入,程序核心处理,程序结果输出三步。作为上游的数据录入往往需要录入多项交易数据。交易数据一般又分为参数与业务数据两块,所谓参数即给当前交易定性,往往是固定值,业务参数是个性化的,其通常源于程序执行环境绑定的数据库。例如:银行交易系统的账户冻结解冻功能,交互数据项可能有这么两项:1.交易方向,2.交易账号。交易方向需要用户输入是冻结或是解冻,这种给交易定性的数据称为参数,而交易账号输入需要冻结解冻的账号,这些数据往往是个性化的,称为业务数据。
当前自动化测试领域,开发测试人员在编制测试用例时对于业务数据的设置大多数是从数据库中提取一条有效数据放置入测试用例中,但采用这种模式时一旦测试数据库发生变更时,该业务数据即不可使用,针对这种情况,业内出现了一种优化方法,即通过编制程序驱动数据库的数据变更强制使得该条业务数据达到符合程序执行的条件。但即便这样也难以保证程序执行的成功率为100%,同时这种强行修改数据的方式对于一个应用系统的其他业务功能的执行可能就会造成负面影响。例如,通过修改业务数据a,使得程序甲达到了程序执行的条件,但如果程序乙也同样需要业务数据a,甲修改了数据后造成乙又不符合执行条件了,即便甲有后续关于a的恢复机制,但也会破坏数据库中其他关联数据表的数据逻辑。
针对现有技术中的问题,本申请提供一种测试数据生成方法及装置,首先根据一测试用例的历史日志信息,提取对应的历史业务数据项;然后提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;最后根据所述数据筛选语句生成所述测试用例的业务数据项,从而本发明保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,同时避免了繁琐的人工静态设置。
下面结合附图对本发明提供的测试数据生成方法及装置进行详细说明。
本发明提供一种测试数据生成方法,如图1所示,具体步骤包括:
S1:根据一测试用例的历史日志信息,提取对应的历史业务数据项;
具体的,在软件测试的过程中会将测试的中间过程及最终结果记录下来,形成历史日志。历史日志的具体格式是开发和测试人员协商制定的,一般是文本形式,例如一个软件测试历史日志中包括测试时间,模块名称,功能名称,输入参数,执行操作,输出结果等信息。如图2所示,所述根据一测试用例的历史日志信息,提取对应的历史业务数据项,其具体的步骤包括:
S11:提取所述历史日志信息中的程序交互输入信息,其中,所述程序交互输入信息与用例数据中的程序输入参数字段相对应;
具体的,如图3所示,在软件测试中,对于要测试的功能或者说程序名称是明确的,根据测试的程序名称,搜索出历史日志中包含有测试程序名称的所有记录。然后根据预先设定的日志格式,采用类似正则表达式这样的文本匹配方法,查找到测试程序对应的程序交互输入信息,所述程序交互信息包括程序的输入参数名称和输入参数数值。举个例子,假设需要对银行的账户冻结功能进行测试,其对应的程序名称为AccFreeze。用文本编辑器打开历史日志记录,利用搜索功能查找出历史日志中所有出现AccFreeze的记录,在搜索出的记录中根据预先制定的日志格式采用类似正则表达式之类的文本匹配搜索出交互输入信息,例如日志格式为“测试时间:2020-12-16;测试程序:AccFreeze;输入参数:inputA(12345),inputB(1),inputC(45);输出结果:done”,则采用的正则表达式是“测试程序:AccFreeze;输入参数:”搜索出交互输入信息为“inputA(12345),inputB(1),input C(45)”。
S12:根据所述程序交互输入信息搜索预设的用例数据与数据源的映射关系,进而提取得到所述历史业务数据项。
具体的,所述预设的用例数据与数据源的映射关系是根据测试程序建立的,通常包括测试函数名称,测试输入参数,数据库中字段名,举个例子,表1中是程序AccFreeze的用例数据与数据源的映射关系表,可以理解,程序AccFreeze有三个输入参数,分别是inputA,inputB,inputC。其中inputA对应于数据库的table1的A字段,inputB对应于数据库的table2的B字段,inputC对应于数据库的table3的C字段。根据步骤S11中获得的交互输入信息,将数据源数据库中对应数据表字段信息复制至本地内存中的样本数据库,所述样本数据库是预先建立在本地内存中,并且与数据源数据库有相同的数据表结构。存储在本地内存中的样本数据库中即提取出的历史业务数据项。
表1-程序AccFreeze的用例数据与数据源的映射关系表
程序名称 | 输入参数名称 | 数据库中字段名称 |
AccFreeze | inputA | table1.A |
AccFreeze | inputB | table2.B |
AccFreeze | inputC | table3.C |
S2:提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
具体的,所述历史业务数据项的特征是指数据库表中的字段。一张数据表通常会包括多个字段,每个字段可视为数据表的一个特征,一张表包含的字段数目即它的特征数,例如一张数据表有10个字段,则它记录的每条数据都具有10个特征。在数据库的表设计通常有以下特点:
长度短的字段一般对应的是定性数据,例如银行账户的状态,账户的支付权限,银行账户的币种等,都属于定性的数据,因此在特征提取时,当多条记录数据的某一字段的值相同,则可以理解为这多条记录的该特征相同。另一方面,对于长度长的字段通常对应的不是定性数据,例如银行账户余额,此类非定性数据无法实现完全相同,所以在特征提取时此类特征无法完全相同,只存在相似性,在具体的实施例中,将字段数值的数量级相同或者相近视为特征相似。例如甲的账户余额为10亿人民币,乙的账户余额为50亿人民币,丙的账户余额为5亿人民币,丁的账户余额为1万人民币,则可以理解,甲乙丙的账户余额为相似特征,丁的账户余额特征与甲乙丙不相似。根据以上特征的描述,如图4所示,提取所述历史业务数据项的特征信息的步骤包括:
S21:根据一预设的长短字段边界值将所述历史业务数据项划分为短数据特征项和长数据特征项;
具体的,所述预设的长短字段边界值为判定字段类别的依据,当字段长度小于或者等于边界值则将字段归类为短数据特征项,当字段长度大于边界值则将字段归类为长数据特征项。在具体的实施例中,该长短字段边界值一般会选择小于10的自然数。
S22:提取特征项的最大值小于设定阈值的短数据特征项以及特征项的值范围的数量级低于设定数量级的长数据特征项,其中提取的特征项为所述特征信息。
具体的,预设一个短数据特征项的数值范围阈值,若某一个短数据特征项的数值范围小于预设阈值,则提取该短数据特征项。预设一个长数据特征项的数值范围数量级阈值,若某一长数据特征项中的数值范围的数量级小于预设数量级阈值,则提取该长数据特征项。
举例而言,如表2所示,某一数据表T有5个字段,分别为ABCDE,如下表所示,A的长度为1,B的长度为10,C的长度为7,D的长度为3。长短字段边界值为5,短数据特征项上限值为2,长字段数量级误差区间为1。样本表中有甲乙丙丁4条记录,四条记录的值如下所示:
表2一个业务数据表
记录 | A | B | C | D | E |
甲 | 1 | 12345678 | 1234567 | 1 | 业务数据甲 |
乙 | 1 | 234567890 | 2345678 | 2 | 业务数据乙 |
丙 | 1 | 3456789012 | 3456789 | 3 | 业务数据丙 |
丁 | 1 | 456789012 | 4567890 | 4 | 业务数据丁 |
短字段A提取出一个值集合(1),可见短字段A的最大值为1,小于设置的短数据特征项上限值2,所以A可以视为一个提取特征。长字段B提取出一个范围区间(12345678,3456789012),其最大最小值相差两个数量级,大于设置的长字段数量级误差值1,所以B不是一个提取特征。长字段C提取出一个范围区间(1234567,4567890),其最大最小值为相同的数量级,小于设置的长字段数量级误差值1,所以C可以视为一个提取特征。短字段D提取出一个值集合(1,2,3,4),其最大值为4,大于设置的短数据特征项上限值2,所以D不是一个提取特征。综上所述,字段A和字段C为需要提取的特征信息。
在本发明的一个具体实施例中,如图5所示,所述根据所述特征信息生成数据筛选语句,其步骤包括:
S230:利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
S240:对所有长数据特征项按照数据值大小进行排序,并根据位于所述排序首位和最后一位长数据特征项的数据值生成所述长数据特征项的特征值范围;
S250:根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
具体的,以表2进行举例说明。从前面的描述中可知,提取出的短特征信息为字段A,通过SQL语句select A from T提取样本中所有的值形成一个值集合,字段A的值集合为{1};提取出的长特征信息为字段C,将字段C的所有值提取出来结果是1234567,2345678,3456789,4567890,并且利用例如冒泡排序算法等方法对字段C的数值进行从小到大的排序,例如排序后数列为1234567,2345678,3456789,4567890,取排序后数列的第一个数值作为字段C的最小值,例如1234567,取排序后数列的最后一个数值作为最大值,例如4567890,进而得到字段C的值范围为(1234567,4567890)。将获取的短特征的值集合与长特征的值范围,形成一条数据库查询SQL执行语句,即生成所述数据筛选语句,例如select E from Twhere A in(1)and(C between 1234567 and 4567890)。
在本发明的另一个具体实施例中,如图6所示,所述根据所述特征信息生成数据筛选语句,其步骤包括:
S231:利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
S241:利用第二SQL执行语句从所有所述长数据特征项中提取数据值最大的长数据特征项和数据值最小的长数据特征项,并根据所述数据值最大的长数据特征项和数据值最小的长数据特征项生成所述长数据特征项的值范围;
S251:根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
具体的,以表2进行举例说明。从前面的描述中可知,提取出的短特征信息为字段A,通过SQL语句select A from T提取样本中所有的值形成一个值集合,字段A的值集合为{1};提取出的长特征信息为字段C,通过SQL语句select min(字段名),max(字段名)from表名的方式提取其最小值与最大值,例如利用语句select min(C),max(C)from T,提取出字段C的最小值是1234567,最大值是4567890,进而字段C的值范围为(1234567,4567890)。将获取的短特征的值集合与长特征的值范围,形成一条数据库查询SQL执行语句,即生成所述数据筛选语句,例如select E from T where A in(1)and(C between 1234567 and4567890)。
在本发明的实施例中,定义所述长短字段边界值、所述设定阈值以及所述设定数量级中的至少一个为设定参数,如图7所示,为了保证测试的成功率,还需要根据测试的结果对设定参数进行修正,所述方法还包括:
S201:将所述业务数据项植入所述测试用例,并调用对应的测试目标程序进行测试,得到测试结果;所述测试结果为执行成功或执行失败;
具体的,以上文举例中得到的数据筛选语句为例,通过select E from T where Ain(1)and(C between 1234567 and 4567890)语句在数据库中提取50条记录。将50条记录逐个植入测试用例并执行测试程序,进而得到这50次执行结果,执行结果一般指执行成功或执行失败。
S202:若所述测试结果中执行成功的占比低于设定标准值,则修正所述设定参数,并利用修正后的所述设定参数替换初始的设定参数,重新生成所述业务数据项,直至所述测试结果中执行成功的占比高于设定标准值。
具体的,所述执行成功占比的计算方法为执行成功的样本数量除以总抽取样本数量,例如在抽取出的50条记录中,执行成功了40条,则执行成功的占比为40/50=80%。假设设置的标准值为90%,则需要对设定参数进行修正。在修正的过程中,采取逐个向上修正的策略,向上修正的实质是放宽特征提取的条件。具体而言,例如长短字段边界值是3,短数据特征项上限值是2,长数据数量级误差值是1,第一次修正后为长短字段边界值是4,短数据特征项上限值是2,长数据数量级误差值是1;第二次修正后为长短字段边界值是4,短数据特征项上限值是3,长数据数量级误差值是1;第三次修正后为长短字段边界值是4,短数据特征项上限值是3,长数据数量级误差值是2;第四次修正后为长短字段边界值是5,短数据特征项上限值是3,长数据数量级误差值是2。以此类推,每次修正后将生成的数据筛选语句植入测试用例,测试待测试程序,获得测试成功率,直至测试成功率达到预设的成功率标准值停止更新修正。另一方面,为避免无休止的更新修正,设置系统执行超时时间如15分钟,如在15分钟内特征提取与测试验证的循环无法形成目标模型则判定为超时并反馈给开发测试人员。
在本发明的实施例中,为了使得数据筛选语句中的特征尽量为必要的特征,从而简化数据筛选语句,在保证了测试成功率的情况下,进一步提出了对数据筛选语句的优化,如图8所示,其步骤包括:
S211:过滤所述数据筛选语句中的所有长数据特征项的特征值范围,得到短数据筛选语句;
具体的,将数据筛选语句中的短特征信息项保留,过滤长数据特征项是因为短数据特征项一般对应着定性数据,原则上是需要保留的,而长数据特征项只能表示数据具有相似性,但并不能表示这些相似性会对测试结果产生影响,所以可以先进行舍去处理。举例而言,待优化的数据筛选语句为select E from T where A in(1)and(C between 1234567and 4567890),根据格式可知短特征信息项为A,长特征信息项为C,将语句中的长特征信息项舍去,只保留短特征信息项,所以生成的新的数据筛选语句为select E from T where Ain(1)。
S212:将所述短数据筛选语句植入所述测试用例,并调用对应的测试程序进行测试,得到执行成功率结果;
具体的,所述测试成功率的计算是采用执行成功的样本数量除以总的样本数量。
S213:若所述执行成功率低于设定标准值,则选取其中至少一个过滤的长数据特征项的特征值范围增加到所述短数据筛选语句,重新植入所述测试用例;直至所述执行成功率高于设定标准值,形成最终的数据筛选语句。
具体的,举一个例子进行说明,假设系统设置程序执行成功率标准为90%,验证测试数为50。某表T有A,B,C,D,E,F,G,H,I,J,K共11个字段。优化前的SQL模型为Select Kfrom T where A in(1)and D in(2,3)and(E between 100000 and 999999)and(Jbetween 500000 and 6000000)。首先根据步骤S211提取出两组长字段过滤项((E between100000 and 999999与J between 500000 and 6000000),然后将SQL变更为Select K fromT where A in(1)and D in(2,3)后从测试数据库提取50条记录进行验证,如果成功次数大于等于50*90%=45次时则确定最终SQL模型为Select K from T where A in(1)and D in(2,3),如果成功次数小于45次,则将数据筛选语句演变为以下两种
1.Select K from T where A in(1)and D in(2,3)and(E between 100000 and999999)
2.Select K from T where A in(1)and D in(2,3)and(J between 500000 and6000000)
选择率先达标的数据筛选语句作为最终的数据筛选语句,如果都无法达标则优化前的原始数据筛选语句为最终的数据筛选语句。
S3:根据所述数据筛选语句生成所述测试用例的业务数据项。
具体的,所述数据筛选语句即经过了优化后最简筛选语句,也是最终整合进测试用例文件中的数据筛选语句。如图9所示,根据所述数据筛选语句生成所述测试用例的业务数据项,进而生成测试用例文件的步骤包括:
步骤S31:打开测试用例文件并定位到对应业务数据输入项。
具体的,例如测试用例的载体为execl文件,每一行代表一个测试用例,测试用例的输入数据对应某一列,则打开文件后定位到对应列。
步骤S32:将优化后的最终数据筛选语句模型植入至数据输入项。
具体的,例如将数据筛选语句模型表达式填入到每一行的第N列。
步骤S33:保存测试用例文件。
下面结合一个具体实施场景对本发明的数据生成方法进行进一步描述。
以银行系统中转账业务的测试数据生成进行举例说明。假设银行转账业务的程序名称为transferAcc,根据该程序名称在测试历史日志中查找到对应执行历史记录为100条。根据事先制定的日志格式,如“测试时间:2020-12-16;测试程序:transferAcc;输入参数:cardID(6222021234567891234),in(1),acc(10000);输出结果:done”,确定出程序transferAcc的交互输入参数有三个,分别为cardID,in,acc,其分别对应于银行账号,是否为转入,转账金额。
建立银行转账程序用例数据与数据源的映射表,如表3所示。从表3中可知,cardID与数据库中表transfer.cardID对应,in与表transfer.in对应,acc与表transfer.acc对应。根据该映射关系,将数据库中与历史日志中相对应的100条历史业务数据项纪录提取出来,存储到本地建立的数据库中。
表3银行转账程序用例数据与数据源的映射表
程序名称 | 输入参数名称 | 数据库中字段名称 |
transferAcc | cardID | transfer.cardID |
transferAcc | in | transfer.in |
transferAcc | acc | transfer.acc |
对存储在本地数据库中的历史业务数据项进行特征提取,所述特征指数据表中字段。首先设置长短特征边界值为3,短特征数据项上限值为1,长特征数据项的误差量级为1。存储在本地数据库的业务数据表,如表4所示,以其中四条举例。
表4银行转账的业务数据表
由表4中,根据长短字段特征边界为3,将字段cardID和acc视为长特征数据项,字段in视为短特征数据项。短字段in提取出一个值集合(1),可见短字段in的最大值为1,等于设置的短数据特征项上限值1,所以in可以视为一个提取特征。长字段cardID提取出一个范围区间(6222021234567891234,6222021234567891237),其最大最小值的数量级相等,小于设置的长字段数量级误差值1,所以cardID是一个提取特征。长字段acc提取出一个范围区间(1234567,456789012),其最大最小值的数量级相差2,大于设置的长字段数量级误差值1,所以acc不视为一个提取特征。综上所述,字段cardID和字段in为需要提取的特征信息。
通过SQL语句select in from tansfer提取样本中所有的值形成一个值集合,字段in的值集合为{1};提取出的长特征信息为字段cardID,将字段cardID的所有值提取出来结果是6222021234567891234,6222021234567891235,6222021234567891236,6222021234567891237,并且利用例如冒泡排序算法等方法对字段C的数值进行从小到大的排序,例如排序后数列为6222021234567891234,6222021234567891235,6222021234567891236,6222021234567891237,取排序后数列的第一个数值作为字段C的最小值,例如6222021234567891234,取排序后数列的最后一个数值作为最大值,例如6222021234567891237,进而得到字段cardID的值范围为(6222021234567891234,6222021234567891237),或者对于长字段利用语句select min(cardID),max(cardID)fromtansfer,提取出字段cardID的最小值是6222021234567891234,最大值是6222021234567891237,进而字段C的值范围为(6222021234567891234,6222021234567891237)。。将获取的短特征的值集合与长特征的值范围,形成一条数据库查询SQL执行语句,即生成所述数据筛选语句,例如select data from tansfer where in in(1)and(cardID between 6222021234567891234 and 6222021234567891237)。
将生成的数据筛选语句植入测试用例,执行测试程序,其中100条记录中95条执行成功,计算执行成功占比为95%,假设设定的成功标准值为90%,则进入对数据筛选语句的优化过程。若执行成功占比计算的结果小于90%,则需要对特征选择时用到的设定参数进行修正,例如将长短特征边界值增大或者提高短特征数据项的上限值或者增大长数据特征项的数量级误差,三者可以是同时修正,也可以是逐个修正,直至执行成功占比达到设定标准值。在本实施例中,由于执行成功占比已经高于标准值,所以不需要对设定参数进行修正,直接进入优化流程。
对数据筛选语句优化的流程是首先根据步骤S211提取出两组长字段过滤项(cardID between 6222021234567891234 and 6222021234567891237),然后将SQL变更为后从本地数据库提取100条记录进行验证,如果成功次数大于等于100*90%=90次时则确定最终SQL模型为select data from tansfer where in in(1),如果成功次数小于90次,则将数据筛选语句演变为select data from tansfer where in in(1)and(cardIDbetween 6222021234567891234 and 6222021234567891237),在本实施例中,该数据筛选语句就是优化前的数据筛选语句,所以最终的数据筛选语句为select data from tansferwhere in in(1)and(cardID between 6222021234567891234 and6222021234567891237)。
打开测试用例文件,通常是一个表格,将最终的数据筛选语句植入对应业务数据所在的列,并对测试用例文件进行保存,完成整个测试数据生成的流程。
由以上描述可知,本发明提供的一种测试数据生成方法,首先根据一测试用例的历史日志信息,提取对应的历史业务数据项;然后提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;最后根据所述数据筛选语句生成所述测试用例的业务数据项,从而本发明保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不会破坏测试环境的数据逻辑。
从软件层面来说,本申请提供一种用于执行所述测试数据生成方法中全部或部分内容的测试数据生成装置的实施例,参见图10,所述测试数据生成装置具体包含有如下内容:
历史业务数据项提取模块1,根据一测试用例的历史日志信息,提取对应的历史业务数据项;
数据筛选语句生成模块2,提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
测试用例生成模块3,根据所述数据筛选语句生成所述测试用例的业务数据项。
由以上描述可知,本发明提供的测试数据生成装置,本装置首先根据一测试用例的历史日志信息,提取对应的历史业务数据项;然后提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;最后根据所述数据筛选语句生成所述测试用例的业务数据项,从而本发明保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不会破坏测试环境的数据逻辑。
在本发明的实施例中,在软件测试的过程中会将测试的中间过程及最终结果记录下来,形成历史日志。历史日志的具体格式是开发和测试人员协商制定的,一般是文本形式,例如一个软件测试历史日志中包括测试时间,模块名称,功能名称,输入参数,执行操作,输出结果等信息。所述历史业务数据项提取模块1,用来执行以下步骤:
S11:提取所述历史日志信息中的程序交互输入信息,其中,所述程序交互输入信息与用例数据中的程序输入参数字段相对应;
具体的,在软件测试中,对于要测试的功能或者说程序名称是明确的,根据测试的程序名称,搜索出历史日志中包含有测试程序名称的所有记录。然后根据预先设定的日志格式,采用类似正则表达式这样的文本匹配方法,查找到测试程序对应的程序交互输入信息,所述程序交互信息包括程序的输入参数名称和输入参数数值。举个例子,假设需要对银行的账户冻结功能进行测试,其对应的程序名称为AccFreeze。用文本编辑器打开历史日志记录,利用搜索功能查找出历史日志中所有出现AccFreeze的记录,在搜索出的记录中根据预先制定的日志格式采用类似正则表达式之类的文本匹配搜索出交互输入信息,例如日志格式为“测试时间:2020-12-16;测试程序:AccFreeze;输入参数:inputA(12345),inputB(1),inputC(45);输出结果:done”,则采用的正则表达式是“测试程序:AccFreeze;输入参数:”搜索出交互输入信息为“inputA(12345),inputB(1),inputC(45)”。
S12:根据所述程序交互输入信息搜索预设的用例数据与数据源的映射关系,进而提取得到所述历史业务数据项。
具体的,所述预设的用例数据与数据源的映射关系是根据测试程序建立的,通常包括测试函数名称,测试输入参数,数据库中字段名,举个例子,表1中是程序AccFreeze的用例数据与数据源的映射关系表,可以理解,程序AccFreeze有三个输入参数,分别是inputA,inputB,inputC。其中inputA对应于数据库的table1的A字段,inputB对应于数据库的table2的B字段,inputC对应于数据库的table3的C字段。根据步骤S11中获得的交互输入信息,将数据源数据库中对应数据表字段信息复制至本地内存中的样本数据库,所述样本数据库是预先建立在本地内存中,并且与数据源数据库有相同的数据表结构。存储在本地内存中的样本数据库中即提取出的历史业务数据项。
在本发明的实施例中,所述数据筛选语句生成模块2,其功能为提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句。所述历史业务数据项的特征是指数据库表中的字段。一张数据表通常会包括多个字段,每个字段可视为数据表的一个特征,一张表包含的字段数目即它的特征数,例如一张数据表有10个字段,则它记录的每条数据都具有10个特征。在数据库的表设计通常有以下特点:
长度短的字段一般对应的是定性数据,例如银行账户的状态,账户的支付权限,银行账户的币种等,都属于定性的数据,因此在特征提取时,当多条记录数据的某一字段的值相同,则可以理解为这多条记录的该特征相同。另一方面,对于长度长的字段通常对应的不是定性数据,例如银行账户余额,此类非定性数据无法实现完全相同,所以在特征提取时此类特征无法完全相同,只存在相似性,在具体的实施例中,将字段数值的数量级相同或者相近视为特征相似。例如甲的账户余额为10亿人民币,乙的账户余额为50亿人民币,丙的账户余额为5亿人民币,丁的账户余额为1万人民币,则可以理解,甲乙丙的账户余额为相似特征,丁的账户余额特征与甲乙丙不相似。
根据以上特征的描述,所述数据筛选语句生成模块2用来执行如下步骤:
S21:根据一预设的长短字段边界值将所述历史业务数据项划分为短数据特征项和长数据特征项;
具体的,所述预设的长短字段边界值为判定字段类别的依据,当字段长度小于或者等于边界值则将字段归类为短数据特征项,当字段长度大于边界值则将字段归类为长数据特征项。在具体的实施例中,该长短字段边界值一般会选择小于10的自然数。
S22:提取特征项的最大值小于设定阈值的短数据特征项以及特征项的值范围的数量级低于设定数量级的长数据特征项,其中提取的特征项为所述特征信息。
具体的,预设一个短数据特征项的数值范围阈值,若某一个短数据特征项的数值范围小于预设阈值,则提取该短数据特征项。预设一个长数据特征项的数值范围数量级阈值,若某一长数据特征项中的数值范围的数量级小于预设数量级阈值,则提取该长数据特征项。
举例而言,如表2所示,某一数据表T有5个字段,分别为ABCDE,如下表所示,A的长度为1,B的长度为10,C的长度为7,D的长度为3。长短字段边界值为5,短数据特征项上限值为2,长字段数量级误差区间为1。样本表中有甲乙丙丁4条记录。短字段A提取出一个值集合(1),可见短字段A的最大值为1,小于设置的短数据特征项上限值2,所以A可以视为一个提取特征。长字段B提取出一个范围区间(12345678,3456789012),其最大最小值相差两个数量级,大于设置的长字段数量级误差值1,所以B不是一个提取特征。长字段C提取出一个范围区间(1234567,4567890),其最大最小值为相同的数量级,小于设置的长字段数量级误差值1,所以C可以视为一个提取特征。短字段D提取出一个值集合(1,2,3,4),其最大值为4,大于设置的短数据特征项上限值2,所以D不是一个提取特征。综上所述,字段A和字段C为需要提取的特征信息。
在本发明的实施例中,所述数据筛选语句生成模块2还用来执行如下步骤:
S230:利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
S240:对所有长数据特征项按照数据值大小进行排序,并根据位于所述排序首位和最后一位长数据特征项的数据值生成所述长数据特征项的特征值范围;
S250:根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
具体的,以表2进行举例说明。从前面的描述中可知,提取出的短特征信息为字段A,通过SQL语句select A from T提取样本中所有的值形成一个值集合,字段A的值集合为{1};提取出的长特征信息为字段C,将字段C的所有值提取出来结果是1234567,2345678,3456789,4567890,并且利用例如冒泡排序算法等方法对字段C的数值进行从小到大的排序,例如排序后数列为1234567,2345678,3456789,4567890,取排序后数列的第一个数值作为字段C的最小值,例如1234567,取排序后数列的最后一个数值作为最大值,例如4567890,进而得到字段C的值范围为(1234567,4567890)。将获取的短特征的值集合与长特征的值范围,形成一条数据库查询SQL执行语句,即生成所述数据筛选语句,例如select E from Twhere A in(1)and(C between 1234567 and 4567890)。
在本发明的另一实施例中,数据筛选语句生成模块2还用来执行如下步骤:
S231:利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
S241:利用第二SQL执行语句从所有所述长数据特征项中提取数据值最大的长数据特征项和数据值最小的长数据特征项,并根据所述数据值最大的长数据特征项和数据值最小的长数据特征项生成所述长数据特征项的值范围;
S251:根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
具体的,以表2进行举例说明。从前面的描述中可知,提取出的短特征信息为字段A,通过SQL语句select A from T提取样本中所有的值形成一个值集合,字段A的值集合为{1};提取出的长特征信息为字段C,通过SQL语句select min(字段名),max(字段名)from表名的方式提取其最小值与最大值,例如利用语句select min(C),max(C)from T,提取出字段C的最小值是1234567,最大值是4567890,进而字段C的值范围为(1234567,4567890)。将获取的短特征的值集合与长特征的值范围,形成一条数据库查询SQL执行语句,即生成所述数据筛选语句,例如select E from T where A in(1)and(C between 1234567 and4567890)。
在本发明的实施例中,定义所述长短字段边界值、所述设定阈值以及所述设定数量级中的至少一个为设定参数,为了保证测试的成功率,还需要根据测试的结果对设定参数进行修正,所以所述数据筛选语句生成模块2还用来执行如下步骤:
S201:将所述业务数据项植入所述测试用例,并调用对应的测试目标程序进行测试,得到测试结果;所述测试结果为执行成功或执行失败;
具体的,以上文举例中得到的数据筛选语句为例,通过select E from T where Ain(1)and(C between 1234567 and 4567890)语句在数据库中提取50条记录。将50条记录逐个植入测试用例并执行测试程序,进而得到这50次执行结果,执行结果一般指执行成功或执行失败。
S202:若所述测试结果中执行成功的占比低于设定标准值,则修正所述设定参数,并利用修正后的所述设定参数替换初始的设定参数,重新生成所述业务数据项,直至所述测试结果中执行成功的占比高于设定标准值。
具体的,所述执行成功占比的计算方法为执行成功的样本数量除以总抽取样本数量,例如在抽取出的50条记录中,执行成功了40条,则执行成功的占比为40/50=80%。假设设置的标准值为90%,则需要对设定参数进行修正。在修正的过程中,采取逐个向上修正的策略,向上修正的实质是放宽特征提取的条件。具体而言,例如长短字段边界值是3,短数据特征项上限值是2,长数据数量级误差值是1,第一次修正后为长短字段边界值是4,短数据特征项上限值是2,长数据数量级误差值是1;第二次修正后为长短字段边界值是4,短数据特征项上限值是3,长数据数量级误差值是1;第三次修正后为长短字段边界值是4,短数据特征项上限值是3,长数据数量级误差值是2;第四次修正后为长短字段边界值是5,短数据特征项上限值是3,长数据数量级误差值是2。以此类推,每次修正后将生成的数据筛选语句植入测试用例,测试待测试程序,获得测试成功率,直至测试成功率达到预设的成功率标准值停止更新修正。另一方面,为避免无休止的更新修正,设置系统执行超时时间如15分钟,如在15分钟内特征提取与测试验证的循环无法形成目标模型则判定为超时并反馈给开发测试人员。
在本发明的实施例中,为了使得数据筛选语句中的特征尽量为必要的特征,从而简化数据筛选语句,在保证了测试成功率的情况下,进一步提出了对数据筛选语句的优化,所以数据筛选语句生成模块2用来执行如下步骤:
S211:过滤所述数据筛选语句中的所有长数据特征项的特征值范围,得到短数据筛选语句;
具体的,将数据筛选语句中的短特征信息项保留,过滤长数据特征项是因为短数据特征项一般对应着定性数据,原则上是需要保留的,而长数据特征项只能表示数据具有相似性,但并不能表示这些相似性会对测试结果产生影响,所以可以先进行舍去处理。举例而言,待优化的数据筛选语句为select E from T where A in(1)and(C between 1234567and 4567890),根据格式可知短特征信息项为A,长特征信息项为C,将语句中的长特征信息项舍去,只保留短特征信息项,所以生成的新的数据筛选语句为select E from T where Ain(1)。
S212:将所述短数据筛选语句植入所述测试用例,并调用对应的测试程序进行测试,得到执行成功率结果;
具体的,所述测试成功率的计算是采用执行成功的样本数量除以总的样本数量。
S213:若所述执行成功率低于设定标准值,则选取其中至少一个过滤的长数据特征项的特征值范围增加到所述短数据筛选语句,重新植入所述测试用例;直至所述执行成功率高于设定标准值,形成最终的数据筛选语句。
具体的,举一个例子进行说明,假设系统设置程序执行成功率标准为90%,验证测试数为50。某表T有A,B,C,D,E,F,G,H,I,J,K共11个字段。优化前的SQL模型为Select Kfrom T where A in(1)and D in(2,3)and(E between 100000 and 999999)and(Jbetween 500000 and 6000000)。首先根据步骤S211提取出两组长字段过滤项((E between100000 and 999999与J between 500000 and 6000000),然后将SQL变更为Select K fromT where A in(1)and D in(2,3)后从测试数据库提取50条记录进行验证,如果成功次数大于等于50*90%=45次时则确定最终SQL模型为Select K from T where A in(1)and D in(2,3),如果成功次数小于45次,则将数据筛选语句演变为以下两种
1.Select K from T where A in(1)and D in(2,3)and(E between 100000 and999999)
2.Select K from T where A in(1)and D in(2,3)and(J between 500000 and6000000)
选择率先达标的数据筛选语句作为最终的数据筛选语句,如果都无法达标则优化前的原始数据筛选语句为最终的数据筛选语句。
在本发明的实施例手术,测试用例生成模块3实现根据所述数据筛选语句生成所述测试用例的业务数据项,进而生成测试用例文件的功能,所述数据筛选语句即经过了优化后最简筛选语句,也是最终整合进测试用例文件中的数据筛选语句。测试用例生成模块3用来执行如下步骤:
步骤S31:打开测试用例文件并定位到对应业务数据输入项。
具体的,例如测试用例的载体为execl文件,每一行代表一个测试用例,测试用例的输入数据对应某一列,则打开文件后定位到对应列。
步骤S32:将优化后的最终数据筛选语句模型植入至数据输入项。
具体的,例如将数据筛选语句模型表达式填入到每一行的第N列。
步骤S33:保存测试用例文件。
下面结合一个具体实施场景对本发明的数据生成装置进行进一步描述。
以银行系统中转账业务的测试数据生成进行举例说明。假设银行转账业务的程序名称为transferAcc,利用历史业务数据生成模块1,根据该程序名称在测试历史日志中查找到对应执行历史记录为100条。根据事先制定的日志格式,如“测试时间:2020-12-16;测试程序:transferAcc;输入参数:cardID(6222021234567891234),in(1),acc(10000);输出结果:done”,确定出程序transferAcc的交互输入参数有三个,分别为cardID,in,acc,其分别对应于银行账号,是否为转入,转账金额。
建立银行转账程序用例数据与数据源的映射表,如表3所示。从表3中可知,cardID与数据库中表transfer.cardID对应,in与表transfer.in对应,acc与表transfer.acc对应。根据该映射关系,将数据库中与历史日志中相对应的100条历史业务数据项纪录提取出来,存储到本地建立的数据库中。
利用数据筛选语句生成模块2,首先对存储在本地数据库中的历史业务数据项进行特征提取,所述特征指数据表中字段。设置长短特征边界值为3,短特征数据项上限值为1,长特征数据项的误差量级为1。存储在本地数据库的业务数据表,如表4所示,以其中四条举例。
由表4中,根据长短字段特征边界为3,将字段cardID和acc视为长特征数据项,字段in视为短特征数据项。短字段in提取出一个值集合(1),可见短字段in的最大值为1,等于设置的短数据特征项上限值1,所以in可以视为一个提取特征。长字段cardID提取出一个范围区间(6222021234567891234,6222021234567891237),其最大最小值的数量级相等,小于设置的长字段数量级误差值1,所以cardID是一个提取特征。长字段acc提取出一个范围区间(1234567,456789012),其最大最小值的数量级相差2,大于设置的长字段数量级误差值1,所以acc不视为一个提取特征。综上所述,字段cardID和字段in为需要提取的特征信息。
然后通过SQL语句select in from tansfer提取样本中所有的值形成一个值集合,字段in的值集合为{1};提取出的长特征信息为字段cardID,将字段cardID的所有值提取出来结果是6222021234567891234,6222021234567891235,6222021234567891236,6222021234567891237,并且利用例如冒泡排序算法等方法对字段C的数值进行从小到大的排序,例如排序后数列为6222021234567891234,6222021234567891235,6222021234567891236,6222021234567891237,取排序后数列的第一个数值作为字段C的最小值,例如6222021234567891234,取排序后数列的最后一个数值作为最大值,例如6222021234567891237,进而得到字段cardID的值范围为(6222021234567891234,6222021234567891237),或者对于长字段利用语句select min(cardID),max(cardID)fromtansfer,提取出字段cardID的最小值是6222021234567891234,最大值是6222021234567891237,进而字段C的值范围为(6222021234567891234,6222021234567891237)。。将获取的短特征的值集合与长特征的值范围,形成一条数据库查询SQL执行语句,即生成所述数据筛选语句,例如select data from tansfer where in in(1)and(cardID between 6222021234567891234 and 6222021234567891237)。
将生成的数据筛选语句植入测试用例,执行测试程序,其中100条记录中95条执行成功,计算执行成功占比为95%,假设设定的成功标准值为90%,则进入对数据筛选语句的优化过程。若执行成功占比计算的结果小于90%,则需要对特征选择时用到的设定参数进行修正,例如将长短特征边界值增大或者提高短特征数据项的上限值或者增大长数据特征项的数量级误差,三者可以是同时修正,也可以是逐个修正,直至执行成功占比达到设定标准值。在本实施例中,由于执行成功占比已经高于标准值,所以不需要对设定参数进行修正,直接进入优化流程。对数据筛选语句优化的流程是首先根据步骤S211提取出两组长字段过滤项(cardID between 6222021234567891234 and 6222021234567891237),然后将SQL变更为后从本地数据库提取100条记录进行验证,如果成功次数大于等于100*90%=90次时则确定最终SQL模型为select data from tansfer where in in(1),如果成功次数小于90次,则将数据筛选语句演变为select data from tansfer where in in(1)and(cardID between 6222021234567891234 and 6222021234567891237),在本实施例中,该数据筛选语句就是优化前的数据筛选语句,所以最终的数据筛选语句为select data fromtansfer where in in(1)and(cardID between 6222021234567891234 and6222021234567891237)。
利用测试用例生成模块3,打开测试用例文件,通常是一个表格,将最终的数据筛选语句植入对应业务数据所在的列,并对测试用例文件进行保存,利用整个装置完成测试数据生成。
由以上描述可知,本发明提供的一种测试数据生成装置,包括历史业务数据项提取模块1,实现根据一测试用例的历史日志信息,提取对应的历史业务数据项的功能;数据筛选语句生成模块2,实现提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句的功能;测试用例生成模块3,实现根据所述数据筛选语句生成所述测试用例的业务数据项的功能,从而本发明保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不会破坏测试环境的数据逻辑。
从硬件层面来说,本申请提供一种用于实现测试数据生成方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
图11为本申请实施例的电子设备9600的系统构成的示意框图。如图11所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图11是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一实施例中,测试数据生成功能可以被集成到中央处理器中。其中,中央处理器可以被配置为进行如下控制:
S1:根据一测试用例的历史日志信息,提取对应的历史业务数据项;
S2:提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
S3:根据所述数据筛选语句生成所述测试用例的业务数据项。
从上述描述可知,本申请实施例提供的电子设备,保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,避免了繁琐的人工静态设置,同时不会破坏测试环境的数据逻辑。
在另一个实施方式中,测试数据生成装置可以与中央处理器9100分开配置,例如可以测试数据生成装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现测试数据生成功能。
如图11所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图11中所示的所有部件;此外,电子设备9600还可以包括图11中没有示出的部件,可以参考现有技术。
如图11所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的测试数据生成方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的测试数据生成方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S1:根据一测试用例的历史日志信息,提取对应的历史业务数据项;
S2:提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
S3:根据所述数据筛选语句生成所述测试用例的业务数据项。
从上述描述可知,本申请实施例提供的计算机可读存储介质,保证了测试的高执行率,提高了测试数据对于测试程序的自适应性,同时避免了繁琐的人工静态设置。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种测试数据生成方法,其特征在于,包括:
根据一测试用例的历史日志信息,提取对应的历史业务数据项;
提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
根据所述数据筛选语句生成所述测试用例的业务数据项;
其中,所述提取所述历史业务数据项的特征信息,包括:
根据一预设的长短字段边界值将所述历史业务数据项划分为短数据特征项和长数据特征项;
提取特征项的最大值小于设定阈值的短数据特征项以及特征项的值范围的数量级低于设定数量级的长数据特征项,其中所述特征信息为提取的所述短数据特征项和所述长数据特征项;
其中,所述根据所述特征信息生成数据筛选语句,包括:
利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
对所有长数据特征项按照数据值大小进行排序,并根据位于排序首位和最后一位长数据特征项的数据值生成所述长数据特征项的特征值范围;
根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
2.根据权利要求1所述的测试数据生成方法,其特征在于,所述根据一测试用例的历史日志信息,提取对应的历史业务数据项,包括:
提取所述历史日志信息中的程序交互输入信息,其中,所述程序交互输入信息与用例数据中的程序输入参数字段相对应;
根据所述程序交互输入信息搜索预设的用例数据与数据源的映射关系,进而提取得到所述历史业务数据项。
3.根据权利要求2所述的测试数据生成方法,其特征在于,还包括:
建立所述用例数据与数据源的映射关系。
4.根据权利要求2所述的测试数据生成方法,其特征在于,所述程序交互输入信息包括:输入参数名称及输入参数数值;所述提取所述历史日志信息中的程序交互输入信息,包括:
确定待测试程序名称字符;
在所述历史日志信息中,查找包含所述待测试程序名称字符的日志记录;
提取所述日志记录中输入参数名称及输入参数数值,进而生成所述程序交互输入信息。
5.根据权利要求1所述的测试数据生成方法,其特征在于,所述对所有长数据特征项按照数据值大小进行排序,并根据位于排序首位和最后一位长数据特征项的数据值生成所述长数据特征项的特征值范围包括:
利用第二SQL执行语句从所有所述长数据特征项中提取数据值最大的长数据特征项和数据值最小的长数据特征项,并根据所述数据值最大的长数据特征项和数据值最小的长数据特征项生成所述长数据特征项的值范围。
6.根据权利要求1所述的测试数据生成方法,其特征在于,长短字段边界值、设定阈值以及设定数量级中的至少一个定义为设定参数;所述方法还包括:
将所述业务数据项植入所述测试用例,并调用对应的测试目标程序进行测试,得到测试结果;所述测试结果为执行成功或执行失败;
若所述测试结果中执行成功的占比低于设定标准值,则修正所述设定参数,并利用修正后的所述设定参数替换初始的设定参数,重新生成所述业务数据项,直至所述测试结果中执行成功的占比高于设定标准值。
7.根据权利要求1所述的测试数据生成方法,其特征在于,还包括:
过滤所述数据筛选语句中的所有长数据特征项的特征值范围,得到短数据筛选语句;
将所述短数据筛选语句植入所述测试用例,并调用对应的测试程序进行测试,得到执行成功率结果;
若所述执行成功率低于设定标准值,则选取其中至少一个过滤的长数据特征项的特征值范围增加到所述短数据筛选语句,重新植入所述测试用例;直至所述执行成功率高于设定标准值,形成最终的数据筛选语句。
8.一种测试数据生成装置,其特征在于,包括:
历史业务数据项提取模块,根据一测试用例的历史日志信息,提取对应的历史业务数据项;
数据筛选语句生成模块,提取所述历史业务数据项的特征信息,并根据所述特征信息生成数据筛选语句;
测试用例生成模块,根据所述数据筛选语句生成所述测试用例的业务数据项;
其中,所述提取所述历史业务数据项的特征信息,包括:
根据一预设的长短字段边界值将所述历史业务数据项划分为短数据特征项和长数据特征项;
提取特征项的最大值小于设定阈值的短数据特征项以及特征项的值范围的数量级低于设定数量级的长数据特征项,其中所述特征信息为提取的所述短数据特征项和所述长数据特征项;
其中,所述根据所述特征信息生成数据筛选语句,包括:
利用第一SQL执行语句从所述历史业务数据项中获取所有短数据特征项的特征值,并形成所有短数据特征项的特征值集合;
对所有长数据特征项按照数据值大小进行排序,并根据位于排序首位和最后一位长数据特征项的数据值生成所述长数据特征项的特征值范围;
根据短数据特征项的特征值集合和长数据特征项的特征值范围生成数据筛选语句。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述的测试数据生成方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述的测试数据生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110008557.XA CN112732571B (zh) | 2021-01-05 | 2021-01-05 | 一种测试数据生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110008557.XA CN112732571B (zh) | 2021-01-05 | 2021-01-05 | 一种测试数据生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732571A CN112732571A (zh) | 2021-04-30 |
CN112732571B true CN112732571B (zh) | 2024-01-26 |
Family
ID=75591110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110008557.XA Active CN112732571B (zh) | 2021-01-05 | 2021-01-05 | 一种测试数据生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732571B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434436B (zh) * | 2021-07-30 | 2022-12-16 | 拉扎斯网络科技(上海)有限公司 | 测试用例的生成方法、装置、电子设备及存储介质 |
CN114153911A (zh) * | 2021-12-21 | 2022-03-08 | 浪潮软件集团有限公司 | 基于vba技术自定义生成数据库测试数据的方法与系统 |
CN114416531A (zh) * | 2021-12-23 | 2022-04-29 | 税友信息技术有限公司 | 一种测试数据生成方法、装置、设备及介质 |
CN116013365B (zh) * | 2023-03-21 | 2023-06-02 | 深圳联友科技有限公司 | 一种语音全自动化测试的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
CN104133772A (zh) * | 2014-08-13 | 2014-11-05 | 广东电网公司信息中心 | 一种自动生成测试数据的方法 |
CN105975603A (zh) * | 2016-05-11 | 2016-09-28 | 深圳市永兴元科技有限公司 | 数据库性能测试方法及装置 |
KR20180099241A (ko) * | 2017-02-28 | 2018-09-05 | 주식회사 스패로우 | 테스트 케이스를 이용하여 테스트를 수행하는 방법 및 장치 |
CN110647471A (zh) * | 2019-09-26 | 2020-01-03 | 招商局金融科技有限公司 | 接口测试用例生成方法、电子装置及存储介质 |
-
2021
- 2021-01-05 CN CN202110008557.XA patent/CN112732571B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
CN104133772A (zh) * | 2014-08-13 | 2014-11-05 | 广东电网公司信息中心 | 一种自动生成测试数据的方法 |
CN105975603A (zh) * | 2016-05-11 | 2016-09-28 | 深圳市永兴元科技有限公司 | 数据库性能测试方法及装置 |
KR20180099241A (ko) * | 2017-02-28 | 2018-09-05 | 주식회사 스패로우 | 테스트 케이스를 이용하여 테스트를 수행하는 방법 및 장치 |
CN110647471A (zh) * | 2019-09-26 | 2020-01-03 | 招商局金融科技有限公司 | 接口测试用例生成方法、电子装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112732571A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112732571B (zh) | 一种测试数据生成方法及装置 | |
CN110164435A (zh) | 语音识别方法、装置、设备及计算机可读存储介质 | |
CN111815432B (zh) | 金融服务风险预测方法及装置 | |
CN106599317A (zh) | 问答系统的测试数据处理方法、装置及终端 | |
CN109885828A (zh) | 基于语言模型的词语纠错方法、装置、计算机设备及介质 | |
CN111930615B (zh) | 代码质量评估方法及装置 | |
CN110399306B (zh) | 软件模块自动化测试方法及装置 | |
CN112988601A (zh) | 测试脚本开发方法及装置 | |
CN110134929A (zh) | 文档校验方法、装置、计算机设备和存储介质 | |
CN112149419B (zh) | 字段的规范化自动命名方法、装置及系统 | |
CN111767350A (zh) | 数据仓库测试方法、装置、终端设备及存储介质 | |
CN112784112A (zh) | 报文校验方法及装置 | |
CN116467171A (zh) | 自动化测试用例构建装置、方法、电子设备及存储介质 | |
CN115422065A (zh) | 基于代码覆盖率的故障定位方法及装置 | |
CN109542785B (zh) | 一种无效bug确定方法和装置 | |
CN111984666A (zh) | 数据库访问方法、装置、计算机可读存储介质和计算机设备 | |
CN112800063A (zh) | 基于数据结构的自动贯标方法及装置 | |
CN109726290B (zh) | 投诉分类模型的确定方法及装置、计算机可读存储介质 | |
CN115509485A (zh) | 一种业务表单的填写方法、装置、电子设备和存储介质 | |
CN112860585B (zh) | 一种测试脚本断言生成方法及装置 | |
CN115562960A (zh) | 智能设备的应用优化方法及系统 | |
CN112988598B (zh) | 接口自动化测试的方法及装置 | |
CN111639478B (zh) | 一种基于excel文档的数据自动稽核方法及系统 | |
CN113568888A (zh) | 索引推荐方法及装置 | |
CN114547391A (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 |