CN114528220A - 测试案例的生成方法、装置、计算机设备及存储介质 - Google Patents
测试案例的生成方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114528220A CN114528220A CN202210168419.2A CN202210168419A CN114528220A CN 114528220 A CN114528220 A CN 114528220A CN 202210168419 A CN202210168419 A CN 202210168419A CN 114528220 A CN114528220 A CN 114528220A
- Authority
- CN
- China
- Prior art keywords
- function
- target
- determining
- generating
- test case
- 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
Images
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/3696—Methods or tools to render software testable
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
本申请实施例属于人工智能技术领域,涉及测试案例的生成方法、装置、计算机设备及存储介质,方法包括:获取配置文件,并确定配置文件是否属于class组件;在配置文件属于class组件的情况下,确定目标函数;目标函数为初始化函数、点击函数、输入框函数中的任意一个;在确定目标函数中包含接口请求的情况下,获取接口请求的url地址、入参以及返回参数;根据url地址、入参、返回参数生成第一测试案例;在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容;根据插值表达式的上下文内容生成第二测试案例。本申请提升了生成测试案例的准确性,同时降低了人工成本。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种测试案例的生成方法、装置、计算机设备及存储介质。
背景技术
通常开发人员在完成项目的开发、自测等流程之后,会将项目转交给测试人员。测试人员会根据项目需求编写测试案例(test case),并使用编写的测试案例对项目进行功能验证。最终在没有出现问题的情况下上线项目。
测试案例的编写通常是由测试人员人工完成的。具体的,测试人员在研读产品经理编写的需求文档和开发人员编写的设计文档之后,确认被测项目的变动功能、变动数据、数据取值等之后,设计得到完整的测试案例集,最后驱动被测项目运行测试案例进行测试。可以看出,这种测试案例的编写方式极度依赖于测试人员的理解能力和工作能力,一旦测试人员对项目数据梳理不到位,很容易造成测试案例遗漏的情况,从而造成一些业务上的损失。因此,如何自动生成能够对项目进行测试的测试用例,是目前亟需解决的问题。
发明内容
本申请实施例的目的在于提出一种测试案例的生成方法、装置、计算机设备及存储介质,以解决当前不能够自动生成测试案例的问题。
为了解决上述技术问题,本申请实施例提供一种测试案例的生成方法,应用于前端react框架的class组件,采用了如下所述的技术方案:
获取配置文件,并确定所述配置文件是否属于class组件;在所述配置文件属于class组件的情况下,确定目标函数;所述目标函数为初始化函数、点击函数、输入框函数中的任意一个;在确定所述目标函数中包含接口请求的情况下,获取所述接口请求的统一资源定位器(uniform resource locator,url) 地址、入参以及返回参数;根据所述url地址、所述入参、所述返回参数生成第一测试案例;在所述目标函数中调用了第一函数修改目标变量,且所述目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取所述插值表达式的上下文内容;根据所述插值表达式的上下文内容生成第二测试案例。
进一步的,所述确定所述配置文件是否属于class组件,包括:通过正则表达式,在所述配置文件中匹配目标申明语句;所述目标申明语句包含class 关键字或者extends关键字;在所述目标申明语句中,包括constructor关键字申明的构造函数时,确定所述配置文件属于class组件。
进一步的,所述确定目标函数,包括:在当前事件为初始化事件时,确定constructor函数为目标函数;在确定当前事件为点击事件时,获取第一属性值,并将所述第一属性值对应的函数确定为目标函数;所述第一属性值为 onClick关键字对应的属性值;在确定当前事件为输入框事件时,获取第二属性值,并将所述第二属性值对应的函数确定为目标函数;所述第二属性值为 onBlur关键字或者onChange关键字对应的属性值。
进一步的,所述确定当前事件为点击事件,包括:在所述配置文件中, render函数的return关键字所包含的页面元素标签的属性内,包含onClick关键字时,确定当前事件为点击事件;所述确定当前事件为输入框事件,包括:在所述配置文件中,render函数的return关键字所包含的页面元素的input标签或者textarea标签,对应的属性包含onBlur关键字或者onChange关键字时,确定当前事件为输入框事件。
进一步的,所述确定所述目标函数中包含接口请求,包括:在所述目标函数中调用了ajax或者axios的情况下,确定所述目标函数中包含接口请求。
进一步的,在所述目标函数为点击函数的情况下,所述测试案例的生成方法,还包括:在确定所述点击函数中调用第二函数修改目标变量为布尔值,且所述目标变量在所述第二函数返回的元素标签内,与页面元素标签通过目标符号相连,获取所述页面标签内容;根据所述页面标签内容生成第三测试案例。
为了解决上述技术问题,本申请实施例还提供一种测试案例的生成装置,采用了如下所述的技术方案:
组件确定模块,用于获取配置文件,并确定所述配置文件是否属于class 组件;函数确定模块,用于在所述配置文件属于class组件的情况下,确定目标函数;所述目标函数为初始化函数、点击函数、输入框函数中的任意一个;第一获取模块,用于在确定所述目标函数中包含接口请求的情况下,获取所述接口请求的url地址、入参以及返回参数;第一生成模块,用于根据所述url 地址、所述入参、所述返回参数生成第一测试案例;第二获取模块,用于在所述目标函数中调用了第一函数修改目标变量,且所述目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取所述插值表达式的上下文内容;第二生成模块,用于根据所述插值表达式的上下文内容生成第二测试案例。
进一步的,所述组件确定模块包括匹配子模块和确定子模块;所述匹配子模块,用于通过正则表达式,在所述配置文件中匹配目标申明语句;所述目标申明语句包含class关键字或者extends关键字;所述确定子模块,用于在所述目标申明语句中,包括constructor关键字申明的构造函数时,确定所述配置文件属于class组件。
进一步的,所述函数确定模块包括第一确定子模块、第二确定子模块以及第三确定子模块;所述第一确定子模块,用于在当前事件为初始化事件时,确定constructor函数为目标函数;所述第二确定子模块,用于在确定当前事件为点击事件时,获取第一属性值,并将所述第一属性值对应的函数确定为目标函数;所述第一属性值为onClick关键字对应的属性值;所述第三确定子模块,用于在确定当前事件为输入框事件时,获取第二属性值,并将所述第二属性值对应的函数确定为目标函数;所述第二属性值为onBlur关键字或者onChange关键字对应的属性值。
进一步的,所述第二确定子模块,具体用于:在所述配置文件中,render 函数的return关键字所包含的页面元素标签的属性内,包含onClick关键字时,确定当前事件为点击事件;所述第三确定子模块,具体用于:在所述配置文件中,render函数的return关键字所包含的页面元素的input标签或者textarea 标签,对应的属性包含onBlur关键字或者onChange关键字时,确定当前事件为输入框事件。
进一步的,所述第一获取模块,具体用于在所述目标函数中调用了ajax 或者axios的情况下,确定所述目标函数中包含接口请求。
进一步的,在所述目标函数为点击函数的情况下,所述测试案例的生成装置,还包括第三获取模块和第三生成模块;所述第三获取模块,用于在确定所述点击函数中调用第二函数修改目标变量为布尔值,且所述目标变量在所述第二函数返回的元素标签内,与页面元素标签通过目标符号相连,获取所述页面标签内容;所述第三生成模块,用于根据所述页面标签内容生成第三测试案例。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述测试案例的生成方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述测试案例的生成方法的步骤。
通过以上步骤,获取配置文件,并在配置文件属于class组件的情况下,确定目标函数。之后,在确定目标函数中包含接口请求的情况下,获取接口请求的url地址、入参以及返回参数,并根据url地址、入参、返回参数生成第一测试案例。在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容,并根据插值表达式的上下文内容生成第二测试案例。这样,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性测试案例的生成系统架构图;
图2是根据本申请的测试案例的生成方法的一个实施例的流程图;
图3是图2中步骤S21的一个实施例的流程图;
图4是图2中步骤S22的一个实施例的流程图;
图5是根据本申请的测试案例的生成方法的另一个实施例的流程图;
图6是根据本申请的测试案例的生成装置的实施例的结构示意图;
图7是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,测试案例的生成系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器 (Moving PictureExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、 103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例提供的测试案例的生成方法可以应用于上述服务器设备105,也可以应用于上述终端设备101、102、103。该服务器设备105和终端设备101、102、103可以统称为电子设备。即本申请实施例提供的测试案例的生成方法的执行主体可以为测试案例的生成装置,测试案例的生成装置可以为上述电子设备(如服务器设备105或终端设备101、102、 103)。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的测试案例的生成方法的一个实施例的流程图。本申请中测试案例的生成方法应用于前端react框架的class组件,包括以下步骤:
步骤S21,获取配置文件,并确定配置文件是否属于class组件。
具体的,获取配置文件的方式,可以是根据预先配置好的文件(如config.js 文件),确定需要生成测试案例的react组件对应的配置文件的地址。之后,根据配置文件的地址,通过nodejs内置的文件操作模块fs读取配置文件。
在前端react框架中包括class组件和hooks组件两种组件。class组件采用ES6类的语法模式编写,而hooks组件是采用react自定义语法形式编写的。本申请中是针对react框架的class组件提供的测试案例的生成方法,因此需要判断配置文件是否属于class组件。
具体的,图3为本申请中一种确定配置文件是否属于class组件的方法,参照图3所示,包括步骤S211-步骤S212。
步骤S211,通过正则表达式,在配置文件中匹配目标申明语句。
其中,目标申明语句包含class关键字或者extends关键字。例如,在申明语句为class A组件extends React.Component{若干行代码},则确定该申明语句为目标申明语句。
步骤S212,在目标申明语句中,包括constructor关键字申明的构造函数时,确定配置文件属于class组件。
例如,目标申明语句为class A组件extends React.Component{若干行代码},且若干行代码中包含constructor关键字申明的构造函数,则确定配置文件属于class组件。
本申请实施例中,通过正则表达式,在配置文件中匹配目标申明语句,并在目标申明语句中,包括constructor关键字申明的构造函数时,确定配置文件属于class组件。能够确定出当前组件是否是class组件,以便于后续自动生成class组件的测试案例,从而提升生成测试案例的准确性。
可选的,在确定配置文件中包含useState关键字,或者useEffect关键字时,确定配置文件属于hooks组件。则发送第一提示信息,用于提示不支持生成此类组件的测试案例。
可选的,在确定配置文件中既不包含目标申明语句,也不包含useState 关键字和useEffect关键字时,确定配置文件不属于前端react框架中的组件。则发送第二提示信息,用于提示配置文件异常。
步骤S22,在配置文件属于class组件的情况下,确定目标函数。
其中,目标函数为初始化函数、点击函数、输入框函数中的任意一个。
具体的,图4为本申请中一种确定目标函数的方法,参照图4所示,包括步骤S221-步骤S223。
步骤S221,在当前事件为初始化事件时,确定constructor函数为目标函数。
具体的,由于class组件初始化的执行,是通过constructor函数进行的,因此将constructor函数确定为初始化事件的目标函数。
步骤S222,在确定当前事件为点击事件时,获取第一属性值,并将第一属性值对应的函数确定为目标函数。
其中,第一属性值为onClick关键字对应的属性值。
具体的,确定当前事件为点击事件的方法为:在配置文件中,render函数的return关键字所包含的页面元素标签的属性内,包含onClick关键字时,确定当前事件为点击事件。
步骤S223,在确定当前事件为输入框事件时,获取第二属性值,并将第二属性值对应的函数确定为目标函数。
其中,第二属性值为onBlur(失去焦点事件)关键字或者onChange(内容改变事件)关键字对应的属性值。
具体的,确定当前事件为输入框事件的方法为:在配置文件中,render 函数的return关键字所包含的页面元素的input标签或者textarea标签,对应的属性包含onBlur关键字或者onChange关键字时,确定当前事件为输入框事件。
本申请实施例中,根据不同的关键字确定出当前事件为不同的事件,根据不同的事件确定不同的目标函数,以便于后续根据不同的目标函数生成不同的测试案例,从而提升生成测试案例的准确性,同时降低人工成本。
步骤S23,在确定目标函数中包含接口请求的情况下,获取接口请求的 url地址、入参以及返回参数。
具体的,确定目标函数中包含接口请求的方法为:在目标函数中调用了 ajax或者axios的情况下,确定目标函数中包含接口请求。
步骤S24,根据url地址、入参、返回参数生成第一测试案例。
其中,第一测试案例包括第一子测试案例、第二子测试案例以及第三子测试案例。
具体的,在当前事件为初始化事件时,根据url地址、入参、返回参数以及第一规则生成第一子测试案例。其中,第一规则可以为:当前组件名称+初始化过程中+url地址+入参为{参数1:参数值1,参数2:参数值2}+返回参数为[返回参数1,返回参数2]。
在当前事件为点击事件时,根据url地址、入参、返回参数以及第二规则生成第二子测试案例。其中,第二规则可以为:当前组件名称+通过点击+点击事件触发元素名称+url地址+入参为{参数3:参数值3,参数4:参数值 4}+返回参数为[返回参数3,返回参数4]。
在当前事件为输入框事件时,根据url地址、入参、返回参数以及第三规则生成第三子测试案例。其中,第三规则可以为:当前组件名称+通过改变输入框+输入框事件触发元素名称+url地址+入参为{参数5:参数值5,参数 6:参数值6}+返回参数为[返回参数5,返回参数6]。
步骤S25,在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容。
具体的,在当前事件为初始化事件时,第一函数为render函数,第二函数为步骤S23中接口请求对应的接口的接口函数。这样,在确定constructor 函数中包括render函数,render函数的return关键字中包含被接口函数的返回参数控制的元素标签,元素标签中包含使用差值表达式的目标变量时,获取插值表达式的上下文内容。
在当前事件为点击事件时,第一函数为setState方法函数,第二函数为 render函数。这样,在确定存在使用setState方法函数修改目标函数,且目标变量在render函数返回的元素标签中属于差值表达式内的变量时,获取插值表达式的上下文内容。
在当前事件为输入框事件时,第一函数为setState方法函数,第二函数为 render函数。这样,在确定存在使用setState方法函数修改目标函数,且目标变量在render函数返回的元素标签中属于差值表达式内的变量时,获取插值表达式的上下文内容。
步骤S26,根据插值表达式的上下文内容生成第二测试案例。
其中,第二测试案例包括第四子测试案例、第五子测试案例以及第六子测试案例。
具体的,在当前事件为初始化事件时,根据插值表达式的上下文内容以及第四规则生成第一四测试案例。其中,第四规则可以为:当前组件名称+初始化完成后+需要正确展示+上文内容+{目标变量名}+下文内容。
在当前事件为点击事件时,根据插值表达式的上下文内容以及第五规则生成第五子测试案例。其中,第五规则可以为:当前组件名称+通过点击+点击事件触发元素名称+需要正确展示+上文内容+{目标变量的内容}+下文内容。
在当前事件为输入框事件时,根据插值表达式的上下文内容以及第六规则生成第六子测试案例。其中,第六规则可以为:当前组件名称+通过改变输入框+输入框事件触发元素名称+内容+需要正确展示+上文内容+{目标变量的内容}+下文内容。
本申请实施例中,获取配置文件,并在配置文件属于class组件的情况下,确定目标函数。之后,在确定目标函数中包含接口请求的情况下,获取接口请求的url地址、入参以及返回参数,并根据url地址、入参、返回参数生成第一测试案例。在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容,并根据插值表达式的上下文内容生成第二测试案例。这样,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
可选的,在目标函数为点击函数的情况下,测试案例的生成方法还包括如下步骤S51-步骤S52:
步骤S51,在确定点击函数中调用第二函数修改目标变量为布尔值,且目标变量在第二函数返回的元素标签内,与页面元素标签通过目标符号相连,获取页面标签内容。
其中,第二函数为setState方法函数,目标符号为&&。例如,{目标变量 &&页面元素标签},则确定目标变量的改变,会影响页面标签元素的展示和隐藏情况。当目标变量为true时,会展示页面元素标签,当目标变量为false 时,则会会隐藏页面元素标签。
步骤S52,根据页面标签内容生成第三测试案例。
具体的,根据页面元素标签和第七规则生成第三测试案例。其中,第七规则可以为:当前组件名称+通过点击+点击事件触发元素名称+需要正确展示 /隐藏+页面元素标签内容。
本申请实施例中,能够在当前事件为点击事件时,根据页面标签内容生成点击事件的第三测试案例,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图6,作为对上述图2所示方法的实现,本申请提供了一种测试案例的生成装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的测试案例的生成装置60包括:组件确定模块61、函数确定模块62、第一获取模块63、第一生成模块64、第二获取模块65以及第二生成模块66,其中:
组件确定模块61,用于获取配置文件,并确定所述配置文件是否属于class 组件;函数确定模块62,用于在所述配置文件属于class组件的情况下,确定目标函数;所述目标函数为初始化函数、点击函数、输入框函数中的任意一个;第一获取模块63,用于在确定所述目标函数中包含接口请求的情况下,获取所述接口请求的url地址、入参以及返回参数;第一生成模块64,用于根据所述url地址、所述入参、所述返回参数生成第一测试案例;第二获取模块 65,用于在所述目标函数中调用了第一函数修改目标变量,且所述目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取所述插值表达式的上下文内容;第二生成模块66,用于根据所述插值表达式的上下文内容生成第二测试案例。
本申请实施例中,获取配置文件,并在配置文件属于class组件的情况下,确定目标函数。之后,在确定目标函数中包含接口请求的情况下,获取接口请求的url地址、入参以及返回参数,并根据url地址、入参、返回参数生成第一测试案例。在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容,并根据插值表达式的上下文内容生成第二测试案例。这样,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
在本实施例的一些可选的实现方式中,所述组件确定模块61包括匹配子模块和确定子模块;所述匹配子模块,用于通过正则表达式,在所述配置文件中匹配目标申明语句;所述目标申明语句包含class关键字或者extends关键字;所述确定子模块,用于在所述目标申明语句中,包括constructor关键字申明的构造函数时,确定所述配置文件属于class组件。
本申请实施例中,通过正则表达式,在配置文件中匹配目标申明语句,并在目标申明语句中,包括constructor关键字申明的构造函数时,确定配置文件属于class组件。能够确定出当前组件是否是class组件,以便于后续自动生成class组件的测试案例,从而提升生成测试案例的准确性。
在本实施例的一些可选的实现方式中,所述函数确定模块62包括第一确定子模块、第二确定子模块以及第三确定子模块;所述第一确定子模块,用于在当前事件为初始化事件时,确定constructor函数为目标函数;所述第二确定子模块,用于在确定当前事件为点击事件时,获取第一属性值,并将所述第一属性值对应的函数确定为目标函数;所述第一属性值为onClick关键字对应的属性值;所述第三确定子模块,用于在确定当前事件为输入框事件时,获取第二属性值,并将所述第二属性值对应的函数确定为目标函数;所述第二属性值为onBlur关键字或者onChange关键字对应的属性值。
本申请实施例中,根据不同的事件确定不同的目标函数,以便于后续根据不同的目标函数生成不同的测试案例,从而提升生成测试案例的准确性,同时降低人工成本。
在本实施例的一些可选的实现方式中,所述第二确定子模块,具体用于:在所述配置文件中,render函数的return关键字所包含的页面元素标签的属性内,包含onClick关键字时,确定当前事件为点击事件;所述第三确定子模块,具体用于:在所述配置文件中,render函数的return关键字所包含的页面元素的input标签或者textarea标签,对应的属性包含onBlur关键字或者onChange 关键字时,确定当前事件为输入框事件。
本申请实施例中,根据不同的关键字确定出当前事件为不同的事件,以便于后续根据不同事件生成不同的测试案例从而提升生成测试案例的准确性,同时降低人工成本。
在本实施例的一些可选的实现方式中,所述第一获取模块63,具体用于在所述目标函数中调用了ajax或者axios的情况下,确定所述目标函数中包含接口请求。
在本实施例的一些可选的实现方式中,在所述目标函数为点击函数的情况下,所述测试案例的生成装置,还包括第三获取模块和第三生成模块;所述第三获取模块,用于在确定所述点击函数中调用第二函数修改目标变量为布尔值,且所述目标变量在所述第二函数返回的元素标签内,与页面元素标签通过目标符号相连,获取所述页面标签内容;所述第三生成模块,用于根据所述页面标签内容生成第三测试案例。
本申请实施例中,能够在当前事件为点击事件时,根据页面标签内容生成点击事件的第三测试案例,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
关于上述实施例中的测试案例的生成装置,其中各个模块执行操作的具体方式已经在如图2所示方法的实施例中进行了详细描述,此处将不做详细阐述说明。
为解决上述技术问题,本申请实施例还提供一种计算机设备,该计算机设备可以是测试案例的生成装置。具体请参阅图7,图7为本实施例计算机设备的基本结构框图。
所述计算机设备70包括通过系统总线相互通信连接存储器71、处理器 72、网络接口73。需要指出的是,图中仅示出了具有组件71-73的计算机设备70,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray, FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器71至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器71可以是所述计算机设备70的内部存储单元,例如该计算机设备70的硬盘或内存。在另一些实施例中,所述存储器71也可以是所述计算机设备70的外部存储设备,例如该计算机设备70上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器71还可以既包括所述计算机设备70的内部存储单元也包括其外部存储设备。本实施例中,所述存储器71通常用于存储安装于所述计算机设备70的操作系统和各类应用软件,例如测试案例的生成方法的计算机可读指令等。此外,所述存储器71还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器72在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器72 通常用于控制所述计算机设备70的总体操作。本实施例中,所述处理器72 用于运行所述存储器71中存储的计算机可读指令或者处理数据,例如运行所述测试案例的生成方法的计算机可读指令。
所述网络接口73可包括无线网络接口或有线网络接口,该网络接口73 通常用于在所述计算机设备70与其他电子设备之间建立通信连接。
本实施例中提供的计算机设备可以执行上述图2中对应的测试案例的生成方法的步骤。
本实施例中,获取配置文件,并在配置文件属于class组件的情况下,确定目标函数。之后,在确定目标函数中包含接口请求的情况下,获取接口请求的url地址、入参以及返回参数,并根据url地址、入参、返回参数生成第一测试案例。在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容,并根据插值表达式的上下文内容生成第二测试案例。这样,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述图2-图5中,任一实施例对应的测试案例的生成方法的步骤。
本实施例中,获取配置文件,并在配置文件属于class组件的情况下,确定目标函数。之后,在确定目标函数中包含接口请求的情况下,获取接口请求的url地址、入参以及返回参数,并根据url地址、入参、返回参数生成第一测试案例。在目标函数中调用了第一函数修改目标变量,且目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取插值表达式的上下文内容,并根据插值表达式的上下文内容生成第二测试案例。这样,避免了测试人员人工编写测试案例时,由于对项目数据梳理不到位造成的业务上的损失,提升了生成测试案例的准确性,同时降低了人工成本。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种测试案例的生成方法,应用于前端react框架的class组件,其特征在于,包括下述步骤:
获取配置文件,并确定所述配置文件是否属于class组件;
在所述配置文件属于class组件的情况下,确定目标函数;所述目标函数为初始化函数、点击函数、输入框函数中的任意一个;
在确定所述目标函数中包含接口请求的情况下,获取所述接口请求的url地址、入参以及返回参数;
根据所述url地址、所述入参、所述返回参数生成第一测试案例;
在所述目标函数中调用了第一函数修改目标变量,且所述目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取所述插值表达式的上下文内容;
根据所述插值表达式的上下文内容生成第二测试案例。
2.根据权利要求1所述的生成方法,其特征在于,所述确定所述配置文件是否属于class组件,包括:
通过正则表达式,在所述配置文件中匹配目标申明语句;所述目标申明语句包含class关键字或者extends关键字;
在所述目标申明语句中,包括constructor关键字申明的构造函数时,确定所述配置文件属于class组件。
3.根据权利要求1所述的生成方法,其特征在于,所述确定目标函数,包括:
在当前事件为初始化事件时,确定constructor函数为目标函数;
在确定当前事件为点击事件时,获取第一属性值,并将所述第一属性值对应的函数确定为目标函数;所述第一属性值为onClick关键字对应的属性值;
在确定当前事件为输入框事件时,获取第二属性值,并将所述第二属性值对应的函数确定为目标函数;所述第二属性值为onBlur关键字或者onChange关键字对应的属性值。
4.根据权利要求3所述的生成方法,其特征在于,
所述确定当前事件为点击事件,包括:
在所述配置文件中,render函数的return关键字所包含的页面元素标签的属性内,包含onClick关键字时,确定当前事件为点击事件;
所述确定当前事件为输入框事件,包括:
在所述配置文件中,render函数的return关键字所包含的页面元素的input标签或者textarea标签,对应的属性包含onBlur关键字或者onChange关键字时,确定当前事件为输入框事件。
5.根据权利要求1所述的生成方法,其特征在于,所述确定所述目标函数中包含接口请求,包括:
在所述目标函数中调用了ajax或者axios的情况下,确定所述目标函数中包含接口请求。
6.根据权利要求1-5所述的生成方法,其特征在于,在所述目标函数为点击函数的情况下,所述测试案例的生成方法,还包括:
在确定所述点击函数中调用第二函数修改目标变量为布尔值,且所述目标变量在所述第二函数返回的元素标签内,与页面元素标签通过目标符号相连,获取所述页面标签内容;
根据所述页面标签内容生成第三测试案例。
7.一种测试案例的生成装置,其特征在于,包括:
组件确定模块,用于获取配置文件,并确定所述配置文件是否属于class组件;
函数确定模块,用于在所述配置文件属于class组件的情况下,确定目标函数;所述目标函数为初始化函数、点击函数、输入框函数中的任意一个;
第一获取模块,用于在确定所述目标函数中包含接口请求的情况下,获取所述接口请求的url地址、入参以及返回参数;
第一生成模块,用于根据所述url地址、所述入参、所述返回参数生成第一测试案例;
第二获取模块,用于在所述目标函数中调用了第一函数修改目标变量,且所述目标变量在第二函数返回的元素标签内属于插值表达式内的变量的情况下,获取所述插值表达式的上下文内容;
第二生成模块,用于根据所述插值表达式的上下文内容生成第二测试案例。
8.根据权利要求7所述的生成装置,其特征在于,所述组件确定模块包括匹配子模块和确定子模块;
所述匹配子模块,用于通过正则表达式,在所述配置文件中匹配目标申明语句;所述目标申明语句包含class关键字或者extends关键字;
所述确定子模块,用于在所述目标申明语句中,包括constructor关键字申明的构造函数时,确定所述配置文件属于class组件。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至6中任一项所述的测试案例的生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,当所述计算机可读指令被处理器执行时实现如权利要求1至6中任一项所述的测试案例的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210168419.2A CN114528220A (zh) | 2022-02-23 | 2022-02-23 | 测试案例的生成方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210168419.2A CN114528220A (zh) | 2022-02-23 | 2022-02-23 | 测试案例的生成方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114528220A true CN114528220A (zh) | 2022-05-24 |
Family
ID=81624622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210168419.2A Pending CN114528220A (zh) | 2022-02-23 | 2022-02-23 | 测试案例的生成方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114528220A (zh) |
-
2022
- 2022-02-23 CN CN202210168419.2A patent/CN114528220A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109325195A (zh) | 浏览器的渲染方法和系统、计算机设备、计算机存储介质 | |
CN111552463A (zh) | 一种页面跳转方法、装置、计算机设备及存储介质 | |
CN115794437A (zh) | 微服务的调用方法、装置、计算机设备及存储介质 | |
CN113869789A (zh) | 一种风险监控的方法、装置、计算机设备及存储介质 | |
CN117033249A (zh) | 一种测试用例生成方法、装置、计算机设备及存储介质 | |
CN116661936A (zh) | 页面数据的处理方法、装置、计算机设备及存储介质 | |
CN116483425A (zh) | 微服务灰度发版方法、装置、设备及其存储介质 | |
CN116383787A (zh) | 页面创建方法、装置、计算机设备及存储介质 | |
CN115712422A (zh) | 表单页面的生成方法、装置、计算机设备及存储介质 | |
CN114637672A (zh) | 自动化数据测试方法、装置、计算机设备及存储介质 | |
CN114528220A (zh) | 测试案例的生成方法、装置、计算机设备及存储介质 | |
CN113961279A (zh) | 页面渲染方法、装置、服务器和存储介质 | |
CN113298636B (zh) | 一种基于模拟资源申请的风险控制方法、装置和系统 | |
CN114675813A (zh) | 模板语法的统一方法、装置、计算机设备及存储介质 | |
CN117850842A (zh) | 一种插件更新方法、装置、设备及其存储介质 | |
CN117421233A (zh) | 基于注解的代码生成方法、装置、计算机设备及存储介质 | |
CN115828018A (zh) | 电子杂志界面素材替换方法及其相关设备 | |
CN116594599A (zh) | Vue项目文件扫描展示方法、装置、设备及其存储介质 | |
CN117591190A (zh) | 一种应用数据加载优化方法、装置、设备及其存储介质 | |
CN115546356A (zh) | 动画生成方法、装置、计算机设备及存储介质 | |
CN115033486A (zh) | 测试案例报错的处理方法及其相关设备 | |
CN116466945A (zh) | 数据展示方法、装置、计算机设备及存储介质 | |
CN115562662A (zh) | 应用页面的创建方法、装置、计算机设备及存储介质 | |
CN116166270A (zh) | 一种xaml文件修正方法、装置、计算机设备及存储介质 | |
CN114185811A (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 |