本发明专利技术提供函数调用动态热力图的绘制方法,首先得到各函数的执行顺序和时间,然后分别绘制热力图,随着程序的不断执行,热力图上各函数的热力值不断变化,从而可以对程序执行时的函数调用顺序、执行时间的可视化,可以更加高效地完成集成测试、回归测试和代码优化和算法演示等工作,具有直观、方便、可操作性强的优点,在实际应用中有较好的效果。在实际应用中有较好的效果。在实际应用中有较好的效果。
【技术实现步骤摘要】
函数调用动态热力图的绘制方法
[0001]本专利技术涉及软件工程中的软件开发和软件测试领域,尤其涉及函数调用动态热力图的绘制方法。
技术介绍
[0002]在软件开发和软件测试过程中,需要研究和分析在运行条件下函数之间的实际调用关系和执行时间,研究函数和代码在执行时的覆盖情况。
[0003]在函数覆盖率测试中,通常先使用基础测试用例集进行测试,得到对各函数的调用和覆盖情况;并在此基础上针对未覆盖的函数,设计新的测试用例,最终实现对全部函数的覆盖。
[0004]在回归测试中,如果遇到资源紧张等问题,需要有选择地执行测试用例,此时要根据测试用例的优先级来选择测试用例,一种方法是根据测试用例的函数覆盖率来计算,从而可以使用较少的测试用例来覆盖较多的函数分支。
[0005]在代码优化过程中,通常针对执行和迭代次数较多的热点代码和热点函数进行;因此也需要得到函数的调用情况、执行次数和消耗时间,从而为软件的优化工作确定方向,如重点针对执行时间长的函数展开优化。
[0006]在对各种流程和算法的说明和演示中,当模块或函数间的关系比较复杂时,也需要对其函数调用顺序进行分析和说明。
[0007]如能在上述软件开发和测试等环节,将函数调用情况和执行时间的可视化,将对集成测试、回归测试、程序代码优化和算法演示等工作提供有益的帮助。
[0008]为了能直观地显示函数的执行顺序过程以及消耗的时间过程,本专利技术提供函数调用动态热力图的绘制方法,通过对程序执行时的函数调用顺序、执行时间的可视化,可以更加高效地完成集成测试、回归测试和代码优化和算法演示等工作。
技术实现思路
[0009]函数调用动态热力图的绘制方法,包括以下步骤:步骤1,在程序的所有函数头部插入一个记录桩函数,将函数名称作为记录桩函数的参数;步骤2,使用测试用例来执行插过桩的程序,得到各函数的调用顺序和执行时间的记录;步骤3,按记录的函数调用顺序和执行时间,分别绘制函数调用热力图,形成函数调用动态热力图;步骤4,将动态热力图按顺序制作成动态视频文件。
[0010]所述步骤1,包括:(1)记录桩函数的主要功能是记录被调用函数名称和当前时间,将被调用函数的名称以参数形式传入,当前时间由桩函数从系统获得;
(2)前后两个记录的时间差,即为前一个函数运行所需的时间。
[0011]所述步骤2,包括:(1)测试用例是对程序进行测试时执行的操作步骤和所需数据一种通称,也称测试算例或算例;(2)按照测试用例载明的操作步骤和所需数据,执行插过桩的程序;(3)通过记录桩函数的记录功能,得到各函数的调用顺序和执行时间。
[0012]所述步骤3,绘制函数调用热力图,包括:(1)统计程序的全部函数个数N,计算两个正整数n和m,使n*m<=N;(2)在平面内正交的两个方向绘制n*m个正方形格子,每个格子唯一代表一个函数,函数的与格子的关系可以随意,也可以按某种关系进行排序;(3)每个格子的值称为热力值,也称热度值或者热值;(4)根据格子的热力值,对每个格子赋予不同的颜色,热力值越大则颜色越深,绘制成平面热力图;(5)将格子的热力值作为与前两个方向正交的第三个方向的值,构成一个在二维平面上竖立的柱状图,称为立体图热力图;当n为1时,立体热力图可以直接简化为平面柱状图;(6)立体热力图中柱子的颜色,可以按平面热力图的颜色模式赋值和绘制;(7)按上述方式绘制的图形,称为函数调用热力图,简称热力图。
[0013]所述统计程序的全部函数个数N,计算两个正整数n和m,包括:(1)n和m可以遵循近似的原则,如n=m时,n*n>=N;此时生成的热力图为近似正方形;(2)可选地,n和m也可以随意选择,如m或n为1时,此时的平面热力图会退化到一个方向,立体热力图退化为两个方向。
[0014]所述步骤3,形成函数调用动态热力图,包括:(1)函数调用热力图的初始状态,所有函数的热力值为0;(2)若调用了某函数,该函数的热力值加1,其颜色开始变深;(3)按记录的函数调用顺序,不断增加函数调用热力图中相应函数的热力值,并不断绘制更新后的函数调用热力图,最终形成函数调用的动态过程,称为函数调用动态热力图;(4)此时形成的函数调用动态热力图,显示了程序运行时的函数调用顺序和次数;(5)根据动态热力图的中间过程及其变化,可以直观地看到算法的运行流程;(6)根据动态热力图的最终结果,可以直观地得到热点函数和函数覆盖率。
[0015]所述步骤3,形成函数调用动态热力图,还包括:(1)可选地,若调用了某函数,该函数的热力值增加的数值,与该函数本次执行时间成比例;(2)按该方式绘制的动态热力图,显示了程序运行时的时间消耗;(3)根据动态热力图的中间过程及其变化,可以直观地看到算法的运行流程和运行效率;(4)根据动态热力图的最终结果,可以直观地得到热点函数和函数覆盖率。
[0016]所述步骤4,包括:(1)将步骤3制作的动态热力图,直接按一定的帧率压制成动态视频文件;(2)动态视频文件可以选择标准的视频格式进行存储和播放,也可以使用自定义的格式;(3)为了使视频的变化更加直观,可以对步骤3中的每个当前帧,用局部放大、变色等方式,醒目地对热力值变化的函数(即当前帧对应的函数)进行提示;具体而言,每一帧均用两帧表示,即第一帧为醒目提醒帧,第二帧为变化后的帧。
[0017]本专利技术提供的函数调用动态热力图的绘制方法,首先得到各函数的执行顺序和时间,然后分别绘制热力图,随着程序的不断执行,热力图上各函数的热力值不断变化,从而可以对程序执行时的函数调用顺序、执行时间的可视化,可以更加高效地完成集成测试、回归测试和代码优化和算法演示等工作,具有直观、方便、可操作性强的优点,在实际应用中有较好的效果。
附图说明
[0018]图1为本专利技术实施例一的流程示意图。
[0019]图2为本专利技术实施例一的函数调用顺序图。
[0020]图3和图4为本专利技术实施例一的第5帧和第10帧热力图。
[0021]图5为本专利技术实施例二的流程示意图。
[0022]图6为本专利技术实施例二的函数调用顺序和时间图。
[0023]图7和图8为本专利技术实施例二的第5帧和第10帧热力图。
具体实施方式
[0024]为了更加清楚地展示本专利技术的目的和技术方案,下面将结合具体的实施过程和附图,对本专利技术的具体实施方式和参数进行更加详细的描述。
[0025]一种函数调用顺序动态热力图的绘制方法,如图1所示,包括以下步骤。
[0026]步骤1,在程序的所有函数头部插入记录桩函数。
[0027]记录桩函数只记录执行的函数名称,函数名称可使用序号代替。
[0028]步骤2,使用测试用例执行插过桩的程序,通过桩函数的记录功能,得到各函数的调用顺序。
[0029]设待测软件包括5个函数,分别为F1~F5;在一个测试用例作用下的调用函数名的顺序如图2所示。
[0030]步骤3,按调用顺序分别绘制本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.函数调用动态热力图的绘制方法,其特征在于,包括以下步骤:步骤1,在所有函数头部插入一个记录桩函数,将函数名称作为记录桩函数的参数;步骤2,执行插过桩的程序,得到各函数的调用顺序和执行时间的记录;步骤3,按记录的函数调用顺序和执行时间,分别绘制函数调用热力图,形成函数调用动态热力图;步骤4,将函数动态调用热力图按顺序制作成动态视频文件。2.根据权利要求1所述的方法,其特征在于,所述步骤1中的记录桩函数,包括:(1)记录桩函数的主要功能是记录被调用函数名称和当前时间,将被调用函数的名称以参数形式传入,当前时间由桩函数从系统获得;(2)前后两个记录的时间差,即为前一个函数运行所需的时间。3.根据权利要求1所述的方法,其特征在于,所述步骤2,包括:(1)按照测试用例载明的操作步骤和所需数据,执行插过桩的程序;(2)通过记录桩函数的记录功能,得到各函数的调用顺序和执行时间。4.根据权利要求1所述的方法,其特征在于,所述步骤3中的绘制函数调用热力图,包括:(1)统计程序的全部函数个数N,计算两个正整数n和m,使n*m<=N;(2)在平面内正交的两个方向绘制n*m个正方形格子,每个格子唯一代表一个函数,函数的与格子的关系可以随意,也可以按某种关系进行排序;(3)每个格子的值称为热力值,也称热度值或者热值;(4)根据格子的热力值,对每个格子赋予不同的颜色,热力值越大则颜色越深,绘制成...
【专利技术属性】
技术研发人员:冯子亮,刘季亭,安萍,芦韡,冯晋涛,张欣,何思迪,张炬,李昊岳,冉旭松,
申请(专利权)人:四川大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。