区块链技术最近热的发紫,大多数的文章都在普及区块链概念。区块链可能会成为未来 10 年互联应用的一个底层技术,会应用于各行各业的各种项目。比如:商品溯源,传统溯源系统采用集中数据存储数据,其实这样的数据对数据库持有者来说,想怎么修改,就怎么修改,那它的数据可信度有多少?之前甚至出现过某银行储户的资金不翼而飞的情况。既然区块链会易用到各种系统,QA 同学当然有必要了解下区块链该怎么测了。小编结合实际整理了下区块链测试相关内容,一起来看看吧!
区块链测试与传统的软件测试有很大的不同,主要体现在以下几点:
故障类型复杂。一般软件故障包括 3 类:
区块链类型不同。区块链本身包含公有链、私有链、联盟链等多种类型,不同类型在管理、用户身份、最大节点数等平台自身特征方面均有不同,测评需要考虑所有的模式,导致测试方案更加复杂。(如下表)
根据目前行业发布的白皮书,区块链的评测标准包括:
技术要求
区块链相关的落地系统,也可能包括我们熟悉的传统架构软件的测试内容。比如之前某些厂商的带宽共享、共享云,也会有独立的 APP 支持在线查询管理等;对于区块链底层的测试,则需要掌握的技术包括如下几点:
1. 首先要掌握密码学的基本知识(例如对称加密、非对称加密、数字签名的原理);
2. 理解数据结构中的链表概念,树的概念;
3. 区块链的交易记账模型(如何实现转账的,如何避免双花的,如何实现所有权验证的);
4. 若是基于以太坊代码做,那还得理解虚拟机运行原理;
区块链项目重点测试如下内容:
1. 转账,向单/多签名地址转账,向脚本转账;
2. 如果对币的机制有修改,双花攻击测试;
3. 智能合约功能及安全测试;
4. 打包及交易确认效率。
其实,任何软件的测试,都是可以基于 “输入 - 输出 - 行为” 模型(又叫 IBO 模型)来做测试分析和设计。
业务场景及性能测试
一、 业务场景
我们以金融业务为例,通常分为实施业务、和非实时业务,两种业务的特点在于:
二、关于性能测试的一些思考
对于性能评测部分,主要关注一下 4 个指标:
对于不同的性能指标,几点思考:
延迟:P2P 系统中都是虚拟链接,实际路由可能每次都不一样。
目前对于区块链的测试内容上,短期还会出现针对不同行业的差异性,但最终会走向融合和统一。测试手段上,也将随着时间逐步由人工测试,转向自动化测试,有周边的功能深入到底层。
参考文献:
- 区块链测评概览https://www.jianshu.com/p/7d88c4176d4c
- 区块链成熟度评测报告https://www.jianshu.com/p/45e0eef2f34c
- 嘿丫科技_程文彬的对话整理