BitXHub是趣链科技自主研发的跨链技术平台,提供基于异构联盟链间的账本互操作解决方案。为保证BitXHub跨链平台在日常迭代过程中的功能符合用户需求,并尽可能多的把问题在发布或交付之前发现并改正,Premo测试工具应运而生。Premo主要基于BitXHub自身的gosdk实现,具有易于扩展和维护的特点。本文主要围绕功能测试、性能测试以及自动化测试三个方面来概述Premo的测试框架。
Premo测试框架如下图所示。基于测试的内容主要分为「功能测试」和「性能测试」。功能测试主要基于testing和testify实现整体测试框架,基于gosdk实现和BitXHub跨链平台的通信和调用;性能测试主要是在gosdk的基础上通过协程实现。Premo在功能测试的基础上又进一步实现了持续集成测试,持续集成测试部分主要借助GitHubActions实现。
功能测试模块主要依托于BitXHub项目自身的gosdk,testify开源库和testing库实现。功能测试模块根据测试的功能点分为多个测试文件,每一个测试文件内的测试用例都包含于一个测试套件中,在日常测试可以基于你所需要测试的功能点来运行不同的套件,如下图所示。例如model1001_chain_test.go内的所有测试用例都包含在model1这个套件中,如果需要运行chain相关的测试用例只需运行model1的套件即可。
基于LayerZero的DEX聚合器Cashmere测试网已部署至ConsenSys L2方案Linea:5月12日消息,基于 LayerZero 的多链抗 MEV DEX 聚合器 Cashmere 宣布其测试网已部署至 ConsenSys Layer2 解决方案 Linea,允许用户在 11 条链之间兑换测试网资产。4 月下旬,Cashmere 团队 Cashmere Labs 宣布发布初始阶段公开测试网,已在以太坊 Goerli、Polygon Mumbai、BSC Testnet、Arbitrum Goerli、Avalanche Fuji、Fantom 测试网、Optimism Goerli、Base Goerli、Linea zkEVM Testnet、Polygon zkEVM Testnet、Metis Goerli 上部署。[2023/5/12 14:59:01]
16万枚ETH从币安转出,约3.04亿美元:金色财经报道,Whale Alert监测数据显示,16万枚ETH从币安转出,约合3.04亿美元。据链上数据,该接收地址(0xF17AC开头)在2月13日将17,000枚ETH从币安转出后,将21,300枚ETH分批转入了以太坊信标链存款合约,在此之前也进行过多笔类似操作。[2023/5/5 14:44:20]
▲并行化测试
随着项目的不断扩展,测试用例的数目也在不断增加,回归全量测试用例所消耗的时间也越来越长,顺序测试的方法在快速迭代的版本开发中显得越来越低效。采用并行化测试可以有效解决这个问题,然而这又会引入一个新的问题,也就是测试用例之间的耦合性。很多用例在串行测试的过程中不会暴露问题,一旦进行并行化测试就会出现并发上的问题。
以BitXHub跨链平台为例,BitXHub跨链平台在接收跨链交易的过程中会根据账户地址维护一个nonce值用于实现跨链交易的有序性,每收到一笔交易nonce值就会增加1,如果收到的nonce值小于预期的nonce值,BitXHub跨链平台就会丢掉这笔交易,反之,如果大于预期的nonce,BitXHub跨链平台就会暂存这笔交易,直至nonce达到预期。这就会要求我们在并行化测试的用例中人为的去维护这个nonce值。因此,并行化测试中很重要的一点就是需要维护用例之间的相对独立性,如何维护用例的相对独立性则需要根据项目自身因地制宜。
美联储3月加息25个基点的概率升至79.7%:金色财经报道,据CME“美联储观察”:美联储3月保持利率不变的概率为20.3%,加息25个基点至4.75%-5.00%区间的概率为79.7%;到5月累计加息50个基点的概率升至49.2%。[2023/3/17 13:09:43]
衡量一个跨链服务系统是否可靠稳定很重要的一点便是跨链自身的性能指标。Premo根据上述需求,基于BitXHub自身的gosdk实现了一套完整的性能测试方案用于检验BitXHub跨链平台的性能是否满足需求。Premo中进行的性能测试主要是压力测试,通过向BitXHub跨链平台发送大量的跨链交易来验证BitXHub处理跨链交易的性能。整体性能测试主要分3个步骤进行,分别是应用链准备、发送跨链交易和统计TPS。
▲应用链准备
在发送跨链交易前,需要预先根据不同的交易类型注册一定数量的应用链到中继链,以便后续Premo通过SDK使用这些应用链的身份向中继链发送跨链交易。应用链注册成功后还需要部署相应的验证规则,用于中继链验证交易的有效性。
灰度GBTC负溢价率回落至38.54%:金色财经报道,据Coinglass数据显示,当前灰度总持仓量达149.97亿美元,主流币种信托溢价率如下:BTC,-38.54%;ETH,-50.04%;ETC,-66.49%;LTC,-58.36%;BCH,-50%。[2023/1/10 11:04:06]
▲发送跨链交易
根据预先设定的TPS和应用链数量可以计算出一条应用链在一秒内需要向BitXHub跨链平台发送的跨链交易数量。预先设定的交易类型可以构造出对应的交易体。注意由于跨链交易的有序性要求,我们需要在交易体中维护每一条跨链交易的nonce值。同时为了更加均匀的发送跨链交易,每隔50ms,Premo就会发送部分跨链交易到BitXHub跨链平台上,例如Premo需要模拟20条应用链每秒总共发送2000条跨链交易,那么每条应用链需要在1秒内发送100条跨链交易,每50ms每条应用链就会发送5条跨链交易。
Web3 Ventures购入150枚PunkScapes NFT:金色财经报道,据雅虎财经披露,Web3 Ventures宣布已从数字身份和沉浸式土地项目 PunkScapes 购买 150 枚 NFT,但未披露购买价格。PunkScapes 是存储在以太坊区块链上的 10,000 个独特横幅景观的 NFT 集合,已上架 OpenSea 等 NFT 市场,当前地板价为 0.17 ETH,目前二级市场销售量约为 1600 ETH。[2022/6/18 4:37:27]
▲统计TPS
统计TPS是通过订阅BitXHub跨链平台的区块事件实现。订阅区块事件后,BitXHub跨链平台每出一个块就会推送到Premo中,Premo通过统计区块内的交易数量来计算TPS,每笔交易的延时=收到区块的时间搓-交易的时间搓。Premo根据上述信息每秒打印TPS和交易的平均延时。
自动化测试主要实现的功能是在任意一个分支提PR到master分支或者release*分支时,完成全量功能测试用例的测试,同时根据测试结果生成相应的测试报告,并将测试报告发布到服务器,通过邮箱的形式通知PR的提交者。
▲Make命令
Premo将功能测试加入make命令中,通过make命令就能进行全量的功能测试。同时make命令根据测试的结果生成相应的测试报告。
▲GitHubActions
GitHubActions是GitHub的持续集成服务。在任意一个分支提PR到master分支或者release*分支时会触发对应的action,action将根据目的分支名拉取对应的Premo分支进行功能测试,同时将成的测试报告发布到指定的服务器上,并将测试报告的连接通过邮件的形式发送给PR的提交者。
▲allure-server
GitHub上开源的AllureReportServer,支持通过GitHubActions的方式发布测试报告,并且allure-server支持docker。
「上述需要进行的工作较多,我们可以一点一点解析」
根据PR触发action:
具体参考githubactions的官方文档Eventsthattriggerworkflows相关章节;
根据目的分支功能测试:
在action中我们可以获取目的分支名,Premo的测试用例是根据BitXHub跨链平台的版本维护的,所以只需根据目的分支名拉取Premo进行功能测试即可;
发布测试报告:
发布测试报告主要通过allure-server进行,allure-server在上文已经提过。需要注意的一点是allure-server对应的服务器的地址不能暴露,否则会给服务器带来不稳定因素,通过仓库中设置来可以解决这个问题;
邮箱通知:
邮件通知在GitHubActions中较为常见,使用对应的action即可。需要注意是由于使用的SMTP的形式所以邮箱的账号和密码不能公开。通过仓库中设置可以解决这个问题。在邮箱通知的过程中需要知道目的邮箱的账目密码,同时还需要邮箱开启SMTP服务,这种情况下在action中配置PR提交者的邮箱变的不可取。
一个合适的解决方式是:通过邮箱自身的收发信规则。以腾讯企业邮箱为例,邮箱支持根据邮件的内容进行自动转发。我们只需要在邮件中携带提交者的github的名称,收发信规则根据名称过滤,将邮件自动转发给PR提交者。通过上述方式在action中不需要根据不同的PR提交者指定不同的邮箱地址,只需要将邮件发送给"中转站"即可。
完成上述工作后,只需要根据BitXHub的分支维护Premo功能测试用例即可完成相应的自动化测试。具体流程如下图所示:
本文介绍了BitXHub官方测试框架Premo的基本设计原理和测试模块,及功能测试和性能测试的重要实现方法。通过GithubActions的编排,Premo可以较好地对BitXHub的功能模块实现自动化并行测试,并及时反馈测试结果。
如想进一步了解Premo测试框架的详细实现,可访问项目地址或联系小助手桔子加入技术交流群,获取更多资料。
地址:https://github.com/meshplus/premo
作者简介
祝炜洁趣链科技数据网格实验室BitXHub团队
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。