当前位置: 首页 > news >正文

“三大阶段稳定性测试”筑牢长安链信任基石

前言

随着长安链应用生态的不断丰富、面对的应用场景更加多元,稳定性测试在长安链测试流程中占到越来越重要的位置。本文将介绍长安链稳定性测试的发展历程及如何通过三大阶段稳定性测试应对不断出现的复杂的商业需求,筑牢长安链信任基石。

功能测试和性能测试的局限性

功能测试关注系统是否按照规范执行操作,而性能测试主要关注系统的吞吐量和响应时间。这两种方法的单一性有可能限制系统全面稳定性的评估,它们无法涵盖系统可能出现的某些问题。

(1)测试颗粒度的挑战:深入细节中的考验

从横向角度看,早期的测试方法通常是将区块链视为单一模块化测试,对挖掘其内部各个组成部分之间的联系不够深入。例如当进行功能测试时,测试者可能只关注系统是否能够成功的执行基本交易,并未同步关注到系统的智能合约、数据存储、节点通信等方面细节,这种测试颗粒度比较粗的方法可能会导致忽视一些安全漏洞、多模块协作异常处理等重要问题,例如某些测试中只检查系统是否能够处理正常的交易请求,但未考虑恶意用户可能发起的攻击。

(2)深度测试的必要性:挑战系统的稳定性

从纵向的角度来看,测试不能限于短期和低负载的情况下进行。这限制了对系统在长时间运行和高负载条件下性能和稳定性的全面评估。在实际商业项目中,区块链系统需要长时间的稳定运行,同时还需要处理大量的交易和数据,因此测试的深度变得至关重要。

因此在复杂的应用环境中,稳定性测试的重要性越来越高。

长安链稳定性测试的引入

随着长安链得到越来越广泛的应用,在大型商业化项目需求中引入了TB级甚至PB级存储的概念,这曾经为长安链系统稳定带来了挑战,为应对这一挑战需要更强大的测试手段,以提前确保系统稳定可靠。

从2021年底开始长安链加强了稳定性测试,不仅丰富了测试流程,提升了测试颗粒度和深度,还将长安链的综合测试水平进行了提升,实现了从最初的模块功能测试和性能测试为主,过渡到稳定性测试的流程串联测试实现全面的覆盖,以确保系统稳定可靠。随着时间的推移和项目实践的沉淀,2023年稳定性测试再次升级,测试流程更为丰富,覆盖了更广泛的使用场景,更加紧密地贴合用户的实际需求。

长安链稳定性测试的原理

稳定性测试的原理可以简化为两个关键维度:功能稳定性和性能稳定性。

功能稳定性:其侧重于模拟长时间、不间断的用户并发交易,以揭示系统在各种业务场景下的稳定性。这一方面关注系统是否出现功能性缺陷,例如节点崩溃、内存耗尽、节点停止出块、读写集不一致等严重问题。

性能稳定性:性能稳定性侧重于在处理大规模数据和长时间运行的情况下确保链系统的性能不会下降,同时避免对计算资源的不合理占用。主要验证链系统的吞吐量在高负载情况下保持稳定且在长期运行时不出现性能问题。

在此基础上,也会考虑容错性稳定性模拟各类故障注入,包括但不限于网络断链、机器资源不足、拜占庭故障等复杂情况,旨在验证系统是否能够健壮地应对这些情况,保持数据的一致性、避免崩溃、恢复正常运行等,这有助于确保区块链系统在面对意外事件或恶意攻击时不会出现系统性故障或数据损坏。在实际测试过程中容错性稳定性测试会与功能稳定性相结合,因此这里可以暂时归类为功能稳定性中。

结合上面的稳定性测试的原理,这里整理了现阶段稳定性测试架构图

图片

图1

多样化的测试手段

长安链通过多样化的测试手段全面评估系统在不同负载和场景下的性能、可靠性、稳定性。

(1)负载均衡测试:

引入基础压力、尖峰压力、递增/减压力。压力测试类型有助于确定区块链系统在各种负载情况下的性能表现和稳定性。以确保系统在面对不同压力和用户激增情况下都能够保持高效和可靠。

a. 基础压力测试:基础压力是根据机器配置和性能评估得出的一个前端压力基线。它代表了系统在正常操作下所能承受的基本负载,作为性能评估的出发点。

b. 尖峰压力测试:尖峰压力模拟了实际项目中偶尔出现的用户访问量高峰。这种场景下,系统需要应对用户数量暴涨的情况,如双十一等大型促销活动。

c. 递增/减压力测试:递增和递减压力根据实际测得的基础压力来调整。当基础压力较高时,逐步递减压力以测试系统在高负载下的适应能力。当基础压力较低时,逐步递增压力以测试系统的可扩展性和性能极限。

(2)一致性测试:

验证链是否能够正确执行共识算法,确保所有节点都达成共识,维护数据一致性。

(3)数据恢复测试:

模拟故障节点宕机数据恢复情况,测试链的容错性和恢复能力,包括节点宕机数据清空后的数据恢复测试,以评估链的容错性。

