你当前的位置 主页 > 企业招聘 >
企业招聘
公链测试实战方法凯8娱乐
来源:http://www.028cxtx.com 编辑:k8.com 2018-12-20 12:50

  对于区块链产品或系统而言,质量问题,如可靠性、兼容性、性能和安全性等都是无法回避的关键问题,也是其影响相关应用和行业发展的重要因素。

  业界常用的质量保障手段,包括软件工程方法、正式技术评审、度量与控制、标准与过程、SCM和SQA、测试等方法。从工程实践看,只有综合运用上述方法才能获得高质量系统,其中测试是保障区块链信息系统质量最有效、最经济的手段之一。

  本次受托开展测试的公链A,是以侧链技术为基础的新型非中心化应用,已成为国际两大楔入式侧链技术解决方案之一,拥有注册用户百万级,关注量近千万。其实现了双向SPV楔入方式与侧链系统或DAPP进行数据交互,适用于金融、保险、电子商务、虚拟代币、股权众筹、医疗信息等行业领域。其核心技术(侧链技术)是一种在不改变区块链信息系统或区块链场景现有架构基础上,采用扩容方式增加新功能,实现新业务场景的重要解决方案。如下图所示:

  数字资产提现和充值操作是区块链信息系统两个原子操作,在精准扶贫场景下,使用充值和提现原子操作,可实现贫困人口扶贫款入账和出账、扶贫物资的发放和使用、扶贫权限的监督和控制等。充值和提现原子操作,其远不止书面意义,所有涉及数值变化的所有操作可简单归纳为提现和充值两部分。公链A的提现和充值操作,在其构建的全球数字资产交易网络中,提现操作可根据资产名字、数量、接收者地址、一级密码、二级密码生成的交易数据,实现不同侧链、不同账户、不同资产之间的基于虚拟货币构建的数字资产价值的上链和转移。

  以提现和充值原子操作为测试对象,为充分验证公链A升级前后的功能,可如下构建一套区块链仿真测试环境,凯8娱乐!测试仿真环境物理部署如下。

  测试环境主侧链逻辑部署如下,不同侧链(也是由区块依次链接构建的区块链信息系统)之间无法直接交互,需通过主链之间完成价值传递。

  为较好开展提现和充值测试,分析公链A升级前后的结构变化,由于账户体系变化,结合影响域理论,建议重点对不同账户体系下的提现和充值进行测试。本次,采用探索式测试方法,结合正交矩阵法设计测试用例,设计侧链A采用base58check地址(新账户体系),侧链B采用Digital地址(旧账户体系)。

  如上图,对采用Digital实现的旧账户体系与采用base58check实现的新账户体系之间的充值、提现原子操作采用正交矩阵法进行用例设计,基于公链A开源代码编写测试脚本,共设计4组16个用例,对新账户到新账户、新账户到老帐户、老帐户到老帐户、老账户到新账户之间的充值和提现操作进行单笔和多笔交易。(因可能涉及用户隐私,故详细测试用例暂不披露)

  结合上述思路,侧链A采用base58check地址(新账户体系),侧链B采用Digital地址(旧账户体系),预期通过多次调用数字资产提现测试脚本,侧链B资产将转移至侧链A。

  系统批量执行提现,侧链A资产成功从100增加至500,侧链B资产未减少,数字资产凭空增加。反之,也存在数字资产凭空消失现象。

  公链A发生数字资产提现操作异常,提现操作后侧链A资产增加,侧链B资产未有变化。解析传统照明四大巨子进军LED战略采用如下步骤,对测试结果进行剖析,分析定位缺陷所在。

  公链A迭代升级后,新引入一种采用base58check实现的新账户体系,且同时存在采用Digital实现的旧账户体系,从而导致新旧账户体系之间提现和充值原子操作异常。采用Digital实现的旧账户体系存在设计缺陷,其对于非Digital发起的任一操作不做响应,但又返回非空的特定值。在旧账户体系中,特定值代表执行失败,然而不同账户体系下,非空值也许意味着成功(非空即为真)。也就是基于此,采用Digital实现的旧账户体系对于采用base58check实现的新账户体系发起的任一充值和提现原子操作均返回特定值,旧账户体系是未正确执行,在新账户体系下,却意味着成功执行。

  经深入了解其开发流程,发现其根本原因在于新版本上线前,未严格执行准入准出制度,自测试用例不足,测试不充分,无法保障新系统上线质量,从而引入账户系统设计缺陷,新版本无法向下兼容,最终导致公链A提现异常。

  运营人员:建议提早禁止旧版本登陆,强制升级至新版本,同步对采用base58check实现的新账户体系进行升级改造,防范采用Digital实现的旧账户体系进行重放攻击,并全面禁止数字地址跨链转账到侧链或应用链,拥有数字地址的老账户可以先把资产中转到新的base58check账户,然后再跨链转移到侧链。

  开发人员:建议对升级补丁或版本变更部分做合理、有效分析,邀请同行确定其影响域,充分开展自测试后再提交合并。

  测试人员:采用下述准入准出制度,充分设计测试用例,严格执行确保测试未达到要求前,系统测试不进入下一阶段。