区块链如何测试
最近火爆至极的区块链技术,为什么被大家吵得这么热呢?因为区块链技术可能会成为下一个互联应用的一个底层技术,会应用于各行各业的各种系统。
原来我们一直曾经采用的商品溯源、传统溯源系统等一般都采用集中数据存储数据,这种数据集中的方式,对于具有权限的人来说,可以任意更改,这样数据可信度就会受到质疑。
例如,之前也曾出现过银行储户的资金不翼而飞的情况。未来区块链技术可能会运用各种领域的应用系统,这也是如此多的大企业发布成立区块链研究院的原因之一吧。我们做软件测试的小伙伴们也有必要了解下区块链如何测试了。
区块链特性简单概括:去中心化,不可篡改、所有节点公开全账本、账户信息持续可追踪、对等网络,没有系统管理员角色。这些特性的理解:
· 去中介化/中心化的信任。
· 交易的公开透明和不可篡改性。
· 稳定性、可靠性、持续性。因为它是一个分布式的网络架构,没有一个中心节点可以被打击或者攻击,所以在整体的技术布置方面有着更强的稳定性、可靠性和持续性。
· 强安全、共识机制不需要第三方的进入,而是通过一个技术来达到,先前预定的一个技术来达到整个交易的完成。
区块链测试与传统软件测试区别如下:
· 系统边界模糊。传统的软件,不管是是独立的应用程序,还是客户端/服务器模式的应用程序,都有明显的系统边界,可以通过UI用户界面或者客户端去进行测试。区块链底层,则是一个完全去中心化的分布式网络。这个网络有可能跨越多个子网、多个数据中心、多个运营商、甚至多个国家,其边界是模糊的。对于区块链底层的测试,不仅仅是前端API与某个区块链节点之间的测试,还涉及大量区块链节点与节点之间的测试。
· 故障类型复杂。一般软件故障包括3类:
1. 宕机故障(Crash Failure);
2. 宕机-恢复故障 (Crash-Recovery Failures);
3. 拜占庭故障 (Byzantine Failures)。所谓拜占庭故障,来自一个著名的“拜占庭将军问题”,指系统存在某些恶意节点,用一个形象的比喻就是“叛变的Byzantine将军”。从不同观察者角度看这类节点,表现出不一致的症状,这在需要共识的系统中,往往会导致系统服务失效。一般软件最多只需要解决前两种故障,而区块链系统,则需要同时处理所 有的故障,确保系统的可靠运行。
· 区块链类型不同。区块链本身包含公有链、私有链、联盟链等多种类型,不同类型在管理、用户身份、最大节点数等平台自身特征方面均有不同,测评需要考虑所有的模式,导致测试方案更加复杂。(如下表)
根据目前行业发布的白皮书,区块链的评测标准包括:
结合区块链的评测标准,针对采用区块链技术的系统,除了采用传统的测试技术例如带宽共享、共享云等之外。对于区块链底层和后台测试,则需要掌握的技术包括如下几点:
1. 密码学的基本知识,例如对称加密、非对称加密、数字签名等;
2. 数据结构中的链表概念,树的概念;
3. 区块链的交易记账模型,例如如何实现转账、如何避免双花,如何实现所有权验证等;
4. 虚拟机技术原理。
对于一个系统测试内容可能包括:
1. 转账、向单/多签名地址转账等;
2. 智能合同跟踪功能;
3. 打包及交易确认效率;
4. 单点攻击、多点攻击验证;
5. 数据传输过程中的加密、解密测试;
6. 对现有通讯协议增强的协议测试;
7. 系统中的各种算法测试,基于树、图等复杂场景测试
将来测试中,更多的是针对各种业务场景的测试,将会分析更多人的行为、心理等,用于设计各种测试场景,这会导致测试用例数量可能多到难以计算。
但是有可能采用更加先进的基于AI的测试系统,通过大量的虚拟用户,构造有限状态机,实施智能化遍历业务路径,并能实现测试场景、测试数据的自我更新。
总结,区块链技术带给我们更多的是思维方式的转变,对于互联网技术的运用可能带来更多的衍生技术。
现在去进行区块链测试的研究可能还为时尚早,我们只能针对其特点考虑如何测,但是针对不同业务的系统,测试方法上也会有所不同。
作为测试行业的人,我们更多的希望区块链技术带来测试技术、测试工具的颠覆性改变。让我们拭目以待吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律