一种自动化软件检测方法及装置与流程

文档序号:11774362阅读:207来源:国知局
一种自动化软件检测方法及装置与流程

本发明涉及计算机领域,尤其涉及一种自动化软件检测方法及装置。



背景技术:

内存泄漏也称作“存储渗漏”,是用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束,即所谓内存泄漏。以发生的方式来分类,内存泄漏可以分为4类:常发性内存泄漏、偶发性内存泄漏、一次性内存泄漏、隐式内存泄漏。从用户使用软件的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。常见内存泄漏危害有:cpu资源耗尽(运行软件的智能终端无反应)、进程id耗尽(无法创建新的进程、串口)、硬盘耗尽。为了防止上述危害的发生,开发人员在开发软件的过程中,需要发现软件的内存泄漏,并找到发生内存泄漏的运行代码,进而完善软件,给用户更好的体验。

同样,为了给用户更好的体验,开发人员需要监测软件的电量(电量使用过多)、流量(耗费流量过多)使用情况以及软件的运行情况(是否崩溃),找到发生使用异常时的软件运行代码,进而完善软件。

随着智能终端的发展以及操作系统功能的不断开发,智能终端上的软件日益丰富,为了使用户获得更好的体验,对软件的内存、流量、电量的使用状况以及软件运行的稳定性便有了更高的要求。现有技术针对以上问题主要采用人工检测的方式进行检测,但人工检测需要消耗大量的人力资源,且人工检测效率较低,且检测结果是否准确受限于检测人员的检测水平。



技术实现要素:

针对现有技术存在的前述问题,本申请提出一种自动化软件检测方法和装置,以实现自动化的软件检测,提高检测准确性和效率。

第一方面,本发明实施例提供一种自动化软件检测方法,该方法包括:根据预先编辑的与待测软件对应的逻辑脚本,生成待测事件;控制待测软件自动化运行待测事件;监测待测软件在运行待测事件过程中产生的实时数据,并根据实时数据确定并记录待测软件发生异常的事件。

第二方面,本发明实施例提供一种自动化软件检测装置,该装置包括:

待测事件生成模块,用于根据预先编辑的与待测软件对应的逻辑脚本,生成待测事件;

控制模块,用于控制所述待测软件自动化运行所述待测事件;

监测模块,用于监测所述待测软件在运行所述待测事件过程中产生的实时数据,并根据所述实时数据确定并记录所述待测软件发生异常的事件。

本发明实施例提供的技术方案,一方面,首先,待测软件运行的待测事件根据预先编辑的与待测软件对应的逻辑脚本生成,因此使得生成的待测事件更符合待测软件;其次,根据待测软件在运行所述待测事件的过程中的实时数据来确定并记录待测软件发生异常的事件,由于实时数据是最能真实反映待测软件运行待测事件过程中的真实情况,因此生成的事件更准确,综上,本申请自动化软件检测更准确,不受限于人工的水平,也可以避免人工带来的认为误差或错误。另一方面,实现了自动化的进行软件检测,无需人工参与,降低人力成本,提高效率。

附图说明

图1为本发明实施例应用场景示意图;

图2为本发明实施例提供的一种自动化软件检测方法的流程示意图;

图3为本发明实施例提供的一种自动化软件检测装置结构示意图。

具体实施方式

如图1所示,本发明实施例所提供的技术方案可以适用于对笔记本电脑、台式电脑、平板电脑、手机及其他终端设备运行的待测软件的自动化检测。本发明提供的技术方案可以是在前述终端设备上生成模拟器,通过该模拟器生成待测软件对应的待测事件,并控制待测软件运行该待测事件,并根据待测软件运行该待测事件的过程中生成的实时数据来得到待测软件发生异常的事件(如包括内存泄漏事件、流量使用异常事件、电量使用异常事件、运行崩溃事件等),以便开发人员及时发现待测软件存在的问题,并根据具体问题进行处理,完善待测软件。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

图2为本发明实施例提供的一种自动化软件检测方法的流程示意图,方法包括:

步骤s101,根据预先编辑的与待测软件对应的逻辑脚本,生成待测事件。

