一种测试方法、装置、及计算机可读存储介质
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种测试方法、装置、及计算机可读存储介质。
背景技术
随着互联网的高速发展,当今社会已进入了“互联网+”的新时代,互联网极大的改变了人们的生产生活方式,用户足不出户就可以享受到购物、医疗、远程会议、在线教学、直播等在线服务。比如,在线教学解决了上课地点较远、教室及教师资源有限的问题,越来越多的用户选择在线教学这种学习方式;再比如,远程会议解决了公司大规模管理的需要。
随着大规模用户在线教学兴起,在线教学向着班级人数越来越多的方向发展,给资源服务器带来很大压力,通常,在课程上线之前需要进行压力测试,以提前测试当前的服务资源是否能够承载预期的学生数量。同理,随着企业规模化发展的需要,在线视频会议也是向着人数越来越多的方向发展。在这些场景中,一般的测试方式是安排好大量测试人员来模拟用户端参与线上操作(在线学习、在线参会、在线进入直播等),但这种测试方法无法满足真实场景下有数千人参与的情景,并且耗费的人力成本较高。
发明内容
本公开实施例至少提供一种测试方法、装置、及计算机可读存储介质。
第一方面,本公开实施例提供了一种测试方法,所述方法包括:
获取插件配置信息;所述插件配置信息中包括有测试任务对应的在线客户端数量,以及与测试任务对应的在线客户端操作信息;
根据所述插件配置信息,生成与所述在线客户端数量对应数量的插件,所述插件中包括所述在线客户端操作信息所对应的指令代码;
响应测试发起端的任务开始指令,运行生成的所述插件以执行所述测试任务,并接收所述插件反馈的与资源服务器的交互操作结果。
在一种可能的实施方式中,接收所述插件反馈的与至少一个资源服务器的交互操作结果之后,还包括:
根据所述交互操作结果,生成测试日志;所述测试日志中包括统计的错误信息和测试任务标识。
在一种可能的实施方式中,所述方法还包括:
针对所述测试任务,获取不同的所述插件配置信息分别对应的所述测试日志;
根据所述测试日志,确定该测试任务对应的所述资源服务器承载的最大在线客户端数量;其中,不同的插件配置信息中包括的所述在线客户端数量不同。
在一种可能的实施方式中,所述在线客户端操作信息中包括插件与资源服务器之间的连接方式信息,其中,各个任务分工对应的所述连接方式信息与各个任务分工对应的实时性要求信息和/或交互信息类型相关;
所述运行生成的所述插件以执行所述测试任务,包括:
按照各个任务分工对应的所述连接方式信息,建立所述插件与资源服务器之间的连接,以便基于建立的连接,实现插件与资源服务器之间的交互操作。
在一种可能的实施方式中,针对任一任务分工,若该任务分工对应的交互信息类型为音视频,该任务分工对应的连接方式包括实时通信RTC连接;
若该任务分工对应的交互信息类型不是音视频,且具有实时性要求,该任务分工对应的连接方式包括长连接;
若该任务分工对应的交互信息类型不是音视频,且不具有实时性要求,该任务分工对应的连接方式包括短连接。
在一种可能的实施方式中,针对任一任务分工,若该任务分工对应的连接方式包括所述长连接,则所述长连接用于资源服务器向插件主动发起交互信息的情况;所述运行生成的所述插件以执行所述测试任务,包括:在运行执行该任务分工的插件时,控制该插件接收资源服务器通过所述长连接主动下发的交互信息;
若该任务分工对应的连接方式包括所述短连接,则所述短连接用于插件向资源服务器主动发起请求、资源服务器响应插件的请求向插件返回交互信息的情况;所述运行生成的所述插件以执行所述测试任务,包括:在运行执行该任务分工的插件时,控制该插件基于短连接,周期性或者按照设定时间点向资源服务器请求获取交互信息,或者,控制该插件基于短连接,周期性或者按照设定时间点主动向资源服务器发送交互信息。
第二方面,本公开实施例提供了一种测试装置,所述测试装置包括:
获取模块,用于获取插件配置信息;所述插件配置信息中包括有测试任务对应的在线客户端数量,以及与测试任务对应的在线客户端操作信息;
生成模块,用于根据所述插件配置信息,生成与所述在线客户端数量对应数量的插件,所述插件中包括所述在线客户端操作信息所对应的指令代码;
测试模块,用于响应测试发起端的任务开始指令,运行生成的所述插件以执行所述测试任务,并接收所述插件反馈的与资源服务器的交互操作结果。
在一种可能的实施方式中,所述测试模块还用于:
在接收所述插件反馈的与至少一个资源服务器的交互操作结果之后,根据所述交互操作结果,生成测试日志;所述测试日志中包括统计的错误信息和测试任务标识。
在一种可能的实施方式中,所述测试模块还用于:
针对所述测试任务,获取不同的所述插件配置信息分别对应的所述测试日志;根据所述测试日志,确定该测试任务对应的所述资源服务器承载的最大在线客户端数量;其中,不同的插件配置信息中包括的所述在线客户端数量不同。
在一种可能的实施方式中,所述在线客户端操作信息中包括插件与资源服务器之间的连接方式信息,其中,各个任务分工对应的所述连接方式信息与各个任务分工对应的实时性要求信息和/或交互信息类型相关;
所述测试模块具体用于:
按照各个任务分工对应的所述连接方式信息,建立所述插件与资源服务器之间的连接,以便基于建立的连接,实现插件与资源服务器之间的交互操作。
在一种可能的实施方式中,针对任一任务分工,若该任务分工对应的交互信息类型为音视频,该任务分工对应的连接方式包括实时通信RTC连接;
若该任务分工对应的交互信息类型不是音视频,且具有实时性要求,该任务分工对应的连接方式包括长连接;
若该任务分工对应的交互信息类型不是音视频,且不具有实时性要求,该任务分工对应的连接方式包括短连接。
在一种可能的实施方式中,针对任一任务分工,若该任务分工对应的连接方式包括所述长连接,则所述长连接用于资源服务器向插件主动发起交互信息的情况;所述测试模块具体用于:在运行执行该任务分工的插件时,控制该插件接收资源服务器通过所述长连接主动下发的交互信息;
若该任务分工对应的连接方式包括所述短连接,则所述短连接用于插件向资源服务器主动发起请求、资源服务器响应插件的请求向插件返回交互信息的情况;所述测试模块具体用于:在运行执行该任务分工的插件时,控制该插件基于短连接,周期性或者按照设定时间点向资源服务器请求获取交互信息,或者,控制该插件基于短连接,周期性或者按照设定时间点主动向资源服务器发送交互信息。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的测试方法,通过插件配置信息,生成与在线客户端数量对应数量的插件,插件中包括在线客户端操作信息所对应的指令代码;然后,响应测试发起端的任务开始指令,可以自动运行生成的所述插件以执行测试任务,之后接收插件反馈的与资源服务器的交互操作结果,就可以得到测试结果。这样,通过配置插件的方式,自动执行在线测试的任务,不仅节省了人力成本,而且可以根据测试客户端数量的需求来配置插件的数量,配置的插件数量不受测试人员和设备数量的限制,可以满足针对大规模用户的在线测试需求。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种测试方法的流程图;
图2示出了本公开实施例所提供的测试方法应用于在线教学场景下时,学生端操作示意图;
图3示出了音视频通信连接示意图;
图4示出了本公开实施例所提供的一种测试装置的示意图;
图5示出了本公开实施例所提供的计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,测试大量用户同时在线场景的服务测试过程中,为保证测试的准确性,常常需要采用人工众测的方法,也就是分配一批账号给大量测试用户来参与在线测试过程。比如,针对在线教学场景,将购买的课程账号给测试用户,测试用户在终端设备上安装在线教学学生端,并需要在登录后完成完整的在线教学流程才能完成对在线教学课程的测试,耗费了大量的人力和时间。同时,如果需要测试大量用户同时在线对资源服务器产生的资源压力,也即对资源服务器进行压力测试,则需要大量的测试人员以及大量的终端设备。
上述压力测试需要的测试人员以及终端设备的数量非常庞大,进行测试的人力成本及设备成本过高,且整个测试过程由于需要人力配合完成,测试效率极低。
基于上述研究,本公开实施例提供了一种测试方法,通过插件配置信息,生成与测试的在线客户端数量对应数量的插件,插件中包括在线客户端操作信息所对应的指令代码;然后,响应测试发起端的任务开始指令,可以自动运行生成的插件以执行测试任务,之后接收所述插件反馈的与资源服务器的交互操作结果,就可以得到测试结果。通过配置模拟客户端执行各项操作的插件的方式,自动执行在线测试的任务,一方面节省了人力成本,另一方面可以根据测试客户端数量的需求来配置插件的数量,由于插件的运行不受测试人员数量和设备数量的限制,采用这种方式可以满足针对大规模用户的在线测试需求。
上述技术问题的提出及解决思路,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的模块可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种测试方法进行详细介绍,本公开实施例所提供的测试方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:服务器(如本公开实施例中的测试服务器)或其它处理设备,以服务器为例,在一些可能的实现方式中,服务器执行该测试方法时,可以通过内置的处理器调用存储器中存储的计算机可读指令的方式来实现。
本公开实施例的测试方法可以应用于多种测试场景,比如在线教学测试、在线视频会议测试、直播场景测试等,任何涉及在线客户端与资源服务器之间的交互的线上服务场景均可以使用本公开实施例的测试方法。下面对本公开实施例提供的测试方法加以说明。
参见图1所示,为本公开实施例提供的测试方法的流程图,所述方法包括步骤S101~S103,其中:
S101:获取插件配置信息;所述插件配置信息中包括有测试任务对应的在线客户端数量,以及与测试任务对应的在线客户端操作信息。
这里,可以根据测试任务对于在线客户端数量的需求来确定插件的数量,并根据测试任务中的各个任务分工,为插件确定每个任务分工对应的在线客户端操作信息,这里的在线客户端操作信息用于描述插件在对应的任务分工中,需要执行的相关操作内容。
S102:根据所述插件配置信息,生成与所述在线客户端数量对应数量的插件,所述插件中包括所述在线客户端操作信息所对应的指令代码。
这里,基于插件配置信息中所指示的在各个任务分工中需要实现的相关操作内容,生成能够执行各个任务分工对应的相关操作内容的指令代码,也即插件。
由于在测试过程中,涉及插件与资源服务器之间的交互,因此,在线客户端操作信息中包括插件与资源服务器之间的连接方式信息,其中,各个任务分工对应的连接方式信息与各个任务分工对应的实时性要求信息和/或交互信息类型相关。
比如,针对任一任务分工,若该任务分工对应的交互信息类型为音视频,该任务分工对应的连接方式包括实时通信(Real-time Communication,RTC)连接,音视频通信要求实时在线传输,因此使用了具有低延时、接通率较高的RTC技术。
另外,若该任务分工对应的交互信息类型不是音视频,且具有实时性要求,则该任务分工对应的连接方式包括长连接。长连接适用于资源服务器向插件主动发起交互信息的情况,资源服务器主动发起交互信息的情况一般是对实时性要求较高的情况,比如在线教学场景下,资源服务器在接收到教师端的上麦指示后,会通过长连接向模拟学生端操作的插件发起允许上麦的指令。
再者,若该任务分工对应的交互信息类型不是音视频,且不具有实时性要求,该任务分工对应的连接方式包括短连接。短连接一般用于插件向资源服务器主动发起请求,资源服务器响应插件的请求向插件发起交互信息的情况;这种情况对实时性要求一般不高,比如在线教学场景下,拉取聊天内容以及发送聊天内容等的操作。
S103:响应测试发起端的任务开始指令,运行生成的插件以执行测试任务,并接收插件反馈的与资源服务器的交互操作结果。
在上述关于S102的描述过程中,已说明在线客户端操作信息中包括插件与资源服务器之间的连接方式信息,在S103中,在运行生成的插件以执行所述测试任务时,则按照各个任务分工对应的连接方式信息,建立所述插件与资源服务器之间的连接,以便基于建立的连接,实现插件与资源服务器之间的交互操作。也即,插件与资源服务器之间通过建立每个任务分工对应的连接方式下的连接,并通过建立的连接实现对应任务分工下的交互操作。
具体地,针对任一任务分工,若该任务分工对应的连接方式包括长连接,则长连接用于资源服务器向插件主动发起交互信息的情况,在运行执行该任务分工的插件时,控制该插件接收资源服务器通过所述长连接主动下发的交互信息。
若该任务分工对应的连接方式包括所述短连接,则短连接用于插件向资源服务器主动发起请求、资源服务器响应插件的请求向插件返回交互信息的情况;在运行执行该任务分工的插件时,控制该插件基于短连接,周期性或者按照设定时间点向资源服务器请求获取交互信息,或者,控制该插件基于短连接,周期性或者按照设定时间点主动向资源服务器发送交互信息。比如在线教学场景下,插件基于建立的短连接,周期性或者按照设定时间点从资源服务器拉取聊天内容以及向资源服务器发送聊天内容。
上述内容后面将会以在线教学场景为例做展开说明,这里不再赘述。
在具体实施中,在接收插件反馈的与至少一个资源服务器的交互操作结果之后,可以根据交互操作结果,生成测试日志,测试日志中包含有统计的错误信息和测试任务标识。测试任务标识用于识别具体是哪个测试任务出错,比如在线教学场景下,用于识别具体是哪个在线课程的教学过程出错。统计的错误信息可以用于分析具体出错的任务分工、出错的原因。
另外,本公开实施例可以测试资源服务器的承载能力。为了测试资源服务器的最大承载能力,可以针对同一测试任务,生成不同的插件配置信息,不同的插件配置信息中包括的所述在线客户端数量不同,并基于不同的插件配置信息完成上述测试过程,获取不同的插件配置信息分别对应的测试日志,根据测试日志,确定该测试任务对应的资源服务器承载的最大在线客户端数量。
在上述过程中,可以根据不同插件配置信息分别对应的测试日志,选择对应的出错情况在可接受范围内的插件配置信息,将这些插件配置信息中,将对应的最大在线客户端数量作为资源服务器承载的最大在线客户端数量。比如在线教学场景下,确定目标课程下,最多能有多少学生上课。
下面以在线教学场景为例,对本公开实施例的测试方法做进一步说明。
在线教学场景下,在测试之前,可以首先获取待测试的学生数量以及与待测试的在线教学课程对应的在线学生端操作信息,并基于该学生数量及在线客户端操作信息,确定插件配置信息。该学生数量以M表示,待测试的学生数量即为在进行在线教学测试过程中进行在线教学课程学习的虚拟学生端的数量,然后配置与该学生数量对应数量的插件,每个插件模拟一个学生端。在实际操作中,可以预测待测试的在线教学课程对应的学生数量,进而来配置对应数量的用于模拟学生操作的插件。或者,可以根据对资源服务器的压力测试需求,设置一个较大的学生数量来进行压力测试。
然后,基于上述插件配置信息,生成M个模拟学生端进行操作的插件;M个插件中配置有能够在教学过程中执行上述在线学生端操作信息所对应的操作内容的脚本程序,在线教学开始后,通过执行M个插件的脚本程序,来配合教师端,完成在线教学测试,
通常,在开始进行在线教学后,学生端有进入教室、拉取课件、拉取测验数据等操作,在教学过程中,学生端有上麦、参与投票、参与测验、拉取白板数据、拉取音视频数据、获取及发送聊天内容等操作。
上述学生端的每种操作的操作内容,可以根据在实际教学过程中对于学生端的实际操作需求来设计,比如,对于参与测验的操作,可以设计学生端有填写测验答案,并向资源服务器反馈测验答案的操作等。
在通过配置的M个插件来模拟学生端进行不同的操作时,在某些教学场景下,可以控制这M个插件同时模拟学生端进行操作,比如拉取教师端白板数据的操作等;在另一些教学场景下,也可以只是控制其中的部分插件来模拟学生端进行相关操作,比如教师端发起投票后,可以选取部分学生端反馈投票结果等。
本公开实施例是对在线教学过程中提供各种教学服务的资源服务器的压力测试,提供教学服务的服务器可以有多种,如提供聊天室服务的服务器,提供音视频传输服务的服务器等等,以下将提供教学服务的服务器统称为资源服务器。在启动配置的M个插件来模拟学生端与资源服务器之间进行交互操作时,可以基于多种不同的通信连接方式,执行不同的交互操作。比如,在学生端进入虚拟教室后,可以基于与资源服务器之间的短连接,自动拉取教师端上传到资源服务器的课件,之后,在教学过程中(或称在教学课程学习过程中),基于多种不同的通信连接方式,执行上述不同的交互操作。这里,不同的通信连接方式主要包括:长连接、短连接、和RTC连接等。
如图2所示,为本公开实施例的测试方法应用于在线教学场景下时,学生端操作示意图,其中,一些音视频数据由于需要高实时性,需要基于RTC传输;长连接一般适用于资源服务器需要主动向学生端下发操作指令的场景,长连接消耗资源较多,需要建立长连接的教学场景中一般也需要配合短连接来实现整个教学场景的应用,比如上麦、投票、测验、拉取白板数据等;一些对实时性要求低、且由学生端主动发起的交互操作可以基于短连接实现,不需要建立对资源消耗较多的长连接,比如获取或发送聊天内容等。下面对上述不同通信连接方式下的几种教学场景分别进行介绍。
以下描述中涉及的资源服务器可以包括多种不同的服务器,比如资源服务器可以有负责上麦的服务器、可以有负责提供白板数据转发的服务器等。
一、需要建立长连接的教学场景。
该类教学场景下,在线教学开始后,可以建立起M个所述插件与资源服务器之间的长连接,以便资源服务器基于建立的长连接向至少一个所述插件下发操作指令。下面对几种需要建立长连接的教学场景进行举例说明。
1)需要建立长连接的教学场景,包括:上麦场景;此时,在任一插件基于长连接接收到资源服务器下发的允许上麦的消息后,基于该插件与资源服务器之间的短连接,向资源服务器发送上麦请求,以便资源服务器将该上麦请求通过长连接转发给教师端。
这里,教师端在教学开始后,可以与资源服务器建立短连接,并基于该短连接发送允许上麦的消息;由于资源服务器本身是无法主动发起建立短连接的请求的,所以资源服务器在接收到教师端允许上麦的消息后,可以基于预先建立的长连接向学生端(实际是模拟学生端操作的插件,以下都简称学生端)下发允许上麦的消息,学生端收到资源服务器发送的允许上麦的消息后,可以与资源服务器建立短连接,并基于该短连接向资源服务器发送上麦请求,资源服务器将每个学生端的上麦请求通过预先建立的长连接发送给教师端,由教师端确认是否允许上麦,教师端允许上麦后,与学生端建立语音连接。语音连接可以基于RTC实现,在后续进行详细说明,此处不再赘述。
2)需要建立长连接的教学场景,包括:投票场景;此时,在任一插件基于长连接接收到资源服务器下发的投票指示信息后,从投票指示信息指示的多个投票选项中随机选择投票选项,并基于短连接向资源服务器反馈选择的投票选项,以便资源服务器将选择的投票选项通过长连接转发给教师端。
这里,教师端可以与资源服务器建立短连接,基于该短连接向资源服务器发起投票指示信息,资源服务器基于与学生端预先建立的长连接,向学生端下发该投票指示信息,该投票指示信息中可以有多个投票选项。学生端可以与资源服务器建立短连接,基于该短连接向资源服务器反馈随机选择的投票选项。资源服务器接收到反馈到的投票选项后,统计投票结果,并基于长连接向教师端发送投票结果。
3)需要建立长连接的教学场景还包括:测验场景;
在任一插件基于长连接接收到资源服务器下发的测验指示信息后,针对于测验指示信息所指示的目标测验题目,基于预先获取的测验题目与测验答案之间的对应关系,确定目标测验题目所对应的目标测验答案,并基于短连接向资源服务器反馈目标测验答案,以便资源服务器将选择的目标测验答案通过长连接转发给教师端。
在具体实施过程中,参与测验操作的过程与参与投票操作的过程相似,只是参与测验操作时,测验题目是有标准答案的,而参与投票操作时,投票内容没有标准答案。教师端可以在教学开始后,与资源服务器建立短连接,并基于该短连接,将包括测验题目与测验答案之间的对应关系的测验数据发送给资源服务器,学生端上线后,基于短连接从资源服务器拉取测验数据,在接收到资源服务器通过长连接下发的测验指示信息后,根据测验指示信息所指示的目标测验题目,以及拉取的测验数据,确定目标测验答案,并与资源服务器建立短连接,反馈该目标测验答案;或者,教师端也可以在教学开始前,先将测验数据上传到资源服务器,在学生端上线后,基于短连接从资源服务器拉取测验数据,后续在接收到资源服务器通过长连接下发的测验指示信息后,根据测验指示信息所指示的目标测验题目,以及拉取的测验数据,确定目标测验答案,并与资源服务器建立短连接,反馈该目标测验答案。
不管上述测验数据是在教学开始前预先上传到资源服务器的,还是在教学开始后发送到资源服务器的,都需要学生端进入在线教室后,基于短连接从资源服务器进行拉取,详见后续关于基于短连接实现的教学场景的描述。
在运行插件对应的脚本程序,执行上述测验过程时,可以基于设置的测验效果来控制插件反馈测验结果。例如,可以控制测验效果为全对或全错或随机,在测验效果为全对时,每个插件可以按照预先配置的测验题目与测验答案之间的对应关系,确定所述目标测验题目所对应的目标测验答案,并上报;在测验效果为全错时,每个插件可以按照预先配置的测验题目与测验答案之间的对应关系,选择与上述对应关系不符的选项作为目标测验答案,并上报;在测验效果为随机时,每个插件可以针对每个测验题目,随机选择是否按照上述对应关系上报目标测验答案。资源服务器将收集的各个学生端上报的目标测验答案汇总后,通过长连接发送给教师端,教师端统计各个学生端的测验答案,若统计结果与预期测验效果不符,则说明压力测试出现问题。
4)需要建立长连接的教学场景,包括:白板数据传输场景,所述白板数据包括课件批注内容;此时,通过M个插件基于长连接获取资源服务器实时转发的教师端的课件批注内容。
这里,白板数据传输场景操作中,教师端可以实时向资源服务器发送白板数据,资源服务器接收到教师端发送的白板数据后,基于长连接向学生端转发白板数据。此白板数据可以包括在线教学时教师对教学课件所做的批注信息,批注信息的表现形式不仅限于批注框的形式,还可以包括教师在线对教学课件所进行的圈定、划线标示、箭头标示,对课件中文字进行的加粗、倾斜、改变颜色等表现形式。
在具体实施中,上述白板数据可以包括课件的原始内容,以及教师端所做的课件批注内容,课件的原始内容可以是教师端在上课前上传到资源服务器的,学生端在上课时,与资源服务器建立短连接,基于该短连接从资源服务器拉取课件即可。课件批注内容以图片格式传输,也即,教师端可以通过图片的形式,将在线教学过程中产生的白板数据,通过短连接上传到资源服务器,资源服务器将白板数据通过长连接发送到学生端。
二、基于短连接实现的教学场景。
基于短连接实现的教学场景中的操作,基于长连接也可实现,但是会耗费大量服务器资源,因此,对于实时性要求低的教学场景,优先选择短连接的方式实现。下面对基于短连接实现的测试场景:拉取聊天内容以及发送聊天内容等的操作做重点介绍。
基于短连接拉取聊天内容以及发送聊天内容的过程为:在所述在线教学开始后,启动配置的M个学生端(也即插件),周期性或者按照设定时间点基于短连接从资源服务器获取教学过程中产生的聊天内容,和/或,周期性或者按照设定时间点基于所述短连接向资源服务器发送聊天内容。
这里,在线教学学生端的操作包括拉取聊天内容以及发送聊天内容等操作。在拉取聊天内容的操作中,学生端可以周期性或按照设定好的时间点,以短连接方式向资源服务器发送拉取聊天内容的请求(或称向预设接口发起请求),资源服务器响应该请求,通过建立的短连接返回与该学生端上次拉取的聊天内容相比,最新更新的聊天内容(接口返回聊天内容)。相似的,学生端也可以作为聊天内容发送方,可以周期性或按照设定好的时间点向资源服务器上传聊天内容,聊天内容为预先设置好的,比如可以包括用户姓名等。
除聊天场景外,还可以存在很多基于短连接即可实现的场景,这些基于短连接实现的场景,一般都是学生端主动发起请求、资源服务器直接返回数据的场景。比如,学生端进入教室、拉取课件(在上述白板数据传输场景中有涉及)、拉取测验数据(也即,测验题目与测验答案之间的对应关系,在上述测验场景中有涉及)等。
针对上述进入教室的场景,当在线教学开始,资源服务器创建在线教室成功后,学生端基于短连接向资源服务器发送进入在线教室的请求,资源服务器响应该请求,允许学生端进入在线教室。
针对拉取课件以及拉取测验数据等的操作,在所述在线教学开始后,可以基于短连接向资源服务器发送拉取课件的请求,资源服务器基于建立的短连接向学生端返回课件(也即学生端向特定接口请求返回目标课件);拉取测验数据的操作同理。
除上述场景外,基于短连接实现的测试场景,还包括一些特殊场景化操作,例如打点测试,打点测试是指在线教学过程中,学生端以一固定的时间间隔,通过短连接形式向资源服务器发送在线信息,以表明该学生端处于在线状态。在线信息中可以包括学生姓名等。同时,教师端可以基于短连接向资源服务器发送获取学生端在线信息的请求,资源服务器将当前学生端的在线信息反馈给教师端,上述在线信息可以通过列表形式在教师端展现。
三、基于RTC连接实现的教学场景。
该类教学场景下,在线教学过程中,有些特定的教学场景需要基于RTC连接实现,比如音视频传输场景。下面对音视频传输场景进行详细说明。
如图3所示:图中31表示教师端,32表示资源服务器,33表示学生端。教师端(或视频录像设备)与资源服务器、学生端与资源服务器之间通过RTC连接进行音视频数据的传输。在视频数据传输场景下,教师端将采集到的视频数据通过RTC连接传输并存储到资源服务器,学生端基于RTC连接从资源服务器获取视频数据。
具体地,基于教师端(或视频采集设备)与资源服务器之间的RTC连接,可以实时高效的将教师在教学过程中产生的视频数据传输至资源服务器,(此资源服务器为视频服务器,用以存放由教师端(或视频采集设备)采集到的视频数据)。这里,教师端(或视频采集设备)采集到教学视频数据后,可以将视频数据按照RTC传输的要求进行封装,然后将封装后的视频数据发送至资源服务器,资源服务器接收到视频数据后,可以将视频数据存储于预先设定的存储地址,并基于预先建立的长连接将该存储地址通知给学生端;学生端接收到由资源服务器发送的存储地址后,基于RTC连接从该存储地址拉取视频数据,在拉取到视频数据后,学生端将拉取到的视频数据进行解封装,得到可用于播放的视频数据。
音频传输的过程与上述拉取视频的过程类似,只是操作中进行传输的是音频数据,具体操作中,在上述基于长连接的教学场景中,已详细讲述了教师端选择上麦的学生端的具体步骤,在此不再赘述此过程,下面只对教师端与学生端基于RTC连接进行语音通话的过程做介绍。
教师端基于RTC连接与选定的学生端建立语音连接,具体操作中,资源服务器为音频连接服务器,音频连接服务器用于在语音连接时暂时存放音频数据,比如教师端讲课的音频数据,或者教师端与学生端之间、以及学生端之间进行交流的音频数据。在语音连接创建完成后,可以由教师端(或音频采集设备,该音频采集设备与上述采集教学视频的视频采集设备可以为同一设备,音频数据和视频数据可以同步传输,比如对于教师讲课过程中的音视频是同步传输;对于其他聊天场景,比如学生端之间、教师端与学生端之间讨论交流问题,则音频数据单独传输)采集教师发言过程中的音频数据,并按照RTC传输的要求对该音频数据进行封装。教师端(或音频采集设备)基于RTC连接将封装好的音频数据发送到资源服务器,同理,上麦后的学生端将采集到的学生发言的音频数据按照RTC传输的要求进行封装,基于RTC连接发送至资源服务器暂存。与此同时,教师端或学生端基于RTC连接从资源服务器拉取存储的音频数据,各自解封装为可播放的音频数据,以实现音频数据的实时传输。
上述在线教学场景中,可基于不同的通信连接方式,执行不同的交互操作,以实现对在线教学过程中提供各种教学服务的服务器进行压力测试。
另外,在学生端执行各种操作时,可以在发送的操作数据中携带操作标识(Identity,ID),比如学生端上麦时携带上麦ID,投票时携带投票ID,发送聊天内容时携带聊天ID,这里的各种操作ID可以是服务端在通过长连接下发相关操作指令时下发的,便于服务端区分学生端上报的操作数据具体是哪个课程的操作数据。
在具体实施中,在上述在线教学课程中模拟学生端操作的插件进行全部操作后,测试服务器可以将在测试过程中出现的错误统计并汇总在测试日志中,在测试日志中,可通过分析错误产出的原因并得出各个资源服务器的压测结果。可选的,可以根据测试日志中的错误记录选择是否增加待测试学生数量继续测试,或结束测试。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与上述测试方法对应的测试装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,本公开实施例提供的一种测试装置,包括:获取模块41,生成模块42、和测试模块43,其中:
获取模块41,用于获取插件配置信息;所述插件配置信息中包括有测试任务对应的在线客户端数量,以及与测试任务对应的在线客户端操作信息;
生成模块42,用于根据所述插件配置信息,生成与所述在线客户端数量对应数量的插件,所述插件中包括所述在线客户端操作信息所对应的指令代码;
测试模块43,用于响应测试发起端的任务开始指令,运行生成的所述插件以执行所述测试任务,并接收所述插件反馈的与资源服务器的交互操作结果。
在一种可能的实施方式中,所述测试模块43还用于:
在接收所述插件反馈的与至少一个资源服务器的交互操作结果之后,根据所述交互操作结果,生成测试日志;所述测试日志中包括统计的错误信息和测试任务标识。
在一种可能的实施方式中,所述测试模块43还用于:
针对所述测试任务,获取不同的所述插件配置信息分别对应的所述测试日志;根据所述测试日志,确定该测试任务对应的资源服务器承载的最大在线客户端数量;其中,不同的插件配置信息中包括的所述在线客户端数量不同。
在一种可能的实施方式中,所述在线客户端操作信息中包括插件与资源服务器之间的连接方式信息,其中,各个任务分工对应的所述连接方式信息与各个任务分工对应的实时性要求信息和/或交互信息类型相关;
所述测试模块43具体用于:
按照各个任务分工对应的所述连接方式信息,建立所述插件与资源服务器之间的连接,以便基于建立的连接,实现插件与资源服务器之间的交互操作。
在一种可能的实施方式中,针对任一任务分工,若该任务分工对应的交互信息类型为音视频,该任务分工对应的连接方式包括实时通信RTC连接;
若该任务分工对应的交互信息类型不是音视频,且具有实时性要求,该任务分工对应的连接方式包括长连接;
若该任务分工对应的交互信息类型不是音视频,且不具有实时性要求,该任务分工对应的连接方式包括短连接。
在一种可能的实施方式中,针对任一任务分工,若该任务分工对应的连接方式包括所述长连接,则所述长连接用于资源服务器向插件主动发起交互信息的情况;所述测试模块43具体用于:在运行执行该任务分工的插件时,控制该插件接收资源服务器通过所述长连接主动下发的交互信息;若该任务分工对应的连接方式包括所述短连接,则所述短连接用于插件向资源服务器主动发起请求、资源服务器响应插件的请求向插件返回交互信息的情况;所述测试模块43具体用于:在运行执行该任务分工的插件时,控制该插件基于短连接,周期性或者按照设定时间点向资源服务器请求获取交互信息,或者,控制该插件基于短连接,周期性或者按照设定时间点主动向资源服务器发送交互信息。
如图5所示,本公开实施例提供一种计算机设备,包括:处理器51、存储器52和总线53,所述存储器52存储有所述处理器51可执行的机器可读指令,当计算机设备运行时,所述处理器51与所述存储器52之间通过总线53通信,所述机器可读指令被所述处理器51执行时执行上述测试方法的步骤,这里不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述测试方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的在线教学测试方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的测试方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开保护范围应所述以权利要求的保护范围为准。