CN110413316B - 面向区块链智能合约的非侵入式测试系统及方法 - Google Patents
面向区块链智能合约的非侵入式测试系统及方法 Download PDFInfo
- Publication number
- CN110413316B CN110413316B CN201910702836.9A CN201910702836A CN110413316B CN 110413316 B CN110413316 B CN 110413316B CN 201910702836 A CN201910702836 A CN 201910702836A CN 110413316 B CN110413316 B CN 110413316B
- Authority
- CN
- China
- Prior art keywords
- code
- intelligent contract
- node
- intelligent
- anchor point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000004048 modification Effects 0.000 claims abstract description 69
- 238000012986 modification Methods 0.000 claims abstract description 67
- 238000001514 detection method Methods 0.000 claims abstract description 54
- 238000004458 analytical method Methods 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000004573 interface analysis Methods 0.000 claims description 9
- 238000004873 anchoring Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 101710092886 Integrator complex subunit 3 Proteins 0.000 description 2
- 102100025254 Neurogenic locus notch homolog protein 4 Human genes 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 101100274406 Schizosaccharomyces pombe (strain 972 / ATCC 24843) cid1 gene Proteins 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种面向区块链智能合约的非侵入式测试系统及方法,所述系统包含:客户端接收用户提交的代码修改请求及反馈至用户;智能合约存储节点存储区块链网络运行的智能合约的源码和版本提交历史;根据代码修改请求分析代码修改请求与源码之间的差异,获得检测数据;智能合约锚点控制节点根据源码和检测数据获得源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;以及,当网络节点调用智能合约并进入铆钉代码行时,根据锚点触发代码执行记录并记录智能合约运行状态,获得代码执行日志;测试结果报表节点根据代码执行日志生成功能点测试报告,将功能点测试报告反馈至客户端。
Description
技术领域
本发明涉及区块链技术领域,尤其是一种面向区块链智能合约的非侵入式测试系统和方法。
背景技术
目前的区块链系统开发过程中,传统的覆盖测试检测方法是通过日志输出或者代码打桩的方式确认程序覆盖率,该方法新增了开发人员的工作量同时新增的打桩代码也可能引入新的代码风险。同时区块链属于去中心化的联盟系统,智能合约的覆盖测试流程无法像传统软件测试那样由单一机构组织测试验证,如何保证智能合约被充分测试,涉及到多方对智能合约的代码的测试和验证,同时区块链系统是联盟方多方负责的系统,各方需要对智能合约功能的测试完整性协商。如何跟踪并保证程序修改的能全面的测试覆盖,降低程序修改导致在新增功能上线后引发的投产风险,成为业内亟需解决的一大技术问题。
发明内容
本发明目的在于提供一种基于差量变更集分析和智能合约程序锚点模式检测结合的方案,在专用的功能测试环境开启远程调试模式,并对增量修改的代码进行代码分析并设置自动检测点,记录程序执行路径,记录完成后断点继续步进,继续执行程序的功能的测试系统和方法。
为达上述目的,本发明所提供的面向区块链智能合约的非侵入式测试系统具体包含:客户端、智能合约存储节点、智能合约锚点控制节点和测试结果报表节点;所述客户端用于接收用户提交的代码修改请求;以及将接收到的功能点测试报告反馈至用户;所述智能合约存储节点用于存储区块链网络运行的智能合约的源码和版本提交历史;以及,根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与源码之间的差异,获得检测数据;所述智能合约锚点控制节点用于根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;以及,当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志;所述测试结果报表节点用于根据所述代码执行日志生成功能点测试报告,将所述功能点测试报告反馈至所述客户端。
在上述面向区块链智能合约的非侵入式测试系统中,优选的,所述智能合约存储节点包含代码提交控制装置、代码版本控制装置和代码分析装置;所述代码提交控制装置用于接收客户端转发的代码修改请求,根据所述代码修改请求生成提交序号并存储至所述代码版本控制装置;所述代码版本控制装置用于存储区块链网络运行的智能合约的源码和版本提交历史;所述代码分析装置用于根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与源码之间的差异,获得检测数据。
在上述面向区块链智能合约的非侵入式测试系统中,优选的,所述代码分析装置包含语法分析模块和接口分析模块;所述语法分析模块用于通过语法变更分析器分析代码修改请求在行级别的修改位置;所述接口分析模块用于根据代码修改请求中代码修改逻辑和修改位置上下文内容获得对应检测点位置,根据所述修改位置和所述检测点位置获得检测数据。
在上述面向区块链智能合约的非侵入式测试系统中,优选的,所述系统还包含区块链智能合约运行节点,所述区块链智能合约运行节点用于提供TCP协议服务监听端口至所述智能合约锚点主控节点予以监控所述锚点触发情况。
在上述面向区块链智能合约的非侵入式测试系统中,优选的,所述智能合约锚点控制节点包含数据接收单元、智能合约部署单元和智能合约源码锚定单元;所述数据接收单元用于于所述智能合约存储节点上获取所述源码和所述检测数据;所述智能合约部署单元用于根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;所述智能合约源码锚定单元用于当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志。
本发明还提供一种面向区块链智能合约的非侵入式测试方法,所述方法包含:接收用户提交的代码修改请求;根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与对应的智能合约的源码之间的差异,获得检测数据;根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志;根据所述代码执行日志生成功能点测试报告;将功能点测试报告反馈至用户。
在上述面向区块链智能合约的非侵入式测试方法中,优选的,当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态包含:通过TCP协议服务监听服务监控所述锚点触发情况。
在上述面向区块链智能合约的非侵入式测试方法中,优选的,所述方法之前还包含:获取区块链网络运行的智能合约的源码;根据所述代码修改请求生成提交序号;将所述智能合约的源码和所述代码修改请求的提交序号对应保存至预设数据库。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明提供了一种基于差量变更集的路径覆盖测试系统,能精确的统计智能合约代码行级别的覆盖测试情况,防止测试遗漏,导致潜在的程序缺陷,导致的经济损失;基于语言级别的断点追踪,非侵入式的追踪程序执行逻辑,且无需针对不同智能合约代码编写额外代码去追踪测试覆盖情况;能很方便测试组织,可根据不同的时间点设置追踪周期,方便加强代码的回归测试覆盖强度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1A和图1B为一种区块链智能合约功能测试的系统结构图;
图2为区块链智能合约代码存储节点的结构图;
图3为区块链智能合约运行节点的结构图;
图4为区块链智能合约锚点程序主控节点的结构图;
图5为源码锚定装置与智能合约运行节点交互图;
图6为区块链智能合约测试报表节点的结构图;
图7为测试系统各节点间的信息交互图;
图8为面向区块链智能合约的非侵入式测试方法的流程图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明设计新引入一种智能合约差量变更集和智能合约程序远程锚点调试模式的装置,该测试装置系统包括智能合约存储节点,区块链节点上附属智能合约运行态节点,智能合约锚点控制节点以及测试结果报表节点。下面结合附图对本发明技术方案进行详细说明。
请参考图1A所示,本发明所提供的面向区块链智能合约的非侵入式测试系统具体包含:客户端、智能合约存储节点、智能合约锚点控制节点和测试结果报表节点;所述客户端用于接收用户提交的代码修改请求;以及将接收到的功能点测试报告反馈至用户;所述智能合约存储节点用于存储区块链网络运行的智能合约的源码和版本提交历史;以及,根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与源码之间的差异,获得检测数据;所述智能合约锚点控制节点用于根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;以及,当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志;所述测试结果报表节点用于根据所述代码执行日志生成功能点测试报告,将所述功能点测试报告反馈至所述客户端。在实际工作中,上述非侵入式测试系统还可包含区块链智能合约运行节点,所述区块链智能合约运行节点用于提供TCP协议服务监听端口至所述智能合约锚点主控节点予以监控所述锚点触发情况。具体的,请参考图1B所示,该系统包括客户端1,智能合约存储节点2,区块链节点上附属智能合约运行节点3,智能合约锚点控制节点4以及测试结果报表节点5。
所述客户端1是接收用户提交的代码修改请求;以及将接收到的功能点测试报告反馈至用户;
所述智能合约存储分析节点2是存储区块链网络运行智能合约的静态代码的节点,保存了智能合约的源码,以及版本提交历史,同时在智能合约提交过程中触发语法变更分析器,基于智能合约源码和语言语法进行行级别的代码全量和增量修改分析,形成并标准的接口给智能合约锚点主控节点提供,详见图2。
所述智能合约运行节点3,包含具有外部锚点程序的智能合约二进制程序,智能合约会启用TCP协议服务监听端口供锚点主控程序调用。
所述智能合约锚点主控节点4,接口调用获取全量智能合约代码和通过分析节点拿到修改行数找到需要具体铆钉代码行,并在源码中设置锚点,当业务接口调用到智能合约中并进入特定的代码行逻辑时,会触发锚点主控节点触发代码行执行记录,主控节点记录该执行点后,继续执行程序,如遇到下一代码锚定点则继续继续,如无,则按照正常业务逻辑执行,如此类推反复执行。
所述智能合约测试报表区块链节点5,是针对主控节点的执行点记录生成功能点测试报告,通过客户端1反馈智能合约维护人员了解功能覆盖验证情况,以便反馈智能合约测试人员执行可能遗漏的测试案例。
在本发明一实施例中,所述智能合约存储节点包含代码提交控制装置、代码版本控制装置和代码分析装置;所述代码提交控制装置用于接收客户端转发的代码修改请求,根据所述代码修改请求生成提交序号并存储至所述代码版本控制装置;所述代码版本控制装置用于存储区块链网络运行的智能合约的源码和版本提交历史;所述代码分析装置用于根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与源码之间的差异,获得检测数据。其中,所述代码分析装置包含语法分析模块和接口分析模块;所述语法分析模块用于通过语法变更分析器分析代码修改请求在行级别的修改位置;所述接口分析模块用于根据代码修改请求中代码修改逻辑和修改位置上下文内容获得对应检测点位置,根据所述修改位置和所述检测点位置获得检测数据;具体请参考图2所示,所述智能合约存储节点可包括代码提交控制装置21,主控单元装置22,代码版本控制装置23和代码分析装置24。所述“代码提交控制装置21”是接收智能合约代码提交,并进行代码规范的扫描,标准化智能合约的编写,同时针对每一次通过代码扫描准入的提交生成提交ID,并存储在版本控制库中。所述“主控单元装置22”是代码提交控制装置21的主控单元,智能合约编写人员,提交到控制单元后,通过主控单元分发到“代码版本控制装置23”、代码分析装置24。所述代码分析装置24包含语法分析模块241和接口分析模块242。语法分析模块利用语法分析器,分析代码行级别的修改和。接口分析模块242对应核心代码程序根据代码修改逻辑和修改上下文自动分析接口功能关联并设置获取不通程序路径下检测点行数,生成的源码增量修改信息和检测点对应关系表如下:
对于初始化智能合约源码时获取全量代码的检测点:
合约ID | 提交ID | 合约源码 | 合约检测点ID | 合约代码行 |
合约1 | cid0 | 源码0 | 检测点1 | 26-37 |
合约1 | cid0 | 源码0 | 检测点2 | 99-300 |
合约1 | cid0 | 源码0 | 检测点2 | 100-200 |
合约1 | cid0 | 源码0 | 检测点3 | 300-503 |
……… | ……… | ……… | ……… | ……… |
对于增量智能合约源码时获取增量代码的检测点:
合约ID | 提交ID | 合约源码 | 合约检测点ID | 合约代码行 |
合约1 | cid1 | 源码1 | 检测点1 | 26-32 |
合约1 | cid2 | 源码2 | 检测点1 | 55-88 |
合约1 | cid3 | 源码3 | 检测点1 | 100-200 |
合约1 | cid4 | 源码3 | 检测点2 | 300-503 |
……… | ……… | ……… | ……… | ……… |
在本发明一实施例中,所述区块链智能合约运行节点可包含二进制智能合约31,锚点程序32,通讯模块33,请参考图3所示:
所述智能合约31是标准的智能合约源码,基于区块链智能合约代码存储分析节点2特定时间点存储的智能合约,通过标准的编译部署编译成二进制智能合约部署在智能合约锚点控制节点4中。
所述锚点程序32锚点程序基于常见的智能合约开发的高级语言的调试指令,如X86系统的断电指令INT3,其二进制代码0xCC,会引发软件中中断,操作系统的INT3终端处理器寻找注册在该进程的调试处理程序。
所述通讯模块33是智能合约运行节点3对外发起断点指令以及接受“智能合约锚点控制节点4”操作指令的模块。当包含锚点的智能合约启动时,同时会启动一个监听端口,与“智能合约锚点控制节点4”进行TCP通讯,,当接入区块链平台的应用服务器接入到区块链网络,并触发智能合约跑到特定逻辑时会联动到智能合约源码的检测点,此时锚点程序会自动继续该功能点或者接口,由于源码逻辑被命中,则说明该段代码的逻辑已经被覆盖测试,进而触发“智能合约锚点控制节点4”对执行结果进行记录。
在本发明一实施例中,所述智能合约锚点控制节点包含数据接收单元、智能合约部署单元和智能合约源码锚定单元;所述数据接收单元用于于所述智能合约存储节点上获取所述源码和所述检测数据;所述智能合约部署单元用于根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;所述智能合约源码锚定单元用于当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志。具体请参考图4所示,智能合约锚点控制节点的结构可包含:数据接收装置51,主控单元装置52,智能合约部署装置53和智能合约源码锚定装置54;
所述数据接收装置51用于接收“智能合约存储节点2”的智能合约源码,并通过接口调用方式获取“代码分析装置24”分析出来的检查点信息用于设置断点。
所述“主控单元装置52”是“数据接收装置51”的主控单元,从“智能合约存储节点2”获取存储分析后的智能合约源码和检查点数据后,通过主控单元分发到“代码版本控制装置53”、“智能合约源码锚定装置54”。
所述“智能合约部署单元53”包括“编译模块531”和“部署模块532”。智能将收到的源码通过“编译模块531”编译成二进制智能合约程序,并在二进制智能合约程序设置锚点指令,然后通过“部署模块532”将区块链智能合约部署到“区块链测试网络4”的网络节点中。
所述“智能合约源码锚定装置54”包括“源码阅读器541”和“源码锚定器542”,“源码阅读器541”阅读器用于加载“数据接收装置51”接收的特定版本的源码和检查点列表,“源码锚定器542”启动后创建与“锚点程序32”的通讯连接,并监听“锚点程序32”发出的断点指令,根据断电指令检查“源码阅读器541”中的检查点列表是否命中,如图5所示。如果命中,“源码锚定器542”将结果发送至“智能合约测试报表区块链节点”进行测试结果上链;主控节点需要将覆盖率测试结果写入另一个线上的区块链网络,各个智能合约节点参与方可以作为智能合约部署到的决策方。
请参考图6所示,上述智能合约测试报表区块链节点的结构如图所示,所述智能合约功能测试结果报表6包含数据收发装置61、主控单元装置62、服务调度装置63和可视化报表64;其中服务调度装置63包含服务API模块631和区块链节点调用632;所述“数据收发装置61”,用于接收“智能合约锚点主控节点5”针对特定智能合约代码行的测试覆盖结果。所述“主控单元装置62”,用于接收测试覆盖结果数据,将结果数据封装成接口主动将测试覆盖率结果数据通过“服务调度状态63”中的“区块链节点调用632”模块写入线上的区块链网络中,用于测试结果的存证。同时测试结果进行可视化分析。所述“服务调度装置63”,包括“服务API模块631”和“区块链节点调用632”模块,“服务API模块631”获取主控节点的测试报表结果原始的数据,供外部联盟参与方分析调用。区块链节点调用632”用于测试覆盖率结果数据的写入智能合约测试报表区块链网络节点,对测试覆盖率结果进行共享。覆盖率报表结果写入一个标准部署的线上生产的区块链网络,该网络部署有针对区块链智能合约测试的结果编写的智能合约,入链的结果包含对于不同版本的测试智能合约检测点的是否覆盖,记录的数据结构如下所示:
将覆盖率测试结果入链,可保证测试结果的公开,透明和不可篡改,是可信的数据;任意智能合约编写参与方可以获取到区块链网络中的测试结果,并对智能合约完整性和安全性做初步的评估,决定被测试的智能合约是否能正常上线。
所述“可视化报表64”,接收“主控单元装置62”的数据,进行测试结果的可视化展示,用于智能合约部署的决策依据。
在本发明一实施例中还提供一种面向区块链智能合约的非侵入式测试方法,所述方法包含:接收用户提交的代码修改请求;根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与对应的智能合约的源码之间的差异,获得检测数据;根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志;根据所述代码执行日志生成功能点测试报告;将功能点测试报告反馈至用户。其中,当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态包含:通过TCP协议服务监听服务监控所述锚点触发情况。值得说明的是,在所述方法之前还包含:获取区块链网络运行的智能合约的源码;根据所述代码修改请求生成提交序号;将所述智能合约的源码和所述代码修改请求的提交序号对应保存至预设数据库。
为便于更清楚的理解本发明所提供的面向区块链智能合约的非侵入式测试方法,请参考图8所示,整体交互流程如下:
T201智能合约代码编写人员进行代码修改提交,智能合约分析存储节点2对增量的提交代码进行语法和接口分析分析。
T202区块链锚点主控程序编译程序并与锚点程序一起部署到区块链测试网络节点上,并启动锚点Agent监听端口,源码锚定器加载智能合约源码和检测点,并与锚点Agent程序建立通讯,并将中断指令通过Agent程序加载到智能合约二进制程序中。
T203测试人员发起交易调用智能合约接口,锚点Agent与源码锚定器确定是否命中源码检测点。
T204检查源码锚定器中的源码中的检查点,并触发检查点记录到区块链测试结果记录节点,记录完成后原貌锚定器触发二进制智能继续执行智能合约逻辑。
基于上述实施例,请参考图7所示,各节点之间的信息交互流程如下:
T101智能合约代码编写人员进行代码修改提交;
T102智能合约分析存储节点2对提交代码进行语法和接口分析,生成智能合约代码检查点列表;
T103智能合约锚点控制节点5编译智能合约,并将二进制智能合约和锚点程序打包成智能合约运行节点3,部署到区块链测试网络4;
T104业务测试人员执行正常的业务测试,并调用智能合约运行节点3;
T105智能合约测试结果报表节点6接收到智能合约锚点控制节点5生成的检测点触发结果列表,并将结果入链,同时生成智能合约测试报表;
T106联盟链决策依据,确定是否将智能合约部署上线。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明提供了一种基于差量变更集的路径覆盖测试系统,能精确的统计智能合约代码行级别的覆盖测试情况,防止测试遗漏,导致潜在的程序缺陷,导致的经济损失;基于语言级别的断点追踪,非侵入式的追踪程序执行逻辑,且无需针对不同智能合约代码编写额外代码去追踪测试覆盖情况;能很方便测试组织,可根据不同的时间点设置追踪周期,方便加强代码的回归测试覆盖强度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向区块链智能合约的非侵入式测试系统,其特征在于,所述系统包含:客户端、智能合约存储节点、智能合约锚点控制节点和测试结果报表节点;
所述客户端用于接收用户提交的代码修改请求;以及将接收到的功能点测试报告反馈至用户;
所述智能合约存储节点用于存储区块链网络运行的智能合约的源码和版本提交历史;以及,根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与源码之间的差异,获得检测数据;
所述智能合约锚点控制节点用于根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;以及,当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志;
所述测试结果报表节点用于根据所述代码执行日志生成功能点测试报告,将所述功能点测试报告反馈至所述客户端。
2.根据权利要求1所述的面向区块链智能合约的非侵入式测试系统,其特征在于,所述智能合约存储节点包含代码提交控制装置、代码版本控制装置和代码分析装置;
所述代码提交控制装置用于接收客户端转发的代码修改请求,根据所述代码修改请求生成提交序号并存储至所述代码版本控制装置;
所述代码版本控制装置用于存储区块链网络运行的智能合约的源码和版本提交历史;
所述代码分析装置用于根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与源码之间的差异,获得检测数据。
3.根据权利要求2所述的面向区块链智能合约的非侵入式测试系统,其特征在于,所述代码分析装置包含语法分析模块和接口分析模块;
所述语法分析模块用于通过语法变更分析器分析代码修改请求在行级别的修改位置;
所述接口分析模块用于根据代码修改请求中代码修改逻辑和修改位置上下文内容获得对应检测点位置,根据所述修改位置和所述检测点位置获得检测数据。
4.根据权利要求1所述的面向区块链智能合约的非侵入式测试系统,其特征在于,所述系统还包含区块链智能合约运行节点,所述区块链智能合约运行节点用于提供TCP协议服务监听端口至所述智能合约锚点控制节点予以监控所述锚点触发情况。
5.根据权利要求1所述的面向区块链智能合约的非侵入式测试系统,其特征在于,所述智能合约锚点控制节点包含数据接收单元、智能合约部署单元和智能合约源码锚定单元;
所述数据接收单元用于于所述智能合约存储节点上获取所述源码和所述检测数据;
所述智能合约部署单元用于根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;
所述智能合约源码锚定单元用于当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志。
6.一种面向区块链智能合约的非侵入式测试方法,其特征在于,所述方法包含:
接收用户提交的代码修改请求;
根据所述代码修改请求通过语法变更分析器分析所述代码修改请求与对应的智能合约的源码之间的差异,获得检测数据;
根据所述源码和所述检测数据获得所述源码中需要铆钉代码行并设置锚点,并将设置锚点后的源码对应的智能合约部署至预定区块链测试网络的网络节点中运行;
当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态,获得代码执行日志;
根据所述代码执行日志生成功能点测试报告;
将功能点测试报告反馈至用户。
7.根据权利要求6所述的面向区块链智能合约的非侵入式测试方法,其特征在于,当网络节点调用智能合约并进入所述铆钉代码行时,根据所述锚点触发代码执行记录并记录所述智能合约运行状态包含:通过TCP协议服务监听服务监控所述锚点触发情况。
8.根据权利要求6所述的面向区块链智能合约的非侵入式测试方法,其特征在于,所述方法之前还包含:获取区块链网络运行的智能合约的源码;根据所述代码修改请求生成提交序号;将所述智能合约的源码和所述代码修改请求的提交序号对应保存至预设数据库。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求6至8任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求6至8任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702836.9A CN110413316B (zh) | 2019-07-31 | 2019-07-31 | 面向区块链智能合约的非侵入式测试系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702836.9A CN110413316B (zh) | 2019-07-31 | 2019-07-31 | 面向区块链智能合约的非侵入式测试系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413316A CN110413316A (zh) | 2019-11-05 |
CN110413316B true CN110413316B (zh) | 2023-12-05 |
Family
ID=68364728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910702836.9A Active CN110413316B (zh) | 2019-07-31 | 2019-07-31 | 面向区块链智能合约的非侵入式测试系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413316B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290958B (zh) * | 2020-02-20 | 2023-05-30 | 联动优势科技有限公司 | 一种调试智能合约的方法及装置 |
CN111523784A (zh) * | 2020-04-16 | 2020-08-11 | 广州拉卡拉信息技术有限公司 | 自动执行路径的监控方法及装置 |
CN111563040B (zh) * | 2020-05-08 | 2023-08-15 | 中国工商银行股份有限公司 | 区块链智能合约代码测试方法及装置 |
CN113010409B (zh) * | 2020-09-16 | 2023-09-15 | 腾讯科技(深圳)有限公司 | 智能合约测试方法及装置、电子设备、存储介质 |
CN112419057A (zh) * | 2020-11-16 | 2021-02-26 | 平安科技(深圳)有限公司 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
CN112783795B (zh) * | 2021-02-22 | 2024-02-09 | 中国工商银行股份有限公司 | 软件测试覆盖率检测方法及系统 |
CN113050925B (zh) * | 2021-03-19 | 2024-02-13 | 中国工商银行股份有限公司 | 区块链智能合约修复方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631705A (zh) * | 2012-08-24 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 一种针对搜索引擎的回归测试方法和装置 |
US10135607B1 (en) * | 2017-08-11 | 2018-11-20 | Dragonchain, Inc. | Distributed ledger interaction systems and methods |
CN109063477A (zh) * | 2018-07-18 | 2018-12-21 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
CN109857431A (zh) * | 2019-01-11 | 2019-06-07 | 平安科技(深圳)有限公司 | 代码修改方法及装置、计算机可读介质及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8954926B2 (en) * | 2012-03-05 | 2015-02-10 | Microsoft Corporation | Code coverage detection with scriptable language unmodified source |
US10438170B2 (en) * | 2017-01-05 | 2019-10-08 | International Business Machines Corporation | Blockchain for program code credit and programmer contribution in a collective |
-
2019
- 2019-07-31 CN CN201910702836.9A patent/CN110413316B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631705A (zh) * | 2012-08-24 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 一种针对搜索引擎的回归测试方法和装置 |
US10135607B1 (en) * | 2017-08-11 | 2018-11-20 | Dragonchain, Inc. | Distributed ledger interaction systems and methods |
CN109063477A (zh) * | 2018-07-18 | 2018-12-21 | 成都链安科技有限公司 | 一种自动化的智能合约代码缺陷检测系统和方法 |
CN109857431A (zh) * | 2019-01-11 | 2019-06-07 | 平安科技(深圳)有限公司 | 代码修改方法及装置、计算机可读介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110413316A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413316B (zh) | 面向区块链智能合约的非侵入式测试系统及方法 | |
Halin et al. | Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack | |
Seo et al. | Programmers' build errors: a case study (at google) | |
CN110603527B (zh) | 用于服务器侧生产代码的条件调试的方法、系统和设备 | |
Iannillo et al. | Chizpurfle: A gray-box android fuzzer for vendor service customizations | |
CN106506283B (zh) | 银行和企业对接系统的业务测试方法和装置 | |
US20030106045A1 (en) | Object-oriented creation breakpoints | |
CN108614777A (zh) | 一种基于真实业务的金融交易测试系统及测试方法 | |
CN114579467B (zh) | 一种基于发布订阅机制的冒烟测试系统及方法 | |
Zhang et al. | Tripleagent: Monitoring, perturbation and failure-obliviousness for automated resilience improvement in java applications | |
Devroey et al. | JUGE: An infrastructure for benchmarking Java unit test generators | |
Mao et al. | FAUSTA: scaling dynamic analysis with traffic generation at whatsapp | |
Fabre et al. | Building dependable COTS microkernel-based systems using MAFALDA | |
US10534693B2 (en) | Temporary de-optimization of target functions in a cloud debugger | |
CN116467188A (zh) | 一种多环境场景下的通用本地复现系统和方法 | |
CN116069628A (zh) | 一种智能处置的软件自动化回归测试方法、系统及设备 | |
Milanez et al. | JMLOK2: A tool for detecting and categorizing nonconformances | |
Sun et al. | Automatically assessing and extending code coverage for NPM packages | |
Schloegel et al. | SoK: Prudent Evaluation Practices for Fuzzing | |
Castelluccio et al. | Is it safe to uplift this patch?: An empirical study on mozilla firefox | |
Xie et al. | Design and implementation of bank financial business automation testing framework based on QTP | |
Anderson et al. | Customized regression testing using telemetry usage patterns | |
Peng et al. | Automated Server Testing: an Industrial Experience Report | |
CN115292418B (zh) | 跨系统业务流程自动化处理方法及系统 | |
Kong et al. | Tracing error propagation in C/C++ applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |