网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
背景
区块链的特性回顾:
- 去中介化/中心化的信任。
- 稳定性、可靠性、持续性。因为它是一个分布式的网络架构,没有一个中心节点可以被打击或者攻击,所以在整体的技术布置方面有着更强的稳定性、可靠性和持续性。
- 强安全、共识机制不需要第三方的进入,而是通过一个技术来达到,先前预定的一个技术来达到整个交易的完成。
- 交易的公开透明和不可篡改性。
简单概括:去中心化,不可篡改、所有节点公开全账本、账户信息持续可追踪、对等网络,没有上帝角色(系统管理员等)。
技术储备
一、区块链测试的难点
区块链测试与传统的软件测试有很大的不同,主要体现在以下几点:
- 系统边界模糊。传统的软件,不管是是独立的应用程序,还是客户端/服务器模式的应用程序,都有明显的系统边界,可以通过UI用户界面或者客户端去进行测试。区块链底层,则是一个完全去中心化的分布式网络。这个网络有可能跨越多个子网、多个数据中心、多个运营商、甚至多个国家,其边界是模糊的。对于区块链底层的测试,不仅仅是前端API与某个区块链节点之间的测试,还涉及大量区块链节点与节点之间的测试。
- 故障类型复杂。一般软件故障包括3类:
-
- 宕机故障(Crash Failure);
- 宕机-恢复故障 (Crash-Recovery Failures);
- 拜占庭故障 (Byzantine Failures)。所谓拜占庭故障,来自一个著名的“拜占庭将军问题”,指系统存在某些恶意节点,用一个形象的比喻就是“叛变的Byzantine将军”。从不同观察者角度看这类节点,表现出不一致的症状,这在需要共识的系统中,往往会导致系统服务失效。
一般软件最多只需要解决前两种故障,而区块链系统,则需要同时处理所 有的故障,确保系统的可靠运行。
- 区块链类型不同。区块链本身包含公有链、私有链、联盟链等多种类型,不同类型在管理、用户身份、最大节点数等平台自身特征方面均有不同,测评需要考虑所有的模式,导致测试方案更加复杂。(如下表)
二、测试点的考量
根据目前行业发布的白皮书,区块链的评测标准包括:
技术要求
区块链相关的落地系统,也可能包括我们熟悉的传统架构软件的测试内容。比如之前某些厂商的带宽共享、共享云,也会有独立的APP支持在线查询管理等;对于区块链底层的测试,则需要掌握的技术包括如下几点:
- 首先要掌握密码学的基本知识(例如对称加密、非对称加密、数字签名的原理);
- 理解数据结构中的链表概念,树的概念;
- 区块链的交易记账模型(如何实现转账的,如何避免双花的,如何实现所有权验证的);
- 若是基于以太坊代码做,那还得理解虚拟机运行原理;
区块链项目重点测试如下内容:
- 转账,向单/多签名地址转账,向脚本转账;
- 如果对币的机制有修改,双花攻击测试;
- 智能合约功能及安全测试;
- 打包及交易确认效率。
其实,任何软件的测试,都是可以基于“输入-输出-行为”模型(又叫IBO模型)来做测试分析和设计。
业务场景及性能测试
一、 业务场景
我们以金融业务为例,通常分为实施业务、和非实时业务,两种业务的特点在于:
- 实时业务:秒级支付、私有链、无单点故障和高扩展性;
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**