一种系统级实时获取被测程序内部运行数据的方法技术方案

技术编号:20865818 阅读:45 留言:0更新日期:2019-04-17 09:13
本发明专利技术公开了一种系统级实时获取被测程序内部运行数据的方法,包括:软件运行过程中,获取软件运行内部执行路径,将运行数据转化为波形的方式,获取用例的运行数据以及监控软件的运行状况;软件运行过程中,获取函数的输入输出情况;软件运行过程中,捕获用例内存使用情况;软件运行过程中,捕获程序最后运行50块时序数据信息;软件运行过程中,实时捕获用例函数的调用信息。本发明专利技术将软件运行逻辑状态以波形的形式呈现,能反映软件运行的实时状态;能够在系统级测试阶段实时获取函数的参数输入、输出信息,给与测试人员更清晰准确的数据支持;能够在软件运行过程中,对软件的内存情况进行监控,发现软件中可能存在泄漏的情况。

【技术实现步骤摘要】
一种系统级实时获取被测程序内部运行数据的方法
本专利技术涉及一种在系统级实时获取监控程序内部运行数据的方法,主要用于在软件系统正常运行过程中分析内部执行逻辑的方法,具体涉及一种获取程序运行逻辑路径状况、函数参数的输入输出情况以及程序内存运行状况的方法。
技术介绍
目前的测试领域中对软件做功能测试时,测试人员无法直观的观测软件内部运行的情况,只能依靠测试人员根据被测试系统的业务通过输入输出来进行判断。无法对程序内部运行的逻辑数据进行观测,使得测试无法深入进行,测试人员在做测试时具有盲目性和不确定性的缺陷,没有额外的工具来支持测试人员对于整个工程的运行状态参照,从而使得测试的主观性较强。当程序出现异常问题时,例如程序出现异常崩溃的时候,一般无法立即发现。例如测试中使用的基本技术是等价类划分,因为软件的输入空间巨大,无法进行全面的遍历和测试,因此需要根据业务和软件设计说明划分等价类和确定边界值来进行测试,而从功能层面,划分是否正确,测试用例是否等价是非常难从软件的输入和输出上直接判断的。传统的白盒测试工具,覆盖率的采集一般是单元级,即在开发环境单机形式采集,同时无法将数据映射到测试用例维度,通常是采集一个阶段的数据进行分析,没有办法明确的区分哪些覆盖率数据和哪些测试用例是直接关联的。程序运行过程中,针对每个函数参数的具体输入输出情况,传统的方式是开发人员通过在开发工具中,采用单步调试的方式获取,当被测程序在运行过程中,程序内部的函数输入输出情况,是无法实时被观测到的,而程序运行过程中函数的输入输出是辅助测试分析的关键因素。软件运行过程中,针对测试用例的内存使用情况,虽然目前存在很多检测内存的技术,但大多以静态分析为主,无法精确给出内存泄漏点和内存使用的清晰的动态追踪结果,在软件整体运行状态下,无法实时观测用例的内存使用状况,从而发现软件存在的一些异常情况。
技术实现思路
本专利技术主要是解决现有黑盒测试技术中存在的“无法直观的观测软件的内部运行逻辑路径状况”以及“无法在程序整体运行过程中实时获取参数的输入输出情况、软件的内存使用情况以及软件崩溃时的时序数据信息”等技术问题,提供了一种获取程序运行状况、函数参数的输入输出情况以及程序内存运行状况的方法,并且将实时数据转化为波形的方式,便于测试人更清晰直观准确的数据支持。本专利技术的上述技术问题主要通过下述技术方案得以解决:获取软件运行内部执行路径,将运行数据转化为波形的方式,获取用例的运行数据以及监控软件的运行状况,包括:(1)软件运行逻辑数据接收装置,调用测试用例执行被植入探针的待测试程序代码并记录所述探针的运行信息;将软件运行接收装置记录的探针运行信息传递给软件运行状态分析装置;(2)软件运行状态分析装置,分析接收到的探针运行信息并生成波形信号;(3)软件运行状况显示装置,显示运行状态分析装置生成的波形信号;所述软件运行逻辑接收装置包括:在待测试程序代码的程序结构中植入探针的插桩模块;测试用例运行控制模块;分析并记录所述探针的运行信息的信息记录模块;插装模块,在待测试程序中,插入探针;测试用例运行控制模块包括点击开始按钮,测试用例开始运行采集数据,点击暂停按钮,采集数据暂时停止,点击停止按钮,表示用例执行完毕,数据采集结束;所述信息记录模块记录的探针运行信息包括:代码块运行消息、条件运行消息中的一种或多种;其中:所述代码块运行消息记录被测试程序代码中程序块的运行状态;所述条件运行消息记录待测试程序代码中条件表达式包含的单个条件运行状态以及所述单个条件的各种组合的运行状态;信息统计模块,接收所述信息记录模块记录的探针运行信息,根据所述探针运行信息统计单位时间内所述待测试程序代码中代码单元运行次数;优化的,所述信息统计模块统计的代码单元包括:代码块级代码单元、条件级单元、函数级单元中的一种或多种;所述信息统计模块包括:代码块级统计单元,统计单位时间内接收到的块运行消息次数,并将所述块运行消息次数作为块级代码单元运行次数;条件级统计单元,统计单位时间内接收到的条件级运行消息次数,并将所述条件级运行消息次数作为条件级代码单元运行次数;函数级统计单元,统计单位时间内接收到的所述块运行消息对应的程序块是函数入口的次数,并将该次数作为函数代码单元运行次数;波形生成模块,以横坐标为时间,纵坐标为所述代码单元运行次数,生成波形。所述波形生成模块根据不同类型的代码单元运行次数分别生成:代码块级波形、条件级波形、函数级波形中的一种或多种。优化的,上述的一种用于软件测试数据分析的波形图,所述信息统计模块以每0.5秒为一个时间单位,统计所述时间单位内的代码单元运行次数;所述波形生成模块以横坐标为时间,纵坐标为所述代码单元运行次数,并且每0.5秒向右移动一个时间单位,从而形成波形图。优化的,软件内部运行逻辑数据波形图,以测试用例为单元进行统计,当测试用例开始时候除了对单位时间内数据继续统计外,累计统计治标的累计结果,当测试用例运行结束后,统计结束,并记录测试用例运行整个过程中程序内部各逻辑单元执行的累计最终数值。此数值可以用于对测试用例进行的等价类划分和边界值确定,也可以用来辅助确定在不同被测试程序版本同样的输入数据下内部程序执行路径和单元是否发生了变化。软件运行过程中,获取函数的输入输出情况,包括:(1)通过编译底层技术,通过遍历抽象语法树,获取被测程序的函数信息模块,对被测源程序进行插装,获取函数参数的信息,包括函数名,参数类型。(2)程序整体运行时,获取被测程序函数的具体参数值,对于复杂类型(例如结构体),进行逐级解析,直至分析到基本的数据类型。软件运行过程中,捕获内存运行情况,包括:(1)对程序中的内存申请和释放进行监控,方法是针对内存分配函数malloc与释放函数free以及new与delete操作符进行绑定,在系统内存函数后面,进行针对性的插装,插装函数取得原始分配函数的信息,例如申请的内存的大小以及将原有申请函数返回的指针作为监控函数的参数,同时插装函数和原有内存申请函数处于同一行代码,因此通过代码位置宏函数,可以精确获得内存分配的位置信息。插装函数将已经申请的指针作为一个链表存储,在释放的代码处,同样插装有对应的释放监控函数,如果内存释放后,则已经申请的内存从监控链表中删除。(2)软件动态运行过程中,捕获内存函数与操作符的信息,通过计算相关信息,来检测和定位内存泄漏。同时可以动态观察某一时刻申请还未释放的内存的总量和具体的组成情况。软件运行过程中,捕获程序最后运行50块时序数据信息,包括:(1)能够自动记录软件崩溃发生时刻之前程序执行的详细路径信息,捕获难以重现的缺陷并快速解决,一般包括捕获最后50个代码块、最后50个条件以及最后50个判定执行。以便用户除了在研发环境内,也可以在用户现场精确定位缺陷,而无需在用户现场部署任何代码。软件运行过程中,实时捕获函数的调用关系,包括:(1)能够自动实时记录当前用例执行的函数调用详细信息,当测试人员发现用例输出与预期不符合时,将此信息提供给开发人员,便于开发人员快速定位发现问题。本专利技术的优点如下:1.将软件运行逻辑状态以波形的形式呈现,能反映软件运行的实时状态;2.能够在系统级测试阶段实时获取函数的参数输入、输出信息,给与测试人员本文档来自技高网
...