(4)可扩展性测试:

测试链的可扩展性,以确定链能够处理大规模的交易和用户访问量,包括多链、并发订阅和20节点测试等场景,以评估链的性能和可伸缩性。

(5)数据完整性测试:

验证数据在传输和存储过程中是否保持完整和准确;比较链上各个节点的总数据,观察数据量的膨胀率等,以确保数据的完整性。

(6)定制化场景测试:

针对不同应用场景的项目,执行一些定制化场景测试,以满足特定的需求和异常情况。包括多链场景、订阅场景、20节点场景、磁盘占用达到极限、跨合约调用、多类型合约并发等测试场景。

“三大阶段稳定性测试”保障系统可靠性

随着长安链稳定性测试的优化升级,长安链对稳定性测试的阶段进行了重新划分并融合结合多样化的测试手段,精心设计三个阶段的稳定性测试:新特性稳定性测试阶段、基础稳定性测试阶段、高阶稳定性测试阶段。

图片

图3

(1)新特性稳定性测试阶段
此阶段主要是验证新特性的功能稳定性和性能稳定性,检查对链的影响确保新功能不会对区块链系统原有功能和性能稳定性造成负面影响,此时采用低负载测试,并发量以百为单位,运行时长以周为单位。

(2)基础稳定性测试阶段:

此阶段以基础功能为导向侧重验证区块链系统的基本功能的稳定性与可靠性,与新特性相比,这里更侧重于各个模块的协作,而并非单个模块对于链的影响。适度负载,通常以千为单位,运行时长以10天为单位。

(3)高阶稳定性测试阶段:

此阶段经过基础的功能验证,将以高负载、高并发,压力通常以万为单位,测试大数据量通常为100亿交易量+,运行长时间运行以20天为单位。

同时此阶段将测试多种机器资源不同配置:4c8g、8c16g、32c128g;以不同规模和部署方式测试: 云原生部署,裸机部署;加入各种异常测试,模拟各种异常情况,比如磁盘占用达到极限,网络盘意外断开连接等。

通过三大阶段的测试结合多样化的测试手段并将其融入了测试流程的各个关键环节,实现了紧密的衔接和相互支持,确保每个测试环节环环相扣,保障长安链在面对复杂的商业化需求时表现出色,保持高度的鲁棒与稳定。

结语

未来,稳定性测试手段将更加多样并持续创新,长安链将在测试场景丰富化、实时监控和反馈、自动化数据分析、数据对比与历史记录、预测性维护、融合混沌测试等方面持续努力,让长安链做好支撑数字经济发展可靠的信任基石。

相关文章:

“三大阶段稳定性测试”筑牢长安链信任基石

前言 随着长安链应用生态的不断丰富、面对的应用场景更加多元,稳定性测试在长安链测试流程中占到越来越重要的位置。本文将介绍长安链稳定性测试的发展历程及如何通过三大阶段稳定性测试应对不断出现的复杂的商业需求,筑牢长安链信任基石。 功能测试和…...

手把手教你如何扩展(破解)mybatisplus的sql生成 | 京东云技术团队

mybatisplus 的常用CRUD方法 众所周知,mybatisplus提供了强大的代码生成能力,他默认生成的常用的CRUD方法(例如插入、更新、删除、查询等)的定义,能够帮助我们节省很多体力劳动。 他的BaseMapper中定义了这些常用的C…...

Spring Data JPA 项目配置与QueryDSL集成

一、说明 Spring Data JPA通过Spring Initializer创建时勾选相关依赖即可引入,QueryDSL需要单独引入。Spring JPA针对QueryDSL有比较好的兼容性,可以实现优雅的SQL构建。 二、设置JPA默认配置(yaml格式) spring:jpa:hibernate:…...

UE5数字孪生制作-数据篇(二) - 数据处理

1.卫星图与DEM高度图坐标一致处理 https://www.bilibili.com/video/BV1op4y1V71r?p4&vd_source707ec8983cc32e6e065d5496a7f79ee6 坐标系的调整 如何使用临时图层,对其他数据层进行裁切 (1)创建临时图层 (2)在临…...

Java 设计模式——享元模式

目录 1.概述2.结构3.实现3.1.抽象享元3.2.具体享元3.3.享元工厂3.4.测试 4.优缺点5.使用场景6.JDK 源码解析——Integer 类 1.概述 (1)享元模式 (Flyweight Pattern) 是一种结构型设计模式,主要通过共享对象来减少系统中的对象数量&#xff…...

再扩国产化适配版图,长安链新增数据库兼容性认证

基础软件的自主可控影响着国家信息安全与产业技术发展是否受制于人。实现真正长期可持续的技术自主可控,需要再进一步的是让国产化信息系统生态更有”活性“,基础软件之间、基础软件与其他国产上层应用的互相兼容、互相促进,共同繁荣发展&…...

MES系统数据集成系统源码

