CN113886250B - 函数调用动态热力图的绘制方法 - Google Patents
函数调用动态热力图的绘制方法 Download PDFInfo
- Publication number
- CN113886250B CN113886250B CN202111163265.XA CN202111163265A CN113886250B CN 113886250 B CN113886250 B CN 113886250B CN 202111163265 A CN202111163265 A CN 202111163265A CN 113886250 B CN113886250 B CN 113886250B
- Authority
- CN
- China
- Prior art keywords
- function
- thermodynamic diagram
- dynamic
- called
- thermodynamic
- 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.)
- Active
Links
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/3676—Test management for coverage analysis
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供函数调用动态热力图的绘制方法,首先得到各函数的执行顺序和时间,然后分别绘制热力图,随着程序的不断执行,热力图上各函数的热力值不断变化,从而可以对程序执行时的函数调用顺序、执行时间的可视化,可以更加高效地完成集成测试、回归测试和代码优化和算法演示等工作,具有直观、方便、可操作性强的优点,在实际应用中有较好的效果。
Description
技术领域
本发明涉及软件工程中的软件开发和软件测试领域,尤其涉及函数调用动态热力图的绘制方法。
背景技术
在软件开发和软件测试过程中,需要研究和分析在运行条件下函数之间的实际调用关系和执行时间,研究函数和代码在执行时的覆盖情况。
在函数覆盖率测试中,通常先使用基础测试用例集进行测试,得到对各函数的调用和覆盖情况;并在此基础上针对未覆盖的函数,设计新的测试用例,最终实现对全部函数的覆盖。
在回归测试中,如果遇到资源紧张等问题,需要有选择地执行测试用例,此时要根据测试用例的优先级来选择测试用例,一种方法是根据测试用例的函数覆盖率来计算,从而可以使用较少的测试用例来覆盖较多的函数分支。
在代码优化过程中,通常针对执行和迭代次数较多的热点代码和热点函数进行;因此也需要得到函数的调用情况、执行次数和消耗时间,从而为软件的优化工作确定方向,如重点针对执行时间长的函数展开优化。
在对各种流程和算法的说明和演示中,当模块或函数间的关系比较复杂时,也需要对其函数调用顺序进行分析和说明。
如能在上述软件开发和测试等环节,将函数调用情况和执行时间的可视化,将对集成测试、回归测试、程序代码优化和算法演示等工作提供有益的帮助。
为了能直观地显示函数的执行顺序过程以及消耗的时间过程,本发明提供函数调用动态热力图的绘制方法,通过对程序执行时的函数调用顺序、执行时间的可视化,可以更加高效地完成集成测试、回归测试和代码优化和算法演示等工作。
发明内容
函数调用动态热力图的绘制方法,包括以下步骤:
步骤1,在程序的所有函数头部插入一个记录桩函数,将函数名称作为记录桩函数的参数;
步骤2,使用测试用例来执行插过桩的程序,得到各函数的调用顺序和执行时间的记录;
步骤3,按记录的函数调用顺序和执行时间,分别绘制函数调用热力图,形成函数调用动态热力图;
步骤4,将动态热力图按顺序制作成动态视频文件。
所述步骤1,包括:
(1)记录桩函数的主要功能是记录被调用函数名称和当前时间,将被调用函数的名称以参数形式传入,当前时间由桩函数从系统获得;
(2)前后两个记录的时间差,即为前一个函数运行所需的时间。
所述步骤2,包括:
(1)测试用例是对程序进行测试时执行的操作步骤和所需数据一种通称,也称测试算例或算例;
(2)按照测试用例载明的操作步骤和所需数据,执行插过桩的程序;
(3)通过记录桩函数的记录功能,得到各函数的调用顺序和执行时间。
所述步骤3,绘制函数调用热力图,包括:
(1)统计程序的全部函数个数N,计算两个正整数n和m,使n*m<=N;
(2)在平面内正交的两个方向绘制n*m个正方形格子,每个格子唯一代表一个函数,函数的与格子的关系可以随意,也可以按某种关系进行排序;
(3)每个格子的值称为热力值,也称热度值或者热值;
(4)根据格子的热力值,对每个格子赋予不同的颜色,热力值越大则颜色越深,绘制成平面热力图;
(5)将格子的热力值作为与前两个方向正交的第三个方向的值,构成一个在二维平面上竖立的柱状图,称为立体图热力图;当n为1时,立体热力图可以直接简化为平面柱状图;
(6)立体热力图中柱子的颜色,可以按平面热力图的颜色模式赋值和绘制;
(7)按上述方式绘制的图形,称为函数调用热力图,简称热力图。
所述统计程序的全部函数个数N,计算两个正整数n和m,包括:
(1)n和m可以遵循近似的原则,如n=m时,n*n>=N;此时生成的热力图为近似正方形;
(2)可选地,n和m也可以随意选择,如m或n为1时,此时的平面热力图会退化到一个方向,立体热力图退化为两个方向。
所述步骤3,形成函数调用动态热力图,包括:
(1)函数调用热力图的初始状态,所有函数的热力值为0;
(2)若调用了某函数,该函数的热力值加1,其颜色开始变深;
(3)按记录的函数调用顺序,不断增加函数调用热力图中相应函数的热力值,并不断绘制更新后的函数调用热力图,最终形成函数调用的动态过程,称为函数调用动态热力图;
(4)此时形成的函数调用动态热力图,显示了程序运行时的函数调用顺序和次数;
(5)根据动态热力图的中间过程及其变化,可以直观地看到算法的运行流程;
(6)根据动态热力图的最终结果,可以直观地得到热点函数和函数覆盖率。
所述步骤3,形成函数调用动态热力图,还包括:
(1)可选地,若调用了某函数,该函数的热力值增加的数值,与该函数本次执行时间成比例;
(2)按该方式绘制的动态热力图,显示了程序运行时的时间消耗;
(3)根据动态热力图的中间过程及其变化,可以直观地看到算法的运行流程和运行效率;
(4)根据动态热力图的最终结果,可以直观地得到热点函数和函数覆盖率。
所述步骤4,包括:
(1)将步骤3制作的动态热力图,直接按一定的帧率压制成动态视频文件;
(2)动态视频文件可以选择标准的视频格式进行存储和播放,也可以使用自定义的格式;
(3)为了使视频的变化更加直观,可以对步骤3中的每个当前帧,用局部放大、变色等方式,醒目地对热力值变化的函数(即当前帧对应的函数)进行提示;具体而言,每一帧均用两帧表示,即第一帧为醒目提醒帧,第二帧为变化后的帧。
本发明提供的函数调用动态热力图的绘制方法,首先得到各函数的执行顺序和时间,然后分别绘制热力图,随着程序的不断执行,热力图上各函数的热力值不断变化,从而可以对程序执行时的函数调用顺序、执行时间的可视化,可以更加高效地完成集成测试、回归测试和代码优化和算法演示等工作,具有直观、方便、可操作性强的优点,在实际应用中有较好的效果。
附图说明
图1为本发明实施例一的流程示意图。
图2为本发明实施例一的函数调用顺序图。
图3和图4为本发明实施例一的第5帧和第10帧热力图。
图5为本发明实施例二的流程示意图。
图6为本发明实施例二的函数调用顺序和时间图。
图7和图8为本发明实施例二的第5帧和第10帧热力图。
具体实施方式
为了更加清楚地展示本发明的目的和技术方案,下面将结合具体的实施过程和附图,对本发明的具体实施方式和参数进行更加详细的描述。
一种函数调用顺序动态热力图的绘制方法,如图1所示,包括以下步骤。
步骤1,在程序的所有函数头部插入记录桩函数。
记录桩函数只记录执行的函数名称,函数名称可使用序号代替。
步骤2,使用测试用例执行插过桩的程序,通过桩函数的记录功能,得到各函数的调用顺序。
设待测软件包括5个函数,分别为F1~F5;在一个测试用例作用下的调用函数名的顺序如图2所示。
步骤3,按调用顺序分别绘制函数调用热力图。
待测函数包含5个函数,N=5,选取x方向n=3,y方向m=2。
按图2所示的函数调用顺序,第5帧和第10帧热力图如图3和图4所示。
步骤4,将函数调用热力图按调用顺序制作成动态视频,即将步骤3绘制的函数热力图,按调用顺序,制作成动态视频。
为了使视频的变化更加直观,可以对步骤3中的每个当前帧用2帧表示,即第一帧为醒目提醒帧,提醒马上要改变热力值的帧;第二帧为变化后的帧。
使用本方式绘制的函数调用动态热力图,直观地表示了函数的调用顺序过程,因此也称为函数调用顺序动态热力图。
一种函数调用时间动态热力图的绘制方法,如图5所示,包括以下步骤。
步骤1,在程序的所有函数头部插入桩函数。
桩函数可记录执行的函数名称和当前时间;前后两个记录的时间差,即为运行前一个函数所需的时间;若获取的当前时间精度不足,可能得到函数运行时间为0的情况。
步骤2,使用测试用例执行插过桩的函数,通过桩函数的记录功能,得到各函数的调用顺序和执行时间。
设待测软件包括5个函数,分别为F1~F5;其中一个测试算例执行时的调用函数名的顺序和执行时间如图6所示,时间单位为毫秒。
函数运行时间为0,即当函数调用时间小于最小时间单位(如1ms时),设置为1ms,如图6第四列所示。
步骤3,按调用顺序和时间分别绘制函数调用热力图。
此时绘制的第5帧和第10帧热力图如图7和图8所示。
步骤4,将函数调用热力图按调用顺序制作成动态视频,即将步骤3绘制的函数热力图,按调用顺序和持续时间,制作成动态视频。
步骤4中按持续时间绘制动态视频时,持续时间与该帧的时长关系可以动态调整,即可以将时间较长的帧压缩,但起码保留一帧。
使用本方式绘制的函数调用动态热力图,直观地表示了函数的调用顺序过程和调用时间,因此也称为函数调用时间动态热力图。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,通过对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;或者修改各个步骤的顺序;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;本发明各种阈值及范围的取值,也会因为具体情况不同而有所改变。
Claims (4)
1.函数调用动态热力图的绘制方法,其特征在于,包括以下步骤:
步骤1,在所有函数头部插入一个记录桩函数,将函数名称作为记录桩函数的参数;
步骤2,执行插过桩的程序,得到各函数的调用顺序和执行时间的记录;
步骤3,按记录的函数调用顺序和执行时间,分别绘制函数调用热力图,形成函数调用动态热力图;
步骤4,将函数动态调用热力图按顺序制作成动态视频文件;
所述步骤1中的记录桩函数,包括:
(1)记录桩函数的主要功能是记录被调用函数名称和当前时间,将被调用函数的名称以参数形式传入,当前时间由桩函数从系统获得;
(2)前后两个记录的时间差,即为前一个函数运行所需的时间;
所述步骤2,包括:
(1)按照测试用例载明的操作步骤和所需数据,执行插过桩的程序;
(2)通过记录桩函数的记录功能,得到各函数的调用顺序和执行时间;
所述步骤3中的绘制函数调用热力图,包括:
(1)统计程序的全部函数个数N,计算两个正整数n和m,使n*m<=N;
(2)在平面内正交的两个方向绘制n*m个正方形格子,每个格子唯一代表一个函数,函数与格子的关系可以随意,或者按某种关系进行排序;
(3)每个格子的值称为热力值,也称热度值或者热值;
(4)根据格子的热力值,对每个格子赋予不同的颜色,热力值越大则颜色越深,绘制成平面热力图;
(5)将格子的热力值作为与前两个方向正交的第三个方向的值,构成一个在二维平面上竖立的柱状图,称为热力图或三维热力图;
(6)按上述方式绘制的图形,称为函数调用热力图,简称热力图。
2.根据权利要求1所述的方法,其特征在于,所述统计程序的全部函数个数N,计算两个正整数n和m,包括:
(1)n和m可以遵循近似的原则,如n=m时,n*n>=N;此时生成的热力图为近似正方形;
(2)n和m也可以随意选择,如m或n为1时,此时的平面热力图会退化到一个方向,立体热力图退化为两个方向。
3.根据权利要求1所述的方法,其特征在于,所述步骤3中的形成函数调用动态热力图,包括:
(1)函数调用热力图的初始状态,所有函数的热力值为0;
(2)若调用了某函数,该函数的热力值加1,其颜色开始变深;
(3)按记录的函数调用顺序,不断增加函数调用热力图中相应函数的热力值,并绘制更新后的函数调用热力图,最终形成函数调用的动态过程,称为函数调用动态热力图;
(4)若调用了某函数,该函数的热力值增加的数值,与该函数本次执行时间成比例。
4.根据权利要求1所述的方法,其特征在于,所述步骤4,包括:
(1)将步骤3制作的动态热力图,直接按一定的帧率压制成动态视频文件;
(2)为了使视频的变化更加直观,可以对步骤3中的每个当前帧均用两帧表示,即第一帧为醒目提醒帧,第二帧为变化后的帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111163265.XA CN113886250B (zh) | 2021-09-30 | 2021-09-30 | 函数调用动态热力图的绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111163265.XA CN113886250B (zh) | 2021-09-30 | 2021-09-30 | 函数调用动态热力图的绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113886250A CN113886250A (zh) | 2022-01-04 |
CN113886250B true CN113886250B (zh) | 2023-04-11 |
Family
ID=79004922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111163265.XA Active CN113886250B (zh) | 2021-09-30 | 2021-09-30 | 函数调用动态热力图的绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886250B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894178A (zh) * | 2010-05-31 | 2010-11-24 | 清华大学 | 基于可满足性问题sat的可制造性热点拆线重布方法 |
CN104536896A (zh) * | 2015-01-12 | 2015-04-22 | 牟永敏 | 面向函数调用路径的回归测试用例选择与排序方法及系统 |
CN105677574A (zh) * | 2016-03-10 | 2016-06-15 | 南京邮电大学 | 基于函数控制流的安卓应用漏洞检测方法和系统 |
KR102275635B1 (ko) * | 2020-06-24 | 2021-07-08 | 한양대학교 에리카산학협력단 | 함수 호출 패턴 분석을 통한 이상 검출 장치 및 방법 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473171B (zh) * | 2013-08-28 | 2016-06-08 | 北京信息科技大学 | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 |
CN106502907B (zh) * | 2016-10-28 | 2018-11-30 | 中国科学院软件研究所 | 一种基于执行轨迹追踪的分布式软件异常诊断方法 |
CN111989655B (zh) * | 2019-03-22 | 2022-03-29 | 华为技术有限公司 | 一种soc芯片、确定热点函数的方法及终端设备 |
CN113190235B (zh) * | 2021-05-27 | 2022-05-10 | 武汉斗鱼鱼乐网络科技有限公司 | 一种代码的分析方法、装置、电子终端及存储介质 |
-
2021
- 2021-09-30 CN CN202111163265.XA patent/CN113886250B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894178A (zh) * | 2010-05-31 | 2010-11-24 | 清华大学 | 基于可满足性问题sat的可制造性热点拆线重布方法 |
CN104536896A (zh) * | 2015-01-12 | 2015-04-22 | 牟永敏 | 面向函数调用路径的回归测试用例选择与排序方法及系统 |
CN105677574A (zh) * | 2016-03-10 | 2016-06-15 | 南京邮电大学 | 基于函数控制流的安卓应用漏洞检测方法和系统 |
KR102275635B1 (ko) * | 2020-06-24 | 2021-07-08 | 한양대학교 에리카산학협력단 | 함수 호출 패턴 분석을 통한 이상 검출 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN113886250A (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200023586A1 (en) | Method for monitoring 3d printing equipped with 3d printing slicer and recursive loop structure | |
CN111079244B (zh) | 一种基于行为树的分布式仿真平台 | |
CN111126933A (zh) | Kafka生产和消费进度监控方法及装置 | |
CN111611236A (zh) | 一种数据分析方法及系统 | |
CN109829092B (zh) | 一种对网页进行定向监测的方法 | |
CN111639002B (zh) | 休眠功耗测试方法、系统、计算机设备和存储介质 | |
JP2015525404A (ja) | 画像処理方法、装置、プログラム、及び記憶媒体 | |
CN112685011B (zh) | 一种基于Vue的AI应用可视化编排方法 | |
CN110245374A (zh) | 一种工艺时序间隔分析方法、系统、装置和存储介质 | |
CN109559054B (zh) | 一种电力工程施工信息处理系统 | |
CN113886250B (zh) | 函数调用动态热力图的绘制方法 | |
CN113221402B (zh) | 一种冲压件回弹预测及监控方法、系统及存储介质 | |
CN113986728A (zh) | 基于热力图的集成测试用例最小集分析方法、系统及终端 | |
CN112580123B (zh) | 梁图元的编辑方法、装置、电子设备及可读存储介质 | |
CN108983081B (zh) | 电动工具开关测试系统二次编程实现方法和系统 | |
CN111078518B (zh) | 数据采集方法、终端设备和计算机可读存储介质 | |
CN108198272A (zh) | 一种数据处理方法及其设备 | |
CN112598802A (zh) | 一种基于众包数据的热力图生成方法及系统 | |
CN112416995B (zh) | 一种数据统计方法、装置、计算机设备及存储介质 | |
US9374412B2 (en) | Information processing apparatus, information acquiring method, and computer readable recording medium in which information acquisition program is stored | |
CN111159027A (zh) | 自动化测试方法、装置、计算机设备和可读存储介质 | |
CN115545401B (zh) | 基于可视化指标模型配置的城市体检评估方法、系统及计算机设备 | |
CN111309558A (zh) | 收集vue框架中事件数据的方法、装置、设备及存储介质 | |
CN113985770A (zh) | 基于组态软件的项目快速构建方法、系统、终端及介质 | |
CN112084623B (zh) | 基于随机采样的ebo事件选取方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |