发明内容
本公开提供了一种性能测试方法、性能测试装置、计算机可读存储介质与电子设备,进而至少在一定程度上改善现有技术中系统性能分析效率较低的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种性能测试方法,应用于性能测试系统中的应用服务器,所述性能测试系统还包括数据库、调度服务器和测试服务器;所述方法包括:获取多个性能测试任务;将所述性能测试任务发送至所述数据库,再经过所述调度服务器到达所述测试服务器,使所述测试服务器运行所述测试任务并得到测试结果;响应于用户在所述多个性能测试任务中选择至少一个目标任务,从所述数据库获取所述目标任务的测试结果;根据所述目标任务的测试结果生成性能分析报告。
在本公开的一种示例性实施方式中,所述测试结果包括测试报告;所述根据所述目标任务的测试结果生成性能分析报告,包括:在所述目标任务的测试报告中,解析并爬取预设字段的测试数据;汇总所述测试数据,生成对应的图表,以得到可视化分析报告。
在本公开的一种示例性实施方式中,所述测试报告为基于超文本标记语言的报告。
在本公开的一种示例性实施方式中,所述测试结果包括测试数据;所述根据所述目标任务的测试结果生成性能分析报告,包括:汇总所述测试数据,生成对应的图表,以得到可视化分析报告。
在本公开的一种示例性实施方式中,所述测试数据为基于JS对象简谱的数据。
在本公开的一种示例性实施方式中,在得到可视化分析报告后,所述方法还包括:根据所述可视化分析报告,确定系统性能的关键点;所述关键点包括以下任意一种或多种:性能最优点、拐点、压力点、极值点。
根据本公开的第二方面,提供一种性能测试方法,应用于性能测试系统中的调度服务器,所述性能测试系统还包括应用服务器、数据库和测试服务器;所述方法包括:从所述数据库获取多个性能测试任务,所述多个性能测试任务由所述应用服务器发送至所述数据库;将各所述性能测试任务分别发送至所述测试服务器,以在所述测试服务器上运行各所述性能测试任务;从所述测试服务器接收各所述测试任务的测试结果;将所述测试结果发送至所述数据库,使所述应用服务器通过读取所述测试结果生成性能分析报告。
在本公开的一种示例性实施方式中,所述从所述数据库获取多个性能测试任务,包括:监听所述数据库;当所述数据库增加新的性能测试任务时,获取所述性能测试任务。
在本公开的一种示例性实施方式中,所述性能测试系统包括多个测试服务器;所述将各所述性能测试任务分别发送至所述测试服务器,包括:根据各所述性能测试任务的测试类型,将各所述性能测试任务分别发送至对应的测试服务器。
在本公开的一种示例性实施方式中,所述将各所述性能测试任务分别发送至所述测试服务器,包括:通过调用所述测试服务器的接口,将所述性能测试任务和测试执行参数传输至所述测试服务器。
根据本公开的第三方面,提供一种性能测试装置,应用于性能测试系统中的应用服务器,所述性能测试系统还包括数据库、调度服务器和测试服务器;所述装置包括:第一获取模块,用于获取多个性能测试任务;发送模块,用于将所述性能测试任务发送至所述数据库,再经过所述调度服务器到达所述测试服务器,使所述测试服务器运行所述测试任务并得到测试结果;第二获取模块,用于响应于用户在所述多个性能测试任务中选择至少一个目标任务,从所述数据库获取所述目标任务的测试结果;生成模块,用于根据所述目标任务的测试结果生成性能分析报告。
在本公开的一种示例性实施方式中,所述测试结果包括测试报告;所述生成装置通过执行以下方法,得到可视化分析报告:在所述目标任务的测试报告中,解析并爬取预设字段的测试数据;汇总所述测试数据,生成对应的图表,以得到可视化分析报告。
在本公开的一种示例性实施方式中,所述测试报告为基于超文本标记语言的报告。
在本公开的一种示例性实施方式中,所述测试结果包括测试数据;所述生成模块用于汇总所述测试数据,生成对应的图表,以得到可视化分析报告。
在本公开的一种示例性实施方式中,所述测试数据为基于JS对象简谱的数据。
在本公开的一种示例性实施方式中,在得到可视化分析报告后,所述生成模块还用于:根据所述可视化分析报告,确定系统性能的关键点;所述关键点包括以下任意一种或多种:性能最优点、拐点、压力点、极值点。
根据本公开的第四方面,提供一种性能测试装置,应用于性能测试系统中的调度服务器,所述性能测试系统还包括应用服务器、数据库和测试服务器;所述装置包括:获取模块,用于从所述数据库获取多个性能测试任务,所述多个性能测试任务由所述应用服务器发送至所述数据库;第一发送模块,用于将各所述性能测试任务分别发送至所述测试服务器,以在所述测试服务器上运行各所述性能测试任务;接收模块,用于从所述测试服务器接收各所述测试任务的测试结果;第二发送模块,用于将所述测试结果发送至所述数据库,使所述应用服务器通过读取所述测试结果生成性能分析报告。
在本公开的一种示例性实施方式中,所述获取模块通过执行以下方法,获取所述性能测试任务:监听所述数据库;当所述数据库增加新的性能测试任务时,获取所述性能测试任务。
在本公开的一种示例性实施方式中,所述性能测试系统包括多个测试服务器;所述第一发送模块用于根据各所述性能测试任务的测试类型,将各所述性能测试任务分别发送至对应的测试服务器。
在本公开的一种示例性实施方式中,所述第一发送模块,还用于通过调用所述测试服务器的接口,将所述性能测试任务和测试执行参数传输至所述测试服务器。
根据本公开的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意性能测试方法。
根据本公开的第六方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种性能测试方法。
本公开具有以下有益效果:
根据本公开示例性实施方式提出的性能测试方法,可以通过将数据库中的性能测试任务由调度服务器发送至测试服务器,以在测试服务器上运行各性能测试任务,并得到测试结果,当用户选择相应的测试任务时,获取该测试任务对应的测试结果,生成关于测试服务器性能的性能分析报告。一方面,本示例性实施方式通过将性能测试过程和分析报告过程结合,实现了性能测试及分析方法的一体化,并且测试及分析过程均为自动化实现,提高了对系统性能的分析效率,相应地也在较大程度上减少了测试人员的工作量;另一方面,本示例性实施方式通过在应用服务器和调度服务器之间设置数据库,简化了从数据库读写数据的路径,提高了性能测试中获取测试任务和数据的速度,因此进一步提高了性能测试方法的测试效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统性能进行测试,并由测试人员对测试得到的系统性能数据进行分析,从而确定系统的各项性能指标的过程。按照调用量可以将性能测试划分为有预估量的性能测试和无预估量的性能测试,对于有预估量的性能测试,可直接将测试量设置为预估的请求量,进行测试,而对于无预估量的性能测试,需要测试人员通过设置多组压测线程数,通过测试的结果来确定系统是否已经达到瓶颈,而增加测试量或对系统性能进行预估等。此外,在得到测试数据后,系统的最优点、拐点等也需要测试人员耗费大量的时间进行确定。
鉴于前述的一个或多个问题,本公开的示例性实施方式首先提供了一种性能测试方法,该方法可以应用于性能测试系统中的应用服务器。图1示出了本示例性实施方式的一种系统架构示意图,如图所示,系统架构100可以包括:应用服务器110、数据库120、调度服务器130、测试服务器140及客户端150。其中,应用服务器110可以通过协议把业务逻辑曝露给客户端的程序代码,可以通过提供Web服务将性能测试任务的参数传递给数据库120;数据库120可以用于存储性能测试的相关数据,例如可以包括性能测试工具的参数、测试任务数据及测试结果数据等;调度服务器130可以用于资源调配、任务管理等,例如根据性能测试任务的类型或测试服务器的负载量等将测试任务发送至对应的测试服务器;测试服务器140也就是被测服务所在的服务器,通常封装有测试工具,可以用于执行测试任务;客户端150可以用于配置测试任务等,例如可以是性能测试软件、Web端的性能测试系统等。应该理解,图1中的服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务器,也就是说,应用服务器110、调度服务器130和测试服务器140均可以是多个服务器组成的服务器集群等。
下面分别从应用服务器110和调度服务器130两个方面,对本示例性实施方式的性能测试方法进行详述:
图2示出了由应用服务器110执行的性能测试方法的流程图,可以包括以下步骤S210~S240:
步骤S210.获取多个性能测试任务。
其中,性能测试任务可以是设置了一定负载条件的测试内容,例如测试任务可以是在一定线程数量,也就是并发用户数量下确定系统CPU(Central Processing Unit,中央处理器)使用率等系统性能指标。
用户可以在客户端,如性能测试软件中根据业务场景和需求等设置多组性能测试任务,以地铁站进站系统为例,每组测试任务可以设置相应的线程数,即用户数、响应时间等,将刷卡机检验一次的时间设置为1S,乘客等待时间设置为不超过15分钟,并且分别将每组测试任务中的用户数设置为从5开始递增的等差数列值等。在配置完成后,每组测试任务可以作为一个测试文件,分别将每个测试文件发送至应用服务器,以使应用服务器获得性能测试任务。
通常,在应用服务器接收到性能测试任务后,可以将性能测试任务按照其内容或类型等存储在数据库中,在获取性能测试任务时,应用服务器可以通过其查询索引,如类型等信息在数据库查询并读取,以获取多个性能测试任务。由于系统的负载情况通常会影响系统的运行性能,并且系统负载量通常随客户端的使用情况而变化,因此,一个类型的性能测试任务通常也可以包括多个,其性能测试任务可以按照相应的顺序进行标记,按照测试任务的类型可以在数据库中获取该类型的全部性能测试任务,也可以通过标记信息查询该类型的部分性能测试任务。
步骤S220.将性能测试任务发送至数据库,再经过调度服务器到达测试服务器,使测试服务器运行测试任务并得到测试结果。
当应用服务器接收到性能测试任务后,可以通过发送指令启动数据库,并与数据库建立连接,从而将性能测试任务发送至数据库,由数据库统一存储各测试项目的性能测试任务。通常,一个测试服务器可以执行一种类型的测试任务,也就是说数据库中的性能测试任务可以对应不同的测试服务器,因此,在将性能测试任务发送至数据库后,调度服务器可以按照相应的连接方式与数据库建立连接,并从数据库中获取一个或多个测试项目对应的性能测试任务,例如在数据库中,各测试项目可以按照项目编号存储,如Project1、Project2等,各测试任务可以按照任务编号,如Task1、Task2等进行存储,调度服务器可以根据其项目编号和任务编号读取对应的性能测试任务;在获取性能测试任务后,调度服务器可以与测试服务器建立连接,以Socket连接模式为例,测试服务器可以监听调度服务器的网络状态,并在接收到调度服务器的连接请求时,获取其连接请求中的套接字信息,从而解析出调度服务器套接字的地址和端口号,进而建立新的线程,将测试服务器的套接字信息发送给调度服务器,在调度服务器确认其套接字信息时建立与测试服务器的连接。在建立连接后,测试服务器可以向调度服务器发送其测试任务执行状态和任务队列等信息,以使调度服务器根据测试任务执行状态和任务队列等信息将性能测试任务发送至对应的测试服务器,例如:当调度服务器确认测试服务器中任务执行状态为正常,且其任务队列数量小于队列阈值时,确定测试服务器可以正常接收测试任务,因此可以将相应数量的性能测试任务发送至测试服务器。
测试任务的整个处理过程可以是动态的,即在测试任务处理过程中,各服务器和数据库可以保持在线状态,具体的,在一种可选的实施方式中,调度服务器可以监听数据库,当数据库中增加新的性能测试任务时,可以通过与数据库的连接获取新的性能测试任务,并将其发送至对应的测试服务器中以等待服务器执行。
此外,在将各性能测试任务分别发送至测试服务器时,本示例性实施方式可以通过调用测试服务器的接口,将性能测试任务和测试执行参数等传输至测试服务器。
其中,测试服务器的接口也可以称为端口,可以是物理接口,也可以是应用程序接口等;测试执行参数可以是测试任务执行的参数,例如线程数、Ramp-Up Period(启动时间)、循环次数等。
在将各性能测试任务分别发送至测试服务器时,可以根据性能测试任务的内容、类型或测试服务器的类型等调用测试服务器的对应接口,例如可以通过数据库的共享接口将性能测试任务和其测试执行参数等传输至测试服务器。需要说明的是,上述通过调用测试服务器接口将性能测试任务和测试执行参数等传输至测试服务器的方法仅作为示例性说明,不应对本公开的范围带来任何限制。
在将性能测试任务发送至对应的测试服务器后,测试服务器可以运行性能测试任务并得到对应性能测试任务的测试结果,并通过与调度服务器的连接将测试结果返回至调度服务器,调度服务器可以对测试结果的数据进行解析和处理,例如将封装在测试结果数据中的地址信息删除、转换测试结果的数据格式等,以将测试结果发送至数据库。
本示例性实施方式中,可以根据实际测试环境、客户端的需求等设置测试结果的具体类型与形式。下面提供关于测试结果类型的两种具体示例,但应当理解,下述内容不应对本公开的保护范围造成限定:
类型一测试结果为测试报告,测试报告是指根据测试结果生成的测试文档,可以包括测试过程和测试结果,可以包括多种格式,以HTML(HyperText Markup Language,超文本标记语言)为例,其文本语言是由HTML命令组成的描述性文本,可以用于表示数据、图表等。在生成测试结果时,可以通过配置HTML生成文件,自动生成测试报告。
类型二测试结果为测试数据,也就是说测试结果可以是执行测试任务得到的性能数据,以JSON(JavaScript Object Notation,JS对象简谱)格式数据为例,该格式是一种轻量级的数据交换格式,各测试任务对应的测试数据可以按照预设字段存储在文本中,例如:测试数据可以按照“名称/值”对的集合或值的有序列表来表示,如{“响应时间”:“5S”},将每个测试任务得到的结果转换为该类型的集合或列表,则可以得到关于性能测试任务的测试数据。
步骤S230.响应于用户在多个性能测试任务中选择至少一个目标任务,从数据库获取目标任务的测试结果。
其中,目标任务可以是用户在应用服务器上的性能测试任务中选择的一个或多个测试任务;测试结果是指系统执行某个测试任务得到的结果,例如测试任务是在一定负载条件下,确定系统的性能指标,相应的,其测试结果可以包括在上述负载条件下,系统的各项性能指标对应的数值。
在完成性能测试任务后,各性能测试任务对应的测试结果可以存储在数据库中,当应用服务器接收到用户在性能测试任务中选择一个或多个目标任务的指令时,可以从数据库中读取目标任务对应的测试结果,例如可以按照目标任务的任务索引,在数据库中查找并获取目标任务对应的测试结果。
参考图3所示,用户可以在客户端通过checkbox(复选框)选择目标任务,如图中在左侧的方框内通过“√”选择了任务1至任务4,在用户完成选择后,客户端可以将用户选择的目标任务信息发送至应用服务器,应用服务器通过调用服务器后端的接口将各任务的ID(Identity Document,唯一标识)参数传递至其相应的查询模块,使其可以根据各任务的ID从数据库中查找对应的测试结果信息,如JSON格式测试数据中的字段和数值信息。在查找到对应的测试结果信息后,应用服务器可以对其进行解析、汇总等,以生成可视化的图表数据,即可视化分析报告,最后由应用服务器的后端将该可视化分析报告返回至用户所在的客户端。
步骤S240.根据目标任务的测试结果生成性能分析报告。
在获取目标任务的测试结果后,通过解析测试结果中的性能数据,可以生成关于目标任务的性能分析报告。
针对不同类型的测试结果,生成性能分析报告的方式可能也不同。下面分别针对上述两种类型的测试结果,说明如何生成性能分析报告。
(1)当测试结果为测试报告时,步骤S240生成性能分析报告的方法可以通过以下方式实现:
在目标任务的测试报告中,解析并爬取预设字段的测试数据;
汇总测试数据,生成对应的图表,以得到可视化分析报告。
其中,预设字段是指测试任务和测试结果中的关键字段,可以用于表示测试任务中的各个测试因子,如线程数量等和测试结果中各系统性能指标,如系统响应时间等。
由于测试结果是对应于每个性能测试任务的,因此测试报告中的数据一般包括测试任务中各测试因子的数据和其对应的系统性能指标的数据,通过获取预设字段对应的测试数据,可以按照预设字段,汇总各预设字段对应的系统性能数据,生成关于测试任务和测试结果的图表数据,通过各图表数据则得到关于性能测试任务的可视化分析报告。
测试报告可以包括多种格式,以上述HTML格式的测试报告为例,可以在测试报告中查询预设字段的位置,以获取预设字段对应的数值,从而得到测试报告对应的测试数据,例如:获取测试报告中的CPU使用率,通过解析HTML格式的测试报告中全部CPU字段的数据,计算生成每个测试任务中CPU使用率的平均值,从而生成CPU使用率折线图,其中,折线图中X轴可以是任务维度,Y轴可以是CPU使用率,进一步的,按照这样的方式还可以生成响应时间折线图、资源利用率折线图、TPS(Transactions Per Second,吞吐量)折线图、网络吞吐量折线图等,根据上述图表数据可以得到可视化分析报告。
(2)当测试结果为测试数据时,步骤S240生成性能分析报告的方法可以通过以下方式实现:
汇总测试数据,生成对应的图表,以得到可视化分析报告。
当测试结果为测试数据时,可以直接将测试数据按照其预设字段进行汇总,可以得到全部性能测试任务对应的测试数据,根据全部测试数据生成的图表可以作为性能测试任务得到的可视化分析报告,例如:可以读取JSON数据中“{名称1/值}”对中名称1对应的字段数据,得到测试数据中关于名称1的全部结果数据,对其进行汇总,生成可视化的图表文件,并将其作为性能测试任务对应的可视化分析报告。
在得到可视化分析报告后,可以根据可视化报告确定上述性能测试任务中测试服务器的各系统性能的关键点,例如性能最优点、拐点、压力点、极值点等。其中,性能最优点可以是系统在负载量较大的情况下响应时间最短的性能点;拐点可以是每个系统性能指标开始突变的性能点,例如在响应时间-负载的曲线图中,其拐点通常意味着系统的一种或多种资源使用达到了极限;压力点可以是系统性能指标开始相反方向变化的性能点;极值点可以是系统性能指标曲线图中极大值点或极小值点。
根据可视化报告,可以直观地确定在不同测试条件下的系统性能变化,例如:在不同并发用户数量下,根据测试服务器的响应时间确定测试服务器的最大负载量等,从而可以帮助测试人员更快地确定系统性能的变化,为开发人员进一步优化系统提供了有力的技术支撑。
图4示出了由调度服务器130执行的性能测试方法的流程图,可以包括以下步骤S410~S440:
步骤S410.从数据库获取多个性能测试任务,上述多个性能测试任务由应用服务器发送至数据库。
在接收到性能测试任务后,调度服务器可以通过解析性能测试任务的任务数据,如测试用例的数量、并发用户数等发送至测试服务器,同时,调度服务器还可以监听数据库中是否有新增的性能测试任务,在有新增的性能测试任务时在数据库中获取新增的性能测试任务。此外,在监听数据库时,可以设置一定时间间隔,在到达时间间隔时,通过调度服务器发送查询请求以获取是否新增性能测试任务,并在新增性能测试任务时获取该性能测试任务。
步骤S420.将各性能测试任务分别发送至测试服务器,以在测试服务器上运行各性能测试任务。
在实践过程中,数据库可以存储多种类型的性能测试任务,调度服务器可以将各性能测试任务分别发送至对应的测试服务器,以使各测试服务器可以执行对应的性能测试任务。在一种可选的实施方式中,性能测试系统可以包括多个测试服务器,由此步骤S420可以通过以下方式执行:
根据各性能测试任务的测试类型,将各性能测试任务分别发送至对应的测试服务器。
其中,各性能测试任务的测试类型可以包括压力测试、负载测试、并发测试、稳定性测试等。每个测试服务器可以执行一种或多种类型的性能测试任务,因此可以根据各性能测试任务的测试类型,将各性能测试任务分别发送至对应的测试服务器。
在一种可选的实施方式中,在将性能测试任务发送至对应的测试服务器时,可以通过调用测试服务器的接口,将性能测试任务和测试执行参数等传输至测试服务器。
其中,测试服务器的接口也可以称为端口,可以是物理接口,也可以是应用程序接口等;测试执行参数可以是测试任务执行的参数,例如线程数、Ramp-Up Period(启动时间)、循环次数等。
在将各性能测试任务分别发送至测试服务器时,也可以根据性能测试任务的内容、类型或测试服务器的类型等调用测试服务器的对应接口,例如可以通过数据库的共享接口将性能测试任务和其测试执行参数等传输至测试服务器。
步骤S430.从测试服务器接收各测试任务的测试结果。
在测试服务器执行完测试任务时,调度服务器可以接收测试任务得到的测试结果,该测试结果可以是测试报告,也可以是一定格式的测试数据等。
步骤S440.将测试结果发送至数据库,使应用服务器通过读取测试结果生成性能分析报告。
由调度服务器将测试结果发送至数据库,由数据库存储,当用户在应用服务器上选择了对应的性能测试任务时,可以相应地在数据库中读取性能测试任务对应的测试结果,例如通过解析得到测试结果中的测试数据,并对测试数据进行分析,从而生成一个或多个性能测试任务对应的系统性能分析报告。
图5示出了本示例性实施方式中一种性能测试方法的交互示意图,可以包括以下步骤S510~S590:
步骤S510.应用服务器获取多个性能测试任务。
步骤S520.应用服务器将多个性能测试任务发送至数据库,由数据库统一存储各性能测试任务。
步骤S530.通过调度服务器读取数据库中的性能测试任务,以获取性能测试任务。
步骤S540.调度服务器将性能测试任务发送至对应的测试服务器。
其中,测试服务器通常可以配置相应的测试环境,以处理接收到的性能测试任务。
调度服务器从数据库中读取各测试服务器对应的性能测试任务,按照各性能测试任务的类型等信息将其分别发送至对应的测试服务器。另外,调度服务器还通过向应用服务器发送查询请求,确定应用服务器中是否有新增的性能测试任务,在确定有新增的性能测试任务时,可以将新增的性能测试任务发送至测试服务器的任务执行队列中。
步骤S550.测试服务器执行性能测试任务。
测试服务器通过读取任务队列中的性能测试任务,获取测试执行参数等数据,并按照测试执行参数等数据依次执行任务执行队列中的各性能测试任务。
步骤S560.测试服务器将性能测试任务的测试结果发送至调度服务器。
其中,测试结果可以是某种格式的测试报告,也可以是测试任务得到的测试数据等。
步骤S570.调度服务器将性能测试任务的测试结果返回至应用服务器。
步骤S580.应用服务器响应于用户选择性能测试任务中的目标任务,在数据库中获取目标任务的测试结果。
当用户选择了一定数量的性能测试任务,即目标任务时,应用服务器可以在数据库中根据目标任务的类型或主键信息等获取目标任务对应的测试结果。
步骤S590.应用服务器通过读取测试结果生成性能分析报告。
在获取测试结果后,应用服务器可以通过解析预设字段等方式读取测试结果中的测试数据,对其进行汇总、分析,从而生成性能分析报告。
综上所述,根据本公开示例性实施方式提出的性能测试方法,可以通过将数据库中的性能测试任务由调度服务器发送至测试服务器,以在测试服务器上运行各性能测试任务,并得到测试结果,当用户选择相应的测试任务时,获取该测试任务对应的测试结果,生成关于测试服务器性能的性能分析报告。一方面,本示例性实施方式通过将性能测试过程和分析报告过程结合,实现了性能测试及分析方法的一体化,并且测试及分析过程均为自动化实现,提高了对系统性能的分析效率,相应地也在较大程度上减少了测试人员的工作量;另一方面,本示例性实施方式通过在应用服务器和调度服务器之间设置数据库,简化了从数据库读写数据的路径,提高了性能测试中获取测试任务和数据的速度,因此进一步提高了性能测试方法的测试效率。
本示例性实施方式还提供了一种性能测试装置600,该装置可以应用于性能测试系统中的应用服务器,性能测试系统还包括数据库、调度服务器和测试服务器;参考图6所示,性能测试装置600装置可以包括:第一获取模块610,可以用于获取多个性能测试任务;发送模块620,可以用于将性能测试任务发送至数据库,再经过调度服务器到达测试服务器,使测试服务器运行测试任务并得到测试结果;第二获取模块630,可以用于响应于用户在多个性能测试任务中选择至少一个目标任务,从数据库获取目标任务的测试结果;生成模块640,可以用于根据目标任务的测试结果生成性能分析报告。
在本公开的一种示例性实施方式中,测试结果可以包括测试报告;生成装置640可以通过执行以下方法,得到可视化分析报告:在目标任务的测试报告中,解析并爬取预设字段的测试数据;汇总测试数据,生成对应的图表。
在本公开的一种示例性实施方式中,测试报告为基于超文本标记语言的报告。
在本公开的一种示例性实施方式中,测试结果包括测试数据;生成模块640还可以用于汇总测试数据,生成对应的图表,以得到可视化分析报告。
在本公开的一种示例性实施方式中,测试数据为基于JS对象简谱的数据。
在本公开的一种示例性实施方式中,在得到可视化分析报告后,生成模块640还可以用于:根据可视化分析报告,确定系统性能的关键点;关键点包括以下任意一种或多种:性能最优点、拐点、压力点、极值点。
进一步的,本公开的示例性实施方式还提供了另一种性能测试装置700,可以应用于性能测试系统中的调度服务器,性能测试系统还包括应用服务器、数据库和测试服务器;参考图7所示,性能测试装置700可以包括:获取模块710,可以用于从数据库获取多个性能测试任务,多个性能测试任务由应用服务器发送至数据库;第一发送模块720,可以用于将各性能测试任务分别发送至测试服务器,以在测试服务器上运行各性能测试任务;接收模块730,可以用于从测试服务器接收各测试任务的测试结果;第二发送模块740,可以用于将测试结果发送至数据库,使应用服务器通过读取测试结果生成性能分析报告。
在本公开的一种示例性实施方式中,获取模块710可以通过执行以下方法,获取性能测试任务:监听数据库;当数据库增加新的性能测试任务时。
在本公开的一种示例性实施方式中,性能测试系统可以包括多个测试服务器;第一发送模块720可以用于根据各性能测试任务的测试类型,将各性能测试任务分别发送至对应的测试服务器。
在本公开的一种示例性实施方式中,第一发送模块720还可以用于通过调用测试服务器的接口,将性能测试任务和测试执行参数传输至测试服务器。
上述装置中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的方案细节内容可以参见方法部分的实施方式内容,因而不再赘述。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
参考图8所示,描述了根据本公开的示例性实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品800可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施方式还提供了一种能够实现上述方法的电子设备。下面参照图9来描述根据本公开的这种示例性实施方式的电子设备900。图9显示的电子设备900仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图9所示,电子设备900可以以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930和显示单元940。
其中,存储单元920存储有程序代码,程序代码可以被处理单元910执行,使得处理单元910执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元910可以执行图2、图4或图5所示的方法步骤等。
存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)921和/或高速缓存存储单元922,还可以进一步包括只读存储单元(ROM)923。
存储单元920还可以包括具有一组(至少一个)程序模块925的程序/实用工具924,这样的程序模块925包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备900也可以与一个或多个外部设备1000(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备900交互的设备通信,和/或与使得该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口950进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例性实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开示例性实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。