CN111078555B - 一种测试文件的生成方法、系统、服务器和存储介质 - Google Patents
一种测试文件的生成方法、系统、服务器和存储介质 Download PDFInfo
- Publication number
- CN111078555B CN111078555B CN201911295731.2A CN201911295731A CN111078555B CN 111078555 B CN111078555 B CN 111078555B CN 201911295731 A CN201911295731 A CN 201911295731A CN 111078555 B CN111078555 B CN 111078555B
- Authority
- CN
- China
- Prior art keywords
- template
- interface
- generating
- test
- csv
- 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 98
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000013515 script Methods 0.000 claims abstract description 33
- 230000001419 dependent effect Effects 0.000 claims abstract description 22
- 238000012795 verification Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 21
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 3
- 238000012423 maintenance Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 abstract 1
- 230000000694 effects Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 11
- 238000011056 performance test Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 241000238814 Orthoptera Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000009662 stress testing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001550 time effect Effects 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
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
本发明公开了一种测试文件的生成方法,包括:从数据库读取接口信息;基于所述csv参数生成第一模板;基于所述接口依赖标识生成第二模板;基于所述断言校验生成第三模板;将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。本发明通过设置模板,根据接口信息结合模板自动生成locust文件执行脚本,能便捷地对接口信息、接口参数、性能权重、接口测试任务进行复用,自动生成locust脚本文件,进行一定范围的性能场景测试。有效地提高了测试接口数据,性能场景设计,编辑脚本的工作效率,达到减少开发成本,节省脚本维护时间的效果。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种测试文件的生成方法、系统、服务器和存储介质。
背景技术
通常,人们在使用Locust开源性能测试工具进行相关的性能测试的时候,需要通过测试人员根据测试场景、相关接口、参数化手动编写locust脚本文件。由于手动编写的脚本不能形成一定的测试用例复用。
使用手动编写脚本的方式进行性能测试时,每次都需要根据接口信息、接口参数、性能请求比重等相关数据重新编写新的locust文件,不能较好地满足测试团队进行敏捷性能测试的需求,但是测试过程中会出现下面这些问题,例如接口数量庞大,编写接口自动化测试用例会耗费相当多人力资源,并且相似的接口用例编写基本是复制粘贴后进行适应性修改,工作相对枯燥,另外,当接口文档编写较为简单且代码逻辑描述不全时,会造成编写自动化测试用例的人工沟通成本非常大,最后,由于不同测试人员编写的脚本风格和测试侧重点有偏差,从而造成用例维护困难,测试功能不全等问题,同时因为需要考虑性能测试场景的复杂性,多样性,以及测试参数的构造,读取结构,手动生成对应的locust可执行文件需要耗费大量时间。
发明内容
本发明提供一种测试文件的生成方法、系统、服务器和存储介质,通过设置模板,自动生成locust脚本文件,减少开发成本,节省脚本编写的时间。
第一方面,本发明实施例提供了一种测试文件的生成方法,包括:
从数据库读取接口信息;
基于所述csv参数生成第一模板;
基于所述接口依赖标识生成第二模板;
基于所述断言校验生成第三模板;
将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。
进一步地,所述从数据库读取接口信息之后,还包括:
将所述接口信息转换成字典对象。
进一步地,所述基于所述csv参数生成第一模板,包括:
判断所述接口信息中是否存在csv参数化标识;
若存在,则生成有csv参数的所述第一模板;
若不存在,则生成无csv参数的所述第一模板。
进一步地,所述基于所述接口依赖标识生成第二模板,包括:
判断所述接口信息中是否存在有场景类型定义的所述接口依赖标识;
若存在接口依赖标识,则判断是否存在接口依赖;
若存在接口依赖,则返回所述将所述接口信息转换成字典对象,生成有场景定义的所述第二模板;
若不存在接口依赖,则生成无场景定义的所述第二模板;
若不存在接口依赖标识,则生成无场景定义的所述第二模板。
进一步地,所述基于所述断言校验生成第三模板,包括:
判断所述接口信息中是否存在断言函数;
若存在,则生成有断言模板的第三模板;
若不存在,则生成无断言模板的第三模板。
第二方面,本发明实施例还提供了一种测试文件的生成系统,包括:
数据获取模块,用于从数据库读取接口信息;
第一生成模块,用于基于所述csv参数生成第一模板;
第二生成模块,用于基于所述接口依赖标识生成第二模板;
第三生成模块,用于基于所述断言校验生成第三模板;
拼接模块,用于将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。
第三方面,本发明实施例还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上述任一所述的测试文件的生成方法。
第四方面,本发明实施例还提供了一种终端可读存储介质,其上存储有程序,所述程序被处理器执行时能够实现如上述任一所述的测试文件的生成方法。
本发明通过设置模板,根据接口信息结合模板自动生成locust文件执行脚本,通过设置模板,自动生成locust脚本文件,减少开发成本,节省脚本编写的时间的效果。
附图说明
图1是本发明实施例一中的一种测试文件的生成方法流程图。
图2是本发明实施例二中的一种测试文件的生成方法流程图。
图3是本发明实施例三中的一种测试文件的生成系统模块图。
图4是本发明实施例三中替代实施例中的一种测试文件的生成系统模块图。
图5是本发明实施例四的服务器结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一模板称为第二模板,且类似地,可将第二模板称为第一模板。第一模板和第二模板两者都是框架模板,但其不是同一模板。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
下述实施例中涉及到的英文缩写及专有名词含义如下:
Locustfile:locust文件,是运行Locust(开源性能测试工具)的Python脚本文件。该文件必须继承locust类。Locust(开源性能测试工具)会根据Locustfile的配置定义,为每一个的虚拟用户生成一个locust类实例,然后基于Requests库而实现HTTP协议的请求。Locust开源性能测试工具,完全基于Python语言开发。使用Python中的协程gevent来定义及模拟用户行为,进行高并发访问、压力测试、等相关的性能测试。
Csv参数:CSV文件是最常用的一个文件存储方式。逗号分隔值(Common-SeparatedValues,CSV)文件以纯文本形式存储表格数据(注:分隔字符也可以是其他字符)。纯文本说明该文件是一个字符序列,不包含必须像二进制数字那样被解读的数据。CSV文件由任意数目记录组成,记录间以某种换行符分隔;每条记录由若干字段组成,字段间以字符(如逗号)或字符串分隔。
Gevent:一个基于协程的Python网络库,在遇到IO阻塞时,程序会在一个线程内自动进行切换,底层使用C语言实现。
Requests:基于urllib,采用Apache2 Licensed开源协议的HTTP库,以更加方便的请求方式,进行HTTP协议的请求。
用例:第二代面向对象技术的标志。在使用UML的整个软件开发过程中,UseCase处于一个中心地位。用例是对一组动作序列的抽象描述,系统执行这些动作序列,产生相应的结果。这些结果要么反馈给参与者,要么作为其他用例的参数。UseCase可以用很多方式来描述,可以用自然语言(英语、汉语),可以用形式化语言,也可以用各种图示。
协程:示例性地,指A程序与B程序的反复调用执行,当A程序执行结束后调用执行B程序,B程序结束后调用A程序,反复直至程序结束,协程gevent就是一个简单的用来实现协程的第三方包。
实施例一
图1为本发明实施例一提供的一种测试文件的生成方法流程图,本实施例以基于Python语言开发的locust为例,本实施例及下述实施例的技术方案也可应用于其他可进行测试用例的编程语言及对应的开源性能测试工具。
具体包括如下步骤:
S101、从数据库读取接口信息;
该步骤所述接口信息为用于生成模拟请求的参数信息,示例性地,接口信息中包括但不限于csv参数、接口依赖标识和/或断言函数等,可以是其中的一种或多种。所述接口信息从测试平台的数据库读取,所述数据库基于不同的测试需求包括不同的接口信息。在测试过程开始时,测试工具基于接口测试的需求及配置定义,(如进行高并发访问、压力测试、等相关的性能测试),从数据库获取接口信息,根据接口信息中的参数,locust测试工具向所述框架脚本中填写参数的空白区域后生成完整的测试脚本,即为每一个虚拟用户生成一个locust类实例,然后基于Requests库而实现HTTP协议的请求,将所述请求发送至不同的接口以获取接口测试结果进行测试。
本实施例的方案中,由于接口测试过程是模拟用户向接口发送请求的过程,示例性地,使用Python中的协程gevent来定义及模拟用户行为,以测试返回结果,因此模拟请求由locust测试工具事先搭建好测试框架,再补充待填写参数的空白区域后生成。测试框架包括多个待填写的空白部分,根据获取的接口信息分别将测试框架中的多个待填写的部分补足以生成完整脚本。在本实施例中,待填写的空白部分为三个,包括csv参数、接口依赖标识和/或断言函数部分。上述多个待填写部分的数据用于赋值给对应测试框架中的相应变量,因此,多个数据的参数需分别包括对应模板中定义的所有变量,且参数名称与模板中定义的变量名称需一一对应,从数据库读取接口信息即为获取上述多个参数。可选地,获取的所述接口信息的数据格式要求编程语言可以对其进行解析,可以但不限于使用json、xml、yaml等格式。
该步骤之后,还包括将所述接口信息转换成字典对象。由于python不能直接序列化对象,对普通的python对象来说,需要把类的实例对象的实例属性以字典形式返回,简单的说就是用来存储实例变量。本实施例中增加该步骤,能够将非序列化的字典对象进行解析,以返回接口字典对象。
字典对象Dictionary对象是一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号分割,每个对之间用逗号分割,整个字典包括在花括号{}中,格式如下所示:
d={key1:value1,key2:value2}
S102、基于所述csv参数生成第一模板。
该步骤中,locust脚本搭建好框架,其中用于生成发起请求的用户ID的这部分代码框架为第一模板。csv是一种通用的、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。例如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,到一个数据格式完全不同的电子表格。最可能的情况是,该数据库程序可以导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。Csv参数的作用是从外部导入数据,帮助jmeter完成自动化循环测试的方法,方便保存测试用例,随时做回归测试或者调用。
在该步骤中,根据csv中的参数信息,对接口组装功能返回的字典对象即json字符串中的内容进行替换,示例性地,若测试接口为根据id返回给请求放用户信息,则参数信息即为用户id。下述步骤S103及步骤S104与该步骤类似,具体如下:
S103、基于所述接口依赖标识生成第二模板。
该步骤中,locust脚本框架中用于确定接口信息的部分为第二模板。由于app需要登录才能浏览其它页面,所以想要请求其它接口必须先请求登录接口,将返回的用户信息及token作为变量参数入参,在其他业务流程之前同样需要依赖上一层接口返回的数据作为入参。
因此,设计接口依赖的自动化用例,一般为初始化一个session会话对象,使用session会话对象请求登录接口,将登录返回的用户信息及token作为入参,请求其它接口。
在该步骤中,接口依赖标识包括但不限于如下:$SETUP.API、$SETUP.SQL、$ON_START.API、$ON_START.SQL、$ON_STOP.API、$ON_STOP.SQL、$TEARDOWN.API、$TEARDOWN.SQL等。其中API表示依赖接口Response响应获得参数,SQL表示依赖查询操作获得参数,或对数据库的数据进行增删改。对应的Locust配置定义类型包含:setup、on_start、on_stop、teardown。该步骤通过判断是否存在locust场景定义的接口依赖标识,若存在,则根据locust模板文件自动生成对应类型的第二模板,否则不生成对应类型的第二模板。
S104、基于所述断言校验生成第三模板。
该步骤执行断言校验,断言校验指的是使用断言函数校验,Python中的断言函数是对表达式布尔值的判断,要求表达式计算值必须为真。可用于自动调试。如果表达式为假,触发异常;如果表达式为真,不执行任何操作。
示例性地,可用如下所示的代码实现:
assert(condition)
ifnotcondition:
raiseAssertionError()。
S105、将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。
本实施例中,测试框架包括三个待填写的空白部分,根据向接口发送请求并返回的结果,根据结果中的参数分别将测试框架中的三个待填写的部分补足。需要说明的是,该三部分数据用于赋值给对应模板中的相应变量,因此,三部分数据的参数需分别包括对应模板中定义的所有变量,且参数名称与模板中定义的变量名称需一一对应。获取的三部分数据的数据格式要求编程语言可以对其进行解析,可以但不限于使用json、xml、yaml等。
本实施例根据获取的接口信息得到参数,将参数带入预设的模板生成对应的模板文件,拼接后生成测试脚本,实现了测试文件的自动生成,节省了效率。
实施例二
如图2所示,本实施例提供一种测试文件的生成方法,对上述实施例中的文件测试方法的步骤进行了细化,具体如下:
S201、从数据库读取接口信息。
S202、将所述接口信息转换成字典对象。
由于python不能直接序列化对象,对普通的python对象来说,需要把类的实例对象的实例属性以字典形式返回,简单的说就是用来存储实例变量。本实施例中增加该步骤,能够将非序列化的字典对象进行解析,以返回接口字典对象。
字典对象Dictionary对象是一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号分割,每个对之间用逗号分割,整个字典包括在花括号{}中,格式如下所示:
d={key1:value1,key2:value2}。
S2031、判断所述接口信息中是否存在csv参数化标识。
S2032、若存在,则生成有csv参数的所述第一模板。
S2033、若不存在,则生成无csv参数的所述第一模板。
上述步骤S2031-S2033中,主要是判断是否存在csv参数化标识。以$CSV作为csv文件参数读取的标识,若存在此标识则根据locust模板文件自动生成带csv参数化的locust模板,若不存在csv参数化标识则使用不带csv参数化的模板生成locust模板。
csv是一种通用的、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。例如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,到一个数据格式完全不同的电子表格。最可能的情况是,该数据库程序可以导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。Csv参数的作用是从外部导入数据,帮助jmeter完成自动化循环测试的方法,方便保存测试用例,随时做回归测试或者调用。
在该步骤中,根据csv中的参数信息,对接口组装功能返回的字典对象即json字符串中的内容进行替换,示例性地,若测试接口为根据id返回给请求放用户信息,则参数信息即为用户id。
其中,生成有csv参数的所述第一模板即为将csv参数赋值给对应测试框架中的相应变量,生成无csv参数的所述第一模板,可以是向测试框架中填入不影响代码执行的空白内容,或删除框架中与csv参数相关的代码。
S2041、判断所述接口信息中是否存在有场景类型定义的所述接口依赖标识。
S2042、若存在接口依赖标识,则判断是否存在接口依赖;该步骤需要根据标识进一步判断是否真的出现接口依赖,若存在接口依赖,则返回所述将所述接口信息转换成字典对象,生成有场景定义的所述第二模板。
S2043、若不存在接口依赖,则生成无场景定义的所述第二模板。
S2044、若不存在接口依赖标识,则生成无场景定义的所述第二模板。
示例性地,当场景为A接口依赖B接口,抽取之前A接口的返回值存储到字典对象中,初始化接口请求时,解析请求头部、请求参数等信息中的全局变量并进行替换,再次发出请求,如图所示,返回步骤S202,执行将所述接口信息转换成字典对象的步骤。
上述步骤S2041-S2043中,主要是判断接口信息参数中是否有locust场景定义的接口依赖标识,示例性地,所述接口依赖标识包括但不限于依赖接口响应标识、依赖查询操作标识和/或待查询数据库标识等。具体地,有$SETUP.API、$SETUP.SQL、$ON_START.API、$ON_START.SQL、$ON_STOP.API、$ON_STOP.SQL、$TEARDOWN.API、$TEARDOWN.SQL等。对应的Locust配置定义类型包含:setup、on_start、on_stop、teardown。若存在locust场景定义的接口依赖标识,则根据locust模板文件自动生成对应类型的模板,否则不生成对应类型的locust模板。
同时,还需要进行复合locust场景定义的接口依赖标识判断,即以递归的方式判断场景定义的接口依赖标识,检索出被测接口的所有依赖接口。若存在,则根据locust模板文件自动生成对应类型的locust文件,否则不生成模板。
其中,生成有场景定义的所述第二模板即为根据接口依赖标识,在测试框架中的对应部分定义待查询接口及待查询的数据库的信息,生成无场景定义的所述第二模板,可以是向测试框架中填入不影响代码执行的空白内容,或删除框架中与场景定义相关的代码。
S2051、判断所述接口信息中是否存在断言函数。
该步骤执行断言校验,断言是对一个程序逻辑的某种假设进行测试的方法,断言校验指的是使用断言函数校验,Python中的断言函数是对表达式布尔值的判断,要求表达式计算值必须为真。可用于自动调试。如果表达式为假,触发异常;如果表达式为真,不执行任何操作。
示例性地,可用如下所示的代码实现:
assert(condition)
ifnotcondition:
raiseAssertionError()。
S2052、若存在,则生成有断言模板的第三模板。
S2053、若不存在,则生成无断言模板的第三模板。
上述步骤S2051-S2033即为断言校验过程,根据接口所配置的断言字典生成对应的断言模板。
其中,生成有断言模板的第三模板即为根据接口信息中包含的断言函数,在测试框架中的对应部分填入断言函数定义的变量,生成无断言模板的所述第三模板,可以是向测试框架中填入不影响代码执行的空白内容,或删除框架中与断言函数相关的代码。
S206、将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。
对上述判断后所生成的模板对象进行拼接组装,生成可执行的Python文件。生成的locust执行文件为符合locust可识别,可读取的脚本结构,对于脚本的编写定义,以及生成方式,locust官方没有明确指出,因此可以以多种形式生成locust可执行文件。
该步骤中,将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件,拼接过程可以根据测试工具基于接口测试的需求及配置定义,(如进行高并发访问、压力测试、等相关的性能测试),制定不同的框架,包括不同的模板,所述模板包括但不限于第一模板、第二模板和/或第三模板,可以由任意多个模板拼接形成。
本实施例对上述实施例步骤进行了细化,根据获取的接口信息得到参数,将参数带入预设的模板生成对应的模板文件,拼接后生成测试脚本,实现了测试文件的自动生成,节省了效率。同时通过增加对由场景定义的模板进行返回解析字典对象的步骤,避免出现接口依赖无法获取模板的所有参数,提高了生成模板的准确性。
实施例三
如图3所示,本实施例提供了一种测试文件的生成系统3,可执行本发明上述实施例所提供的测试文件的生成方法,具备执行方法相应的功能模块和有益效果。
具体包括:
数据获取模块301,用于从数据库读取接口信息。
第一生成模块302,用于基于所述csv参数生成第一模板。
第二生成模块303,用于基于所述接口依赖标识生成第二模板。
第三生成模块304,用于基于所述断言校验生成第三模板。
拼接模块305,用于将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。
如图4所示,在替代实施例中,所述第一生成模块302还包括:
第一判断单元3021,用于判断所述接口信息中是否存在csv参数化标识。
第一生成单元3022,用于若存在,则生成有csv参数的所述第一模板。
若不存在,则生成无csv参数的所述第一模板。
第二生成模块303还包括:
第二判断单元3031,用于判断所述接口信息中是否存在有场景类型定义的所述接口依赖标识。
第三判断单元3032,用于若存在接口依赖标识,则判断是否存在接口依赖。
返回单元3033,用于若存在接口依赖,则返回所述将所述接口信息转换成字典对象,生成有场景定义的所述第二模板。
第二生成单元3034,用于若不存在接口依赖,则生成无场景定义的所述第二模板。还用于若不存在接口依赖标识,则生成无场景定义的所述第二模板。
第三生成模块304还包括:
第四判断单元3041,用于判断所述接口信息中是否存在断言函数。
第三生成单元3042,用于若存在,则生成有断言模板的第三模板。
若不存在,则生成无断言模板的第三模板。
本发明实施例四所提供的测试文件的生成系统可执行本发明任意实施例所提供的测试文件的生成方法,具备功能模块相应的执行方法和有益效果。
实施例四
图5为本发明实施例四提供的一种服务器的结构示意图,如图5所示,该设备包括处理器401、存储器402、输入装置403和输出装置404;设备中处理器401的数量可以是一个或多个,图5以一个处理器401为例;设备中的处理器401、存储器402、输入装置403和输出装置404可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器402作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例一中的一种测试文件的生成方法对应的模块(例如实施例三中的数据获取模块301、第一生成模块302等)。处理器401通过运行存储在存储器402中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的一种测试文件的生成方法。
存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器402可进一步包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例五
实施例五提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种测试文件的生成方法,该方法包括:
从数据库读取接口信息;
基于所述csv参数生成第一模板;
基于所述接口依赖标识生成第二模板;
基于所述断言校验生成第三模板;
将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的测试文件的生成方法的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (6)
1.一种测试文件的生成方法,其特征在于,包括:
从数据库读取接口信息;
将所述接口信息转换成字典对象,其中,所述接口信息中至少包括csv参数、接口依赖标识和/或断言函数中的一种;
基于所述csv参数生成第一模板;
基于所述接口依赖标识生成第二模板;
基于所述断言函数校验生成第三模板;
将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件;
其中,所述基于所述接口依赖标识生成第二模板,包括:
判断所述接口信息中是否存在有场景类型定义的所述接口依赖标识;
若存在接口依赖标识,则判断是否存在接口依赖;
若存在接口依赖,则返回所述将所述接口信息转换成字典对象,生成有场景定义的所述第二模板;
若不存在接口依赖,则生成无场景定义的所述第二模板;
若不存在接口依赖标识,则生成无场景定义的所述第二模板;其中,所述生成有场景定义的所述第二模板为根据接口依赖标识,在测试框架中的对应部分定义待查询接口及待查询的数据库的信息;所述生成无场景定义的所述第二模板,是向测试框架中填入不影响代码执行的空白内容,或删除框架中与场景定义相关的代码。
2.根据权利要求1所述的一种测试文件的生成方法,其特征在于,所述基于所述csv参数生成第一模板,包括:
判断所述接口信息中是否存在csv参数化标识;
若存在,则生成有csv参数的所述第一模板;
若不存在,则生成无csv参数的所述第一模板。
3.根据权利要求1所述的一种测试文件的生成方法,其特征在于,所述基于所述断言函数校验生成第三模板,包括:
判断所述接口信息中是否存在断言函数;
若存在,则生成有断言模板的第三模板;
若不存在,则生成无断言模板的第三模板。
4.一种测试文件的生成系统,其特征在于,包括:
数据获取模块,用于从数据库读取接口信息;
转换模块,用于在从所述数据库读取接口信息之后,将所述接口信息转换成字典对象,其中,所述接口信息中至少包括csv参数、接口依赖标识和/或断言函数中的一种;
第一生成模块,用于基于所述csv参数生成第一模板;
第二生成模块,用于基于所述接口依赖标识生成第二模板;
第三生成模块,用于基于所述断言函数校验生成第三模板;
拼接模块,用于将所述第一模板、第二模板和/或第三模板拼接,生成测试脚本文件;
其中,所述第二生成模块,还包括:
第二判断单元,用于判断所述接口信息中是否存在有场景类型定义的所述接口依赖标识;
第三判断单元,用于若存在接口依赖标识,则判断是否存在接口依赖;
返回单元,用于若存在接口依赖,则返回所述将所述接口信息转换成字典对象,生成有场景定义的所述第二模板;
第二生成单元,用于若不存在接口依赖,则生成无场景定义的所述第二模板;还用于若不存在接口依赖标识,则生成无场景定义的所述第二模板;其中,所述生成有场景定义的所述第二模板为根据接口依赖标识,在测试框架中的对应部分定义待查询接口及待查询的数据库的信息;所述生成无场景定义的所述第二模板,是向测试框架中填入不影响代码执行的空白内容,或删除框架中与场景定义相关的代码。
5.一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-3任一所述的测试文件的生成方法。
6.一种终端可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时能够实现如权利要求1-3任一所述的测试文件的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911295731.2A CN111078555B (zh) | 2019-12-16 | 2019-12-16 | 一种测试文件的生成方法、系统、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911295731.2A CN111078555B (zh) | 2019-12-16 | 2019-12-16 | 一种测试文件的生成方法、系统、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078555A CN111078555A (zh) | 2020-04-28 |
CN111078555B true CN111078555B (zh) | 2024-04-23 |
Family
ID=70315007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911295731.2A Active CN111078555B (zh) | 2019-12-16 | 2019-12-16 | 一种测试文件的生成方法、系统、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078555B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581097B (zh) * | 2020-05-09 | 2024-05-17 | 深圳市卡数科技有限公司 | 参数化数据的性能测试方法、系统、设备和存储介质 |
CN111767230A (zh) * | 2020-07-07 | 2020-10-13 | 杭州安恒信息技术股份有限公司 | 一种web性能测试方法、装置及电子设备和存储介质 |
CN112486925B (zh) * | 2020-12-28 | 2022-09-23 | 潍柴动力股份有限公司 | 一种a2l文件处理方法、装置及存储介质 |
CN112799952A (zh) * | 2021-02-04 | 2021-05-14 | 上海云轴信息科技有限公司 | 用于自动测试云平台账户体系权限的方法与设备 |
CN113641585B (zh) * | 2021-08-20 | 2023-04-07 | 成方金融科技有限公司 | 一种测试数据的生成方法、装置、设备及存储介质 |
CN113886269B (zh) * | 2021-10-25 | 2024-09-13 | 神思电子技术股份有限公司 | 一种业务测试方法及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2713247A1 (en) * | 2009-08-31 | 2011-02-28 | Accenture Global Services Gmbh | Integration environment generator |
CN106569790A (zh) * | 2015-10-13 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 卡片模板生成方法、服务提供方法、信息提供方法及装置 |
CN108446221A (zh) * | 2018-03-05 | 2018-08-24 | 平安普惠企业管理有限公司 | 系统测试方法、装置、计算机设备和存储介质 |
CN108595342A (zh) * | 2018-05-14 | 2018-09-28 | 杭州有赞科技有限公司 | 单元测试方法和装置 |
CN109189684A (zh) * | 2018-08-28 | 2019-01-11 | 四川长虹电器股份有限公司 | 基于Python的接口自动化测试方法 |
CN109614313A (zh) * | 2018-10-25 | 2019-04-12 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及计算机可读存储介质 |
CN109871314A (zh) * | 2019-01-02 | 2019-06-11 | 石化盈科信息技术有限责任公司 | 测试脚本的自动生成方法 |
CN110221975A (zh) * | 2019-05-28 | 2019-09-10 | 厦门美柚信息科技有限公司 | 创建接口用例自动化测试脚本的方法及装置 |
CN110309071A (zh) * | 2019-06-27 | 2019-10-08 | 杭州数梦工场科技有限公司 | 测试代码的生成方法及模块、测试方法及系统 |
CN110427331A (zh) * | 2019-09-03 | 2019-11-08 | 四川长虹电器股份有限公司 | 基于接口测试工具自动生成性能测试脚本的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595690B2 (en) * | 2010-04-27 | 2013-11-26 | Verizon Patent And Licensing Inc. | Code generation |
US9152542B2 (en) * | 2013-03-14 | 2015-10-06 | Sap Se | Automatic generation of test scripts |
-
2019
- 2019-12-16 CN CN201911295731.2A patent/CN111078555B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2713247A1 (en) * | 2009-08-31 | 2011-02-28 | Accenture Global Services Gmbh | Integration environment generator |
CN106569790A (zh) * | 2015-10-13 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 卡片模板生成方法、服务提供方法、信息提供方法及装置 |
CN108446221A (zh) * | 2018-03-05 | 2018-08-24 | 平安普惠企业管理有限公司 | 系统测试方法、装置、计算机设备和存储介质 |
CN108595342A (zh) * | 2018-05-14 | 2018-09-28 | 杭州有赞科技有限公司 | 单元测试方法和装置 |
CN109189684A (zh) * | 2018-08-28 | 2019-01-11 | 四川长虹电器股份有限公司 | 基于Python的接口自动化测试方法 |
CN109614313A (zh) * | 2018-10-25 | 2019-04-12 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及计算机可读存储介质 |
CN109871314A (zh) * | 2019-01-02 | 2019-06-11 | 石化盈科信息技术有限责任公司 | 测试脚本的自动生成方法 |
CN110221975A (zh) * | 2019-05-28 | 2019-09-10 | 厦门美柚信息科技有限公司 | 创建接口用例自动化测试脚本的方法及装置 |
CN110309071A (zh) * | 2019-06-27 | 2019-10-08 | 杭州数梦工场科技有限公司 | 测试代码的生成方法及模块、测试方法及系统 |
CN110427331A (zh) * | 2019-09-03 | 2019-11-08 | 四川长虹电器股份有限公司 | 基于接口测试工具自动生成性能测试脚本的方法 |
Non-Patent Citations (1)
Title |
---|
使用模板组合动态生成测试用例的Web应用漏洞发掘方法;李政 等;计算机应用研究;20151031(第10期);第130-134+166页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111078555A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078555B (zh) | 一种测试文件的生成方法、系统、服务器和存储介质 | |
CN107273117B (zh) | 一种编程友好型的敏捷代码自动生成系统 | |
US8392880B2 (en) | Rapid application development for database-aware applications | |
AU2015218520B2 (en) | Service extraction and application composition | |
CN112199086B (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
US20040143819A1 (en) | Generic software testing system and mechanism | |
CN110955410B (zh) | 一种代码自动生成方法、装置、设备及介质 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN108037913B (zh) | xUML4MC模型到MSVL语言程序的转换方法、计算机可读存储介质 | |
US20210117313A1 (en) | Language agnostic automation scripting tool | |
WO2023035563A1 (zh) | 小程序跨应用迁移方法、设备、终端、系统及存储介质 | |
KR101770292B1 (ko) | 컴퓨터 수행 가능한 모델 역공학 방법 및 장치 | |
CN111190587A (zh) | 一种基于jdbc自动生成工程化前端代码的方法及系统 | |
CN116360766A (zh) | 一种基于ddd可视化设计器的低代码系统和装置 | |
CN114968192A (zh) | 一种项目创建方法、装置、计算机设备及存储介质 | |
CN113778897A (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN117827218A (zh) | 低代码应用支持多语言的开发方法、装置和电子设备 | |
CN112632333A (zh) | 查询语句生成方法、装置、设备及计算机可读存储介质 | |
CN115469860B (zh) | 基于指令集的需求到软件领域模型的自动生成方法及系统 | |
CN112799638B (zh) | 无侵入式快速开发方法、平台、终端及存储介质 | |
CN114398152A (zh) | 接口仿真服务调用方法及装置 | |
CN111274750B (zh) | 一种基于可视化建模的fpga仿真验证系统和方法 | |
CN113987764A (zh) | 一种基于sca域描述文件的仿真模型构建方法及系统 | |
CN111459793A (zh) | 一种全生命周期的软件自动化测试方法和装置 | |
CN111159203A (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 |