本发明实施例中,前述步骤s101具体实现可如下:首先,对预先编辑的与待测软件对应的逻辑脚本进行解析,得到对待测软件进行操作的操作指令以及该操作指令的操作规则;其次,根据操作指令以及操作规则生成待测事件,在该待测事件中指示待测软件根据所述操作规则对待测软件执行相应的操作指令,以便待测软件根据待测事件中的操作规则执行相应的操作指令。

本实施例中,预先根据待测软件所具备的功能,编写与该待测软件所需的逻辑脚本,在该逻辑脚本中包含了针对待测软件所具备的各功能进行操作的操作指令以及执行该操作指令的操作规则。以电子地图软件为例,该电子地图软件包含了poi搜索功能、查看路况、拖动电子地图、缩放电子地图、路线规划功能、导航功能、周边poi查询等功能,则预先编辑的与该电子地图软件对应的逻辑脚本中可包括以下指令:点击“导航”控件、选择导航模式(包括驾车导航、公交导航、自行车导航、步行导航)、在路线规划页输入起点和输入终点、点击“放大”控件、点击“缩小”控件、点击“路线”控件、点击“附 近”控件、点击“路况”控件、下载离线地图、搜索poi、随机点击地图界面等操作。

本实施例中,待测事件可以是随机生成的事件,一个待测事件对应一个操作指令,或者一个待测事件对应多个操作指令。操作指令可具有不同的种类划分,以电子地图软件为例,其操作指令包括:随机点击屏幕(屏幕任意位置)、点击控件、拖动、输入文字、输入语音、屏幕旋转、页面切换等。操作指令的规则可以包括操作指令执行的时机、执行的方式、执行的顺序、执行的比例等。例如:随机点击屏幕占操作指令的70%、点击控件占操作指令的10%、页面切换占操作指令的10%等。操作指令的执行顺序如:随机点击屏幕>页面切换>点击控件>页面切换>屏幕旋转>拖动等。

步骤s102,控制待测软件自动化运行待测事件。

即步骤s102中,控制待测软件根据待测事件中的操作规则执行相应的操作指令。

步骤s103,监测待测软件在运行待测事件过程中产生的实时数据,并根据实时数据确定并记录待测软件发生异常的事件。

本发明实施例中,前述步骤s101-步骤s103是针对每一个待测事件所执行的步骤,即每生成一个待测事件则控制待测软件运行该待测事件,并根据实时数据确定并记录待测软件发生异常的事件;完成后再继续生成下一个待测事件,重复前述步骤。

本发明实施例中,根据实时数据确定并记录的待测软件发生异常的事件至少包括以下一种:内存泄漏事件、流量使用异常事件、电量使用异常事件、运行崩溃事件等。

下面通过具体的实施例,分别对如何根据实时数据来确定并记录前述内存泄漏事件、流量使用异常事件、电量使用异常事件以及运行崩溃事件进行详细的描述。

可选地,前述步骤103,具体可包括步骤a1和步骤a2,该对应内存泄露 事件的记录:

步骤a1、动态监测所述待测软件在运行所述待测事件过程中申请和释放内存块的情况,当申请所述内存块时将所述内存块的使用者数量加一,当释放所述内存块时将所述内存块的使用者数量减一;以及,

步骤a2、判断所述内存块是否无指针指向且使用者数量大于零,若是则将申请所述内存块时分配的指针所对应的运行代码以及所述内存块作为内存泄漏事件记录。

步骤a2中,动态监测所述内存块是否无指针指向,若有指针指向则继续动态监测;若无指针指向则判断使用该内存块的使用者数量是否大于零,若大于零则将申请所述内存块时分配的指针所对应的运行代码以及所述内存块作为内存泄漏事件记录,若小于等于零则不作处理。

以内存块a为例,每当待测软件申请使用该内存块a时,为该内存块a分配一个指针指向内存块a,以示内存块a被申请使用,此时需将内存块a的使用者数量加1;当待测软件完释放内存块a时,指针不再指向内存块a,以示内存块a被释放,此时需将内存块a的使用者数量减1;当内存块a的使用者数量为0时,内存块a被完全释放。显然,当内存块a无指针对应但是使用者数量大于0时,则说明内存块a在待测软件被申请使用后没有被释放,该内存块a发生内存泄漏。

