CN115248772A - 软件中间件的接口测试方法和装置 - Google Patents

软件中间件的接口测试方法和装置 Download PDF

Info

Publication number
CN115248772A
CN115248772A CN202110470337.9A CN202110470337A CN115248772A CN 115248772 A CN115248772 A CN 115248772A CN 202110470337 A CN202110470337 A CN 202110470337A CN 115248772 A CN115248772 A CN 115248772A
Authority
CN
China
Prior art keywords
test case
interface
software middleware
performance data
client
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
Application number
CN202110470337.9A
Other languages
English (en)
Inventor
康铭全
陈海东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zitiao Network Technology Co Ltd
Original Assignee
Beijing Zitiao Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zitiao Network Technology Co Ltd filed Critical Beijing Zitiao Network Technology Co Ltd
Priority to CN202110470337.9A priority Critical patent/CN115248772A/zh
Publication of CN115248772A publication Critical patent/CN115248772A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing

Abstract

本公开实施例提供一种软件中间件的接口测试方法和装置,该方法在客户端执行针对软件中间件的目标接口的测试用例,并采集所述测试用例执行过程的性能数据,由于测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式生成的,因此,测试用例中包含的是软件中间件的功能实现接口,客户端在执行测试用例的过程中,直接调用的是软件中间件的目标接口来实现相应功能,因此,采集到的性能数据直接反应的是软件中间件的目标接口性能,将性能数据发送至服务端,服务端进行解析得到的接口性能质量信息能够直接、全面且准确的反应软件中间件的接口质量。

Description

