区块链实质上就是一个分布式系统软件。因此,在质量管理上,系统软件和分布式系统是区块链测试的两个大方向。目前业界主要有公有链、联盟链以及私有链三种模式,不管哪种运转模式,对于区块链这种底层平台软件,测试过程应至少需包含四大块内容,分别为功能、性能、可靠性和安全性,下面从这四个角度讨论区块链平台的一些测试思路。
1.功能
1.2节点管理
节点能由管理者操作加入或者退出区块链网络,而不影响业务的正常运行,以及扩容新增节点。长期使用的软件,一般都会迭代更新,区块链节点也应能够进行升级,包括灰度升级能力,升级后业务正常运行。
1.2连接
通常在环境条件正常时,以上连接都能顺利进行,并且通过网络连接命令和日志信息能查询对应结果。
而真正考验连接的健壮性是在异常环境下系统的应对能力,以及环境恢复正常之后,连接能否也恢复正常,而不用去重启进程。
影响连接的因素包括区块链系统本身和外部环境对连接的影响:
- 区块链系统本身:节点(SDK)证书合法性、黑白名单等
- 外部环境对连接的影响:节点所在的服务器断连、网络的闪断或者带宽偏低、端口及网卡故障,以及CPU、内存的使用过高,甚至是机器重启导致进程重启。
1.3共识
我们需要验证的是,这种共识机制能否按预期算法完成从交易触发到数据落盘,以及在容错和容灾范围内依然正常工作。实际上就是在共识的某个阶段遇到问题,它的应对机制是否可行,而不是卡在那或者直接系统崩溃。区块链平台上线前,对其使用的共识算法需要做严格的测试验证,涉及功能、安全、易用性等各方面。
- 功能方面,在系统正常运行,无故障、无欺诈节点时,能正确共识,各节点数据能一致。
在测试共识算法前,需要清楚共识内部主要流程,才能对每一步骤构造场景进行相应测试。
- 安全