举例对获取内存泄漏事件的工作原理及过程进行说明:

首先,举例说明:

内存块b2(指针1、指针2)表示:内存块b的使用者数量为2,指针1和指针3指向内存块b;

内存块c1(指针3)表示:内存块c的使用者数量为1,指针3指向内存块c;

内存块d3(指针1、指针2、指针3)表示:内存块d的使用者数量为3,指针1、指针2和指针3指向内存块d。

第一次监测待测软件所使用的内存块的结果如:内存块b2(指针1、指针2)、内存块c1(指针3)、内存块d3(指针1、指针2、指针3);

第二次监测(如10s之后)待测软件所使用的内存块的结果如:内存块b2(指针1、指针2)、内存块c1(无指针)、内存块d3(指针1、指针2、指针3),通过第二次监测结果可以看出,内存块c发生内存泄漏,此时将内存块c以及申请该内存块c时分配的指针3所对应的运行代码作为内存泄漏事件记录。

可选地,前述步骤103,具体可包括步骤b1和步骤b2,该对应流量使用异常事件的记录:

步骤b1、动态监测并记录所述待测软件在运行所述待测事件的过程中所消耗的实时流量,所述实时流量为单位时间内所消耗的流量;以及,

步骤b2、判断所述实时流量是否在预置的参考流量范围内,若否则将所述实时流量、当前时间以及当前时间待测软件运行的待测事件作为流量使用异常事件记录;若是则继续判断所述实时流量是否在预置的参考流量范围内。

本发明实施例中,动态监测待测软件在运行待测事件的过程中的实时流量,若监测到某个时间t的实时流量超过参考流量范围时,则将该时间t、时间t的实时流量、在时间t运行的待测事件作为流量使用异常事件记录。其中确定在时间t运行的待测事件可以通过查询系统日志得到在待测软件在时间t的一定时间范围内运行的待测事件。

待测事件中预先设置的参考流量范围可以根据该待测事件对应的操作指令、待测软件所在终端设备的网络连接方式(wifi、蓝牙、数据流量等)得到。也可以将该参考流量范围设置为[0.9a,1.1a],其中a为待测软件在运行已经运行过的待测事件过程中所消耗的实时流量的平均值;或则a是预设设置的一个经验值。

可选地,前述步骤103,具体可包括步骤c1和步骤c2,该对应电量使用事件的记录:

步骤c1、动态监测并记录所述待测软件在运行所述待测事件的过程中所消耗的实时电量,所述实时电量为单位时间内所消耗的电量;

动态监测可以是周期性监测,例如每隔10s监测一次。将本次监测得到的耗电量与上一次监测得到的耗电量的差值作为在一个周期内待测软件的耗电量,根据一个周期内待测软件的耗电量和一个周期的时长得到待测软件的实时电量。

步骤c2、判断所述实时电量是否在预置的参考电量范围内,若否则将所述实时电量、当前时间、当前时间待测软件运行的待测事件作为电量使用异常事件记录。

待测事件中预先设置的参考电量范围可以根据该待测事件对应的操作指令得到。也可以将该参考流量范围设置为[0.9b,1.1b],其中b为待测软件在运行已经运行过的待测事件过程中所消耗的实时电量的平均值;或则b是预设设置的一个经验值。

可选地,前述步骤103,具体可包括步骤d1和步骤d2,该对应运行崩溃事件的记录:

步骤d1、判断系统日志中是否记录有所述待测软件在运行所述待测事件的过程中发生崩溃以及发生崩溃的运行代码的崩溃事件,若有则执行步骤d2,若无则执行步骤d1;

步骤d2、将所述崩溃事件作为运行崩溃事件记录。

终端设备的系统在软件的运行过程中会实时生成系统日志,因此前述待测软件在运行待测事件过程中若发生了崩溃则必然会在系统日志中生成崩溃事件(如包括发生崩溃的时间、运行代码等)。崩溃事件主要指待测软件发生无应答、停止运行、自动退出等不符合待测软件正常运行的情况。

