51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2784|回复: 6

区块链如何测试?

[复制链接]
  • TA的每日心情
    无聊
    2024-3-7 09:16
  • 签到天数: 43 天

    连续签到: 2 天

    [LV.5]测试团长

    发表于 2018-3-9 14:31:15 | 显示全部楼层 |阅读模式
    区块链技术最近热的发紫,大多数的文章都在普及区块链概念。区块链可能会成为未来10年互联应
    用的一个底层技术,会应用于各行各业的各种项目。比如:商品溯源,传统溯源系统采用集中数据
    存储数据,其实这样的数据对数据库持有者来说,想怎么修改,就怎么修改,那它的数据可信度有
    多少?之前甚至出现过某银行储户的资金不翼而飞的情况。既然区块链会易用到各种系统,QA同学
    当然有必要了解下区块链该怎么测了。小编结合实际整理了下区块链测试相关内容,一起来看看吧!



    背景





    区块链的特性回顾:

    去中介化/中心化的信任。

    稳定性、可靠性、持续性。因为它是一个分布式的网络架构,没有一个中心节点可以被打击或者
    攻击,所以在整体的技术布置方面有着更强的稳定性、可靠性和持续性。

    强安全、共识机制不需要第三方的进入,而是通过一个技术来达到,先前预定的一个技术来达到
    整个交易的完成。

    交易的公开透明和不可篡改性。

    简单概括:去中心化,不可篡改、所有节点公开全账本、账户信息持续可追踪、对等网络,没有
    上帝角色(系统管理员等)。

    技术储备

    一、区块链测试的难点



    区块链测试与传统的软件测试有很大的不同,主要体现在以下几点:

    系统边界模糊。传统的软件,不管是是独立的应用程序,还是客户端/服务器模式的应用程序,
    都有明显的系统边界,可以通过UI用户界面或者客户端去进行测试。区块链底层,则是一个完
    全去中心化的分布式网络。这个网络有可能跨越多个子网、多个数据中心、多个运营商、甚至
    多个国家,其边界是模糊的。对于区块链底层的测试,不仅仅是前端API与某个区块链节点之间
    的测试,还涉及大量区块链节点与节点之间的测试。

    故障类型复杂。一般软件故障包括3类:

    宕机故障(Crash Failure);

    宕机-恢复故障 (Crash-Recovery Failures);

    拜占庭故障 (Byzantine Failures)。所谓拜占庭故障,来自一个著名的“拜占庭将军问题”,
    指系统存在某些恶意节点,用一个形象的比喻就是“叛变的Byzantine将军”。从不同观察者角
    度看这类节点,表现出不一致的症状,这在需要共识的系统中,往往会导致系统服务失效。

    一般软件最多只需要解决前两种故障,而区块链系统,则需要同时处理所 有的故障,确保系
    统的可靠运行。

    区块链类型不同。区块链本身包含公有链、私有链、联盟链等多种类型,不同类型在管理、
    用户身份、最大节点数等平台自身特征方面均有不同,测评需要考虑所有的模式,导致测试方案
    更加复杂。(如下表)




    二、测试点的考量

    根据目前行业发布的白皮书,区块链的评测标准包括:



    技术要求

    区块链相关的落地系统,也可能包括我们熟悉的传统架构软件的测试内容。比如之前某些厂
    商的带宽共享、共享云,也会有独立的APP支持在线查询管理等;对于区块链底层的测试,
    则需要掌握的技术包括如下几点:

    首先要掌握密码学的基本知识(例如对称加密、非对称加密、数字签名的原理);

    理解数据结构中的链表概念,树的概念;

    区块链的交易记账模型(如何实现转账的,如何避免双花的,如何实现所有权验证的);

    若是基于以太坊代码做,那还得理解虚拟机运行原理;

    区块链项目重点测试如下内容:

    转账,向单/多签名地址转账,向脚本转账;

    如果对币的机制有修改,双花攻击测试;

    智能合约功能及安全测试;

    打包及交易确认效率。

    其实,任何软件的测试,都是可以基于“输入-输出-行为”模型(又叫IBO模型)来做测试分
    析和设计。

    业务场景及性能测试

    一、 业务场景

    我们以金融业务为例,通常分为实施业务、和非实时业务,两种业务的特点在于:

    实时业务:秒级支付、私有链、无单点故障和高扩展性;

    非实时业务:去中心化、联盟链、防篡改、数据零丢失;

    具体如下图:



    二、关于性能测试的一些思考

    对于性能评测部分,主要关注一下4个指标:



    对于不同的性能指标,几点思考:

    延迟:P2P系统中都是虚拟链接,实际路由可能每次都不一样。

    共识率:系统中设定一些节点,故意篡改释放假数据,看是否成功。

    吞吐率:检查矿工的效率,即整个系统每秒的有效交易数。

    目前性能评测中,常见的是脱离网络规模和区块大小谈每秒交易数(TPS)

    实际中,网络规模越大,需要达成共识的节点越多,达成共识的进度,越慢,吞吐量(
    TPS)就越低

    区块越大,可扩展性越大,吞吐量可能发生抖动,大概率是变低。



    结束语

    目前对于区块链的测试内容上,短期还会出现针对不同行业的差异性,但最终会走向融
    合和统一。测试手段上,也将随着时间逐步由人工测试,转向自动化测试,有周边的功
    能深入到底层。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-8-11 08:18
  • 签到天数: 114 天

    连续签到: 1 天

    [LV.6]测试旅长

    发表于 2018-3-9 16:05:39 | 显示全部楼层
    几乎所有的区块链文章都在忽悠安全性的提升,事实上,区块链并没有提升安全性,只不过是将原先中心承担的所有风险分散给个体承担

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 21:41
  • 签到天数: 986 天

    连续签到: 2 天

    [LV.10]测试总司令

    发表于 2018-3-16 10:53:34 | 显示全部楼层
    puchonghui 发表于 2018-3-9 16:05
    几乎所有的区块链文章都在忽悠安全性的提升,事实上,区块链并没有提升安全性,只不过是将原先中心承担的所 ...

    个体承担是指什么意思?不是很懂。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-8-11 08:18
  • 签到天数: 114 天

    连续签到: 1 天

    [LV.6]测试旅长

    发表于 2018-3-16 13:19:42 | 显示全部楼层
    applepen 发表于 2018-3-16 10:53
    个体承担是指什么意思?不是很懂。

    原先中心化管理,一旦防御被攻破,所有的信息是同时暴露的。

    现在转为个体的公钥私钥机制,一个私钥丢失只丢失一个人的信息。

    从整个系统来看,去中心化使得安全上的风险分散到了个体,每个个体通过私钥来维护对应的数据安全,使得整体数据看上去更可靠。

    但是对于个人来说,个体数据资产的安全性并没有提高,甚至有所降低,因为私钥是在本地的。一旦本地的私钥载体遗失,对个人来说后果就很严重。

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-28 17:27 , Processed in 0.076048 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表