作者:資訊 / 來源:PlatON
說 PlatON 測試之前,我們需要先了解下關于區塊鏈測試和傳統互聯網測試的區別,其主要體現在系統邊界模糊,對于區塊鏈的測試不僅僅是前端 API 與某個區塊鏈節點之間的測試,還涉及大量區塊鏈節點與節點之間的測試。
同時還要注意 PlatON 鏈本身包含公有鏈、私有鏈,不同類型在管理、用戶身份、最大節點數等平臺自身特征方面均有不同,測試需要考慮所有的模式,導致測試方案和場景也比常規的傳統測試更加復雜。
現在我們可以來認識下 PlatON,首先它不屬于交易平臺類型的業務產品,而是于基于區塊鏈的技術以及鏈技術產生的價值的生態基礎服務,測試的重點也是不一樣的。我們的測試會更加關注底層,比如共識算法、網絡、存儲、經濟模型等。
PlatON 測試范圍總覽
從 Case 全景圖可以看出,我們對 PlatON 的 Case 過程進行分類,主要是通過 5 個方面去驗證系統保證安全可靠。
** 1. 初始化階段**
主要是通過在鏈初始化時,搭建私鏈或者鏈接主網時對經濟模型中的合約賬號、信息以及參數進行合理性的驗證。
隱式初始化-不指定網絡時鏈接 PlatON 主網絡,這時候需要驗證網絡節點搭建成功之后鏈上信息和內置的信息保持一致。
顯式初始化-搭建私鏈則是通過創世文件初始化的方式加入到特定的私有網絡,成功加入鏈之后驗證鏈上信息和配置的信息保持一致初始化參數。
共識參數-經濟模型參數、治理參數、懲罰參數、獎勵參數、增發參數。
初始化參數是通用的系統參數,參數分主網參數和自定義參數兩類:
主網參數-通過在啟動節點時增加命令參數來實現鏈接 PlatON 主網絡,需要驗證的就是鏈上共識參數、經濟模型參數、治理參數等和主網參數保持一致。
自定義參數-在啟動節點時,通過調整初始化創世文件里的初始化參數來實現自定義參數,然后通過鏈初始化啟動節點,這時候鏈上的參數應該和創世文件中的參數保持一致。
但是這里需要注意的是自定義參數時,創世文件中數值閾值的調整需要合理,不同的參數組合最終會導致鏈啟動成功與否以及鏈上運行的規則發生變化,我們的測試過程正是驗證這些參數變動帶來的各種邊界值,以及參數是否給鏈的運行提供合理的標準。
** 2. 啟動階段**
啟動階段測試我們分為兩種模式進行驗證,分別是單節點和集群,因為不同的節點數量鏈運行方式也會有所不同,我們從簡單的結構出發,然后慢慢擴展數量,從而達到模擬真實環境。
| 單節點
啟動節點
查看節點信息
查看版本信息
鏈上功能
| 集群
快速參數集群
主網集群
鏈上功能
作為區塊鏈運轉的載體,所有的事情幾乎都要節點參與,網絡通信、邏輯運算、交易、數據驗證等,而區塊鏈一般是由多個節點組成協同工作,因此節點屬性及對節點的管理至關重要。在實際管理中,節點能由管理者操作加入或者退出區塊鏈網絡,而不影響業務的正常運行,以及擴容新增節點。
在節點相關驗證,主要包含了鏈部署時不同節點數量的情況下節點的運行情況檢查,創世文件啟動時不同的參數組合對鏈影響,如共識節點數量、治理參數配置、同步方式等,我們會根據不同的組合去驗證配置參數的合理性,同時節點本身具備了不同的啟動參數,在整個鏈運行的過程中需要對啟動參數的調整來驗證這些啟動命令的有效性以及對鏈的影響。
同時還需要分別在單節點和集群模式下進行鏈上功能的驗證,確保在不同模式下 PlatON 經濟模型業務表示是一致的。