CN113886250B - 函数调用动态热力图的绘制方法 - Google Patents

函数调用动态热力图的绘制方法 Download PDF

Info

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
Application number
CN202111163265.XA
Other languages
English (en)
Other versions
CN113886250A (zh
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.)
Sichuan University
Original Assignee
Sichuan University
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 Sichuan University filed Critical Sichuan University
Priority to CN202111163265.XA priority Critical patent/CN113886250B/zh
Publication of CN113886250A publication Critical patent/CN113886250A/zh
Application granted granted Critical
Publication of CN113886250B publication Critical patent/CN113886250B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • 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
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • 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
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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中的每个当前帧均用两帧表示,即第一帧为醒目提醒帧,第二帧为变化后的帧。
CN202111163265.XA 2021-09-30 2021-09-30 函数调用动态热力图的绘制方法 Active CN113886250B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 武汉斗鱼鱼乐网络科技有限公司 一种代码的分析方法、装置、电子终端及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
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