软件测试装置、方法、计算机设备及存储介质与流程

    专利2022-07-08  86


    本发明涉及计算机技术领域,尤其涉及一种软件测试装置、方法、计算机设备及存储介质。



    背景技术:

    目前,计算机技术和网络的迅速发展,极大地方便了人们的日常生活。在科技化的今天,为了满足人们生活、工作、娱乐等各方面对便捷性和高效性的需求,越来越多的设备趋向于采用计算机软件进行智能化控制。

    目前,开发人员根据用户需求或者产品升级需求完成软件版本需求的代码编写工作之后,会需要对软件代码进行测试,现有技术中,测试的均是源代码,但是直接对源代码进行测试会导致源代码的泄露风险增加。

    因此,为了保证源代码的安全性,本申请提出了一种软件测试装置、方法、计算机设备及存储介质。



    技术实现要素:

    本发明实施例的目的在于提供一种软件测试装置、方法、计算机设备及存储介质,旨在解决背景技术中确定的现有技术存在的技术问题。

    本发明实施例是这样实现的,一种软件测试方法,所述方法包括以下步骤:

    获取待测试源代码;

    按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    为所述测试代码配置测试环境,对所述测试代码进行测试;

    对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    本发明实施例的另一目的在于提供一种软件测试装置,包括:

    获取模块,用于获取待测试源代码;

    编译模块,用于按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    测试模块,用于为所述测试代码配置测试环境,对所述测试代码进行测试;

    结果输出模块,用于对测试未通过的部分进行反向编译,得到与该部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    本发明实施例的另一目的在于提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述软件测试方法的步骤。

    本发明实施例的另一目的在于提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述软件测试方法的步骤。

    与现有技术相比,本发明的有益效果是:其通过按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码,然后为为所述测试代码配置测试环境,对所述测试代码进行测试;最终对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出,可以对待测试源代码进行混淆处理,更能有利的保证待测试源代码的安全性能,并且最终获得的测试代码与待测试源代码存在唯一映射关系且逻辑关系相同,即可以保证后续的溯源较为方便,同时测试代码可以直接被测试,不会出现编译得到的测试代码无法被正常测试的问题。

    附图说明

    图1为一种软件测试方法的流程图。

    图2为获取待测试源代码的流程图。

    图3为获取测试代码的流程图。

    图4为对测试代码进行测试的流程图。

    图5为对测试代码进行测试的另一流程图。

    图6为对测试代码进行反向编译的流程图。

    图7为一种软件测试装置的结构示意图。

    图8为一种计算机设备的结构示意图。

    具体实施方式

    为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

    以下结合具体实施例对本发明的具体实现进行详细描述。

    如图1所示,为本发明一个实施例提供的一种软件测试方法的流程图,所述方法包括以下步骤:

    s200,获取待测试源代码。

    本发明实施例中,获取是待测试源代码,而并非是整个的源代码,可以有效的降低源代码泄露的风险,具体的获取过程,可以通过系统下发的待测试源代码的文件保存路径来获取,也可以通过其他方式进行获取,本发明实施例在此不进行具体的限定。

    s400,按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码。

    本发明实施例在实际应用时,对待测试源代码进行编译的目的在于,使得待测试源代码进行混淆处理,使得待测试源代码实现“乱码”或者不通顺的效果,在测试时,更能有利的保证待测试源代码的安全性能。并且最终获得的测试代码与待测试源代码存在唯一映射关系且逻辑关系相同,即可以保证后续的溯源较为方便,同时测试代码可以直接被测试,不会出现编译得到的测试代码无法被正常测试的问题。

    s600,为所述测试代码配置测试环境,对所述测试代码进行测试。

    即需要为测试代码的正常测试按照测试需求搭建测试环境,来保证对测试代码的正常测试。

    s800,对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    本发明实施例中,测试代码测试结果中未通过部分,即存在有异常或者问题的测试代码,此时,对存在异常或者问题的测试代码按照预设的规则进行反向编译,即可得到初次编译前的待测试源代码,然后标记待测试源代码所存在的问题并作为测试结果输出,即可在保证待测试源代码安全的前提下实现代码的测试。

    如图2所示,作为本发明一个优选的实施例,所述获取待测试源代码的步骤,具体包括:

    s201,根据源代码文件路径获取源代码文件。

    本发明实施例中,通过源代码文件路径可以找到源代码文件,源代码文件一般来说是以压缩包的形式存在,对上述压缩包进行解压即可得到源代码文件。

    s203,对比所述源代码文件中的源代码与标准代码,得到并保存所述源代码与标准代码的区别部分。

    本发明实施例中,标准代码指的是原版软件代码,因为在一般情况下,源代码的编写都是在原有版本上继续修改或者编写而得到的,原版软件代码已经经过测试和修改,如果该部分代码再次进行测试的话,需要耗费大量的人力物力,因此,本发明实施例中,通过对比可以得到源代码与标准代码的区别部分。

    有必要进行说明的是,本发明实施例中,若原版软件代码与源代码的区别在于一个字符的改变,那么包含该字符的整段代码应该都需要纳入至区别部分中,即需要适当增加区别冗余量,来保证区别部分的准确性。

    s205,以所述区别部分作为待测试源代码。之后,测试的任务量会大大减少,并且,待测试源代码与整个源代码存在较大的区别,更有助于避免源代码泄露的问题。

    如图3所示,作为本发明另一个优选的实施例,所述按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码的步骤,具体包括:

    s401,预设特征字段,以及与所述特征字段相对应的变量字段。

    本发明实施例中,预设的特征字段,可以为待测试源代码中的无效的类、字段、方法、属性等方式,变量字段是用来替换上述无效的类、字段、方法、属性的字段,其设置目的在于对原有待测试源代码进行混淆,具体的,特征字段以及变量字段,可以根据开发者或者测试者的具体需求以及待测试源代码的特征进行自主设定,本实施例在此不进行具体的限定。

    s403,遍历所述待测试源代码,以所述变量字段替换所述待测试源代码中的特征字段。

    本发明实施例在实际应用时,对于整个待测试源代码,将其中的特征字段替换成变量字段,以实现对待测试源代码的编译,有助于避免源代码泄露的问题,最终得到的就是测试代码。

    s405,输出测试代码。

    如图4所示,作为本发明另一个优选的实施例,所述为所述测试代码配置测试环境,对所述测试代码进行测试的步骤,具体包括:

    s601,获取所述测试代码的特征信息,所述特征信息至少包括测试代码的数量信息以及所要求的测试环境信息。

    由于测试代码本身的特性,例如测试代码的数量信息,运行时需要占用的内存信息等等,需要为测试代码搭建符合测试需求的测试环境。

    本发明实施例的一种情况,其测试环境的搭建需求至少如下:

    1、系统版本:centoslinuxrelease7.4.1708(core);

    2、版本需两块空磁盘:(1)ceph安装需要一块空磁盘,至少1.5t,不支持分区;(2)另一块磁盘需挂载在系统根目录,磁盘大小至少1.5t以上;

    3、内存384g以上;

    4、至少一张gpu卡,m40以上,并安装好驱动;

    5、网卡:单万兆网卡;

    6、保证系统干净(建议格式化各磁盘,若不格式化建议检查机器是否安装docker,如已安装建议移除,本部署包中已包含离线docker的安装)。

    s603,根据所述特征信息搭建测试环境,对所述测试代码进行测试。

    即根据上述需求搭建好测试环境之后,即可按照测试需求对测试代码进行测试。

    如图5所示,作为本发明另一个优选的实施例,所述为所述测试代码配置测试环境,对所述测试代码进行测试的步骤,具体包括:

    s602,为所述测试代码标记起始点和跳转点,并在起始点和跳转点位置处分别插入起始函数和跳转函数。

    本发明实施例在实际应用时,特别是在进行稳定性的测试时,需要对部分测试代码进行多次的重复测试,因此,可以在该部分测试代码的首尾端标记起始点和跳转点,并在起始点和跳转点位置处分别插入起始函数和跳转函数,可以对部分测试代码进行设定次数的连续运行,一般来说,重复测试的次数可以为999999999次。

    s604,获取所述测试代码的特征信息,所述特征信息至少包括测试代码的数量信息以及所要求的测试环境信息。

    由于测试代码本身的特性,例如测试代码的数量信息,运行时需要占用的内存信息等等,需要为测试代码搭建符合测试需求的测试环境。

    本发明实施例的一种情况,其测试环境的搭建需求至少如下:

    1、系统版本:centoslinuxrelease7.4.1708(core);

    2、版本需两块空磁盘:(1)ceph安装需要一块空磁盘,至少1.5t,不支持分区;(2)另一块磁盘需挂载在系统根目录,磁盘大小至少1.5t以上;

    3、内存384g以上;

    4、至少一张gpu卡,m40以上,并安装好驱动;

    5、网卡:单万兆网卡;

    6、保证系统干净(建议格式化各磁盘,若不格式化建议检查机器是否安装docker,如已安装建议移除,本部署包中已包含离线docker的安装)。

    s606,根据所述特征信息搭建测试环境,对所述测试代码进行测试。

    即根据上述需求搭建好测试环境之后,即可按照测试需求对测试代码进行测试。

    如图6所示,作为本发明另一个优选的实施例,所述对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出的步骤,具体包括:

    s801,获取测试代码的测试结果。

    本发明实施例中,测试代码的测试结果中至少需要包含有存在漏洞部分的代码段以及关于漏洞问题的描述。

    s803,截取测试结果中未通过测试部分的测试代码信息,根据预设的规则反向编译,得到与未通过测试的测试代码对应的待测试源代码。

    简单的来说,就是指根据存在漏洞的代码段,依据预设的规则反向编译,可以得到对应的待测试源代码段,也就是说,当测试代码中的某个代码段存在漏洞时,与之对应的待测试源代码段也会存在问题。

    s805,标记所述待测试源代码存在的问题作为测试结果输出。

    如图7所示,本发明实施例还提供了一种软件测试装置的结构示意图,包括:

    获取模块100,用于获取待测试源代码;

    编译模块200,用于按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    测试模块300,用于为所述测试代码配置测试环境,对所述测试代码进行测试;

    结果输出模块400,用于对测试未通过的部分进行反向编译,得到与该部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    本发明实施例在实际应用时,首先通过获取模块100获取待测试源代码,然后,编译模块200按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码,测试代码与待测试源代码存在唯一映射关系且逻辑关系相同的目的在于,可以保证后续的溯源较为方便,同时测试代码可以直接被测试,不会出现编译得到的测试代码无法被正常测试的问题;然后由测试模块300为所述测试代码配置测试环境,对所述测试代码进行测试,最终结果输出模块400对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,也就是说,当测试代码中的某个代码段存在漏洞时,与之对应的待测试源代码段也会存在问题,然后标记待测试源代码所存在的问题并作为测试结果输出。

    如图8所示,本发明实施例的另一目的在于提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行:

    s200,获取待测试源代码。

    s400,按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    s600,为所述测试代码配置测试环境,对所述测试代码进行测试;

    s800,对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    本发明实施例的另一目的在于提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行:

    s200,获取待测试源代码;

    s400,按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    s600,为所述测试代码配置测试环境,对所述测试代码进行测试;

    s800,对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

    本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

    本发明上述实施例提供了一种软件测试方法,并基于该方法提出了一种软件测试装置、计算机设备及存储介质,其通过按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码,然后为为所述测试代码配置测试环境,对所述测试代码进行测试;最终对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出,可以对待测试源代码进行混淆处理,更能有利的保证待测试源代码的安全性能,并且最终获得的测试代码与待测试源代码存在唯一映射关系且逻辑关系相同,即可以保证后续的溯源较为方便,同时测试代码可以直接被测试,不会出现编译得到的测试代码无法被正常测试的问题。

    本领域技术人员在考虑说明书及实施例处的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

    应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。


    技术特征:

    1.一种软件测试方法,其特征在于,所述方法包括以下步骤:

    获取待测试源代码;

    按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    为所述测试代码配置测试环境,对所述测试代码进行测试;

    对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    2.根据权利要求1所述的一种软件测试方法,其特征在于,所述获取待测试源代码的步骤,具体包括:

    根据源代码文件路径获取源代码文件;

    对比所述源代码文件中的源代码与标准代码,得到并保存所述源代码与标准代码的区别部分;

    以所述区别部分作为待测试源代码。

    3.根据权利要求1所述的一种软件测试方法,其特征在于,所述按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码的步骤,具体包括:

    预设特征字段,以及与所述特征字段相对应的变量字段;

    遍历所述待测试源代码,以所述变量字段替换所述待测试源代码中的特征字段;

    输出测试代码。

    4.根据权利要求1所述的一种软件测试方法,其特征在于,所述为所述测试代码配置测试环境,对所述测试代码进行测试的步骤,具体包括:

    获取所述测试代码的特征信息,所述特征信息至少包括测试代码的数量信息以及所要求的测试环境信息;

    根据所述特征信息搭建测试环境,对所述测试代码进行测试。

    5.根据权利要求4所述的一种软件测试方法,其特征在于,所述为所述测试代码配置测试环境,对所述测试代码进行测试的步骤,还包括在获取所述测试代码的特征信息前,为所述测试代码标记起始点和跳转点,并在起始点和跳转点位置处分别插入起始函数和跳转函数。

    6.根据权利要求1所述的一种软件测试方法,其特征在于,所述对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出的步骤,具体包括:

    获取测试代码的测试结果;

    截取测试结果中未通过测试部分的测试代码信息,根据预设的规则反向编译,得到与未通过测试的测试代码对应的待测试源代码;

    标记所述待测试源代码存在的问题作为测试结果输出。

    7.一种软件测试装置,其特征在于,包括:

    获取模块,用于获取待测试源代码;

    编译模块,用于按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;

    测试模块,用于为所述测试代码配置测试环境,对所述测试代码进行测试;

    结果输出模块,用于对测试未通过的部分进行反向编译,得到与该部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出。

    8.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至6中任一项权利要求所述软件测试方法的步骤。

    9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至6中任一项权利要求所述软件测试方法的步骤。

    技术总结
    本发明适用于计算机技术领域,提供了一种软件测试装置、方法、计算机设备及存储介质,所述方法包括获取待测试源代码;按照预设的规则编译所述待测试源代码,得到与所述待测试源代码存在唯一映射关系且逻辑关系相同的测试代码;为所述测试代码配置测试环境,对所述测试代码进行测试;对测试代码测试结果中未通过部分所对应的测试代码进行反向编译,得到与未通过部分对应的待测试源代码,标记待测试源代码所存在的问题并作为测试结果输出,本发明的有益效果是:可以对待测试源代码进行混淆处理,更能有利的保证待测试源代码的安全性能,同时测试代码可以直接被测试,不会出现编译得到的测试代码无法被正常测试的问题。

    技术研发人员:阎鹏
    受保护的技术使用者:德萱(天津)科技发展有限公司
    技术研发日:2020.11.27
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22578.html

    最新回复(0)