Giới thiệu về việc thử nghiệm phần mềm Modular Blockchain.

Trong mạng sản xuất, các lỗi ngây thơ và vấn đề phổ biến làm đe dọa tính linh hoạt của các blockchain phi tập trung (decentralized blockchains). Vấn đề này cực kỳ quan trọng do số lượng người dùng và ứng dụng phụ thuộc vào các blockchain này. Tuy nhiên, một chủ đề quan trọng và ít được thảo luận cũng đáng được nhấn mạnh, đó là việc kiểm thử blockchain. Đây là một yếu tố quan trọng để đảm bảo sự ổn định của blockchain và vẫn chưa được sử dụng đầy đủ như một thành phần quan trọng.

Bài đăng trên blog này sẽ tập trung vào sự quan trọng của việc kiểm thử blockchain và các chiến lược để thực hiện kiểm thử một cách hiệu quả.

Tóm tắt (TL;DR):

  • Để đảm bảo tính ổn định và đáng tin cậy của mạng lưới blockchain, việc kiểm thử nghiêm ngặt các loại nút, tùy chỉnh và hiệu suất trên toàn mạng là rất quan trọng.
  • Với sự linh hoạt gia tăng của các mạng lưới blockchain modular, việc tăng cường phương pháp kiểm thử là cần thiết để duy trì an ninh và độ tin cậy của mạng.
  • Các chiến lược kiểm thử hiệu quả bao gồm kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hệ thống.
  • Tuy nhiên, việc kiểm thử các modular blockchain cũng đặt ra những thách thức, bao gồm sự phức tạp, vấn đề tương tác và thiếu các khung chuẩn hóa.

Tầm quan trọng của việc kiểm thử blockchain

Để đảm bảo an ninh, đáng tin cậy và ổn định lâu dài của mạng lưới blockchain, việc kiểm thử là vô cùng quan trọng. Qua quá trình kiểm thử, các vấn đề có thể được xác định và giải quyết trước khi triển khai mạng.

Trong trường hợp của các modular blockchain, quá trình kiểm thử trở nên phức tạp hơn do sự đa dạng của các loại nút và cài đặt khả thi.

Mỗi loại nút phải được kiểm thử độc lập và sau đó được tích hợp vào toàn bộ mạng. Với việc mỗi loại nút có thể được tùy chỉnh, quá trình kiểm thử cũng phải bao gồm việc kiểm thử các tùy chỉnh đó.

Chiến lược kiểm thử cho blockchain

Những điều cần nhớ khi tiến hành quá trình kiểm thử

Tất cả các nhóm, bao gồm Celestia Labs, đều đối diện với hạn chế về khả năng con người để phân chia tài nguyên cho mỗi khía cạnh của phát triển phần mềm. Trong quá trình phát triển blockchain, kiểm thử thường được coi là mức ưu tiên thấp hơn so với việc đưa ra các tính năng mới. Tuy có ràng buộc về thời gian kiểm thử, các nhóm nên nhớ rằng kiểm thử vẫn có thể hiệu quả nếu tuân thủ các hướng dẫn đơn giản sau:

  • Kiểm thử toàn diện là không thể thực hiện được. Tuy nhiên, bạn có thể bao phủ một phạm vi rất lớn bằng cách xác định và ưu tiên kiểm thử các yếu tố có nguy cơ cao.
  • Việc tìm và khắc phục lỗi càng sớm càng tốt. Khi một lỗi tiến triển từ quy định đến mạng kiểm thử (testnet) và mạng chính (mainnet), chi phí để khắc phục lỗi sẽ tăng lên.
  • Bất kỳ sự tự động hóa nào cũng tốt hơn không có gì. Khi tiến hành kiểm thử trên một mạng lưới lớn, việc tự động hóa trở thành yếu tố quan trọng.
  • Kiểm thử phần mềm trên các mạng nội bộ devnets trước khi phát hành công khai. Bằng cách đảm bảo rằng phần mềm ổn định trước khi triển khai lên mạng kiểm thử, bạn giảm thiểu công việc và sự thất vọng cho cộng đồng.
  • Kiểm thử thủ công tốt hơn không kiểm thử. Mặc dù kiểm thử thủ công không phải là một giải pháp tự động hóa dài hạn, nhưng nó vẫn hữu ích cho các mục tiêu ngắn hạn. Bạn vẫn có thể tiến hành tự động hóa trong tương
Ghi chú*:

