首页> 中国专利> 软件测试覆盖率检测方法及系统

软件测试覆盖率检测方法及系统

摘要

本申请提供了一种软件测试覆盖率检测方法及系统,涉及区块链领域,该方法包括:接收智能合约,并发送至目标私有链网络中的各个待测试软件节点;获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行待测试软件版本包对应的软件测试,根据智能合约,将软件测试对应的软件测试数据在目标私有链网络中广播;监听目标私有链网络中的广播,得到软件测试数据;根据软件测试数据和预存储的历史软件测试数据,得到待测试软件版本包的软件测试覆盖率。本申请能够提高软件测试覆盖率检测的可靠性和自动化程度,能够提高软件测试的可靠性,进而能够提高接下来应用待测试软件的安全性。

著录项

  • 公开/公告号CN112783795A

    专利类型发明专利

  • 公开/公告日2021-05-11

    原文格式PDF

  • 申请/专利权人 中国工商银行股份有限公司;

    申请/专利号CN202110196717.8

  • 发明设计人 孙建建;赵中芳;孟凡玥;王烁斐;

    申请日2021-02-22

  • 分类号G06F11/36(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人任默闻;孙乳笋

  • 地址 100140 北京市西城区复兴门内大街55号

  • 入库时间 2023-06-19 10:57:17

说明书

技术领域

本申请涉及区块链领域,也可用于金融领域,具体涉及一种软件测试覆盖率检测方法及系统。

背景技术

软件测试覆盖率是用来度量测试完整性的一个手段,同时也是测试技术有效性的一个度量,通过软件测试覆盖率能够检测软件测试是否充分;在传统确定软件测试覆盖率的解决方案中,软件测试环节和软件测试管理环节依赖于软件测试人员手工上传的软件测试数据。

软件测试人员手工登记软件测试数据,软件测试数据被统一存储在数据库中,通过前台管理工具查询数据库中记录的软件测试数据并返回软件测试数据展示在管理工具前台页面,以此作为软件测试的信息依据。

整个系统离散程度较高,数字化水平和安全性水平较低,具体存在以下问题:1、传统软件测试过程中,消耗较多的测试人工成本,测试成本高;2、传统确定软件测试覆盖率系统的数字化程度低,软件测试效率低,测试周期长;3、在软件测试数据的采集阶段,涉及测试人员手工登记,无法保证软件测试数据的时效性和准确性;4、在存储软件测试数据阶段,数据库中的软件测试数据可能被恶意篡改,信息安全程度低。

发明内容

针对现有技术中的问题,本申请提出了一种软件测试覆盖率检测方法及系统,能够提高软件测试覆盖率检测的可靠性和自动化程度,能够提高软件测试的可靠性,进而能够提高接下来应用待测试软件的安全性。

为了解决上述技术问题,本申请提供以下技术方案:

第一方面,本申请提供一种软件测试覆盖率检测方法,包括:

接收智能合约,并发送至目标私有链网络中的各个待测试软件节点;

获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的软件测试数据在所述目标私有链网络中广播;

监听所述目标私有链网络中的广播,得到所述软件测试数据;

根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率。

进一步地,所述的软件测试覆盖率检测方法,还包括:

将预存储的软件测试任务包发送至各个待测试软件节点,该预存储的软件测试任务包包括:各个待测试软件节点各自对应的测试案例;

相对应的,所述至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,包括:

至少一个待测试软件节点在接收到测试执行指令之后,根据该待测试软件节点对应的测试案例,执行所述待测试软件版本包对应的软件测试。

进一步地,所述根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率,包括:

根据所述软件测试数据和预存储的历史软件测试数据中不同的覆盖接口信息,得到待测试软件版本包中已完成测试的接口个数;

将已完成测试的接口个数与所述待测试软件版本包中的接口总数之间的比值,作为所述待测试软件版本包的软件测试覆盖率。

进一步地,所述的软件测试覆盖率检测方法,还包括:

若存在智能合约与本地的智能合约不同的第一待测试软件节点,则获取最新版本的智能合约;

若本地的智能合约与所述最新版本的智能合约相同,则根据本地的智能合约更新所述第一待测试软件节点的智能合约。

进一步地,所述的软件测试覆盖率检测方法,还包括:

若本地的智能合约与所述最新版本的智能合约不同,则根据该最新版本的智能合约更新本地的智能合约;

若检测得到存在智能合约与本地更新后的智能合约不同的第二待测试软件节点,则根据本地更新后的智能合约更新该第二待测试软件节点的智能合约。

进一步地,所述获取待测试软件版本包并部署至各个待测试软件节点,包括:

获取待测试软件版本包,将第一埋点信息添加至该待测试软件版本包中;

将设有第一埋点信息的待测试软件版本包部署至各个待测试软件节点。

进一步地,所述接收智能合约,并发送至目标私有链网络中的各个待测试软件节点,包括:

接收智能合约;

在所述智能合约中随机添加第二埋点信息,并将设有第二埋点信息的智能合约发送至各个待测试软件节点。

第二方面,本申请提供一种软件测试覆盖率检测系统,包括:

接收装置,用于接收智能合约,并发送至目标私有链网络中的各个待测试软件节点;

获取装置,用于获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的测试数据在所述目标私有链网络中广播;

监听装置,用于监听所述目标私有链网络中的广播,得到所述软件测试数据;

确定装置,用于根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率。

第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现所述的软件测试覆盖率检测方法。

第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述的软件测试覆盖率检测方法。

由上述技术方案可知,本申请提供一种软件测试覆盖率检测方法及系统。其中,该方法包括:接收智能合约,并发送至目标私有链网络中的各个待测试软件节点;获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的软件测试数据在所述目标私有链网络中广播;监听所述目标私有链网络中的广播,得到所述软件测试数据;根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率,能够提高软件测试覆盖率检测的可靠性和自动化程度,能够提高软件测试的可靠性,进而能够提高接下来应用待测试软件的安全性;可以实现软件测试数据自动登记在软件测试数据私有链中,在减少人工操作的同时,保证的软件测试数据的时效性和准确性,此外运用区块链技术,可以有效的防止存储的软件测试数据被篡改,能够提高数据的安全性和可信性;能够避免传统软件测试系统的离散程度较高和数字化水平和安全性水平较低的问题。具体具有如下优点:能够提高测试效率,缩短测试时间,系统可以自动的统计软件测试数据,准实时的输出软件测试报表信息;能够减少人力投入,减轻软件测试实施人员的手工登记测试数据的人工步骤和统计报表自动生成的工作量;适应性强,适用于所有的软件测试平台,尤其是适用于大型软件测试平台。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是传统的软件测试覆盖率检测系统的结构示意图;

图2是本申请实施例中软件测试覆盖率检测方法的流程示意图;

图3是本申请实施例中软件测试覆盖率检测系统的结构示意图;

图4是本申请应用实例中软件测试覆盖率检测系统的结构示意图;

图5是本申请应用实例中软件测试任务分发装置的结构示意图;

图6是本申请应用实例中智能合约控制装置的结构示意图;

图7是本申请应用实例中软件部署及测试信息采集装置的结构示意图;

图8是本申请应用实例中软件测试数据输出装置的结构示意图;

图9是本申请应用实例中软件测试覆盖率检测方法的流程示意图;

图10为本申请实施例的电子设备9600的系统构成示意框图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参见图1,在传统软件测试覆盖率检测解决方案中,所述软件测试覆盖率检测系统主要包括:软件版本存储装置、测试软件装置、软件测试数据采集装置和软件测试数据输出装置;测试软件装置与软件测试数据采集装置并未直接连接;软件测试执行人员人工触发测试软件装置中的软件测试过程,并从测试软件装置中获取软件测试数据,上传至软件测试数据采集装置中,软件测试覆盖率检测过程自动化程度低准确性差。

基于此,为了提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性,本申请实施例提供一种软件测试覆盖率检测系统,该系统可以是一服务器或客户端设备,所述客户端设备可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备和智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表和智能手环等。

在实际应用中,进行软件测试覆盖率检测的部分可以在如上述内容所述的服务器侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。

上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。

所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。

需要说明的是,本申请公开的软件测试覆盖率检测方法及系统可用于金融技术领域,也可用于除金融技术领域之外的任意领域,本申请公开的软件测试覆盖率检测方法及系统的应用领域不做限定。

具体通过下述各个实施例进行说明。

为了提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性,本实施例提供一种执行主体是软件测试覆盖率检测系统的软件测试覆盖率检测方法,该软件测试覆盖率检测系统包括但不限于服务器,如图2所示,该方法具体包含有如下内容:

步骤100:接收智能合约,并发送至目标私有链网络中的各个待测试软件节点。

具体地,所述目标私有链网络是由多个待测试软件节点组成的私有链网络;各个待测试软件节点可以是不同的服务器节点,用于对待测试软件版本包进行测试。

步骤200:获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的软件测试数据在所述目标私有链网络中广播。

具体地,所述待测试软件版本包可以是一种金融业务系统的软件版本包;所述目标私有链网络可以接收软件测试执行人员的终端设备或者自动化测试工具发出的测试执行指令,若至少一个待测试软件节点接收到测试执行指令,则该待测试软件节点对所述待测试软件版本包进行软件测试;所述软件测试数据包括但不限于:测试执行人员信息,测试版本信息,业务流程信息,接口覆盖率信息,覆盖接口信息,时间戳;不同的待测试软件节点得到的软件测试数据可能不同;所述覆盖接口信息可以表示其对应的待测试软件节点已执行完成的待测试软件版本包中的接口。

步骤300:监听所述目标私有链网络中的广播,得到所述软件测试数据。

步骤400:根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率。

具体地,所述预存储的历史软件测试数据可以是本次监听之前,预先存储在所述软件测试覆盖率检测系统中的软件测试数据,可以包含有历史得到的覆盖接口信息。

为了进一步提高软件测试的可靠性,在本申请一个实施例中,所述的软件测试覆盖率检测方法,还包括:将预存储的软件测试任务包发送至各个待测试软件节点,该预存储的软件测试任务包包括:各个待测试软件节点各自对应的测试案例;相对应的,步骤200中所述的至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,包括:

步骤2001:至少一个待测试软件节点在接收到测试执行指令之后,根据该待测试软件节点对应的测试案例,执行所述待测试软件版本包对应的软件测试。

具体地,测试案例可以是测试人员根据软件更新说明书等信息,编写的测试用例,可根据实际需要进行设置。执行测试案例的过程可以相当于执行测试任务的过程。

为了进一步提高得到软件测试覆盖率的准确性,在本申请一个实施例中,步骤400,包括:

步骤041:根据所述软件测试数据和预存储的历史软件测试数据中不同的覆盖接口信息,得到待测试软件版本包中已完成测试的接口个数。

具体地,可以对软件测试数据和预存储的历史软件测试数据中的各覆盖接口信息进行去重操作,得到不同的覆盖接口信息,每条去重后的覆盖接口信息对应一个接口,各去重后的覆盖接口信息对应不同的接口。

步骤042:将已完成测试的接口个数与所述待测试软件版本包中的接口总数之间的比值,作为所述待测试软件版本包的软件测试覆盖率。

具体地,软件测试覆盖率根据统计的颗粒度分为代码行覆盖率,代码分支覆盖率和单元测试覆盖率、集成测试覆盖率和功能覆盖率。本方案支持代码行覆盖率、代码分支覆盖率和单元测试覆盖率;软件测试覆盖率根据统计的被测代码是新增(修改)代码还是存量代码,分为增量代码覆盖率和存量代码覆盖率两种。

在本申请一个举例中,假设编码语言为JAVA,增量代码单元测试覆盖率目标为100%,本期改造代码涉及100个方法,分别为function1~function100;在本方案的第一私有链区块生成前,历史软件测试覆盖率为50%,覆盖了方法function0~function50;待测试软件节点A,测试覆盖了10个方法:function51~function60;软件测试人员B,测试覆盖了10个方法:function56~function65;那么在第一私有链区块共识之后,总的测试覆盖的方法增加了15个:function51~function65,因此,增量代码单元测试覆盖率为65%,距离覆盖了目标相差35%;增量代码单元测试覆盖率的计算公式如下:

其中:UTFR为单元测试覆盖率,FNh为历史区块软件测试覆盖方法数,FNc为当前区块软件测试覆盖方法数,FNa为本期改造涉及方法数。

由上述描述可知,本实施例提供的软件测试覆盖率检测方法,能够提高软件测试覆盖率检测的可靠性和自动化程度,能够提高软件测试的可靠性,进而能够提高接下来应用待测试软件的安全性;具体地,能够实现软件测试数据自动登记在私有链中,能够在减少人工操作的同时,保证软件测试数据的时效性和准确性,进而提高软件测试覆盖率检测的可靠性。

为了提高智能合约的可靠性,保证各待测试软件节点中的智能合约的一致性,在本申请一个实施例中,所述的软件测试覆盖率检测方法,还包括:

步骤011:若存在智能合约与本地的智能合约不同的第一待测试软件节点,则获取最新版本的智能合约。

具体地,所述本地的智能合约可以是存储在软件测试覆盖率检测系统中的智能合约;所述第一待测试软件节点为其智能合约与所述软件测试覆盖率检测系统中的智能合约不同的待测试软件节点。

步骤012:若本地的智能合约与所述最新版本的智能合约相同,则根据本地的智能合约更新所述第一待测试软件节点的智能合约。

为了提高智能合约的可靠性,保证各待测试软件节点中的智能合约的一致性,在本申请一个实施例中,所述的软件测试覆盖率检测方法,还包括:

步骤013:若本地的智能合约与所述最新版本的智能合约不同,则根据该最新版本的智能合约更新本地的智能合约;

步骤014:若检测得到存在智能合约与本地更新后的智能合约不同的第二待测试软件节点,则根据本地更新后的智能合约更新该第二待测试软件节点的智能合约。

具体地,所述第二待测试软件节点可以为其智能合约与所述软件测试覆盖率检测系统中更新后的智能合约不同的待测试软件节点;在更新本地的智能合约之后,重新检测私有链网络中的所有待测试软件节点,若检测得到存在智能合约与本地更新后的智能合约不同的第二待测试软件节点,则根据本地更新后的智能合约更新该第二待测试软件节点的智能合约。

为了进一步提高待测试软件版本包部署的可靠性,在本申请一个实施例中,步骤200,包括:

步骤021:获取待测试软件版本包,将第一埋点信息添加至该待测试软件版本包中。

具体地,可以自动解析所述待测试软件版本包的代码源码,针对代码中的所有分支,自动注入埋点代码,之后对代码重新打包为具有埋点信息的软件版本包,即所述第一待测试软件版本包;所述第一埋点信息可以是注入所述待测试软件版本包中的埋点代码;可以对待测试软件代码进行埋点,在每个方法的入口和代码逻辑的分支处增加埋点代码;当程序执行到方法或者分支的入口,会触发埋点代码,进行测试信息统计即软件测试数据更新,信息处理后写入到区块中。

步骤022:将设有第一埋点信息的待测试软件版本包部署至各个待测试软件节点。

为了进一步提高智能合约的可靠性,在本申请一个实施例中,步骤100包括:

步骤101:接收智能合约。

步骤102:在所述智能合约中随机添加第二埋点信息,并将设有第二埋点信息的智能合约发送至各个待测试软件节点。

具体地,所述第二埋点信息可以是注入所述智能合约的埋点代码;可以理解是,在智能合约代码中注入埋点信息,其目的是执行到智能合约代码时,触发埋点程序,埋点程序会先执行智能合约校验,若校验不通过则更新智能合约代码,若校验通过,则继续执行智能合约。

为了进一步提高检测结果的可视化程度,在本申请一个实施例中,所述的软件测试覆盖率检测方法,还包括:

步骤500:将所述软件测试覆盖率输出显示。

为了进一步提高测试数据的可视化程度,以及便于接下来将测试数据应用在其他系统,在本申请一个实施例中,所述的软件测试覆盖率检测方法,还包括:

步骤600:将所述软件测试数据和预存储的历史软件测试数据输出显示。

从软件层面来说,为了提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性,本申请提供一种用于实现所述软件测试覆盖率检测方法中全部或部分内容的软件测试覆盖率检测系统的实施例,参见图3,所述软件测试覆盖率检测系统具体包含有如下内容:

接收装置10,用于接收智能合约,并发送至目标私有链网络中的各个待测试软件节点.

获取装置20,用于获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的测试数据在所述目标私有链网络中广播。

监听装置30,用于监听所述目标私有链网络中的广播,得到所述软件测试数据。

确定装置40,用于根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率。

本说明书提供的软件测试覆盖率检测系统的实施例具体可以用于执行上述软件测试覆盖率检测方法的实施例的处理流程,其功能在此不再赘述,可以参照上述软件测试覆盖率检测方法实施例的详细描述。

为了解决传统软件测试系统的离散程度较高、数字化水平和安全性水平较低的问题,本申请提供一种软件测试覆盖率检测系统的应用实例,如图4所示,该系统主要包含有:软件测试任务分发装置D001、智能合约控制装置D002、软件部署及测试信息采集装置D003和软件测试数据输出装置D004四部分;具体描述如下:

1、软件测试任务分发装置D001

软件测试任务分发装置D001是本系统的入口,参见图5,主要包括软件分发模块M101、软件埋点控制模块M102、软件测试任务生成模块M103和软件测试任务管理模块M104;其中,软件分发模块M101接收软件开发组织交付的软件版本包,并在此基础上,使用软件埋点控制模块M102,抽离出软件业务代码的所有分支,并在每个分支上进行代码埋点,之后使用软件测试任务生成模块M103和软件测试任务管理模块M104自动和人工干预的情况下生成软件测试案例和软件测试任务包。

(1)软件分发模块M101是一个软件测试任务分发装置的入口,是提供存储、管理、分发待测试软件功能的模块。待测试软件是由软件开发组织开发后,交付给软件测试机构的,并以版本包形式存在的软件产品。本模块包含有软件版本包接收单元U10101、软件版本包存储单元U10102、软件版本包管理单元U10103和软件版本包分发单元U10104。其中软件接收单元U10101是接收软件开发组织交付的软件版本包的单元,支持数字签名(RSA/RSA2、SM2等)加解密,软件开发组织使用数字签名的私钥对软件版本包的摘要信息进行签名,当本系统接收到版本包后,会首先使用数字签名的公钥验签,验签通过后,将软件版本包推送到版本包存储单元U10102。版本包存储单元U10102由一个数据库和分布式存储磁盘组成,其中,数据库中记录着软件版本包的信息,分布式存储磁盘保存着软件版本包介质。软件版本包管理单元U10103是用户管理软件版本包的平台,方便工作人员管理软件分发模块。软件版本包分发单元U10104是软件分发模块的出口,用于将存储和管理的软件版本包分发给下游模块。

(2)软件埋点控制模块M102用于给软件版本源码自动增加埋点。软件埋点控制模块M102收到软件分发模块M101提供的软件版本包,会自动解析代码源码,针对代码中的所有分支,自动设置埋点。不同代码分支层级的埋点串起来,就形成了代码中的所有分支路径。之后对代码重新打包为带有埋点信息的软件版本包。

(3)软件测试案例生成模块M103可以根据软件埋点控制模块M102的重新打包后的软件版本包中的埋点信息,梳理出软件的所有分支,配合软件测试案例库。可以自动的或者更人工干预的情况下生成测试案例,并将生成的案例输入到下游软件测试任务管理模块M104。所述软件测试案例库为测试案例的集合,可预先存储在软件测试覆盖率检测系统本地,便于重复应用软件测试案例库中的测试案例。

(4)测试任务管理模块M104可以根据软件测试案例生成模块M103输出的软件测试案例,自动的或者更人工干预的情况下生成测试任务。并可与对测试任务进行管理和调整。最终输入软件测试任务包。

2、智能合约控制装置D002

智能合约控制装置D002是私有链智能合约的管理模块,参见图6,主要包括智能合约编辑及存储模块M201、智能合约代码埋点控制模块M202、智能合约分发模块M203和智能合约校验模块M204。

(1)智能合约编辑及存储模块M201的主要功能是导入现有的智能合约、编辑现有的智能合约和加密存储智能合约,智能合约在私有链中具有重要作用,所有待测试软件节点都要遵循智能合约的内容。

(2)智能合约代码埋点控制模块M202是智能合约控制装置D002的核心模块,其主要功能是根据智能合约代码随机的在智能合约代码中加入埋点代码。其目的是区块链中待测试软件节点即交易节点执行智能合约代码中的内容时会触发埋点代码,生成日志并返回日志给智能合约控制装置D002的智能合约校验模块M204。确保待测试软件节点智能合约代码的准确性。另外,还可以对智能合约代码进行代码混淆操作,生成混淆代码程序。

(3)智能合约分发模块M203的主要功能是将智能合约分发给私有链中的所有待测试软件节点。

(4)智能合约校验模块M204的主要功能为校验私有链网络中的待测试软件节点所使用的智能合约是否被篡改。当私有链网络中的待测试软件节点调用智能合约的哈希值和智能合约代码埋点控制模块M202生成的代码的哈希值不一致时,会生成智能合约有效性报告,并将报告反馈给智能合约分发模块M203和客户端。双方进行智能合约的更新操作。

本装置中的智能合约的实现,实际为赋予测试过程埋点代码执行这一对象数字特性,将其程序化并发布到区块链上,成为网络上的共享数据资源。通过软件测试执行人员进行测试动作,触发程序中的埋点代码,埋点代码的执行会触发智能合约执行记录代码执行的事件,并将其暂时记录在内存中,等待进行共识(共识的过程为节点将一段时间内网络中的测试情况数据即上述软件测试数据打包成一个测试情况数据集合,并计算中一个符合合约要求的该集合的Hash值。最后,将测试情况数据和Hash值等信息组装成一个区块广播到全网的其他节点。其他节点会对Hash值进行校验。多轮校验后,全网根据智能合约达成共识)。

3、软件部署及测试信息采集装置D003

软件部署及测试信息采集装置D003是部署待测试软件和私有链客户端的装置,其可以理解为本系统中广泛分布的私有链的待测试软件节点。参见图4和图7,其在操作系统的基础上,主要还包括软件自动部署模块M301、软件测试数据收集模块M302和私有链客户端模块M303等。其中,在软件测试任务分发装置D001中获取待测试的软件版本包,并使用软件自动部署模块M301在合适的设备服务器上完成自动部署动作,部署后,软件测试的执行人员会进行软件测试动作。自动部署动作软件测试动作产生的测试数据会自动的被软件测试数据收集模块M302收集并处理。处理后的测试数据为满足本系统中私有链规范的测试信息。测试信息进入私有链客户端模块M303,在私有链网络中,各个待测试软件节点会根据智能合约的约定下运行:在一段时间内,测试数据会自动的打包为一个区块信息,并在私有链网络中广播,完成软件测试数据记录的功能。

(1)软件自动部署模块M301的主要功能是接软件测试任务分发装置D001处理后的软件版本包介质并在设备上完成自动部署。该过程生成软件部署数据并处理为满足本系统中私有链规范的测试信息,之后发送给软件测试数据收集模块M302和私有链客户端模块M303。

(2)软件测试数据收集模块M302的主要功能是收集软件测试执行人员和自动化测试工具执行运行程序至埋点代码所产生的测试覆盖率数据,并对数据进行初步的数据清理和预处理,改写成满足本系统中私有链规范的测试信息。之后将测试数据发送给私有链客户端模块M303。

(3)私有链客户端模块M303是私有链的组成形式,每个部署了私有链客户端的机器设备都是组成私有链的一个核心待测试软件节点。软件部署及测试信息采集装置D003中的私有链客户端模块M303主要具有以下两个功能单元:私有链共识单元U30301和私有链路由单元U30302。私有链共识单元U30301是负责进行数据共识的节点,可以完成数据打包作业和数据广播作业。私有链路由单元U30302是不对交易测试数据进行处理的单元,仅仅是用来实现网络路由能力的单元,其用来记录私有链中其他节点的IP地址和端口等信息,实现数据广播的网络路由功能。

4、软件测试数据输出装置D004

软件测试数据输出装置D004是本系统的出口。参见图8,其包含有:私有链软件客户端模块M401、软件测试数据计算模块M402、软件测试报表输出接口模块M403和软件测试管理模块M404。其功能是将软件测试数据和根据软件测试数据生成的软件测试管理信息输出的功能。

(1)私有链软件客户端模块M401是私有链的组成部分。软件测试数据输出装置D004中的具有私有链数据共识功能和私有链区块数据查询功能。可以快速的在私有链网络中获取最新且完整的区块信息,并将区块信息中的软件测试数据抽取出来,输入到软件测试数据计算模块M402。

(2)软件测试数据计算模块M402的主要功能是将私有链软件客户端模块M401传入的软件测试数据进行计算,形成可以方便软件测试管理人员或系统获取和查看的数据。

(3)软件测试报表输出接口模块M403的功能主要是将软件测试数据处理成报表的形式,然后以接口的方式提供给软件测试管理模块M404或者更其他系统。

(4)软件测试管理模块M404根据软件测试报表输出接口模块M403输出的测试信息报表内容自动的生成测试管理指令输出给其他系统。

为了进一步说明本方案,结合上述软件测试覆盖率检测系统,本应用实例提供一种软件测试覆盖率检测方法,参见图9,具体描述如下:

步骤S1:智能合约源代码上送至智能合约编辑及存储模块M201,经校验后将智能合约发送给智能合约代码埋点控制模块M202。转到步骤S2。

步骤S2:给智能合约代码埋点控制模块M202对智能合约源代码进行随机注入埋点代码,并将处理后的智能合约代码发送给智能合约分发模块M203和智能合约校验模块M204。转到步骤S3。

步骤S3:若智能合约分发模块M203收到智能合约代码埋点控制模块M202发来的更新的处理后的智能合约代码发送到私有链中的各个待测试软件节点。智能合约校验模块M204会定时的扫描私有链中各个节点的智能合约代码,校验代码的一致性和准确性。转到步骤S4。

步骤S4:若智能合约校验模块M204校验到私有链中某个待测试软件节点中的智能合约和本地存储的智能合约不一致,则会主动向智能合约代码埋点控制模块M202请求最新的智能合约,若发现最新的智能合约有改动,则更新智能合约校验模块M204本地的智能合约,并重新检测私有链中的所有节点。若发现最新的智能合约没有改动,则发送指令给待测试软件节点,暂停其计算功能。并发送更新智能合约指令给智能合约分发模块M203和待测试软件节点,直至下次扫描校验通过,再恢复待测试软件节点的计算功能。等待步骤S10完成,转到步骤S11。

步骤S5:软件开发组织上送版本包介质到本应用实例系统中的软件版本包接收单元U10101。本应用实例系统接收后,通过检验,存储在软件版本包存储单元U10102中。之后通过软件分发模块M101分发给软件埋点控制模块M102和软件测试案例生成模块M103。转到步骤S6。

步骤S6:软件埋点控制模块M102接收到软件分发模块M101发送的校验后的版本介质包,会自动解析代码源码,针对代码中的所有分支,自动注入埋点代码并设置埋点,之后对代码重新打包为带有埋点信息的软件版本包。并分发给软件测试案例生成模块M103,转到步骤S7。分发给软件自动部署模块M301。转到步骤S10。步骤S7和步骤S10为并行操作。

步骤S7:软件测试案例生成模块M103会比较软件分发模块M101和软件埋点控制模块M102推送过来的代码的区别,若只有埋点代码有差异为校验通过,转到步骤S8。若校验不通过,则发送指令给软件分发模块M101重新推动版本包转到步骤S5。

步骤S8:软件测试案例生成模块M103自动生成软件测试案例并发送给软件测试任务管理模块M104。转到步骤S9。

步骤S9:软件测试任务管理模块M104收到软件测试案例生成模块M103推送的软件测试案例,会自动的生成软件测试任务和软件测试任务管理功能。等待步骤S10完成,转到步骤S11。

步骤S10:软件自动部署模块M301收到软件埋点控制模块M102分发的版本包介质。等待步骤S4完成,转到步骤S11。

步骤S11:软件自动部署模块M301会自动将收到的版本包介质部署在待测试软件节点上。软件测试任务管理模块M104生成的软件测试任务自动导入待测试软件节点上。转到步骤S12。

步骤S12:软件测试执行人员或者自动化测试工具发送测试执行指令给待测试软件节点,开始软件测试工作。转到步骤S13。

步骤S13:软件测试数据收集模块会定时去待测试软件节点上收集软件测试日志,并将其预处理,转换软件测试数据。之后将软件测试数据转发给私有链客户端模块M303。转到步骤S14。

步骤S14:私有链客户端模块M303可以完成数据打包作业,并在私有链网络中进行广播作业。转到步骤S15。

步骤S15:软件测试数据输出装置D004装置中的私有链客户端模块M401会监听私有链网络中的广播作业,获取最新的软件测试数据。并在本地保存全量历史区块数据。之后将全量的历史区块数据发送给软件测试数据计算模块M402。转到步骤S16。

步骤S16:软件测试数据计算模块M402根据私有链客户端模块M401推送来的历史区块数据进行软件测试覆盖率计算,形成可以方便软件测试管理人员或系统获取和查看的数据。并将生成的数据发送给软件测试数据报表输出接口M403。转到步骤S17。

步骤S17:软件测试数据报表输出接口M403接收到软件测试数据计算模块M402推送的数据后,封装成报表接口提供给其他系统,便于其他系统使用软件测试数据。转到步骤S18。

步骤S18:软件测试管理模块M404会主动调用软件测试数据报表输出接口模块M403封装好的接口去获取软件测试数据,并根据软件测试数据生成软件测试管理指令给其他系统。例如当测试进度滞后时,会发送邮件指令给软件测试执行人员和软件项目管理人员等,完成本应用实例的软件测试覆盖率检测的流程。

由上述描述可知,本申请提供的软件测试覆盖率检测方法及系统,能够提高软件测试覆盖率检测的可靠性和自动化程度,能够提高软件测试的可靠性,进而能够提高接下来应用待测试软件的安全性;可以实现软件测试数据自动登记在软件测试数据私有链中,在减少人工操作的同时,保证的软件测试数据的时效性和准确性,此外运用区块链技术,可以有效的防止存储的软件测试数据被篡改,能够提高数据的安全性和可信性;能够避免传统软件测试系统的离散程度较高和数字化水平和安全性水平较低的问题。具体具有如下优点:能够提高测试效率,缩短测试时间,系统可以自动的统计软件测试数据,准实时的输出软件测试报表信息;能够减少人力投入,减轻软件测试实施人员的手工登记测试数据的人工步骤和统计报表自动生成的工作量;适应性强,适用于所有的软件测试平台,尤其是适用于大型软件测试平台。

从硬件层面来说,为了提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性,本申请提供一种用于实现所述软件测试覆盖率检测方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:

处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现所述软件测试覆盖率检测系统以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述软件测试覆盖率检测方法的实施例及用于实现所述软件测试覆盖率检测系统的实施例进行实施,其内容被合并于此,重复之处不再赘述。

图10为本申请实施例的电子设备9600的系统构成的示意框图。如图10所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图10是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

在本申请一个或多个实施例中,软件测试覆盖率检测功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:

步骤100:接收智能合约,并发送至目标私有链网络中的各个待测试软件节点;

步骤200:获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的软件测试数据在所述目标私有链网络中广播;

步骤300:监听所述目标私有链网络中的广播,得到所述软件测试数据;

步骤400:根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率。

从上述描述可知,本申请的实施例提供的电子设备,能够提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性。

在另一个实施方式中,软件测试覆盖率检测系统可以与中央处理器9100分开配置,例如可以将软件测试覆盖率检测系统配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现软件测试覆盖率检测功能。

如图10所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图10中所示的所有部件;此外,电子设备9600还可以包括图10中没有示出的部件,可以参考现有技术。

如图10所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

上述描述可知,本申请的实施例提供的电子设备,能够提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性。

本申请的实施例还提供能够实现上述实施例中的软件测试覆盖率检测方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的软件测试覆盖率检测方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

步骤100:接收智能合约,并发送至目标私有链网络中的各个待测试软件节点;

步骤200:获取待测试软件版本包并部署至各个待测试软件节点,以使至少一个待测试软件节点在接收到测试执行指令之后,执行所述待测试软件版本包对应的软件测试,根据所述智能合约,将所述软件测试对应的软件测试数据在所述目标私有链网络中广播;

步骤300:监听所述目标私有链网络中的广播,得到所述软件测试数据;

步骤400:根据所述软件测试数据和预存储的历史软件测试数据,得到所述待测试软件版本包的软件测试覆盖率。

从上述描述可知,本申请实施例提供的计算机可读存储介质,能够提高软件测试覆盖率检测的可靠性和自动化程度,提高软件测试的可靠性,进而提高接下来应用待测试软件的安全性。

本申请中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号