【技术保护点】
1.一种系统级实时获取被测程序内部运行数据的方法,其特征在于,包括:软件运行过程中,获取软件运行内部执行路径,将运行数据转化为波形的方式,获取用例的运行数据以及监控软件的运行状况;软件运行过程中,获取函数的输入输出情况;软件运行过程中,捕获用例内存使用情况;软件运行过程中,捕获程序最后运行50块时序数据信息;软件运行过程中,实时捕获用例函数的调用信息。

【技术特征摘要】
1.一种系统级实时获取被测程序内部运行数据的方法,其特征在于,包括:软件运行过程中,获取软件运行内部执行路径,将运行数据转化为波形的方式,获取用例的运行数据以及监控软件的运行状况;软件运行过程中,获取函数的输入输出情况;软件运行过程中,捕获用例内存使用情况;软件运行过程中,捕获程序最后运行50块时序数据信息;软件运行过程中,实时捕获用例函数的调用信息。2.根据权利要求1所述的系统级实时获取被测程序内部运行数据的方法,其特征在于:软件运行过程中,获取软件运行内部执行路径,将运行数据转化为波形的方式,获取用例的运行数据以及监控软件的运行状况包括软件运行逻辑数据接收装置模块、软件运行状态分析装置模块以及软件运行状况显示装置模块;所述软件运行逻辑数据接收装置模块包括在待测试程序代码的程序结构中植入探针的插桩模块;测试用例运行控制模块;分析并记录所述探针的运行信息的信息记录模块;所述测试用例运行控制模块包括点击开始按钮,测试用例开始运行采集数据,点击暂停按钮,采集数据暂时停止,点击停止按钮,表示用例执行完毕,数据采集结束;信息统计模块,接收所述信息记录模块记录的探针运行信息,根据所述探针运行信息统计单位时间内所述待测试程序代码中代码单元运行次数;所述软件运行状态分析装置模块包括波形生成模块,根据不同类型的代码单元运行次数分别生成:代码块级波形、条件级波形、函数级波形中的一种或多种。3.根据权利要求1所述的系统级实时获取被测...

【专利技术属性】
技术研发人员:赵明
申请(专利权)人:苏州洞察云信息技术有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1