针对区块链项目的测试方法、装置及计算机设备制造方法及图纸

技术编号:25948003 阅读:62 留言:0更新日期:2020-10-17 03:40
本申请实施例提供一种针对区块链项目的测试方法、装置及计算机设备,其中方法包括:测试平台针对注入了用于模拟攻击场景的逻辑代码的代码数据包进行编译,生成可执行文件,并将可执行文件发送至目标共识节点;目标共识节点在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于第一测试提案消息的共识结果和执行日志记录到测试文件中;测试平台从目标共识节点处获取测试文件,并基于测试文件分析测试结果。通过本申请实施例可以有效提高异常测试效率以及攻击场景的模拟效果和准确性。

【技术实现步骤摘要】
针对区块链项目的测试方法、装置及计算机设备
本申请涉及计算机
,尤其涉及针对区块链项目的测试方法、针对区块链项目的测试装置、计算机设备及计算机可读存储介质。
技术介绍
区块链是一种多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也就是分布式账本技术。在区块链产品迭代周期内,研发工程师将开发好的区块链项目提测到REQ平台(即软件研发提测流程管理平台),之后触发测试执行。测试人员在对区块链项目完成基本的功能测试之后,会进一步进行异常测试,异常测试主要通过模拟攻击场景来测试区块链项目的鲁棒性,从而检测区块链项目是否存在异常。目前,一般采用网络抓包的形式,人工过滤协议数据并篡改某些数据,从而达到模攻击场景的目的。但这样的方式工作量大,需提前了解区块链协议数据,并且存在网络拆包、分包、组包和包加密的技术风险,所以会存在异常测试效率低、数据篡改精准性差导致的攻击场景模拟效果不好等问题。
技术实现思路
本申请实施例提供了一种针对区块链项目的测试方法、装置及计算机设备,可以有效提高异常测试效率以及攻击场景的模拟效果和准确性。第一方面,本申请实施例提供了一种针对区块链项目的测试方法,所述方法由区块链网络中的目标共识节点执行,所述方法包括:获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;当接收到第二测试提案消息时,对所述第二测试提案消息进行共识,并将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。第二方面,本申请实施例提供了另一种针对区块链项目的测试方法,所述方法包括:获取待测试区块链项目的代码数据包;从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,并将所述可执行文件发送至区块链网络中的目标共识节点;激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。对应于第一方面所述的方法,本申请实施例提供了一种针对区块链项目的测试装置,所述装置包括:获取单元,用于获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;处理单元,用于在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,触发收发单元在区块链网络中广播第一测试提案消息;记录单元,用于将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;所述处理单元,还用于当所述收发单元接收到第二测试提案消息时,对所述第二测试提案消息进行共识;所述记录单元,还用于将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;所述处理单元,还用于响应文件获取请求,触发所述收发单元将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。在一实施例中,所述处理单元,具体用于:在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令构造虚假区块提案消息;将所述虚假区块提案消息作为第一测试提案消息,并触发所述收发单元在区块链网络中广播所述第一测试提案消息。在一实施例中,所述处理单元,具体用于:执行所述逻辑代码所对应的指令对生成的正常区块提案消息进行篡改;将篡改后的区块提案消息作为虚假区块提案消息。对应于第二方面所述的方法,本申请实施例提供了另一种针对区块链项目的测试装置,所述装置包括:获取单元,用于获取待测试区块链项目的代码数据包;处理单元,用于从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;所述处理单元,还用于针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件;收发单元,用于将所述可执行文件发送至区块链网络中的目标共识节点;所述处理单元,还用于激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。在一实施例中,所述处理单元,具体用于:从所述代码数据包的代码中确定与区块提案消息相关的第一关联代码;基于所述第一关联代码所在的位置确定插桩点;在所述插桩点处注入用于模拟构造虚假区块提案消息的攻击场景的逻辑代码。在一实施例中,所述处理单元,具体用于:从所述代码数据包的代码中确定与区块提案共识相关的第二关联代码;基于所述第二关联代码所在的位置确定插桩点;在所述插桩点处注入用于模拟构造虚假共识数据的攻击场景的逻辑代码。在一实施例中,所述代码数据包中包括至少一个代码文件,所述处理单元,具体用于:针对所述至少一个代码文件中注入所述逻辑代码的代码文件进行编译,生成中间文件;基于所述中间文件,对所述待测试区块链项目的代码数据包进行编译,生成可执行文件。在一实施例中,所述处理单元,具体用于:触发所述收发单元向所述目标共识节点发送激活代码,以使得所述目标共识节点通过运行所述激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,通过修改目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。相应地,本申请实施例提供了一种计算机设备,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行上述第一方面所述的针对区块链项目的测试方法,或者执行上述第二方面所述的针对区块链项目的测试方法。相应地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的针对区块链项目的测试方法,或者执行上述第二方面所述的针对区块链项目的测试方法。相应地,本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述第一方面所述的针对区块链项目的测试方法,或者执行上述第二方面所述的针对区块链项目的测试方法。采用本申请实施例提供的针对区块链项目的测试方法,一方面,通过在待测试区块链项目的代码中注入用于模拟攻击场景的逻辑代码,可以在测试本文档来自技高网...

【技术保护点】
1.一种针对区块链项目的测试方法,其特征在于,所述方法由区块链网络中的目标共识节点执行,所述方法包括:/n获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;/n在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;/n当接收到第二测试提案消息时,对所述第二测试提案消息进行共识,并将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;/n响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。/n

【技术特征摘要】
1.一种针对区块链项目的测试方法,其特征在于,所述方法由区块链网络中的目标共识节点执行,所述方法包括:
获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;
在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;
当接收到第二测试提案消息时,对所述第二测试提案消息进行共识,并将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;
响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。


2.如权利要求1所述的方法,其特征在于,所述在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,包括:
在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令构造虚假区块提案消息;
将所述虚假区块提案消息作为第一测试提案消息,并在区块链网络中广播所述第一测试提案消息。


3.如权利要求1所述的方法,其特征在于,所述执行所述逻辑代码所对应的指令构造虚假区块提案消息,包括:
执行所述逻辑代码所对应的指令对生成的正常区块提案消息进行篡改;
将篡改后的区块提案消息作为虚假区块提案消息。


4.一种针对区块链项目的测试方法,其特征在于,所述方法包括:
获取待测试区块链项目的代码数据包;
从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;
针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,并将所述可执行文件发送至区块链网络中的目标共识节点;
激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。


5.如权利要求4所述的方法,其特征在于,所述从所述代码数据包的代码中确定插桩点,包括:
从所述代码数据包的代码中确定与区块提案消息相关的第一关联代码;
基于所述第一关联代码所在的位置确定插桩点;
所述在所述插桩点处注入用于模拟攻击场景的逻辑代码,包括:
在所述插桩点处注入用于模拟构造虚假区块提案消息的攻击场景的逻辑代码。


6.如权利要求4所述的方法,其特征在于,所述从所述代码数据包的代码中确定插桩点,包括:
从所述代码数据包的代码中确定与区块提案共识相关的第二关联代码;
基于所述第二关联代码所在的位置确定插桩点;
所述在所述插桩点处注入用于模拟攻击场景的逻辑代码,包括:
在所述插桩点处注入用于模拟构造虚假共识数据的攻击场景的逻辑代码。


7.如权利要求4-6任一项所述的方法,其特征在于,所...

【专利技术属性】
技术研发人员:陈金龙
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1