软件中间件的接口测试方法和装置
技术领域
本公开实施例涉及软件测试技术领域,尤其涉及一种软件中间件的接口测试方法和装置。
背景技术
软件中间件是一种位于硬件、操作系统等平台和应用程序之间的通用服务软件,其作用是为处于上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。比如,常见的一种软件中间件为软件开发工具包(SoftwareDevelopment Kit,SDK),它能够和一些应用软件编译在一起,提供一些功能接口来支持应用软件的功能实现,比如,将SDK放到音视频软件中支持该软件的音视频输出功能。因此,SDK性能的好坏直接影响到开发的应用软件的性能,通常为了保障最终研发出来的应用软件的性能,都需要对软件中间件SDK的性能质量进行检测。
相关技术中,在对SDK的性能质量进行测试时,都是将SDK集成到某个应用程序APP中,当测试APP提供的某个功能时再调用SDK中相应的接口来实现相应功能,通过对APP的接口测试结果来间接获取到SDK的接口性能。
但是,由于现有方法是在APP的功能实现的过程中间接得到SDK的性能检测结果,即需要先调用APP的功能接口,当APP要实现功能时再调用SDK对应的接口,而SDK中能够提供的功能接口种类和数量远多于APP的功能接口,因此,有可能将APP所有的接口都测试完也无法将SDK的接口都测试到,导致SDK的性能测试数据不全面。并且,也有可能在调用APP的一个接口实现某个功能时会涉及到很多个SDK接口,导致测试结果无法准确反应SDK接口的性能质量。
发明内容
本公开实施例提供一种软件中间件的接口测试方法和装置,以克服现有技术中在APP的功能实现的过程中间接得到SDK的性能检测结果导致的SDK的性能测试数据不全面、不准确的问题。
第一方面,本公开实施例提供一种软件中间件的接口测试方法,应用于客户端,所述方法包括:
执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集所述测试用例执行过程的性能数据;
将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
第二方面,本公开实施例提供一种软件中间件的接口测试方法,应用于服务端,所述方法包括:
接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
第三方面,本公开实施例提供一种软件中间件的接口测试方法,应用于持续集成服务器,所述方法包括:
响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
第四方面,本公开实施例提供一种软件中间件的接口测试装置,包括:
执行模块,执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集模块,用于采集所述测试用例执行过程的性能数据;
第一发送模块,用于将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
第五方面,本公开实施例提供一种软件中间件的接口测试装置,包括:
接收模块,用于接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
解析模块,用于对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
第六方面,本公开实施例提供一种软件中间件的接口测试装置,包括:
获取模块,用于响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
第二发送模块,用于将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
第七方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计、第二方面以及第二方面各种可能的设计或第三方面以及第三方面各种可能的设计所述的软件中间件的接口测试方法。
第八方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计、第二方面以及第二方面各种可能的设计或第三方面以及第三方面各种可能的设计所述的软件中间件的接口测试方法。
第九方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计、第二方面以及第二方面各种可能的设计或第三方面以及第三方面各种可能的设计所述的软件中间件的接口测试方法。
本公开实施例提供的软件中间件的接口测试方法和装置,该方法在客户端执行针对软件中间件的目标接口的测试用例,并采集所述测试用例执行过程的性能数据,由于测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式生成的,因此,测试用例中包含的是软件中间件的目标接口,客户端在运行执行测试用例的过程中,直接调用的是软件中间件的目标接口来实现相应功能。然后将性能数据发送至服务端,服务端进行解析得到的目标接口的性能质量信息能够直接、准确的反应软件中间件的接口质量。并且,通过软件中间件的目标接口来模拟其宿主应用程序APP在各种功能实现场景中调用接口的方式来生成测试用例,能够将软件中间件涉及到的接口调用情况都涉及到,使得最终的测试结果更加全面。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中提供的软件接口测试方法的应用场景图;
图2为本公开实施例提供的软件中间件的接口测试方法的应用场景图一;
图3为本公开实施例提供的软件中间件的接口测试方法流程示意图一;
图4为本公开实施例提供的软件中间件的接口测试方法的应用场景图二;
图5为本公开实施例提供的软件中间件的接口测试系统的架构图;
图6为本公开实施例提供的软件中间件的接口测试装置的结构示意图一;
图7为本公开实施例提供的软件中间件的接口测试装置的结构示意图二;
图8为本公开实施例提供的软件中间件的接口测试装置的结构示意图三;
图9为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
软件中间件是一种位于硬件、操作系统等平台和应用程序之间的通用服务软件,其作用是为处于上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。比如,常见的一种软件中间件为软件开发工具包(SoftwareDevelopment Kit,SDK),它能够和一些应用软件编译在一起,提供一些功能接口来支持应用软件的功能实现,比如,将SDK放到音视频软件中支持该软件的音视频输出功能,比如,音视频软件播放视频时,需要调用SDK中的相应接口来实现视频播放功能。因此,SDK性能的好坏直接影响到开发的应用软件的性能,通常为了保障最终研发出来的应用软件的性能,都需要对软件中间件SDK的性能质量进行检测。
相关技术中,在对SDK的性能质量进行测试时,都是将SDK集成到某个应用程序APP中,当测试APP提供的某个功能时再调用SDK中相应的接口来实现相应功能,最终得到APP的接口测试结果,通过对APP的接口测试结果来间接获取到SDK的接口性能。比如,SDK应用到第一APP中,如图1所示,为第一APP的显示页面,当用户想要通过第一APP录制视频时,点击开始录制按钮,则客户端会调用第一APP中的视频录制接口,然后再依次调用SDK中的开启摄像头接口和开始录制视频接口,从而实现视频录制功能。
但是,由于现有方法是在APP的功能实现的过程中间接得到SDK的性能检测结果,即需要先调用APP的功能接口,当APP要实现功能时再调用SDK对应的接口,而SDK中能够提供的功能接口种类和数量远多于APP的功能接口,因此,有可能将其宿主APP所有的接口都测试完也无法将SDK的接口都测试到,导致SDK的性能测试数据不全面。比如,第一APP能够实现视频录制和特效生成的功能,当需要实现视频录制时调用到SDK中的开启摄像头和开始录制视频这两个接口,当实现特效生成功能时调用到SDK中的特效元素选择接口等。而SDK中还涉及到如切换摄像头、滤镜等各种其他类型的接口,将第一APP中所有的接口测试完也无法全面覆盖到SDK中的所有接口。并且,也有可能在调用APP的一个接口实现某个功能时会涉及到很多个SDK接口,导致测试结果无法准确反应SDK接口的性能质量,比如,如图1中所示,客户端中安装的第一APP在实现视频录制时先调用第一APP的视频录制接口,然后需要调用SDK中的两个接口才能实现功能,最终得到的是第一APP中的视频录制接口的性能质量信息,并无法准确的反应SDK中开启摄像头和开始录制视频这两个接口能力。
针对此缺陷,本公开实施例的技术构思主要包括:首先按照SDK提供的接口能力,模拟SDK的上层宿主APP的各个调用场景编写测试用例,针对SDK的所有接口涉及到的调用场景都枚举成测试用例并存储在代码服务器中,这些测试用例中包含的都是SDK的接口信息。当需要对SDK的接口进行测试时,在持续集成CI服务器中设置测试任务触发时间,然后定时在代码服务器中拉取测试用例,将测试用例及其涉及到的SDK接口信息编译成一个目标应用程序,并将目标应用程序安装在客户端上,客户端在运行该目标应用程序时执行测试用例,在执行测试用例的过程中便是直接调用的SDK接口实现的功能。然后通过客户端实时采集执行测试用例过程中的性能数据,在测试用例执行完成后,将性能数据发送至服务端,由服务端对性能数据进行解析,得到最终的接口性能质量信息。通过上述方法,能够直接调用SDK的接口来模拟SDK的宿主APP实现各种功能时调用SDK接口的各个方式,但是并不仅仅局限于APP实现各种功能时调用SDK接口的各个方式,能够将SDK涉及到的接口调用情况都涉及到,使得最终的测试结果更加全面。并且,由于本公开实施例在执行测试用例实现相应功能时,是直接调用SDK的相应功能接口,无需调用APP的接口,因此采集到的性能数据能够直接、准确的反应SDK的接口性能。
图2为本公开实施例提供的软件中间件的接口测试方法的应用场景图一。
如图2所示,本公开实施例提供的应用场景图的基本架构包括持续集成CI服务器201,代码服务器202,客户端203和服务端204;其中,客户端可以是手机、平板电脑等能够执行代码的终端设备。
下面结合图2所示的应用场景图对软件中间件的接口测试方法的实现过程进行描述。
如图3所示,本实施例提供的软件中间件的接口测试方法可以包括如下步骤。
S301,CI服务器响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是通过模拟软件中间件的宿主应用程序对所述软件中间件中的目标接口的调用方式而生成的。
需要说明的是,本实施例中软件中间件为SDK中间件。
一些实施例中,SDK提供了非常多的接口,每个接口对应实现一个功能,首先按照SDK提供的接口能力,模拟SDK的上层宿主APP的各个调用场景编写测试用例,针对SDK的所有接口涉及到的调用场景都枚举成测试用例并存储在代码服务器中。当用户通过CI服务器输入接口测试请求后,CI服务器根据接口测试请求触发接口测试任务,在代码服务器中获取测试用例。
示例性的,SDK提供了startPreview()//打开摄像头预览、startRecord()//开始录制视频、stopRecord()//停止视频录制以及stopPreview()//关闭摄像头预览这四个接口,通过调用这四个接口能够实现视频录制的功能。音视频APP作为SDK的宿主APP能够调用这四个接口实现视频录制的功能,本实施例模拟音视频APP实现视频录制场景时调用这四个接口的方式编写测试用例,测试用例的代码如下:
Figure BDA0003045116360000071
Figure BDA0003045116360000081
上述测试用例即为模拟音视频APP进行视频录制时的一个测试用例。
需要说明的是,SDK还提供了上述四个接口之外的很多其他类型接口,根据SDK提供的各种类型接口来模拟更多SDK的宿主APP在各种应用场景下调用SDK接口的方式来编写测试用例,每个测试用例对应一个功能实现场景,得到的测试用例能够覆盖到所有常用的SDK接口。
S302,CI服务器对所述测试用例和所述软件中间件中相应的目标接口进行编译,得到目标应用程序。
S303,CI服务器将所述目标应用程序安装于目标客户端。
一些实施例中,CI服务器在获取到测试用例之后,将测试用例及其涉及到SDK接口信息进行编译,得到目标应用程序,将目标应用程序的安装包发送至目标客户端,目标客户端使用该安装包安装目标应用程序。
S304,目标客户端安装好目标应用程序之后,在运行目标应用程序的过程中执行测试用例。
其中,测试用例包括所述目标接口对应的接口信息和调用方式,比如上述模拟音视频APP实现视频录制场景时编写的测试用例中的startPreview(),Preview指的是接口信息为摄像头接口,start表示调用方式为打开;stopRecord()中,Record指的是接口信息为录制接口,stop表示调用方式为停止等。
具体的,执行测试用例的过程即为根据所述调用方式和所述接口信息调用所述目标接口,以实现所述目标接口对应的功能的过程。
一些实施例中,一个测试用例可能包含多个SDK接口,目标应用程序是根据所述测试用例和所述软件中间件中的目标接口(即SDK接口)进行编译生成的,目标应用程序中包含针对所述测试用例的执行指令,目标客户端运行目标应用程序的过程中执行测试用例,即目标应用程序按照执行指令定时定量调用测试用例的过程。
进一步的,所述执行指令包括所述测试用例的执行次数,所述调用所述测试用例包括:目标应用程序按照所述执行次数,调用所述测试用例。
S305,目标客户端在执行所述测试用例的过程中采集性能数据。
一些实施例中,目标客户端中安装有数据采集软件,在目标客户端执行测试用例的过程中,目标客户端还利用数据采集软件实时采集性能数据。
示例性的,以上述视频录制测试用例为例,目标应用程序调用测试用例的过程如下方代码所示:
Figure BDA0003045116360000091
如上述代码所示,目标客户端运行目标应用程序的过程中,目标应用程序调用并执行十次录制视频测试用例,在执行十次测试用例的过程中,每1秒采集一次性能数据。
需要说明的是,性能数据的采集时间间隔和测试用例的执行次数可以在编译目标应用程序时根据实际需求进行设定。需要说明的是,每个测试用例的执行次数可以设置为相同的,也可以根据每个测试用例所实现的功能设置为不同的,比如所有测试用例均设置为10次,或者,针对复杂的测试用例设置为10次,针对相对简单的测试用例设置为5次等。本实施例中,按照测试用例的复杂程度来设置对应的执行次数,在保证后续执行测试用例获取性能数据的准确性,又能在一定程度上提高测试效率。
S306,目标客户端将所述性能数据发送至服务端。
一些实施例中,由于要在服务端对数据进行解析,因此数据需要以一定的格式进行传输。
具体的,在测试用例执行完成后,目标客户端以一定的格式将性能数据发送至服务端,以便于服务端解析。
示例性的,将采集到的性能数据以json文件的格式传输到服务端。
S307,服务端接收客户端发送的性能数据。
S308,服务端对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
具体的,服务端接收到性能数据后,进一步对性能数据进行解析,分析此次测试用例涉及到的SDK接口的性能质量。
本公开实施例中,通过将测试用例和相应的SDK接口信息进行编译得到的目标应用程序安装于客户端,在客户端运行安装好的目标应用程序的过程中执行测试用例,由于所述测试用例是根据SDK提供的接口信息模拟所述SDK的宿主应用程序的调用方式生成的代码,因此,测试用例中包含的是SDK的功能实现接口,客户端在运行目标应用程序执行测试用例的过程中,直接调用的是SDK的接口来实现相应功能,如图4所示的目标客户端运行目标应用程序实现视频录制的场景中,在执行测试用例的过程中直接调用的是SDK中四个接口。进而将性能数据发送至服务端,服务端进行解析得到的接口性能信息能够直接、准确的反应软件中间件的接口质量。并且,通过软件中间件提供的接口信息来模拟其宿主应用程序APP在各种功能实现场景中调用接口的方式来生成测试用例,能够将软件中间件涉及到的接口调用情况都涉及到,使得最终的测试结果更加全面。
图5为本公开实施例提供的软件中间件的接口测试系统的架构图,本实施例在图2和图3所示实施例的基础上,结合整体系统架构图分别以CI服务器一侧、后台服务端一侧和目标客户端一侧的单独执行为例对软件中间件的接口测试方法的详细实现过程进行描述。
如图5所示,本实施例提供的系统架构图中包括CI服务器,代码服务器,运行环境,后台服务器,数据库以及前端UI界面;其中,运行环境中部署了机架和调度服务器,机架上有多个客户端。
第一方面,以CI服务器一侧的执行为例对软件中间件的接口测试方法的详细实现过程进行描述。
一些实施例中,SDK提供了非常多的接口,每个接口对应实现一个功能,首先按照SDK提供的接口能力,模拟SDK的上层宿主APP的各个调用场景编写测试用例,针对SDK的所有接口涉及到的调用场景都枚举成测试用例并存储在代码服务器中。
可以理解的是,SDK的宿主APP涉及到应用场景包括但不限于视频拍摄、视频编辑、视频合成、视频导入以及MV影集等几大类,其中每个大类场景下还包含多种更具体的应用场景,比如视频拍摄场景下还包含滤镜、拍摄、前后置摄像头切换、加音乐等更加具体的场景;再比如视频编辑场景下还包含多种贴纸、各种特效以及选配乐等具体场景。因此,技术人员可以根据SDK提供的各种接口,模拟SDK的宿主APP在各种应用场景下调用SDK接口的方式编写测试用例,每个测试用例对应一个应用场景,将SDK的所有接口涉及到的调用场景都枚举成测试用例并存储在代码服务器中。
CI服务器响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
在一种或多种可能的实施例中,所述将所述测试用例发送至目标客户端,包括:CI服务器对所述测试用例和所述软件中间件中相应的目标接口进行编译,得到目标应用程序。所述目标应用程序的安装包发送至目标客户端,以使目标客户端解析所述安装包安装所述目标应用程序。
在一种或多种可能的实施例中,所述接口测试请求包括每个测试任务的开始时间,所述响应于用户输入的接口测试请求,在代码服务器中获取测试用例,包括:根据每个测试任务的开始时间,定时在所述代码服务器中获取测试用例。
具体的,技术人员会在CI服务器中预先设定好什么时候触发整个测试任务,当系统到达设定的时间后,自动在代码服务器中获取每个测试用例。
在一种或多种可能的实施例中,每当CI服务器在代码服务器中获取到一个测试用例之后,便将获取到的测试用例和相应的SDK接口信息编译成一个应用程序,并将编译的应用程序安装在目标客户端中,以使目标客户端在运行该应用程序时执行测试用例。同时CI服务器继续在代码服务器中获取下一条测试用例继续执行如上操作,直至代码服务器中的所有测试用例执行完毕。
在一种或多种可能的实施例中,CI服务器接收到技术人员输入的接口测试请求之后,还会向运行环境中的调度服务器发送调度指令,调度服务器在机架中安装的多个客户端中调度一台客户端作为执行此次获取到的测试用例的目标客户端。
需要说明的是,调度服务器接收到调度指令之后,可以在机架上的所有客户端中调度一台空闲的客户端作为目标客户端,也可以根据客户端的性能,选择性能较好的客户端作为目标客户端。
第二方面,以目标客户端一侧的执行为例对软件中间件的接口测试方法的详细实现过程进行描述。
目标客户端执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;采集所述测试用例执行过程的性能数据;将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
在一种或多种可能的实施例中,所述测试用例包括所述目标接口对应的接口信息和调用方式;所述执行针对软件中间件的目标接口的测试用例,包括:根据所述调用方式和所述接口信息,调用所述目标接口,以实现所述目标接口对应的功能。
在一种或多种可能的实施例中,所述执行针对软件中间件的目标接口的测试用例,包括:在运行目标应用程序时,调用所述测试用例,在调用所述测试用例过程中根据所述测试用例中的接口信息和调用方式,调用相应的目标接口;其中,所述目标应用程序是根据所述测试用例和所述软件中间件中的目标接口生成的,包含针对所述测试用例的执行指令。
具体的,目标客户端运行目标应用程序的过程中,按照执行命令执行测试用例,在执行测试用例的过程中,根据测试用例中的接口信息和调用方式,调用软件中间件中相应的目标接口,从而实现相应的功能。
在一种或多种可能的实施例中,目标客户端中安装有数据采集软件,在目标客户端执行测试用例的过程中,目标客户端还利用数据采集软件按照预设采集时间采集性能数据。
其中,采集性能数据的时间间隔可以根据实际需求进行设定,比如,每1秒钟采集一次。
在一种可能的实施例中,性能数据包括客户端在执行所述测试用例的过程中的内存占用信息、显存占用信息、中央处理器(Central Processing Unit,CPU)占用率、占用的线程数量和生成的文件描述符。
其中,内存占用信息为目标应用程序在执行测试用例的过程中申请的内存空间;显存占用信息为目标应用程序在执行测试用例过程中申请的显存空间,显存指的是显示芯片上用于存储数据的部分;CPU占用率为目标应用程序在执行测试用例过程中使用的CPU时间,能用来衡量执行特定任务时CPU的繁忙程度;线程数量能够反应目标应用程序在执行测试用例中的资源消耗,线程数量越多,说明CPU负担越重,资源消耗越多;文件描述符用来记录目标应用程序在执行测试用例过程中打开的文件。
在一种或多种可能的实施例中,可以分别根据读取的所述客户端的内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件;根据所述目标应用程序的标识,分别在所述内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件中获取所述客户端在运行的所述目标应用程序执行测试用例时的内存占用信息、显存占用信息和CPU占用率。
在一种或多种可能的实施例中,可以将所述性能数据的格式转换成预设文件格式;将预设文件格式的数据发送至服务端。比如,可以将性能数据以json文件的格式传输至服务端。
第二方面,以后台服务端一侧的执行为例对软件中间件的接口测试方法的详细实现过程进行描述。
后台服务端接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
在一种或多种可能的实施例中,后台服务端接收到客户端发送的预设文件格式的数据后,可以对接收到的数据进行数据分析、内存堆栈分析、线程泄漏分析、读写数据库以及显存峰值分析等各种分析,以得到SDK接口的性能质量信息。
具体的,后台服务端接收到客户端发送的预设文件格式的数据后,先对接收到的数据进行格式判断,判断接收到的性能数据的格式是否是预设文件格式(比如json文件格式),若是,则通过python脚本解析所述预设文件格式的性能数据,保证接收到的数据被完整解析并将所述性能数据存储在数据库中。
示例性的,通过python脚本解析所述预设文件格式的性能数据可以为如下形式:
Figure BDA0003045116360000141
Figure BDA0003045116360000151
如上述格式的性能数据中包含占用内存的内存列表、显存列表、CPU占用率列表和文件描述符数量列表,其中,内存列表中包括目标客户端执行测试用例过程中按照每个采集时间采集到的内存占用大小;同样的,显存列表中包含每次采集到的显存占用大小,CPU占用率列表中包含每次采集得到的CPU占用率,文件描述符列表中包含每次采集得到的文件描述符数量。
需要说明的是,由于本实施例中性能数据的示例中包含大量的堆栈信息,因此为了便于描述,省略了一些堆栈信息。
在一种可能的实施例中,所述性能数据包括所述客户端在执行所述测试用例的过程中的内存占用信息,所述对所述性能数据进行解析,包括:
根据所述内存占用信息,判断所述客户端在执行所述测试用例的过程中是否出现内存泄漏;若判断结果为是,则获取所述客户端在执行所述测试用例过程中产生的内存堆栈信息;根据所述堆栈信息、所述软件中间件的动态链接库和所述软件中间件的源码,确定泄漏的资源在所述软件中间件的源码中的位置。
具体的,根据测试用例执行过程中采集到的内存占用列表中的内存占用值,判断内存占用值是否大于预设阈值,若是,则说明客户端在执行所述测试用例的过程中是否出现内存泄漏。进而去获取内存堆栈信息,如上述性能数据的示例中所示,堆栈信息中包含0x1add74(libttffmpeg.so)等地址数据,根据这些地址数据以及对应的SDK动态链接库以及SDK源码,解析得到泄漏的资源具体对应的SDK源码中的代码行数。
示例性的,服务端对性能数据进行内存堆栈解析后,得到的解析数据的格式如下所示:
Figure BDA0003045116360000152
Figure BDA0003045116360000161
需要说明的是,上述内存堆栈解析得到解析数据仅仅是示例性的列举出了一部分,其中,每个地址的下方都有一个文件路径,省略号部分省略了详细的文件路径,路径最后的数字标识文件的行号。根据内存堆栈解析得到解析数据能够定位到被泄露的资源是在SDK源码中的具体位置。
本实施例中,通过内存堆栈分析能够准确的找到SDK源码中存在泄漏资源问题的位置,便于技术人员快速找到SDK中需要修改的代码进行修改。
在一种可能的实施例中,所述性能数据包括客户端在执行所述测试用例的过程中的显存占用信息,服务端根据显存占用信息可以进行显存峰值分析,具体包括:确定所述客户端在执行所述测试用例的过程中显存占用的最大值,并获取显存占用最大值对应的时间;若所述最大值大于预设阈值,则确定在所述最大值对应的时间内调用的接口为需要修改的接口。
具体的,显存峰值分析表示测试用例执行过程中什么时间显存的占用量最大,最大值是多少,最大值是否合理。
示例性的,在执行前面录制视频的测试用例的过程中,采集得到的显存列表中的几个数据里,最大值是100MB,而预设阈值为80MB,则说明超过了合理值,而出现该最大值的时间段为调用开始录制视频接口startRecord()过程占用的时间段,则认为SDK中的startRecord()这个接口出现了问题,需要研发人员去修改。
在一种可能的实施例中,后台服务端还可以根据性能数据进行线程泄漏分析,具体包括:获取所述客户端在执行所述测试用例前占用的第一线程数量、执行完所述测试用例后第二线程数量以及每个线程的线程标识;若所述第二线程数量大于所述第一线程数量,则根据所述线程名称确定发生泄漏的线程。
示例性的,假设测试用例执行前,线程数是20,测试用例执行后,线程数是25,并且通过线程标识(比如线程名称)比对发现剩余的线程名称是test,那么即可准确定位到test线程发生了泄漏。
在一种可能的实施例中,后台服务端将解析得到的SDK性能质量信息发送至数据库存储,当技术人员需要查看相关信息时,可以通过前端UI界面输入要查看的信息,然后后台服务端根据技术人员输入的查看信息生成相应的信息获取指令,根据信息获取指令在数据库中读取相应的SDK性能质量信息,并将SDK性能质量信息发送至前端UI界面进行测试结果显示,同时在UI界面显示指定跟进人,由指定跟进人根据SDK性能质量信息确定出现问题的SDK接口,并修改相应的SDK接口,修改完出现问题的SDK接口之后,在UI界面显示问题解决状态。
图6为本公开实施例提供的软件中间件的接口测试装置的结构示意图一,本实施例提供的装置可以部署在客户端中,以在客户端实现相应的方法步骤。
如图6所示,本公开实施例提供的装置包括:
执行模块601,用于执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集模块602,用于采集所述测试用例执行过程的性能数据;
第一发送模块603,用于将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图7为本公开实施例提供的软件中间件的接口测试装置的结构示意图二,本实施例提供的装置可以部署在服务端中,以在服务端实现相应的方法步骤。
如图7所示,本公开实施例提供的装置包括:
接收模块701,用于接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
解析模块702,用于对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图8为本公开实施例提供的软件中间件的接口测试装置的结构示意图三,本实施例提供的装置可以部署在CI服务器中,以在CI服务器一侧实现相应的方法步骤。
如图8所示,本公开实施例提供的装置包括:
获取模块801,用于响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
第二发送模块802,用于将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
参考图9,其示出了适于用来实现本公开实施例的电子设备900的结构示意图,该电子设备900可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(Read Only Memory,简称ROM)902中的程序或者从存储装置908加载到随机访问存储器(Random Access Memory,简称RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种软件中间件的接口测试方法,应用于客户端,所述方法包括:
执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集所述测试用例执行过程的性能数据;
将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
根据本公开的一个或多个实施例,所述测试用例包括所述目标接口对应的接口信息和调用方式;
所述执行针对软件中间件的目标接口的测试用例,包括:
根据所述调用方式和所述接口信息,调用所述目标接口,以实现所述目标接口对应的功能。
根据本公开的一个或多个实施例,所述执行针对软件中间件的目标接口的测试用例,包括:
在运行目标应用程序时,调用所述测试用例,在调用所述测试用例过程中根据所述测试用例中的接口信息和调用方式,调用相应的目标接口;
其中,所述目标应用程序是根据所述测试用例和所述软件中间件中的目标接口生成的,包含针对所述测试用例的执行指令。
根据本公开的一个或多个实施例,所述执行指令包括所述测试用例的执行次数,所述调用所述测试用例包括:
按照所述执行次数,调用所述测试用例。
根据本公开的一个或多个实施例,所述采集所述测试用例执行过程的性能数据,包括:
按照预设采集时间,分别采集所述客户端在执行所述测试用例的过程中的内存占用信息、显存占用信息、中央处理器占用率、占用的线程数量和生成的文件描述符。
根据本公开的一个或多个实施例,所述采集所述客户端在执行所述测试用例的过程中的内存占用信息、显存占用信息和中央处理器占用率,包括:
分别根据读取的所述客户端的内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件;
根据所述目标应用程序的标识,分别在所述内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件中获取所述客户端在运行的所述目标应用程序执行测试用例时的内存占用信息、显存占用信息和CPU占用率。
根据本公开的一个或多个实施例,所述将所述性能数据发送至服务端,包括;
将所述性能数据的格式转换成预设文件格式;
将预设文件格式的数据发送至服务端。
第二方面,根据本公开的一个或多个实施例,提供了一种软件中间件的接口测试方法,应用于服务端,所述方法包括:
接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
根据本公开的一个或多个实施例,所述方法还包括:
判断接收到的性能数据的格式是否是预设文件格式,若是,则通过python脚本解析所述预设文件格式的性能数据,并将所述性能数据存储在数据库中。
根据本公开的一个或多个实施例,所述方法包括:
根据用户在显示终端输入的查看信息,在所述数据库中读取相应的性能数据;
将所述性能数据发送至所述显示终端显示。
根据本公开的一个或多个实施例,所述性能数据包括所述客户端在执行所述测试用例的过程中的内存占用信息,所述对所述性能数据进行解析,包括:
根据所述内存占用信息,判断所述客户端在执行所述测试用例的过程中是否出现内存泄漏;
若判断结果为是,则获取所述客户端在执行所述测试用例过程中产生的内存堆栈信息;
根据所述堆栈信息、所述软件中间件的动态链接库和所述软件中间件的源码,确定泄漏的资源在所述软件中间件的源码中的位置。
根据本公开的一个或多个实施例,所述性能数据包括客户端在执行所述测试用例的过程中的显存占用信息,所述方法还包括:
确定所述客户端在执行所述测试用例的过程中显存占用的最大值,并获取显存占用最大值对应的时间;
若所述最大值大于预设阈值,则确定在所述最大值对应的时间内调用的接口为需要修改的接口。
根据本公开的一个或多个实施例,所述方法还包括:
获取所述客户端在执行所述测试用例前占用的第一线程数量、执行完所述测试用例后第二线程数量以及每个线程的线程标识;
若所述第二线程数量大于所述第一线程数量,则根据所述线程名称确定发生泄漏的线程。
第三方面,根据本公开的一个或多个实施例,提供了一种软件中间件的接口测试方法,应用于持续集成服务器,所述方法包括:
响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
根据本公开的一个或多个实施例,所述接口测试请求包括每个测试任务的开始时间,
所述响应于用户输入的接口测试请求,在代码服务器中获取测试用例,包括:
根据每个测试任务的开始时间,定时在所述代码服务器中获取测试用例。
根据本公开的一个或多个实施例,所述接口测试请求还包括每个测试用例的执行次数信息,所述方法还包括:
将所述执行次数信息发送至所述目标客户端,以使所述目标客户端在运行所述目标应用程序时按照所述执行次数执行测试用例。
根据本公开的一个或多个实施例,所述将所述目标应用程序安装于目标客户端之前,所述方法还包括:
向调度服务器发送调度指令,以使所述调度服务器在接收到所述调度指令之后在机架上调度空闲的客户端作为所述目标客户端。
第四方面,根据本公开的一个或多个实施例,提供了一种软件中间件的接口测试装置,包括:
执行模块,用于执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集模块,用于采集所述测试用例执行过程的性能数据;
第一发送模块,用于将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
根据本公开的一个或多个实施例,所述测试用例包括所述目标接口对应的接口信息和调用方式;
所述执行模块具体用于:根据所述调用方式和所述接口信息,调用所述目标接口,以实现所述目标接口对应的功能。
根据本公开的一个或多个实施例,所述执行模块具体用于:在运行目标应用程序时,调用所述测试用例,在调用所述测试用例过程中根据所述测试用例中的接口信息和调用方式,调用相应的目标接口;
其中,所述目标应用程序是根据所述测试用例和所述软件中间件中的目标接口生成的,包含针对所述测试用例的执行指令。
根据本公开的一个或多个实施例,所述执行指令包括所述测试用例的执行次数,所述执行模块具体用于:按照所述执行次数,调用所述测试用例。
根据本公开的一个或多个实施例,所述采集模块具体用于:按照预设采集时间,分别采集所述客户端在执行所述测试用例的过程中的内存占用信息、显存占用信息、中央处理器占用率、占用的线程数量和生成的文件描述符。
根据本公开的一个或多个实施例,所述采集模块具体用于:
分别根据读取的所述客户端的内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件;
根据所述目标应用程序的标识,分别在所述内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件中获取所述客户端在运行的所述目标应用程序执行测试用例时的内存占用信息、显存占用信息和CPU占用率。
根据本公开的一个或多个实施例,所述发送模块具体用于:
将所述性能数据的格式转换成预设文件格式;
将预设文件格式的数据发送至服务端。
第五方面,根据本公开的一个或多个实施例,提供了一种软件中间件的接口测试装置,包括:
接收模块,用于接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
解析模块,用于对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
根据本公开的一个或多个实施例,所述解析模块具体用于:
判断接收到的性能数据的格式是否是预设文件格式,若是,则通过python脚本解析所述预设文件格式的性能数据,并将所述性能数据存储在数据库中。
根据本公开的一个或多个实施例,所述装置还包括:读取模块,用于根据用户在显示终端输入的查看信息,在所述数据库中读取相应的性能数据;并将所述性能数据发送至所述显示终端显示。
根据本公开的一个或多个实施例,所述性能数据包括所述客户端在执行所述测试用例的过程中的内存占用信息,所述解析模块具体用于:
根据所述内存占用信息,判断所述客户端在执行所述测试用例的过程中是否出现内存泄漏;
若判断结果为是,则获取所述客户端在执行所述测试用例过程中产生的内存堆栈信息;
根据所述堆栈信息、所述软件中间件的动态链接库和所述软件中间件的源码,确定泄漏的资源在所述软件中间件的源码中的位置。
根据本公开的一个或多个实施例,所述性能数据包括客户端在执行所述测试用例的过程中的显存占用信息,所述解析模块具体用于:
确定所述客户端在执行所述测试用例的过程中显存占用的最大值,并获取显存占用最大值对应的时间;
若所述最大值大于预设阈值,则确定在所述最大值对应的时间内调用的接口为需要修改的接口。
根据本公开的一个或多个实施例,所述解析模块具体用于:
获取所述客户端在执行所述测试用例前占用的第一线程数量、执行完所述测试用例后第二线程数量以及每个线程的线程标识;
若所述第二线程数量大于所述第一线程数量,则根据所述线程名称确定发生泄漏的线程。
第六方面,根据本公开的一个或多个实施例,提供了一种软件中间件的接口测试装置,包括:
获取模块,用于响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
第二发送模块,用于将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
根据本公开的一个或多个实施例,所述接口测试请求包括每个测试任务的开始时间,所述获取模块具体用于:
根据每个测试任务的开始时间,定时在所述代码服务器中获取测试用例。
根据本公开的一个或多个实施例,所述将所述目标应用程序安装于目标客户端之前,所述第二发送模块还用于:
向调度服务器发送调度指令,以使所述调度服务器在接收到所述调度指令之后在机架上调度空闲的客户端作为所述目标客户端。
第七方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计、第二方面以及第二方面各种可能的设计或第三方面以及第三方面各种可能的设计所述的软件中间件的接口测试方法。
第八方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计、第二方面以及第二方面各种可能的设计或第三方面以及第三方面各种可能的设计所述的软件中间件的接口测试方法。
第九方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计、第二方面以及第二方面各种可能的设计或第三方面以及第三方面各种可能的设计所述的软件中间件的接口测试方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (21)

1.一种软件中间件的接口测试方法,其特征在于,应用于客户端,所述方法包括:
执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集所述测试用例执行过程的性能数据;
将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
2.根据权利要求1所述的方法,其特征在于,所述测试用例包括所述目标接口对应的接口信息和调用方式;
所述执行针对软件中间件的目标接口的测试用例,包括:
根据所述调用方式和所述接口信息,调用所述目标接口,以实现所述目标接口对应的功能。
3.根据权利要求2所述的方法,其特征在于,所述执行针对软件中间件的目标接口的测试用例,包括:
在运行目标应用程序时,调用所述测试用例,在调用所述测试用例过程中根据所述测试用例中的接口信息和调用方式,调用相应的目标接口;
其中,所述目标应用程序是根据所述测试用例和所述软件中间件中的目标接口生成的,包含针对所述测试用例的执行指令。
4.根据权利要求3所述的方法,其特征在于,所述执行指令包括所述测试用例的执行次数,所述调用所述测试用例包括:
按照所述执行次数,调用所述测试用例。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述采集所述测试用例执行过程的性能数据,包括:
按照预设采集时间,分别采集所述客户端在执行所述测试用例的过程中的内存占用信息、显存占用信息、中央处理器占用率、占用的线程数量和生成的文件描述符。
6.根据权利要求5所述的方法,其特征在于,所述采集所述客户端在执行所述测试用例的过程中的内存占用信息、显存占用信息和中央处理器占用率,包括:
分别根据读取的所述客户端的内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件;
根据所述目标应用程序的标识,分别在所述内存描述文件、显存描述文件和中央处理器CPU活动信息描述文件中获取所述客户端在运行的所述目标应用程序执行测试用例时的内存占用信息、显存占用信息和CPU占用率。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述将所述性能数据发送至服务端,包括;
将所述性能数据的格式转换成预设文件格式;
将预设文件格式的数据发送至服务端。
8.一种软件中间件的接口测试方法,其特征在于,应用于服务端,所述方法包括:
接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
9.根据权利要求8所述的方法,其特征在于,包括:
判断接收到的性能数据的格式是否是预设文件格式,若是,则通过计算机程序脚本解析所述预设文件格式的性能数据,并将所述性能数据存储在数据库中。
10.根据权利要求9所述的方法,其特征在于,包括:
根据用户在显示终端输入的查看信息,在所述数据库中读取相应的性能数据;
将所述性能数据发送至所述显示终端显示。
11.根据权利要求8-10任一项所述的方法,其特征在于,所述性能数据包括所述客户端在执行所述测试用例的过程中的内存占用信息,所述对所述性能数据进行解析,包括:
根据所述内存占用信息,判断所述客户端在执行所述测试用例的过程中是否出现内存泄漏;
若判断结果为是,则获取所述客户端在执行所述测试用例过程中产生的内存堆栈信息;
根据所述堆栈信息、所述软件中间件的动态链接库和所述软件中间件的源码,确定泄漏的资源在所述软件中间件的源码中的位置。
12.根据权利要求8-10任一项所述的方法,其特征在于,所述性能数据包括客户端在执行所述测试用例的过程中的显存占用信息,所述方法还包括:
确定所述客户端在执行所述测试用例的过程中显存占用的最大值,并获取显存占用最大值对应的时间;
若所述最大值大于预设阈值,则确定在所述最大值对应的时间内调用的接口为需要修改的接口。
13.根据权利要求8-10任一项所述的方法,其特征在于,还包括:
获取所述客户端在执行所述测试用例前占用的第一线程数量、执行完所述测试用例后第二线程数量以及每个线程的线程标识;
若所述第二线程数量大于所述第一线程数量,则根据所述线程名称确定发生泄漏的线程。
14.一种软件中间件的接口测试方法,其特征在于,应用于持续集成服务器,所述方法包括:
响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
15.根据权利要求14所述的方法,其特征在于,所述接口测试请求包括每个测试任务的开始时间,
所述响应于用户输入的接口测试请求,在代码服务器中获取测试用例,包括:
根据每个测试任务的开始时间,定时在所述代码服务器中获取测试用例。
16.根据权利要求14或15所述的方法,其特征在于,所述方法还包括:
向调度服务器发送调度指令,以使所述调度服务器在接收到所述调度指令之后在机架上调度空闲的客户端作为所述目标客户端。
17.一种软件中间件的接口测试装置,其特征在于,包括:
执行模块,执行针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
采集模块,用于采集所述测试用例执行过程的性能数据;
第一发送模块,用于将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
18.一种软件中间件的接口测试装置,其特征在于,包括:
接收模块,用于接收客户端发送的性能数据,所述性能数据是客户端在执行针对软件中间件的目标接口的测试用例的过程中采集得到的,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
解析模块,用于对所述性能数据进行解析,得到所述软件中间件的接口性能质量信息。
19.一种软件中间件的接口测试装置,其特征在于,包括:
获取模块,用于响应于用户输入的接口测试请求,在代码服务器中获取测试用例,所述测试用例是针对软件中间件的目标接口的测试用例,所述测试用例是通过模拟所述软件中间件的宿主应用程序对所述软件中间件中的所述目标接口的调用方式而生成的;
第二发送模块,用于将所述测试用例发送至目标客户端,以使所述目标客户端执行所述测试用例,并采集所述测试用例执行过程的性能数据,以及,将所述性能数据发送至服务端,以使所述服务端对所述性能数据进行解析得到所述软件中间件中所述目标接口的性能质量信息。
20.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-7、8-13或14-16任一项所述的软件中间件的接口测试方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-7、8-13或14-16任一项所述的软件中间件的接口测试方法。
CN202110470337.9A 2021-04-28 2021-04-28 软件中间件的接口测试方法和装置 Pending CN115248772A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110470337.9A CN115248772A (zh) 2021-04-28 2021-04-28 软件中间件的接口测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110470337.9A CN115248772A (zh) 2021-04-28 2021-04-28 软件中间件的接口测试方法和装置

Publications (1)

Publication Number Publication Date
CN115248772A true CN115248772A (zh) 2022-10-28

Family

ID=83696020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110470337.9A Pending CN115248772A (zh) 2021-04-28 2021-04-28 软件中间件的接口测试方法和装置

Country Status (1)

Country Link
CN (1) CN115248772A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115952085A (zh) * 2022-12-15 2023-04-11 广州埃普信息科技有限公司 一种支持快速测试开发的中间件系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115952085A (zh) * 2022-12-15 2023-04-11 广州埃普信息科技有限公司 一种支持快速测试开发的中间件系统
CN115952085B (zh) * 2022-12-15 2023-08-22 广州埃普信息科技有限公司 一种支持快速测试开发的中间件系统

Similar Documents

Publication Publication Date Title
CN110083543B (zh) 回归测试方法、装置、电子设备及存储介质
CN108717393B (zh) 一种应用程序测试方法及移动终端
CN111897740B (zh) 用户界面的测试方法、装置、电子设备及计算机可读介质
CN108984389B (zh) 一种应用程序测试方法及终端设备
WO2021208512A1 (zh) 用户界面的控件信息的获取方法、装置、终端及存储介质
CN107045475B (zh) 测试方法和装置
CN110716853A (zh) 一种测试脚本录制方法、应用程序测试方法和相关装置
CN111190825A (zh) 自动测试方法、系统及机器人
CN110597704A (zh) 应用程序的压力测试方法、装置、服务器和介质
CN115248772A (zh) 软件中间件的接口测试方法和装置
CN110688245A (zh) 信息获取方法、装置、存储介质及设备
CN111813685A (zh) 自动化测试方法和装置
CN112306826A (zh) 用于终端的处理信息的方法和装置
CN115509913A (zh) 软件自动化测试方法、装置、机器可读介质及设备
CN111309583B (zh) 界面过度绘制检测方法、装置、介质及计算设备
CN112506782A (zh) 一种应用程序的测试方法、装置、设备及存储介质
CN111984541A (zh) 一种内存泄漏检测方法及装置、终端
CN114690988B (zh) 测试方法、装置和电子设备
CN113835995B (zh) 用于生成测试用例的方法和装置
CN117076336B (zh) 一种云边协同系统的测试方法、装置、存储介质及设备
CN111367787B (zh) 应用中的页面脚本对象泄漏的检查方法及装置
CN115484200B (zh) 一种埋点测试方法、装置、服务器、存储介质和系统
CN115373932A (zh) 组件运行的监测方法及装置
CN117573503A (zh) 特效测试方法、装置、设备及存储介质
CN110162966B (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