Đây là một ví dụ thực tế về cách Gabriel Blaut (Trưởng nhóm và Nhà nghiên cứu tại Rollkit) đã phát hiện ra một lỗi trong specs.

The blockchain testing pyramid


Tương tự như bất kỳ quy trình kiểm thử phần mềm nào khác, quá trình kiểm thử cho blockchain cần bao gồm cả kiểm thử chức năng và kiểm thử phi chức năng.

Kiểm thử chức năng tập trung vào việc kiểm tra từng module riêng lẻ và cách chúng tương tác với nhau. Mục tiêu là đảm bảo rằng các chức năng của blockchain hoạt động như mong đợi và đáp ứng các yêu cầu cụ thể. Việc kiểm thử chức năng có thể bao gồm việc xác minh tính đúng đắn của các giao dịch, khả năng lưu trữ và truy xuất dữ liệu, quản lý tài khoản và quyền truy cập, và các chức năng khác.

Trong khi đó, kiểm thử phi chức năng đánh giá hiệu suất, an ninh và khả năng mở rộng của mạng blockchain để đảm bảo một hệ thống blockchain mạnh mẽ và đáng tin cậy. Điều này có thể bao gồm việc kiểm tra hiệu suất của mạng, xác minh tính bảo mật của giao dịch và cơ chế bảo vệ, đánh giá khả năng mở rộng và sự phù hợp với các tiêu chuẩn và quy định liên quan.

Kết hợp cả kiểm thử chức năng và kiểm thử phi chức năng sẽ giúp đảm bảo rằng blockchain được xây dựng và triển khai đúng cách, với tính năng hoạt động đáng tin cậy và đáp ứng được các yêu cầu kỹ thuật và chức năng.

Các chiến lược sau đây có thể được sử dụng để kiểm thử blockchain hiệu quả:

1. Kiểm thử đơn vị (Unit Testing)

Kiểm thử đơn vị bao gồm việc kiểm tra từng module một cách độc lập để đảm bảo chúng hoạt động đúng. Một ví dụ về module trong ngữ cảnh này là header của celestia-node, nó bao gồm cách mà các header được lan truyền qua các node khác nhau trong mạng. Điều này rất quan trọng đối với các blockchain vì nó cho phép kiểm thử tùy chỉnh của từng module.

Chiến lược kiểm thử này giúp phát hiện các vấn đề trong một module trước khi nó được tích hợp vào mạng. Với thiết kế phần mềm modul, các blockchain modul cùng được kết hợp, kiểm thử từng thành phần độc lập mang lại nhiều lợi ích.

2. Kiểm thử tích hợp (Integration Testing)

Kiểm thử tích hợp là rất quan trọng đối với blockchain để đảm bảo các module tương tác như mong đợi. Chiến lược kiểm thử này bao gồm việc kiểm thử các module kết hợp với nhau để đảm bảo tính tương thích giữa chúng.

Một ví dụ về kiểm thử giữa các module là khi một node được kiểm thử với một node khác. Trong trường hợp của Celestia, chúng tôi thường kiểm thử việc đồng bộ hóa và lấy mẫu của một light node từ một bridge node duy nhất. Cả hai đều được viết từ một kho mã nguồn, nhưng được đóng gói khác nhau.

Kiểm thử tích hợp giúp phát hiện bất kỳ vấn đề nào xảy ra trong tương tác giữa các module và mạng.

Thường trong giai đoạn kiểm thử này, chúng ta mong đợi chuẩn bị một mạng lưới nhỏ của các node để kiểm thử trên cùng một máy.

Một ví dụ về kiểm thử giữa các module là khi một node được kiểm thử với một node khác. Trong trường hợp của Celestia, chúng tôi thường kiểm thử việc đồng bộ hóa và lấy mẫu của một light node từ một bridge node duy nhất. Cả hai đều được viết từ một kho mã nguồn, nhưng được đóng gói khác nhau.

Kiểm thử tích hợp giúp phát hiện bất kỳ vấn đề nào xảy ra trong tương tác giữa các module và mạng.

Thường trong giai đoạn kiểm thử này, chúng ta mong đợi chuẩn bị một mạng lưới nhỏ của các node để kiểm thử trên cùng một máy.

3. Kiểm thử hệ thống (System Testing)

Kiểm thử hệ thống bao gồm việc kiểm thử toàn bộ mạng để đảm bảo rằng nó đáp ứng các yêu cầu cần thiết. Chiến lược kiểm thử này bao gồm việc kiểm thử hiệu suất, khả năng mở rộng và bảo mật của mạng. Kiểm thử hệ thống giúp phát hiện các vấn đề với chức năng và hiệu suất tổng thể của mạng.

