CN110716854A - 代码性能测试方法、装置、计算机设备和存储介质 - Google Patents
代码性能测试方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110716854A CN110716854A CN201910749083.7A CN201910749083A CN110716854A CN 110716854 A CN110716854 A CN 110716854A CN 201910749083 A CN201910749083 A CN 201910749083A CN 110716854 A CN110716854 A CN 110716854A
- Authority
- CN
- China
- Prior art keywords
- anchor point
- function
- monitoring
- performance
- ending
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 56
- 238000012544 monitoring process Methods 0.000 claims abstract description 252
- 238000013515 script Methods 0.000 claims abstract description 155
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000011056 performance test Methods 0.000 claims abstract description 41
- 230000001960 triggered effect Effects 0.000 claims abstract description 41
- 238000009434 installation Methods 0.000 claims abstract description 38
- 230000006870 function Effects 0.000 claims description 269
- 238000004590 computer program Methods 0.000 claims description 24
- 238000011161 development Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011179 visual inspection Methods 0.000 description 1
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/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种代码性能测试方法、装置、计算机设备和存储介质。所述方法包括:接收性能监控插件的安装指令;根据安装指令读取性能监控插件的配置信息,并从配置信息中确定待监控文件目录;扫描待监控文件目录下的脚本文件,获取脚本文件中的函数块,并在函数起始符号的下一位置插入起始监控锚点,在函数结束符号前一位置插入结束监控锚点;当起始监控锚点或结束监控锚点被触发时,调用起始监控锚点或结束监控锚点所链接的性能测试脚本生成性能数据。采用本方法实现以性能监控插件的形式引入至React框架项目中,在进行测试包打包的时候,自动生成用于监控代码性能的性能监控锚点,实现对React项目的开发代码中的代码性能的监控,减轻开发者的编码负担。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种代码性能测试方法、装置、 计算机设备和存储介质。
背景技术
目前,行业内对于项目中每个函数的性能监控,例如函数调用耗时的计算 等,往往都需要开发人员在待监控的函数的开始位置和结束位置写入监控代码, 以实现对函数方法的性能测试。传统的代码性能测试方法需要开发人员在源代 码中手动加入大量的性能监控代码,耗费大量的开发时间,且增加了源代码的 复杂性,导致源代码可读性降低。
发明内容
基于此,有必要针对上述技术问题,提供一种代码性能测试方法、装置、 计算机设备和存储介质。
一种代码性能测试方法,所述方法包括:
接收性能监控插件的安装指令;
根据所述安装指令读取性能监控插件的配置信息,并从所述配置信息中确 定待监控文件目录;
扫描所述待监控文件目录下的脚本文件,获取所述脚本文件中的函数块;
对所述函数块进行扫描,当识别到所述函数块的函数起始符号,在所述函 数起始符号的下一位置插入起始监控锚点,当识别到所述函数块的函数结束符 号,在所述函数结束符号前一位置插入结束监控锚点;
当所述起始监控锚点或所述结束监控锚点被触发时,调用所述起始监控锚 点或所述结束监控锚点所链接的性能测试脚本生成性能数据。
在其中一个实施例中,所述获取所述脚本文件中的函数块的步骤之后,还 包括:
确定所述脚本文件的脚本文件名,并获取所述函数块的函数名以及所述函 数块在所述脚本文件中的位置信息;
根据所述脚本文件名、所述函数名以及所述位置信息生成与所述函数块对 应的标识信息;
将所述标识信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚 点。
在其中一个实施例中,所述当所述起始监控锚点或所述结束监控锚点被触 发时,调用所述述起始监控锚点或所述结束监控锚点所链接的性能测试脚本生 成性能数据的步骤,包括:
当触发到所述起始监控锚点,通过所述起始监控锚点所链接的性能测试脚 本生成起始时间戳;
当触发到所述结束监控锚点,通过所述结束监控锚点所链接的性能测试脚 本生成结束时间戳;
根据所述起始时间戳以及所述结束时间戳计算函数执行时长;
将所述起始时间戳、所述结束时间戳以及所述函数执行时长确定为性能数 据。
在其中一个实施例中,所述扫描所述待监控文件目录下的脚本文件,获取 所述脚本文件中的函数块的步骤,包括:
从所述配置文件中确定目标函数名;
扫描待监控文件目录下的脚本文件,获取脚本文件中函数名为所述目标函 数名的函数块。
在其中一个实施例中,所述调用所述述起始监控锚点或所述结束监控锚点 所链接的性能测试脚本生成性能数据的步骤之后,还包括:
从所述配置信息中获取上传接口地址;
根据所述上传接口地址确定目标上传接口,通过所述目标上传接口上传所 述性能数据至服务器中。
一种代码性能测试装置,所述装置包括:
安装指令接收模块,用于接收性能监控插件的安装指令;
配置信息读取模块,用于根据所述安装指令读取性能监控插件的配置信息, 并从所述配置信息中确定待监控文件目录;
函数块获取模块,用于扫描所述待监控文件目录下的脚本文件,获取所述 脚本文件中的函数块;
锚点插入模块,用于对所述函数块进行扫描,当识别到所述函数块的函数 起始符号,在所述函数起始符号的下一位置插入起始监控锚点,当识别到所述 函数块的函数结束符号,在所述函数结束符号前一位置插入结束监控锚点;
性能数据生成模块,用于当所述起始监控锚点或所述结束监控锚点被触发 时,调用所述起始监控锚点或所述结束监控锚点所链接的性能测试脚本生成性 能数据。
在其中一个实施例中,所述代码性能测试装置还包括性能监控锚点生成模 块,用于确定所述脚本文件的脚本文件名,并获取所述函数块的函数名以及在 所述脚本文件中的位置信息;根据所述脚本文件名、所述函数名以及所述位置 信息生成与所述函数块对应的标识信息;将所述标识信息作为锚点函数的入参, 生成起始监控锚点以及结束监控锚点。
在其中一个实施例中,所述性能数据生成模块,用于当触发到所述起始监 控锚点,通过所述起始监控锚点所链接的性能测试脚本生成起始时间戳;当触 发到所述结束监控锚点,通过所述结束监控锚点所链接的性能测试脚本生成结 束时间戳;根据所述起始时间戳以及所述结束时间戳计算函数执行时长;将所 述起始时间戳、所述结束时间戳以及所述函数执行时长确定为性能数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序, 所述处理器执行所述计算机程序时实现以下步骤:
接收性能监控插件的安装指令;
根据所述安装指令读取性能监控插件的配置信息,并从所述配置信息中确 定待监控文件目录;
扫描所述待监控文件目录下的脚本文件,获取所述脚本文件中的函数块;
对所述函数块进行扫描,当识别到所述函数块的函数起始符号,在所述函 数起始符号的下一位置插入起始监控锚点,当识别到所述函数块的函数结束符 号,在所述函数结束符号前一位置插入结束监控锚点;
当所述起始监控锚点或所述结束监控锚点被触发时,调用所述起始监控锚 点或所述结束监控锚点所链接的性能测试脚本生成性能数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处 理器执行时实现以下步骤:
接收性能监控插件的安装指令;
根据所述安装指令读取性能监控插件的配置信息,并从所述配置信息中确 定待监控文件目录;
扫描所述待监控文件目录下的脚本文件,获取所述脚本文件中的函数块;
对所述函数块进行扫描,当识别到所述函数块的函数起始符号,在所述函 数起始符号的下一位置插入起始监控锚点,当识别到所述函数块的函数结束符 号,在所述函数结束符号前一位置插入结束监控锚点;
当所述起始监控锚点或所述结束监控锚点被触发时,调用所述起始监控锚 点或所述结束监控锚点所链接的性能测试脚本生成性能数据。
上述代码性能测试方法、装置、计算机设备和存储介质,在接收到性能监 控插件的安装指令后,根据安装指令读取性能监控插件的配置信息,并从配置 信息中确定待监控文件目录,从而获取待监控文件目录下的脚本文件,并在脚 本文件中的函数块的预设位置中插入起始监控锚点或结束监控锚点等性能监控 锚点,当性能监控锚点被触发,调用性能监控锚点所链接的性能测试脚本,生 成性能数据,实现以性能监控插件的形式引入至基于React框架的项目中,在进 行测试包打包的时候,自动生成用于监控代码性能的性能监控锚点实现对代码 性能的监控,无需开发人员手动编写性能监控代码,减轻开发人员的编码负担, 且在开发过程中开发的源码是没有埋点数据的,与业务程序完全解耦,降低了 代码复杂度,在后续上线的生产包也没有注入埋点,不影响业务代码的执行以 及运行性能。
附图说明
图1为一个实施例中代码性能测试方法的应用场景图;
图2为一个实施例中代码性能测试方法的流程示意图;
图3为另一个实施例中代码性能测试方法的流程示意图;
图4为一个实施例中代码性能测试装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅 用以解释本申请,并不用于限定本申请。
本申请提供的代码性能测试方法,可以应用于如图1所示的应用环境中。 其中,该计算机设备可以是终端,其内部结构图可以如图1所示。该计算机设 备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。 其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储 器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和 计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运 行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。 该计算机程序被处理器执行时以实现一种代码性能测试方法。该计算机设备的 显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以 是显示屏上覆盖的触摸层,也可以是外接的键盘、触控板或鼠标等。
在一个实施例中,如图2所示,提供了一种代码性能测试方法,以该方法 应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S210:接收性能监控插件的安装指令。
性能监控插件是一个预先封装好的、独立的JavaScript语言文件包,开发人 员可以事先在React项目中导入该性能监控插件的插件包;在进行React项目测 试时,往往需要对React项目进行测试包打包,此时,开发人员操作触发性能监 控插件的安装指令发送至服务器中,服务器在接收到安装指令后,响应该安装 指令进行性能监控插件安装。
步骤S220:根据安装指令读取性能监控插件的配置信息,并从配置信息中 确定待监控文件目录。
本步骤中,待监控文件目录是指需要进行性能监控的函数文件或脚本文件 所在的文件目录,可以是React项目的根目录,也可以是某个被指定监控的文件 目录;配置信息是指性能监控插件安装、运行过程中需要用到的各类信息,例 如包括待监控文件目录、性能监控所生成的性能数据的上传接口等数据信息等, 配置信息可以由开发人员自定义设置,以实现自定义指定需要测试的函数或脚 本文件,提高代码性能测试的灵活性。
具体的,服务器在接收到安装指令后,读取性能监控插件的配置信息,从 配置信息中获取需要进行代码性能测试的待监控文件目录。
步骤S230:扫描待监控文件目录下的脚本文件,获取脚本文件中的函数块。
本步骤中,脚本文件是指保存了Javascript脚本语言代码的纯文本文件,其 中记录着开发程序对应的代码,函数块是指在脚本文件中模块化的子程序;服 务器在确定到待监控文件目录后,扫描待监控文件目录下所有的脚本文件,从 而获取每个脚本文件中所有的函数块。
步骤S240:对函数块进行扫描,当识别到函数块的函数起始符号,在函数 起始符号的下一位置插入起始监控锚点,当识别到函数块的函数结束符号,在 函数结束符号前一位置插入结束监控锚点。
本步骤中,起始监控锚点是指代码性能测试记录的开始埋点,结束监控锚 点是指代码性能测试记录的结束埋点,起始监控锚点与结束监控锚点链接至不 同的性能测试脚本,当起始监控锚点或结束监控锚点触发时,可以快速调用对 应性能测试脚本。服务器在获得各个脚本文件中的函数块后,分别从每个函数 块的第一个字符开始对函数块进行符号识别扫描,当扫描到函数块的函数起始 符号时,在紧接函数起始符号的后一个位置插入起始监控锚点,当扫描到函数 块的函数结束符号时,在函数结束符号前一个位置插入结束监控锚点。通过将 性能监控锚点插入至函数块的对应的位置中,无需对特定的目标代码做出配置, 提高代码性能测试的灵活性。
步骤S250:当起始监控锚点或结束监控锚点被触发时,调用起始监控锚点 或结束监控锚点所链接的性能测试脚本生成性能数据。
本步骤中,服务器在待监控文件目录下所有的脚本文件中的函数块的对应 位置中插入起始监控锚点以及结束监控锚点后,在进行React项目测试过程中, 运行该React项目的脚本文件,当脚本文件中的起始监控锚点或结束监控锚点被 触发时,调用起始监控锚点或结束监控锚点所链接的性能测试脚本,得到性能 测试脚本运行生成的结果数据,进而得到代码性能数据。
上述代码性能测试方法中,在接收到性能监控插件的安装指令后,根据安 装指令读取性能监控插件的配置信息,并从配置信息中确定待监控文件目录, 从而获取待监控文件目录下的脚本文件,并在脚本文件中的函数块的预设位置 中插入性能监控锚点,当性能监控锚点被触发,调用性能监控锚点所链接的性 能测试脚本,生成性能数据,实现以性能监控插件的形式引入至React框架项目 中,在进行测试包打包的时候,自动生成用于监控代码性能的性能监控锚点, 实现对React项目的开发源代码中的代码性能的监控,无需开发人员手动编写性 能监控代码,减轻开发人员的编码负担,且在开发过程中开发的源码没有埋点 数据的,降低了代码复杂度,在后续上线的生产包也没有注入埋点数据,不影 响业务代码的执行以及运行性能,与业务程序完全解耦。
在一个实施例中,获取脚本文件中的函数块的步骤之后,还包括:确定脚 本文件的脚本文件名,并获取函数块的函数名以及函数块在脚本文件中的位置 信息;根据脚本文件名、函数名以及位置信息生成与函数块对应的标识信息; 将标识信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚点。
本实施例中,函数块的位置信息是指函数块所处于脚本文件中的位置信息; 服务器在确定到脚本文件中的所有函数块后,针对某一个函数块,获取脚本文 件的文件名、函数块的函数名以及函数块所处于脚本文件中的位置信息,根据 这三个信息生成该函数块的标识信息,作为锚点函数的入参,从而生成该函数 块的起始监控锚点以及结束监控锚点,其中标识信息可以用于区分不同的脚本 文件、不同函数方法的起始监控锚点以及结束监控锚点。
在后续进行代码测试过程中,当触发到该函数块预设位置的起始监控锚点 或结束监控锚点时,所生成性能数据可以带有函数块对应的标识信息,以区分 不同的脚本文件、不同函数方法的埋点所产生的性能数据。
在一个实施例中,扫描待监控文件目录下的脚本文件,获取脚本文件中的 函数块的步骤,包括:从配置文件中确定目标函数名;扫描待监控文件目录下 的脚本文件,获取脚本文件中函数名为目标函数名的函数块。
本实施例中,待监控的函数方法可以自定义配置,开发人员在性能监控插 件的配置信息中预先配置好指定的函数方法的函数名;后续服务器读取性能监 控插件的配置信息,获取配置信息中的待监控的函数方法的目标函数名,在扫 面待监控文件目录下的脚本文件时,只需要获取函数名为目标函数名的函数块, 在该函数块的对应位置中插入起始监控锚点以及结束监控锚点,实现自定义监 控特定函数的性能。
在一个实施例中,如图3所示,图3为另一个实施例中代码性能测试方法 的流程示意图,该代码性能测试方法,包括以下步骤:
步骤S310:接收性能监控插件的安装指令;
步骤S320:根据安装指令读取性能监控插件的配置信息,并从配置信息中 确定待监控文件目录;
步骤S330:从配置文件中确定目标函数名,扫描待监控文件目录下的脚本 文件,获取脚本文件中函数名为目标函数名的函数块;
步骤S340:确定脚本文件的脚本文件名,并获取函数块的函数名以及在脚 本文件中的位置信息;
步骤S350:根据脚本文件名、函数名以及位置信息生成与函数块对应的标 识信息;
步骤S360:将标识信息作为锚点函数的入参,生成起始监控锚点以及结束 监控锚点起始监控锚点以及结束监控锚点;
步骤S370:对函数块进行扫描,当识别到函数块的函数起始符号,在函数 起始符号的下一位置插入起始监控锚点,当识别到函数块的函数结束符号,在 函数结束符号的前一位置插入结束监控锚点;
步骤S380:当起始监控锚点或结束监控锚点被触发时,调用起始监控锚点 或结束监控锚点所链接的性能测试脚本生成性能数据。
具体的,以function函数为例对本实施例进行进一步说明,function函数的 形式一般为“function XXX(){}”,其函数起始符号为“{”、函数结束符号为“}”, 服务器对function函数块进行扫描,当扫描到函数块的“{”符号时,在函数起 始符“{”下一行插入起始监控锚点,当扫描到函数块的“}”,在函数结束符“}” 的上一行插入结束监控锚点。
例如,脚本文件index.js中有函数名为test的函数块,该函数块在脚本文件 中的第50行。根据脚本文件名“index”、函数名“test”以及函数块所处于脚本 文件中的位置信息“50”(第50行),生成埋点的输入参数,进而生产该函数块 对应的起始监控锚点“anchor.start(“test_index_50”)”以及结束监控锚点 “anchor.end(“test_index_50”)”;扫描函数块,在识别到函数起始符号“{”时, 在函数起始符“{”的下一行插入“anchor.start(“test_index_50”)”,在识别到函数 结束符“}”时,在函数结束符“}”的上一行插入“anchor.end(“test_index_50”)”, 最终脚本文件中的程序代码具体如下:
在后续进行代码测试过程中,当触发到该函数块预设位置的起始监控锚点 或结束监控锚点时,所生成性能数据携带有“test_index_50”标签,用以区分不同 的脚本文件、不同函数方法的埋点所产生的性能数据。
在一个实施例中,当起始监控锚点或结束监控锚点被触发时,调用述起始 监控锚点或结束监控锚点所链接的性能测试脚本生成性能数据的步骤,包括: 当触发到起始监控锚点,通过起始监控锚点所链接的性能测试脚本生成起始时 间戳;当触发到结束监控锚点,通过结束监控锚点所链接的性能测试脚本生成 结束时间戳;根据起始时间戳以及结束时间戳计算函数执行时长;将起始时间 戳、结束时间戳以及函数执行时长确定为性能数据。
在后续对React项目各个脚本文件中的函数进行性能测试时,通过运行 React项目的业务代码,当触发到起始监控锚点时,通过起始监控锚点连接至埋 点逻辑文件中,并自动执行埋点逻辑文件中的程序,生成起始时间戳,当触发 到结束监控锚点时,通过结束监控锚点连接至埋点逻辑文件中,并自动执行埋 点逻辑文件中的程序生成结束时间戳,进而根据起始时间戳以及结束时间戳, 计算出对应函数代码执行的时长,其中起始时间戳、结束时间戳以及代码执行 时长等数据作为代码性能数据记录在本地数据中。本实施例通过起始监控锚点 以及结束监控锚点,实现调用性能监控代码,执行函数运行耗时性能的监控。
在一个实施例中,调用述起始监控锚点或结束监控锚点所链接的性能测试 脚本生成性能数据的步骤之后,还包括:从配置信息中获取上传接口地址;根 据上传接口地址确定目标上传接口,通过目标上传接口上传性能数据至服务器 中。
本实施例中,目标上传接口可以由开发人员自定义配置在性能监控插件的 配置信息中,在性能数据上传过程中,服务器在确定配置信息中上传接口地址 后,将性能数据从本地数据库中通过上传接口上传至指定的服务器中,提高函 数方法性能测试的适用范围。
进一步的,在一个实施例中,在预设时间范围内,若从目标上传接口中检 测到服务器返回的确认信息,则认为性能数据上传成功;若没有从上传接口中 检测到服务器返回的确认信息,则认为性能数据上传失败,并重新调用目标上 传接口发送性能数据,避免性能数据发送失败对后续性能分析的影响,提高函 数方法性能测试的效率。
应该理解的是,虽然图2至图3的流程图中的各个步骤按照箭头的指示依 次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中 有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它 的顺序执行。而且,图2至图3中的至少一部分步骤可以包括多个子步骤或者 多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在 不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是 可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地 执行。
在一个实施例中,如图4所示,提供了一种代码性能测试装置,包括:安 装指令接收模块410、配置信息读取模块420、函数块获取模块430和性能数据 生成模块440,其中:
安装指令接收模块410,用于接收性能监控插件的安装指令;
配置信息读取模块420,用于根据安装指令读取性能监控插件的配置信息, 并从配置信息中确定待监控文件目录;
函数块获取模块430,用于扫描待监控文件目录下的脚本文件,获取脚本文 件中的函数块;
锚点插入模块440,用于对函数块进行扫描,当识别到函数块的函数起始符 号,在函数起始符号的下一位置插入起始监控锚点,当识别到函数块的函数结 束符号,在函数结束符号前一位置插入结束监控锚点;
性能数据生成模块450,用于当起始监控锚点或结束监控锚点被触发时,调 用起始监控锚点或结束监控锚点所链接的性能测试脚本生成性能数据。
在一个实施例中,代码性能测试装置还包括性能监控锚点生成模块,用于 确定脚本文件的脚本文件名,并获取函数块的函数名以及函数块在脚本文件中 的位置信息;根据脚本文件名、函数名以及位置信息生成与函数块对应的标识 信息;将标识信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚点。
在一个实施例中,性能数据生成模块,用于当触发到起始监控锚点,通过 起始监控锚点所链接的性能测试脚本生成起始时间戳;当触发到结束监控锚点, 通过结束监控锚点所链接的性能测试脚本生成结束时间戳;根据起始时间戳以 及结束时间戳计算函数执行时长;将起始时间戳、结束时间戳以及函数执行时 长确定为性能数据。
在一个实施例中,函数块获取模块430,用于从配置文件中确定目标函数名; 扫描待监控文件目录下的脚本文件,获取脚本文件中函数名为目标函数名的函 数块。
在一个实施例中,代码性能测试装置还包括性能监控上传模块,用于从配 置信息中获取上传接口地址;根据上传接口地址确定目标上传接口,通过目标 上传接口上传性能数据至服务器中。
关于代码性能测试装置的具体限定可以参见上文中对于代码性能测试方法 的限定,在此不再赘述。上述代码性能测试装置中的各个模块可全部或部分通 过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算 机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以 便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器, 该计算机设备包括通过系统总线链接的处理器、存储器、网络接口和数据库。 其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储 器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、 计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机 程序的运行提供环境。该计算机设备的数据库用于存储性能监控插件、配置信 息等数据。该计算机设备的网络接口用于与外部的终端通过网络链接通信。该 计算机程序被处理器执行时以实现一种代码性能测试方法。
本领域技术人员可以理解,上述计算机设备的描述不构成对本申请方案所 应用于其上的计算机设备的限定,具体的计算机设备可以包括更多或更少的部 件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储 器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收性能监控插件的安装指令;
根据安装指令读取性能监控插件的配置信息,并从配置信息中确定待监控 文件目录;
扫描待监控文件目录下的脚本文件,获取脚本文件中的函数块;
对函数块进行扫描,当识别到函数块的函数起始符号,在函数起始符号的 下一位置插入起始监控锚点,当识别到函数块的函数结束符号,在函数结束符 号前一位置插入结束监控锚点;
当起始监控锚点或结束监控锚点被触发时,调用起始监控锚点或结束监控 锚点所链接的性能测试脚本生成性能数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:确定脚本文 件的脚本文件名,并获取函数块的函数名以及函数块在脚本文件中的位置信息; 根据脚本文件名、函数名以及位置信息生成与函数块对应的标识信息;将标识 信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚点。
在一个实施例中,处理器执行计算机程序实现当性能监控锚点被触发时, 调用性能监控锚点所链接的性能测试脚本,生成性能数据的步骤时,具体实现 以下步骤:当触发到起始监控锚点,通过起始监控锚点所链接的性能测试脚本 生成起始时间戳;当触发到结束监控锚点,通过结束监控锚点所链接的性能测 试脚本生成结束时间戳;根据起始时间戳以及结束时间戳计算函数执行时长; 将起始时间戳、结束时间戳以及函数执行时长确定为性能数据。
在一个实施例中,处理器执行计算机程序实现扫描待监控文件目录下的脚 本文件,获取脚本文件中的函数块的步骤时,具体实现以下步骤:从配置文件 中确定目标函数名;扫描待监控文件目录下的脚本文件,获取脚本文件中函数 名为目标函数名的函数块。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:从配置信息 中获取上传接口地址;根据上传接口地址确定目标上传接口,通过目标上传接 口上传性能数据至服务器中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程 序,计算机程序被处理器执行时实现以下步骤:
接收性能监控插件的安装指令;
根据安装指令读取性能监控插件的配置信息,并从配置信息中确定待监控 文件目录;
扫描待监控文件目录下的脚本文件,获取脚本文件中的函数块;
对函数块进行扫描,当识别到函数块的函数起始符号,在函数起始符号的 下一位置插入起始监控锚点,当识别到函数块的函数结束符号,在函数结束符 号前一位置插入结束监控锚点;
当起始监控锚点或结束监控锚点被触发时,调用起始监控锚点或结束监控 锚点所链接的性能测试脚本生成性能数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:确定脚本 文件的脚本文件名,并获取函数块的函数名以及函数块在脚本文件中的位置信 息;根据脚本文件名、函数名以及位置信息生成与函数块对应的标识信息;将 标识信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚点。
在一个实施例中,计算机程序被处理器执行实现当性能监控锚点被触发时, 调用性能监控锚点所链接的性能测试脚本,生成性能数据的步骤时,具体实现 以下步骤:当触发到起始监控锚点,通过起始监控锚点所链接的性能测试脚本 生成起始时间戳;当触发到结束监控锚点,通过结束监控锚点所链接的性能测 试脚本生成结束时间戳;根据起始时间戳以及结束时间戳计算函数执行时长; 将起始时间戳、结束时间戳以及函数执行时长确定为性能数据。
在一个实施例中,计算机程序被处理器执行实现扫描待监控文件目录下的 脚本文件,获取脚本文件中的函数块的步骤时,具体实现以下步骤:从所述配 置文件中确定目标函数名;扫描待监控文件目录下的脚本文件,获取脚本文件 中函数名为所述目标函数名的函数块。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:从配置信 息中获取上传接口地址;根据上传接口地址确定目标上传接口,通过目标上传 接口上传性能数据至服务器中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于 一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述 各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、 存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。 非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程 ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可 包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限, RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM (ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus) 直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器 总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述 实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特 征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的 普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改 进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权 利要求为准。
Claims (10)
1.一种代码性能测试方法,所述方法包括:
接收性能监控插件的安装指令;
根据所述安装指令读取性能监控插件的配置信息,并从所述配置信息中确定待监控文件目录;
扫描所述待监控文件目录下的脚本文件,获取所述脚本文件中的函数块;
对所述函数块进行扫描,当识别到所述函数块的函数起始符号,在所述函数起始符号的下一位置插入起始监控锚点,当识别到所述函数块的函数结束符号,在所述函数结束符号前一位置插入结束监控锚点;
当所述起始监控锚点或所述结束监控锚点被触发时,调用所述起始监控锚点或所述结束监控锚点所链接的性能测试脚本生成性能数据。
2.根据权利要求1所述的方法,其特征在于,所述获取所述脚本文件中的函数块的步骤之后,还包括:
确定所述脚本文件的脚本文件名,并获取所述函数块的函数名以及所述函数块在所述脚本文件中的位置信息;
根据所述脚本文件名、所述函数名以及所述位置信息生成与所述函数块对应的标识信息;
将所述标识信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚点。
3.根据权利要求1所述的方法,其特征在于,所述当所述起始监控锚点或所述结束监控锚点被触发时,调用所述述起始监控锚点或所述结束监控锚点所链接的性能测试脚本生成性能数据的步骤,包括:
当触发到所述起始监控锚点,通过所述起始监控锚点所链接的性能测试脚本生成起始时间戳;
当触发到所述结束监控锚点,通过所述结束监控锚点所链接的性能测试脚本生成结束时间戳;
根据所述起始时间戳以及所述结束时间戳计算函数执行时长;
将所述起始时间戳、所述结束时间戳以及所述函数执行时长确定为性能数据。
4.根据权利要求1所述的方法,其特征在于,所述扫描所述待监控文件目录下的脚本文件,获取所述脚本文件中的函数块的步骤,包括:
从所述配置文件中确定目标函数名;
扫描待监控文件目录下的脚本文件,获取脚本文件中函数名为所述目标函数名的函数块。
5.根据权利要求1所述的方法,其特征在于,所述调用所述述起始监控锚点或所述结束监控锚点所链接的性能测试脚本生成性能数据的步骤之后,还包括:
从所述配置信息中获取上传接口地址;
根据所述上传接口地址确定目标上传接口,通过所述目标上传接口上传所述性能数据至服务器中。
6.一种代码性能测试装置,其特征在于,所述装置包括:
安装指令接收模块,用于接收性能监控插件的安装指令;
配置信息读取模块,用于根据所述安装指令读取性能监控插件的配置信息,并从所述配置信息中确定待监控文件目录;
函数块获取模块,用于扫描所述待监控文件目录下的脚本文件,获取所述脚本文件中的函数块;
锚点插入模块,用于对所述函数块进行扫描,当识别到所述函数块的函数起始符号,在所述函数起始符号的下一位置插入起始监控锚点,当识别到所述函数块的函数结束符号,在所述函数结束符号前一位置插入结束监控锚点;
性能数据生成模块,用于当所述起始监控锚点或所述结束监控锚点被触发时,调用所述起始监控锚点或所述结束监控锚点所链接的性能测试脚本生成性能数据。
7.根据权利要求6所述的代码性能测试装置,其特征在于,所述代码性能测试装置还包括性能监控锚点生成模块,用于确定所述脚本文件的脚本文件名,并获取所述函数块的函数名以及所述函数块在所述脚本文件中的位置信息;根据所述脚本文件名、所述函数名以及所述位置信息生成与所述函数块对应的标识信息;将所述标识信息作为锚点函数的入参,生成起始监控锚点以及结束监控锚点。
8.根据权利要求6所述的代码性能测试装置,其特征在于,所述性能数据生成模块,用于当触发到所述起始监控锚点,通过所述起始监控锚点所链接的性能测试脚本生成起始时间戳;当触发到所述结束监控锚点,通过所述结束监控锚点所链接的性能测试脚本生成结束时间戳;根据所述起始时间戳以及所述结束时间戳计算函数执行时长;将所述起始时间戳、所述结束时间戳以及所述函数执行时长确定为性能数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910749083.7A CN110716854A (zh) | 2019-08-14 | 2019-08-14 | 代码性能测试方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910749083.7A CN110716854A (zh) | 2019-08-14 | 2019-08-14 | 代码性能测试方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716854A true CN110716854A (zh) | 2020-01-21 |
Family
ID=69209391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910749083.7A Pending CN110716854A (zh) | 2019-08-14 | 2019-08-14 | 代码性能测试方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716854A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427773A (zh) * | 2020-03-06 | 2020-07-17 | 平安科技(深圳)有限公司 | Web应用资源监控方法、电子装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153825A1 (en) * | 2002-09-24 | 2004-08-05 | Hitachi, Ltd. | Device and method for monitoring a program execution |
CN109408346A (zh) * | 2018-09-26 | 2019-03-01 | 北京城市网邻信息技术有限公司 | 数据收集方法、装置、设备及存储介质 |
CN109542715A (zh) * | 2018-10-15 | 2019-03-29 | 北京达佳互联信息技术有限公司 | 采集应用程序性能数据的方法、装置及终端设备 |
CN109947624A (zh) * | 2019-03-25 | 2019-06-28 | 深圳市腾讯信息技术有限公司 | 状态监控方法及装置 |
-
2019
- 2019-08-14 CN CN201910749083.7A patent/CN110716854A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153825A1 (en) * | 2002-09-24 | 2004-08-05 | Hitachi, Ltd. | Device and method for monitoring a program execution |
CN109408346A (zh) * | 2018-09-26 | 2019-03-01 | 北京城市网邻信息技术有限公司 | 数据收集方法、装置、设备及存储介质 |
CN109542715A (zh) * | 2018-10-15 | 2019-03-29 | 北京达佳互联信息技术有限公司 | 采集应用程序性能数据的方法、装置及终端设备 |
CN109947624A (zh) * | 2019-03-25 | 2019-06-28 | 深圳市腾讯信息技术有限公司 | 状态监控方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427773A (zh) * | 2020-03-06 | 2020-07-17 | 平安科技(深圳)有限公司 | Web应用资源监控方法、电子装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460527B (zh) | 产品数据配置方法、装置、计算机设备和存储介质 | |
CN110647320A (zh) | 项目框架的构建方法、装置、计算机设备和存储介质 | |
CN108427613B (zh) | 异常接口定位方法、装置、计算机设备和存储介质 | |
CN110704304B (zh) | 一种应用程序测试方法、装置、存储介质和服务器 | |
CN110162453B (zh) | 测试方法、装置、计算机可读存储介质和计算机设备 | |
CN109324961B (zh) | 系统自动测试方法、装置、计算机设备及存储介质 | |
CN109766261B (zh) | 覆盖测试方法、装置、计算机设备和存储介质 | |
CN108400978B (zh) | 漏洞检测方法、装置、计算机设备和存储介质 | |
CN113282513B (zh) | 接口测试案例的生成方法、装置、计算机设备及存储介质 | |
CN109726134B (zh) | 接口测试方法和系统 | |
CN111736811A (zh) | 表单数据校验方法、系统、服务器和用户终端 | |
CN112486828A (zh) | 测试用例生成方法、装置、计算机设备和存储介质 | |
CN108399125B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN111782505A (zh) | 列车系统仿真测试方法、装置、计算机设备和存储介质 | |
CN111797026A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
CN110837429A (zh) | 一种web端线上代码智能修复方法及装置 | |
CN112637008A (zh) | 链路模拟测试方法、装置、系统、计算机设备和存储介质 | |
CN110716854A (zh) | 代码性能测试方法、装置、计算机设备和存储介质 | |
CN113220566A (zh) | 接口性能测试脚本的生成方法、装置和计算机设备 | |
CN112631908A (zh) | 浏览器页面测试方法、装置、计算机设备及存储介质 | |
CN113377669A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN111277476A (zh) | 网关控制器功能验证方法、装置、计算机设备和存储介质 | |
CN111399732B (zh) | 网页截图方法、装置、计算机设备和存储介质 | |
CN112346981A (zh) | 联调测试覆盖率检测方法及系统 | |
CN112286821A (zh) | Html5页面兼容性的测试方法、装置、设备及存储介质 |
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 |