CN115757186A - 一种软件接口的性能测试方法、装置、设备及介质 - Google Patents
一种软件接口的性能测试方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115757186A CN115757186A CN202211579218.8A CN202211579218A CN115757186A CN 115757186 A CN115757186 A CN 115757186A CN 202211579218 A CN202211579218 A CN 202211579218A CN 115757186 A CN115757186 A CN 115757186A
- Authority
- CN
- China
- Prior art keywords
- code
- tested
- source code
- target
- container
- 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
- 238000011056 performance test Methods 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012360 testing method Methods 0.000 claims abstract description 124
- 238000004458 analytical method Methods 0.000 claims abstract description 62
- 230000008569 process Effects 0.000 claims abstract description 24
- 230000006870 function Effects 0.000 claims description 88
- 238000004590 computer program Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 17
- 238000013515 script Methods 0.000 claims description 14
- 230000009466 transformation Effects 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 9
- 230000008676 import Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 239000000047 product Substances 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 239000013067 intermediate product Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种软件接口的性能测试方法、装置、设备及介质。该方法包括:获取目标软件中待测试接口对应的待使用源代码,待使用源代码中包括至少一个目标函数;通过第一容器将待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,第一容器与第二容器部署于计算机操作系统;通过第二容器对待测试代码进行性能测试,确定在测试过程中目标函数的调用信息,并基于调用信息确定待测试接口的目标性能测试结果。解决了目标软件性能测试中,需要开发人员手动修改代码,且得到的性能测试结果为接口层级别,导致效率低、不准确的问题,实现了对软件接口的自动化测试,并且测试结果是函数层面的,提高测试效率和测试准确度。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及一种软件接口的性能测试方法、装置、设备及介质
背景技术
现在每个系统功能上线前,都要经过性能测试。但性能测试团队给出的性能测试结果为接口层级,仅知道每个接口调用耗时,无法准确定位到具体是接口中的哪个函数出现了性能问题。
针对python的性能分析工具有很多,现有性能分析技术,通常需要开发人员手工修改自己的代码,然后执行测试脚本,查看性能分析结果,费时费力,开发人员工作量较大,对开发人员的技能要求高。
发明内容
本发明提供了一种软件接口的性能测试方法、装置、设备及介质,以实现了对软件接口的自动化测试,并且测试结果是函数层面的,提高测试效率和测试准确度。
根据本发明的一方面,提供了一种软件接口的性能测试方法,包括:
获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数;
通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,所述第一容器与第二容器部署于计算机操作系统;
通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果。
根据本发明的另一方面,提供了一种软件接口的性能测试装置,包括:
源代码获取模块,用于获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数;
源代码改造模块,用于通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,所述第一容器与第二容器部署于计算机操作系统;
目标性能测试模块,用于通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的软件接口的性能测试方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的软件接口的性能测试方法。
本发明实施例的技术方案,通过获取目标软件中待测试接口对应的待使用源代码,待使用源代码中包括至少一个目标函数;通过第一容器将待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,第一容器与第二容器部署于计算机操作系统;通过第二容器对待测试代码进行性能测试,确定在测试过程中目标函数的调用信息,并基于调用信息确定待测试接口的目标性能测试结果。解决了目标软件性能测试中,需要开发人员手动修改代码,且得到的性能测试结果为接口层级别,导致效率低、不准确的问题,实现了对软件接口的自动化测试,并且测试结果是函数层面的,提高测试效率和测试准确度。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一所提供的一种软件接口的性能测试方法的流程图;
图2为本发明实施例二所适用的软件接口的性能测试架构图;
图3为本发明实施例三提供的一种软件接口的性能测试装置的结构示意图;
图4为本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本发明实施例的技术方案前,先对应用场景介绍。本发明实施例的技术方案可以用于对软件系统进行性能测试的情况,可以理解,在每个软件系统在上线前,都要对软件系统的各项功能进行性能测试,目前性能测试一般是接口层级的,也即对各功能对应的接口进行性能测试,得到相应的测试结果。但是,通过测试结果仅知道每个接口的调用时长,无法准确定位到具体是接口中的哪个函数出现了性能问题。此外,对接口性能测试前,需要开发人员对接口对应的源代码修改,导致软件性能测试效率较低,无法实现自动化测试。本发明实施例的技术方案,设计出用于接口性能测试的客户端和服务端,可以根据用户在客户端输入的源码地址,下载源码并在源码中自动添加性能分析代码,得到新的待测试代码,对待测试代码测试,可以得到接口中每个函数的调用次数以及运行时长,根据调用次数和运行时长生成测试结果,提高了对测试的效率和测试的精确度,可以根据接口中每个函数调用的次数和消耗的时间,确定性能瓶颈,以对具体的代码进行优化。
实施例一
图1为本发明实施例一所提供的一种软件接口的性能测试方法的流程图,本实施例可适用于对软件的接口性能测试的情况,该方法可以由软件接口的性能测试装置来执行,该软件接口的性能测试装置可以采用硬件和/或软件的形式实现,该软件接口的性能测试装置可配置于计算机设备中。如图1所示,该方法包括:
S110、获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数。
其中,目标软件可以是任意需要进行接口性能测试的软件,目标软件主要是开发人员开发的软件或者系统,例如目标软件是寄件详情单识别软件,此处仅对目标软件举例,并不做具体限制。相应的,实现软件系统的功能时需要调用对应的接口,该接口即为与目标软件对应的待测试接口,待使用源代码指的是开发人员针对待测试接口所编写的源代码,待使用源代码中包括的至少一个函数可作为目标函数。
可以理解,对目标软件中的待测试接口进行性能测试前,先要得到该待测试接口对应的待使用源代码,可以从待使用源代码的存储目录中查找该待使用源代码。在得到该待使用源代码之后,对待测试接口进行性能分析。
在上述方案的基础上,所述获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数,包括:获取于性能测试客户端的显示界面上输入的待使用源代码地址;基于所述待使用源代码地址下载所述待测试接口对应的待使用源代码,并存储在目标目录中。
其中,性能测试客户端指的是专门用于对软件接口进行自动化测试的客户端,性能测试客户端可以安装在计算机设备上,待使用源代码地址指的是待使用源代码的GIT地址,也即源代码在版本库中的存储地址,目标目录可以是计算机操作系统的磁盘目录。
在实际应用中,专门研发出用于对软件接口性能测试客户端以及服务端,用户可以在客户端的显示界面上编辑或者导入需要测试的接口的源代码的GIT地址,客户端可以将地址转发至服务端,通过服务端对待测试源代码进行下载,并存储在操作系统的磁盘目录中。
S120、通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码。
其中,第一容器部署于计算机操作系统上,用于对待使用源代码中插入性能分析代码段,计算机操作系统可以是Linux系统,性能分析代码指的是Cprofile性能分析代码,待测试代码指的是需要进行测试的代码。具体而言,第一容器在拿到待使用源代码之后,可以将上述的性能分析代码段加入到待使用源代码中,得到的新的代码就可以作为待测试代码。
在上述方案的基础上,所述通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码,包括:基于所述第一容器以及语法解析函数,确定与所述待使用源代码对应的待使用语法树;基于目标遍历方式确定所述待使用语法树中的待处理语句和待处理函数;将所述性能分析代码段插入至与所述待处理语句和待处理函数相邻的代码行中,得到与所述待使用源代码对应的待测试代码,并生成代码改造完成标识。
其中,语法解析函数可以是ast.parse函数,用于将待使用源代码解析成AST结构,目标遍历方式指的是walk方式遍历,待处理语句指的是import语句,待处理函数为待使用源代码的主函数,可以是request函数,代码改造标识是用于确定对待使用源代码的是否修改完成。
具体的,为了自动高效的对待使用源代码中插入性能分析代码段,可以通过第一容器调用语法解析函数对待使用源码进行解析,解析成待使用语法树结构,通过目标遍历方式对语法树遍历,可以确定出待处理语句以及待处理函数的位置,并将性能分析代码添加在待处理语句的后边一行,以及主函数的前一行,这样就对待使用源代码的改造完成了,此时得到的代码即为待测试代码,同时可以生成代码改写完成标识。
这样的好处在于,开发人员只需要在客户端上输入待测试源码的地址,就可以通过第一容器对待测试源码进行改造,无需开发人员手动修改,开发人员降低工作量,提高性能测试的效率。
示例性的,可以通过以下方式在待测试源代码中插入性能分析代码段,可以理解,Ast是python源码到字节码的一种中间产物,借助ast模块可以从语法树的角度分析源码结构。
第一步、获取语法树。通过ast.parse就可以将待分析服务分析成一个抽象语法树。通过ast的parse方法得到asttree的根节点root_node,可以通过根节点来遍历语法树,从而对python代码进行分析和修改。
第二步、语法树中的每个节点都对应ast下的一种类型,根节点是ast.Moudle类型,在分析的时候可以通过isinstance函数方便的进行节点类型的判断。
第三步、walk方式遍历,本发明通过ast.walk对asttree进行遍历,利用Import和functionDef判断import语法和函数定义分别在哪些行。
第四步、节点改写。对每个函数进行匹配,第一次碰到request函数时,在app.route上方插入性能分析代码段内容,同时将需要import的包追加到原引用的包最后。
第五步、保存上述修改内容。则当前程序文件执行后,即可以生成性能分析结果文件。
S130、通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果。
其中,第二容器部署于计算机操作系统上,用于运行待测试代码,目标性能分析结果可以是对待测试代码的性能分析结果,可以是在运行待测试代码过程中,待测试代码中的各个代码段所占用的GPU情况以及性能瓶颈等情况。
具体的,可以通过第二容器对待测试代码运行,并确定在运行过程中,待测试代码中目标函数的调用信息,根据调用信息确定待测试接口的目标性能测试结果,并将目标性能测试测试结果发送至性能测试客户端,通过性能测试客户端的统计分析,并在显示页面上展示性能测试结果,以便于开发人员可以知道接口对应的哪一部分代码影响了性能,对该部分代码进行优化。
在上述方案的基础上,所述通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果,包括:在基于定时任务脚本检测到所述待测试代码对应的改造完成标识时,获取与所述第二容器对应的镜像文件;基于所述镜像文件启动所述第二容器,并基于所述第二容器的测试接口对所述目标目录中的待测试代码进行性能测试,以确定在测试过程中所述目标函数的调用信息。
其中,定时任务脚本可以用于按照设定周期对改造完成标识检测,测试接口可以是第二容器的test接口。
可以理解,代码改造完成标识主要是用于指示对待使用源代码是否完成改造处理,当检测到待使用源码改造完成之后,可通过定时任务脚本拉起第二容器,以实现对第二容器的启动,具体可以是获取第二容器的镜像文件,加载第二容器的镜像文件可以启动第二容器。在启动第二容器之后,第二容器可以从目标目录中获取到待测试代码,进一步调用第二容器的测试接口,以实现对待测试代码的运行,确定出在测试运行过程中,各个目标函数的调用信息。
在上述方案的基础上,所述通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果,包括:基于所述第二容器的测试接口对所述目标目录中的待测试代码进行性能测试,以确定所述待测试代码中目标函数的调用次数和运行时长;基于所述调用次数和运行时长生成目标分析结果文件,并将所述目标分析结果文件发送至所述性能测试客户端。
具体的,基于第二容器的测试接口对目标目录中的待测试代码进行运行,以确定在运行过程中,待测试代码中目标函数的调用次数和运行时长,根据调用次数和运行时长生成目标分析结果文件,并将目标分析结果文件发送至性能测试客户端,通过性能测试客户端的显示界面进行展示。这样的好处在于,可以通过第二容器自动对待测试代码运行,得到目标函数的调用次数和运行时长,并基于调用次数和运行时长生成目标分析结果文件,不仅仅对接口层面的性能分析测试,还可以详细知道接口中每个函数调用的次数和消耗的时间,确定性能瓶颈,将测试结果通过客户端进行展示性能测试结果,无需开发人员对测试报文分析之后才能得到测试结果,降低了接口性能分析的门槛,减少开发人员工作量。
在上述方案的基础上,还包括:基于中央处理性能测试脚本对所述待测试代码进行中央处理性能测试,并将中央处理性能测试结果发送至所述性能测试客户端。
可以理解,上述对待测试接口进行了GPU层面的性能测试,本实施例中还可以二次测试,通过调用相应的测试脚本对待测试接口进行CPU层面的测试,可以综合两种性能测试的结果,作为最终的目标性能测试结果,并进行展示。
本发明实施例的技术方案,通过获取目标软件中待测试接口对应的待使用源代码,待使用源代码中包括至少一个目标函数;通过第一容器将待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,第一容器与第二容器部署于计算机操作系统;通过第二容器对待测试代码进行性能测试,确定在测试过程中目标函数的调用信息,并基于调用信息确定待测试接口的目标性能测试结果。解决了目标软件性能测试中,需要开发人员手动修改代码,且得到的性能测试结果为接口层级别,导致效率低、不准确的问题,实现了对软件接口的自动化测试,并且测试结果是函数层面的,提高测试效率和测试准确度。
实施例二
图2为本发明实施例二所适用的软件接口的性能测试架构图,本实施例为上述实施例的一优选实施例,其具体的实施方式可以参见本实施例技术方案。其中,与上述实施例相同或者相应的技术术语在此不再赘述。如图2所示,该系统前端和后端,后端包括性能分析容器和服务容器以及定时任务脚本。
总体采用B/S架构,前端提供WEB界面,用于提供检测项目、展示性能分析结果。后端则提供性能测试一键化自动性能分析服务,后端主要应用docker容器技术、cprofile性能分析工具自动化分析性能瓶颈。
后端部署两个容器、一个shell脚本:
容器1:也即性能分析容器,为性能分析工具主要内容,负责根据前端提供的gitUrl获取git源码,并添加cprofile代码段的过程。主要包括如下功能:
容器1的功能点以及功能描述如下:
制品导入:接收前台传入的gitUrl,调用异步方法(获取源码,改造源码主函数)源码下载根据git地址下载源代码
源码改造:将源码改造成含profile代码段
状态查询:根据调度任务结果,查询当前镜像或容器状态
二次测试:cd到源码目录,python测试脚本
获取分析结果:根据服务容器分析结果文件,返回前端分析结果
容器2:也即服务容器,待分析瓶颈的项目启动的容器,主要包括如下功能:
容器2的功能点及功能描述如下:
测试入口:性能测试针对主服务的测试入口,要求开发人员在此接口中保留测试报文,调用主服务
主服务:项目服务
Run.sh指的是定时任务脚本,主要任务:接收到待分析服务源码段改造完成的标识,拉起待分析服务容器。
本实施中的主要处理流程如下:
步骤1:前端提交项目名称,调用容器1制品导入服务
步骤2:容器1制品导入服务收到请求后,返回一个16位的唯一编码,告诉WEB导入成功提示;同时调起异步线程,执行步骤3和步骤4.
步骤3:从GIT中下载源码至16编码所在目录
步骤4:将Cprofile性能分析代码段添加至制品服务中
步骤5:run.sh定时任务检查,加载待分析服务镜像,拉起待分析服务容器,即容器2。同时http请求容器2的/test接口。
步骤6:前端可通过16位唯一编码接口查看分析结果
步骤7:前端可点击“复测”按钮,重新调用/test接口,重新查看测试结果。
关键技术:cprofile,是python标准库建立的性能分析技术,可在标准输出中看到每个函数被调用的次数和运行的时间,从而找到性能瓶颈。
本发明主要将cprofile相关代码段封装成独立函数形式,结合ast,便于改写待分析服务。
接下来,对AST遍历的方式以及如何将Cprofile性能分析代码段添加至制品服务中进行详细介绍。
Ast遍历:Ast是python源码到字节码的一种中间产物,借助ast模块可以从语法树的角度分析源码结构。
第一步、获取语法树。通过ast.parse就可以将待分析服务分析成一个抽象语法树。通过ast的parse方法得到asttree的根节点root_node,可以通过根节点来遍历语法树,从而对python代码进行分析和修改。
第二步、语法树中的每个节点都对应ast下的一种类型,根节点是ast.Moudle类型,在分析的时候可以通过isinstance函数方便的进行节点类型的判断。
第三步、walk方式遍历。本发明通过ast.walk对asttree进行遍历,利用Import和functionDef判断import语法和函数定义分别在哪些行。
第四步、节点改写。对每个函数进行匹配,第一次碰到request函数时,在app.route上方插入性能分析代码段内容,同时将需要import的包追加到原引用的包最后。
第五步、保存上述修改内容。
则当前程序文件执行后,即可以生成性能分析结果文件。
本发明实施例的技术方案,通过获取目标软件中待测试接口对应的待使用源代码,待使用源代码中包括至少一个目标函数;通过第一容器将待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,第一容器与第二容器部署于计算机操作系统;通过第二容器对待测试代码进行性能测试,确定在测试过程中目标函数的调用信息,并基于调用信息确定待测试接口的目标性能测试结果。解决了目标软件性能测试中,需要开发人员手动修改代码,且得到的性能测试结果为接口层级别,导致效率低、不准确的问题,实现了对软件接口的自动化测试,并且测试结果是函数层面的,提高测试效率和测试准确度。与现有技术相比,本发明提出的技术方案,利用git获取源码、利用ast分析服务源码语法树结构,并将cprofile源码段添加至待分析服务中,利用容器技术启动服务并自动发起分析测试请求,分析结果在WEB端予以直观展示,节省了开发人员时间,使用起来也比较方便。
实施例三
图3为本发明实施例三提供的一种软件接口的性能测试装置的结构示意图。如图3所示,该装置包括:
源代码获取模块310,用于获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数;
源代码改造模块320,用于通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,所述第一容器与第二容器部署于计算机操作系统;
目标性能测试模块330,用于通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果。
本发明实施例的技术方案,通过获取目标软件中待测试接口对应的待使用源代码,待使用源代码中包括至少一个目标函数;通过第一容器将待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,第一容器与第二容器部署于计算机操作系统;通过第二容器对待测试代码进行性能测试,确定在测试过程中目标函数的调用信息,并基于调用信息确定待测试接口的目标性能测试结果。解决了目标软件性能测试中,需要开发人员手动修改代码,且得到的性能测试结果为接口层级别,导致效率低、不准确的问题,实现了对软件接口的自动化测试,并且测试结果是函数层面的,提高测试效率和测试准确度。
可选的,所述源代码获取模块310包括:
源代码地址获取模块,用于获取于性能测试客户端的显示界面上输入的待使用源代码地址;
源代码存储模块,用于基于所述待使用源代码地址下载所述待测试接口对应的待使用源代码,并存储在目标目录中。
可选的,源代码改造模块320,包括:
语法树建立模块,用于基于所述第一容器以及语法解析函数,确定与所述待使用源代码对应的待使用语法树;
遍历模块,用于基于目标遍历方式确定所述待使用语法树中的待处理语句和待处理函数;其中,所述待处理函数为所述待使用源代码代码的主函数;
改造模块,用于将所述性能分析代码段插入至与所述待处理语句和待处理函数相邻的代码行中,得到与所述待使用源代码对应的待测试代码,并生成代码改造完成标识。
可选的,目标性能测试模块330,包括:
镜像文件获取模块,用于在基于定时任务脚本检测到所述待测试代码对应的改造完成标识时,获取与所述第二容器对应的镜像文件;
测试模块,用于基于所述镜像文件启动所述第二容器,并基于所述第二容器的测试接口对所述目标目录中的待测试代码进行性能测试,以确定在测试过程中所述目标函数的调用信息。
可选的,目标性能测试模块330,包括:
测试信息确定模块,用于基于所述第二容器的测试接口对所述目标目录中的待测试代码进行性能测试,以确定所述待测试代码中目标函数的调用次数和运行时长;
测试结果确定模块,用于基于所述调用次数和运行时长生成目标分析结果文件,并将所述目标分析结果文件发送至所述性能测试客户端。
可选的,所述装置还包括:
中央性能测试模块,用于基于中央处理性能测试脚本对所述待测试代码进行中央处理性能测试,并将中央处理性能测试结果发送至所述性能测试客户端。
本发明实施例所提供的软件接口的性能测试装置可执行本发明任意实施例所提供的软件接口的性能测试方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种电子设备的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图4所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM12以及RAM13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如软件接口的性能测试方法。
在一些实施例中,软件接口的性能测试方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM13并由处理器11执行时,可以执行上文描述的软件接口的性能测试方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行软件接口的性能测试方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种软件接口的性能测试方法,其特征在于,包括:
获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数;
通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,所述第一容器与第二容器部署于计算机操作系统;
通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果。
2.根据权利要求1所述的方法,其特征在于,所述获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数,包括:
获取于性能测试客户端的显示界面上输入的待使用源代码地址;
基于所述待使用源代码地址下载所述待测试接口对应的待使用源代码,并存储在目标目录中。
3.根据权利要求1所述的方法,其特征在于,所述通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码,包括:
基于所述第一容器以及语法解析函数,确定与所述待使用源代码对应的待使用语法树;
基于目标遍历方式确定所述待使用语法树中的待处理语句和待处理函数;其中,所述待处理函数为所述待使用源代码代码的主函数;
将所述性能分析代码段插入至与所述待处理语句和待处理函数相邻的代码行中,得到与所述待使用源代码对应的待测试代码,并生成代码改造完成标识。
4.根据权利要求3所述的方法,其特征在于,所述通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果,包括:
在基于定时任务脚本检测到所述待测试代码对应的改造完成标识时,获取与所述第二容器对应的镜像文件;
基于所述镜像文件启动所述第二容器,并基于所述第二容器的测试接口对所述目标目录中的待测试代码进行性能测试,以确定在测试过程中所述目标函数的调用信息。
5.根据权利要求4所述的方法,其特征在于,所述通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果,包括:
基于所述第二容器的测试接口对所述目标目录中的待测试代码进行性能测试,以确定所述待测试代码中目标函数的调用次数和运行时长;
基于所述调用次数和运行时长生成目标分析结果文件,并将所述目标分析结果文件发送至所述性能测试客户端。
6.根据权利要求1所述的方法,其特征在于,还包括:
基于中央处理性能测试脚本对所述待测试代码进行中央处理性能测试,并将中央处理性能测试结果发送至所述性能测试客户端。
7.一种软件接口的性能测试装置,其特征在于,包括:
源代码获取模块,用于获取目标软件中待测试接口对应的待使用源代码,所述待使用源代码中包括至少一个目标函数;
源代码改造模块,用于通过第一容器将所述待使用源代码中插入性能分析代码段,得到对应的待测试代码;其中,所述第一容器与第二容器部署于计算机操作系统;
目标性能测试模块,用于通过第二容器对所述待测试代码进行性能测试,确定在测试过程中所述目标函数的调用信息,并基于所述调用信息确定所述待测试接口的目标性能测试结果。
8.据权利要求7所述的装置,其特征在于,所述源代码获取模块包括:
源代码地址获取模块,用于获取于性能测试客户端的显示界面上输入的待使用源代码地址;
源代码存储模块,用于基于所述待使用源代码地址下载所述待测试接口对应的待使用源代码,并存储在目标目录中。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的软件接口的性能测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的软件接口的性能测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211579218.8A CN115757186A (zh) | 2022-12-06 | 2022-12-06 | 一种软件接口的性能测试方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211579218.8A CN115757186A (zh) | 2022-12-06 | 2022-12-06 | 一种软件接口的性能测试方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115757186A true CN115757186A (zh) | 2023-03-07 |
Family
ID=85346629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211579218.8A Pending CN115757186A (zh) | 2022-12-06 | 2022-12-06 | 一种软件接口的性能测试方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115757186A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024183429A1 (zh) * | 2023-03-08 | 2024-09-12 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 系统性能测试方法、装置、计算机设备和存储介质 |
-
2022
- 2022-12-06 CN CN202211579218.8A patent/CN115757186A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024183429A1 (zh) * | 2023-03-08 | 2024-09-12 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 系统性能测试方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840192B (zh) | 自动化测试的方法和装置 | |
CN113360144B (zh) | 软件开发的辅助处理方法、设备、存储介质及程序产品 | |
CN113138927A (zh) | 一种软件功能测试方法和装置 | |
CN114564390A (zh) | 应用程序的性能测试方法、装置、设备及产品 | |
CN116303013A (zh) | 源码分析方法、装置、电子设备及存储介质 | |
CN115576828A (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN115757186A (zh) | 一种软件接口的性能测试方法、装置、设备及介质 | |
CN114997329A (zh) | 用于生成模型的方法、装置、设备、介质和产品 | |
CN115168130A (zh) | 一种芯片测试方法、装置、电子设备及存储介质 | |
CN117724980A (zh) | 软件框架性能的测试方法、装置、电子设备和存储介质 | |
CN116301992A (zh) | 一种升级方法、装置、设备及存储介质 | |
CN116737535A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN110716859A (zh) | 自动为修改的代码推送测试用例的方法及相关装置 | |
CN116245982A (zh) | 动画文件生成方法、装置、电子设备及存储介质 | |
CN115328736A (zh) | 一种探针部署方法、装置、设备和存储介质 | |
CN115269431A (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
CN115328526A (zh) | 一种依赖包的更新方法、装置、设备及存储介质 | |
CN115017047A (zh) | 基于b/s架构的测试方法、系统、设备及介质 | |
CN114428747A (zh) | 一种用户界面测试方法、装置、服务器及存储介质 | |
CN113835893B (zh) | 数据处理的方法、装置、设备、存储介质及程序产品 | |
CN110866492A (zh) | 一种基线分支的识别方法、装置及计算机系统 | |
CN116954570A (zh) | 一种模拟数据的生成方法、装置、设备及存储介质 | |
CN115102850B (zh) | 配置比对方法、装置、电子设备及存储介质 | |
CN117271373B (zh) | 测试用例的自动化构建方法、装置、电子设备及存储介质 | |
CN115061925A (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 |