Trong kiểm thử hệ thống, thường sử dụng một mạng lưới lớn các node để mô phỏng một môi trường thực tế. Chiến lược kiểm thử này giúp phát hiện các vấn đề có thể xảy ra do tính phi tập trung của mạng.

Một ví dụ tốt về lỗi được tìm thấy ở mức hệ thống cho Celestia là khóa không khớp trong quá trình nộp giao dịch hoặc kiểm tra số dư đơn giản bởi các node DA. Lỗi chức năng này được phát hiện trong quá trình kiểm thử tải của tính năng PayForBlob. Các kiểm thử hệ thống thường phát hiện ra các lỗi mà kiểm thử đơn vị/tích hợp không thể làm được, bất chấp tính đơn giản của kịch bản và đôi khi không liên quan đến mục tiêu kiểm thử của kế hoạch kiểm thử.

Một ví dụ khác là một false positive được phát hiện trong quá trình kiểm thử phát hành hệ thống, trong đó node DA hoạt động như bình thường, nhưng sau khi được xem xét kỹ lưỡng, nó không phải là như vậy.

Ngoài ra, kiểm thử hệ thống giúp đảm bảo rằng mạng có khả năng xử lý một lượng lớn giao dịch và người dùng.

Kiểm thử hệ thống là một phần quan trọng của quá trình kiểm thử cho các blockchain. Nó giúp đảm bảo rằng mạng hoạt động như mong đợi và các vấn đề được phát hiện và giải quyết trước khi triển khai. Bằng cách kiểm thử các blockchain ở mức hệ thống, chúng ta có thể đảm bảo sự tiếp nhận và sử dụng thành công của chúng bởi cộng đồng.

Mức kiểm thử này được coi là đắt đỏ nhất và không nên có phạm vi kiểm thử tương tự như đơn vị/tích hợp. Điều này đặc biệt đúng đối với các blockchain được thiết kế theo kiểu modular vì cần tính đến nhiều ngữ cảnh hơn khi thiết kế các kiểm thử hệ thống.

Chúng tôi sẽ trình bày chi tiết hơn về mức kiểm thử này trong Phần 2 của loạt bài này.

Tương lai của việc kiểm thử các Modular Blockchains

Khi các mạng blockchain tiếp tục tiến triển, việc kiểm thử cũng phải tiến hóa theo. Các chiến lược và khung thử nghiệm mới sẽ xuất hiện, và những khung thử nghiệm hiện có sẽ được tinh chỉnh. Quá trình kiểm thử sẽ trở nên tự động hơn và hiệu quả hơn, giảm thời gian và chi phí kiểm thử.

Khi blockchain được áp dụng rộng rãi hơn, nhu cầu về các khung thử nghiệm tiêu chuẩn sẽ trở nên rõ ràng hơn. Các khung thử nghiệm tiêu chuẩn sẽ giúp kiểm thử mở rộng đến nhiều loại mạng và các trường hợp sử dụng khác nhau. Nếu bạn thích bài viết giới thiệu này, trong phần 2 chúng tôi sẽ giải thích cách Celestia Labs sử dụng công cụ có tên là Testground để chạy các kiểm thử mạng quy mô lớn.

Bài viết mới nhất

FOLLOWIN X SAIGONTRADECOIN: EXPERIENCE & EARN EVENT

Nhân dịp Followin ra mắt bản cập nhật toàn diện của Trang web, Followin cùng SaiGonTradeCoin gửi đến các bạn độc giả một minigame...

Persistence One ra mắt liquid staking cho DYDX

Persistence One vừa ra mắt dịch vụ liquid staking cho DYDX, một dự án trên chuỗi Cosmos. Được phát hành bởi pSTAKE Finance, stkDYDX...

Persistence One x Kujira Collaboration

Persistence One và Kujira đã hợp tác để đưa LST của pSTAKE, bắt đầu với stkATOM, vào hệ sinh thái DeFi của Kujira. Với sự...

Persistence One đem Restaking đến Cosmos.

TL;DR Persistence One đã mang Restaking đến Cosmos. Người dùng có thể gửi tiền vào Liquid Staked Tokens (ATOM, TIA, DYDX, vv.) bằngpSTAKE, Stride, Quicksilver, và Milkyway vào...