MES系统数据集成系统源码 1 MES的生产计划管理综述 生产计划的管理在MES系统中是非常重要的。我们知道,一般的情况下,企业的生产计划是由上层管理系统ERP来完成,那么MES中的生产计划和ERP的生产计划的不同点在于: ERP的生产计划…...

关于道一云-七巧使用感悟

低代码,开发快速,缺点组件比较少但能满足大多数场景,如果需要的话得自己造,官方的技术群里面普遍问题响应就很快,技术文档这个会抽风,有些代码就改个筛选条件本地死活运行不了,去官网那里问他们…...

去中心化数据云项目Oort主网即将上线

备受期待的去中心化数据云项目Oort,今日已通过官方X账号官宣,将于纽约时间11月27日正式上线主网Olympus Protocol。届时,用户也能够通过Oort的Ale Wallet钱包和开发者API使用主网,并可通过OORT浏览器查询交易和合约,开…...

CSS知识点梳理(一)

CSS 是层叠样式表(Cascading Style Sheets)的缩写,它是一种用于描述 HTML 或 XML(包括如 SVG、MathML 等派生语言)文档呈现的语言。CSS 可以用来控制文档的布局、颜色、字体等外观属性。 CSS 的主要特点包括&#xff…...

网络安全深入学习第八课——反向代理(工具:frp)

文章目录 一、实验环境二、实验要求三、开始模拟1、攻击机配置frp文件2、攻击拿下跳板机,并且上传frpc.ini、frpc.exe、frpc_full.ini文件3、把frps.ini、、frps.exe、frps_full.ini文件放到VPS主机上4、VPS机开启frp5、跳板机开启frp6、验证 一、实验环境 攻击机&…...

浅谈前端自定义VectorGrid矢量瓦片样式

目录 前言 一、VectorGrid相关API介绍 1、VectorGrid 2、 LayerStyles样式详解 二、样式自动配置 1、页面定义 2、地图及PBF瓦片引入 3、矢量瓦片样式定义 4、鼠标事件交互 三、最终效果 1、自定义样式展示 2、鼠标交互 总结 前言 在上一篇博客中,详细讲…...

Qt5多线程<12>

1.多线程的简单实现 <1> 在头文件threaddlg.h声明用于界面显示所需的控件,其代码如下: #ifndef THREADDLG_H #define THREADDLG_H#include <QDialog> #include <QPushButton> #include "workthread.h" #define MAXSIZE 5class ThreadDlg : publ…...

Linux学习笔记之五(父子进程、孤儿进程、僵尸进程、守护进程)

Linux 1、进程1.1、进程的六种状态1.2、创建子进程1.3、添加子进程任务1.4、孤儿进程、僵尸进程、守护进程1.4.1、避免僵尸进程1.4.2、创建守护进程1.4.3、杀死守护进程 1.5、综合练习 1、进程 进程可以简单的理解为一个正在执行的程序&#xff0c;它是计算机系统中拥有资源和…...

[题] 不容易系列之(3)―― LELE的RPG难题 #DP

题目 不容易系列之(3)―― LELE的RPG难题 思路 简单的DP题。 代码 #include<bits/stdc.h> using namespace std; //默认以0开头&#xff0c;以1和2结尾。f[i][1]表示长度为i的以1结尾的涂抹方案 //状态转移方程&#xff1a;若以1结尾&#xff0c;则前面一个格子只能是…...

pip 安装任意软件包报错

现象 使用 pip 命令时提示 查看源码 可以看到是从 pip 包中导入 main失败&#xff0c;点击查看目录 main 文件不见了&#xff0c;判断是文件缺失&#xff0c;重装 pip 即可 # python3 下载 pip curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # python2 下载…...

NLP之Bert实现文本多分类

文章目录 代码代码整体流程解读debug上面的代码 代码 from pypro.chapters03.demo03_数据获取与处理 import train_list, label_list, val_train_list, val_label_list import tensorflow as tf from transformers import TFBertForSequenceClassificationbert_model "b…...

对话大众软件子公司:中国的智舱、智驾比欧洲早一代

作者 | 德新 编辑 | 王博 尤其在上海车展之后&#xff0c;大部分的外资车企都在转型调整。 2023年的上海车展是一个重要节点。在这之前&#xff0c;疫情阻断了国内和海外频繁的线下交流&#xff0c;而国内汽车的新能源化和智能化在这期间完成了一次飞跃式的发展。所以车展开…...

基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. RGB与HSV色彩空间 4.2. RGB到HSV转换原理 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到matlab中&#xff1a; 2.算法运行软件版本 vivado2019.2 matlab2022a …...

小型企业如何数字化转型?ZohoCRM助力小企业转型

小型企业数字化之路倍加艰难&#xff0c;其组织规模有限、资源有限&#xff0c;数字化布局或转型&#xff0c;也存在与数字平台匹配度的问题。其实小型企业可以通过CRM客户管理系统实现高效的客户关系管理&#xff0c;进一步提高市场竞争力。 建立高效易用的客户关系管理系统 …...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...