本申请涉及计算机,尤其涉及一种区块链虚拟机的测试用例生成方法、系统和装置。
背景技术:
1、区块链:
2、区块链是一种分布式账本技术,它将数据以区块的形式链接在一起,形成一个不可篡改的、公开可验证的数据记录。区块链的主要特点包括去中心化、安全性、透明性和不可变性。它通常用于记录和验证交易或事件,而不需要信任中介。
3、区块链虚拟机:
4、区块链虚拟机是区块链系统的一部分,它负责执行智能合约。它是一个虚拟计算环境,允许在区块链上运行智能合约代码。其输入主要包括:智能合约字节码以及智能合约交易。根据交易的具体信息,执行智能合约字节码并记录执行结果。
5、智能合约:
6、智能合约是一种自动化的、自执行的代码。智能合约通常运行在区块链上,根据预定的规则和条件来执行交易或协议,而无需中介机构。它们可以用于多种用途,例如数字货币交易、供应链管理、众筹等。
7、区块链虚拟机操作码:
8、是用于执行区块链智能合约的基本指令集。这些操作码是区块链虚拟机的一部分,它们定义了在区块链上运行的智能合约的操作和行为。不同的区块链平台可能使用不同的虚拟机和操作码,但它们的基本概念是相似的。
9、智能合约字节码:
10、智能合约字节码是智能合约的编译后形式,通常是一种低级的、二进制的表示形式。字节码是一串操作码的序列。智能合约字节码是区块链虚拟机能够理解和执行的代码。开发人员将智能合约代码编写成高级语言,然后通过编译器将其转换为字节码,以在区块链上部署和执行。
11、智能合约交易:
12、智能合约交易是指包含智能合约执行指令的区块链交易。当用户希望与智能合约互动时,他们将创建一笔智能合约交易,其中包括输入数据和合约地址。这些交易被提交到区块链,然后由区块链虚拟机执行,根据智能合约的规则来处理交易,并在需要时更新区块链状态。
13、总的来说,区块链虚拟机是执行智能合约的环境,智能合约是自动化的代码,智能合约字节码是智能合约的编译形式,而智能合约交易是与智能合约互动的方式。这些概念共同构成了区块链技术中智能合约的核心组成部分。
14、区别于传统代码的测试用例通常为单个函数的调用,区块链虚拟机的测试用例包含两部分:智能合约字节码以及智能合约交易,即智能合约函数调用。若在测试用例生成的过程中,分别生成这两部分会导致测试用例无效概率过高,无法有效地对区块链虚拟机进行测试。
15、现有技术主要是通过分别随机生成智能合约字节码以及智能合约交易,来实现区块链虚拟机的测试。在这个过程中,由于智能合约字节码是由智能合约源码编译得到的,无法覆盖无法编译的情况。并且由于智能合约字节码与生成的智能合约交易不匹配,导致执行无效,无法对区块链虚拟机进行有效的测试。针对这一问题,本发明提出一种区块链虚拟机测试用例关联生成方法,提高测试用例的有效性,从而实现更高效的区块链虚拟机测试
16、本发明要解决的核心技术问题:(1)现有方法都是通过智能合约源码编译,得到对应的智能合约字节码,该方法无法很好地覆盖所有情况;(2)如何关联智能合约字节码以及智能合约交易的生成过程,提高区块链虚拟机测试用例的有效性,从而提高区块链虚拟机测试效率。
技术实现思路
1、本申请提供了一种区块链虚拟机的测试用例生成方法、系统和装置,以解决上述问题。
2、第一方面,本申请提供了一种区块链虚拟机的测试用例生成方法,所述方法包括:
3、基于区块链虚拟机的操作码进行组合,生成字节码;
4、基于生成的字节码,对智能合约进行解析,并生成智能合约字节码对应的控制流图,针对控制流图中的信息,进行智能合约交易的生成,以得到针对区块链虚拟机的测试用例。
5、第二方面,本申请还提供了一种区块链虚拟机的测试用例生成系统,所述系统包括:
6、智能合约字节码生成单元,用于基于区块链虚拟机的操作码进行组合,生成字节码;
7、智能合约交易生成单元,用于基于生成的字节码,对智能合约进行解析,并生成智能合约字节码对应的控制流图,针对控制流图中的信息,进行智能合约交易的生成,以得到针对区块链虚拟机的测试用例。
8、第三方面,本申请还提供了一种区块链虚拟机的测试用例生成装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现上所述的方法。
9、本申请公开了一种区块链虚拟机的测试用例生成方法、系统和装置,通过基于区块链虚拟机的操作码进行组合,生成字节码;基于生成的字节码,对智能合约进行解析,并生成智能合约字节码对应的控制流图,针对控制流图中的信息,进行智能合约交易的生成,以得到针对区块链虚拟机的测试用例。该方法提高测试用例的有效性,从而实现更高效的区块链虚拟机测试。
1.区块链虚拟机的测试用例生成方法,其特征在于,包括:
2.根据权利要求1所述的生成方法,其特征在于,所述基于区块链虚拟机的操作进行组合,生成字节码,包括以下步骤:
3.根据权利要求2所述的生成方法,其特征在于,所述生成方法中将存在取出动作的操作码均视为取出类型。
4.根据权利要求2所述的生成方法,其特征在于,所述基于区块链虚拟机的操作进行组合,生成字节码的具体算法包括:
5.根据权利要求1所述的生成方法,其特征在于,在所述针对控制流图中的信息,进行智能合约交易的生成,以得到针对区块链虚拟机的测试用例,包括:
6.根据权利要求5所述的生成方法,其特征在于,所述智能合约交易调用参数生成的算法包括:
7.一种区块链虚拟机的测试用例生成系统,其特征在于,包括:
8.一种区块链虚拟机的测试用例生成装置,其特征在于,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1-6所述的区块链虚拟机的测试用例生成方法。