优选地,在待测软件运行待测事件的过程中,根据动态监测的实时电量,生成随着时间变化的实时电量的变化曲线图;和/或,在待测软件运行待测事件的过程中,根据动态监测的实时流量,生成随着时间变化的实时流量的变 化曲线图;以便本领域技术人员能够更加直观、快速的获知待测软件在运行待测事件过程中的电量和/或流量的使用情况。

综上,前述步骤103可以包括以下至少一组步骤:组1(步骤a1-步骤a2)、组2(步骤b1-步骤b2)、组3(步骤c1-步骤c2)、组4(步骤d1-步骤d2)。

图3为本发明实施例提供的一种自动化软件检测装置结构示意图,如图3所示,本发明实施例所提供的装置包括:

待测事件生成模块11,用于根据预先编辑的与待测软件对应的逻辑脚本,生成待测事件;

控制模块12,用于控制所述待测软件自动化运行所述待测事件;

监测模块13,用于监测所述待测软件在运行所述待测事件过程中产生的实时数据,并根据所述实时数据确定并记录所述待测软件发生异常的事件。

优选地,所述待测事件生成模块11,具体用于:对预先编辑的与待测软件对应的逻辑脚本进行解析,得到对所述待测软件进行操作的操作指令以及该操作指令的操作规则;根据所述操作指令以及预置的操作规则生成待测事件,所述待测事件中指示待测软件根据所述操作规则对所述待测软件执行相应的操作指令。

优选地,在一个实施例中,所述监测模块13包括:

内存监测单元,用于动态监测所述待测软件在运行所述待测事件过程中申请和释放内存块的情况,当申请所述内存块时将所述内存块的使用者数量加一,当释放所述内存块时将所述内存块的使用者数量减一;

内存泄漏事件记录单元,用于判断所述内存块是否无指针指向且使用者数量大于零,若是则将申请所述内存块时分配的指针所对应的运行代码以及所述内存块作为内存泄漏事件记录。

优选地,在一个实施例中,所述监测模块13包括:

流量监测单元,用于动态监测并记录所述待测软件在运行所述待测事件的过程中所消耗的实时流量,所述实时流量为单位时间内所消耗的流量;

流量使用异常事件记录单元,用于判断所述实时流量是否在预置的参考流量范围内,若否,则将所述实时流量、当前时间以及当前时间待测软件运行的待测事件作为流量使用异常事件记录。

优选地,再一个实施例中,所述监测模块13包括:

电量监测单元,用于动态监测并记录所述待测软件在运行所述待测事件的过程中所消耗的实时电量,所述实时电量为单位时间内所消耗的电量;

电量使用异常事件记录单元,用于判断所述实时电量是否在预置的参考电量范围内,若否将所述实时电量、当前时间、当前时间待测软件运行的待测事件作为电量使用异常事件记录。

在最后一个实施例中,监测模块13包括:

崩溃事件监测单元,用于判断是否记录有所述待测软件在运行所述待测事件的过程中发生崩溃以及发生崩溃的运行代码的崩溃事件,若有则触发运行崩溃事件记录单元;

运行崩溃事件记录单元,用于将所述崩溃事件作为运行崩溃事件记录。

需要说明的是,开发人员可以根据记录的待测软件发生异常的事件分析待测软件所存在的问题,针对该问题进行相应的处理。如待测软件发生异常的事件为内存泄漏事件,则对该内存泄漏事件中记录的运行代码进行修改和完善;如待测软件发生异常的事件为崩溃事件,则对崩溃事件中记录的运行代码进行修改和完善;如待测软件发生异常的事件为流量使用异常事件,则根据该流量使用异常事件中记录的待测事件对应的代码进行检测,若检测有问题则对该代码进行修改;如待测软件发生异常的事件为电量使用异常事件,则根据该电量使用异常事件中记录的待测事件对应的代码进行检测,若检测有问题则对该代码进行修改。

综上,本实施例中检测模块13至少包括以下一组单元:组1(内存监测单元和内存泄漏事件记录单元)、组2(流量监测单元和流量使用异常事件记录单元)、组3(电量监测单元和电量使用异常事件记录单元)、组4(崩溃 事件监测单元和运行崩溃事件记录单元)。

显然,本发明实施例提供的自动化软件检测方法适用于各种操作系统的终端设备,如mac、android、ios、linux、windows等。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1