BitXHub là một nền tảng công nghệ chuỗi chéo được phát triển độc lập bởi Qulian Technology, cung cấp giải pháp tương tác dựa trên các chuỗi liên minh không đồng nhất. Để đảm bảo rằng các chức năng của nền tảng chuỗi chéo BitXHub trong quy trình lặp lại hàng ngày đáp ứng nhu cầu của người dùng, đồng thời tìm và khắc phục nhiều vấn đề nhất có thể trước khi phát hành hoặc phân phối, công cụ kiểm tra Premo đã ra đời. Premo chủ yếu được triển khai dựa trên gosdk của chính BitXHub, dễ dàng mở rộng và bảo trì. Bài viết này chủ yếu tập trung vào ba khía cạnh của kiểm thử chức năng, kiểm thử hiệu suất và kiểm thử tự động để đưa ra cái nhìn tổng quan về khung kiểm thử của Premo.
【Tổng quan về kiến trúc】
Khung thử nghiệm Premo được hiển thị trong hình bên dưới. Nội dung dựa trên thử nghiệm chủ yếu được chia thành "kiểm tra chức năng" và "kiểm tra hiệu suất". Thử nghiệm chức năng chủ yếu dựa trên thử nghiệm và chứng minh để hiện thực hóa khung thử nghiệm tổng thể, giao tiếp và gọi nền tảng chuỗi chéo BitXHub dựa trên gosdk; thử nghiệm hiệu suất chủ yếu được thực hiện thông qua các coroutine trên cơ sở gosdk. Premo tiếp tục triển khai thử nghiệm tích hợp liên tục trên cơ sở thử nghiệm chức năng và phần thử nghiệm tích hợp liên tục chủ yếu được triển khai với GitHub Actions.
【kiểm tra chức năng】
Mô-đun kiểm tra chức năng chủ yếu được triển khai bởi gosdk, thư viện kiểm tra và thư viện mã nguồn mở của dự án BitXHub. Mô-đun kiểm tra chức năng được chia thành nhiều tệp kiểm tra theo các điểm chức năng của bài kiểm tra. Các trường hợp kiểm tra trong mỗi tệp kiểm tra được bao gồm trong một bộ kiểm tra. Trong kiểm tra hàng ngày, các bộ khác nhau có thể được chạy dựa trên các điểm chức năng bạn cần kiểm tra, như sau Như thể hiện trong hình. Ví dụ: tất cả các trường hợp thử nghiệm trong model1001_chain_test.go đều được bao gồm trong bộ model1. Nếu bạn cần chạy các trường hợp thử nghiệm liên quan đến chuỗi, bạn chỉ cần chạy bộ model1.
▲Kiểm tra song song
Với sự mở rộng liên tục của dự án, số lượng các trường hợp thử nghiệm cũng tăng lên và thời gian để quay lại các trường hợp thử nghiệm đầy đủ ngày càng dài hơn. phát triển phiên bản. Thử nghiệm song song có thể giải quyết vấn đề này một cách hiệu quả, nhưng điều này sẽ đưa ra một vấn đề mới, đó là sự kết hợp giữa các trường hợp thử nghiệm. Nhiều trường hợp sử dụng sẽ không phát hiện ra sự cố trong quá trình thử nghiệm nối tiếp, nhưng một khi thử nghiệm song song được thực hiện, các sự cố tương tranh sẽ xuất hiện.
Lấy nền tảng chuỗi chéo BitXHub làm ví dụ, nền tảng chuỗi chéo BitXHub sẽ duy trì giá trị nonce theo địa chỉ tài khoản trong quá trình nhận các giao dịch chuỗi chéo để đạt được tính trật tự của giao dịch chuỗi chéo và giá trị nonce sẽ tăng lên mỗi khi nhận được một giao dịch 1. Nếu giá trị nonce nhận được nhỏ hơn giá trị nonce dự kiến, nền tảng chuỗi chéo BitXHub sẽ loại bỏ giao dịch. Ngược lại, nếu nó lớn hơn giá trị nonce dự kiến, BitXHub sẽ hủy giao dịch nền tảng chuỗi chéo sẽ tạm thời lưu trữ giao dịch cho đến khi nonce đạt đến giá trị mong đợi. Điều này sẽ yêu cầu chúng tôi duy trì giả tạo giá trị nonce trong trường hợp thử nghiệm song song. Do đó, một điểm rất quan trọng trong thử nghiệm song song là cần phải duy trì tính độc lập tương đối giữa các trường hợp sử dụng.Làm thế nào để duy trì tính độc lập tương đối của các trường hợp sử dụng cần phải được điều chỉnh cho phù hợp với điều kiện địa phương của chính dự án.
【Kiểm tra năng suất】
Một điểm quan trọng để đo lường xem hệ thống dịch vụ xuyên chuỗi có đáng tin cậy và ổn định hay không là chỉ số hiệu suất của chính chuỗi chéo đó. Theo các yêu cầu trên, Premo đã triển khai một bộ giải pháp kiểm tra hiệu suất hoàn chỉnh dựa trên gosdk của chính BitXHub để xác minh xem hiệu suất của nền tảng chuỗi chéo BitXHub có đáp ứng các yêu cầu hay không. Bài kiểm tra hiệu suất trong Premo chủ yếu là bài kiểm tra căng thẳng, xác minh hiệu suất của BitXHub trong việc xử lý các giao dịch chuỗi chéo bằng cách gửi một số lượng lớn giao dịch chuỗi chéo đến nền tảng chuỗi chéo BitXHub. Kiểm tra hiệu suất tổng thể chủ yếu được chia thành 3 bước, đó là chuẩn bị chuỗi ứng dụng, gửi giao dịch xuyên chuỗi và đếm TPS.
▲Chuẩn bị chuỗi ứng dụng
Trước khi gửi các giao dịch liên chuỗi, cần phải đăng ký trước một số chuỗi ứng dụng nhất định vào chuỗi chuyển tiếp theo các loại giao dịch khác nhau, để Premo có thể sử dụng danh tính của các chuỗi ứng dụng này để gửi các giao dịch liên chuỗi đến chuyển tiếp chain thông qua SDK. Sau khi chuỗi ứng dụng được đăng ký thành công, các quy tắc xác minh tương ứng cần được triển khai để xác minh tính hợp lệ của giao dịch trong chuỗi chuyển tiếp.
▲ Gửi giao dịch xuyên chuỗi
Theo TPS đặt trước và số lượng chuỗi ứng dụng, số lượng giao dịch chuỗi chéo mà chuỗi ứng dụng cần gửi đến nền tảng chuỗi chéo BitXHub trong vòng một giây có thể được tính toán. Loại giao dịch đặt trước có thể xây dựng nội dung giao dịch tương ứng. Lưu ý rằng do các yêu cầu về trật tự của các giao dịch xuyên chuỗi, chúng tôi cần duy trì giá trị nonce của từng giao dịch xuyên chuỗi trong nội dung giao dịch. Đồng thời, để gửi các giao dịch xuyên chuỗi đồng đều hơn, Premo sẽ gửi một số giao dịch chuỗi chéo đến nền tảng chuỗi chéo BitXHub cứ sau 50 mili giây. Ví dụ: Premo cần mô phỏng 20 chuỗi ứng dụng để gửi tổng cộng 2000 giao dịch chuỗi chéo mỗi giây. Chuỗi ứng dụng cần gửi 100 giao dịch chuỗi chéo trong vòng 1 giây và mỗi chuỗi ứng dụng sẽ gửi 5 giao dịch chuỗi chéo cứ sau 50 mili giây.
▲ Thống kê TPS
TPS thống kê đạt được bằng cách đăng ký chặn các sự kiện trên nền tảng chuỗi chéo BitXHub. Sau khi đăng ký các sự kiện khối, mỗi khối do nền tảng liên chuỗi BitXHub phát hành sẽ được đẩy lên Premo. Premo tính toán TPS bằng cách đếm số lượng giao dịch trong khối. Độ trễ của mỗi giao dịch = thời gian nhận khối - Thời gian giao dịch để chà xát. Premo in TPS và độ trễ giao dịch trung bình mỗi giây dựa trên thông tin trên.
【kiểm tra tự động】
Chức năng chính của kiểm tra tự động là hoàn thành kiểm tra các trường hợp kiểm tra chức năng đầy đủ khi bất kỳ nhánh nào được thăng cấp lên nhánh chính hoặc nhánh phát hành *, đồng thời tạo báo cáo kiểm tra tương ứng theo kết quả kiểm tra và xuất bản báo cáo thử nghiệm lên máy chủ. Biểu mẫu để thông báo cho người gửi PR.
▲Ra lệnh
Premo thêm kiểm tra chức năng vào lệnh make và kiểm tra chức năng đầy đủ có thể được thực hiện thông qua lệnh make. Đồng thời, lệnh make tạo báo cáo thử nghiệm tương ứng theo kết quả thử nghiệm.
▲GitHubActions
chữ
▲allure-server
Allure Report Server mã nguồn mở trên GitHub hỗ trợ xuất bản các báo cáo thử nghiệm thông qua GitHub Actions và allure-server hỗ trợ docker.
"Có rất nhiều việc phải làm ở trên, chúng ta có thể phân tích từng chút một"
(1) Hành động kích hoạt theo PR:
Để biết chi tiết, hãy tham khảo các chương có liên quan của tài liệu chính thức Sự kiện kích hoạt quy trình công việc của các hành động github;
(2) Theo phép thử hàm nhánh mục đích:
Trong hành động, chúng tôi có thể lấy tên nhánh mục tiêu. Các trường hợp thử nghiệm của Premo được duy trì theo phiên bản của nền tảng chuỗi chéo BitXHub, vì vậy chúng tôi chỉ cần kéo Premo theo tên nhánh mục tiêu để kiểm tra chức năng;
(3) Báo cáo thử nghiệm phát hành:
Xuất bản báo cáo thử nghiệm chủ yếu được thực hiện thông qua allure-server, đã được đề cập ở trên. Một điều cần lưu ý là địa chỉ của máy chủ tương ứng với allure-server không được để lộ ra ngoài, nếu không sẽ gây ra sự bất ổn cho máy chủ, vấn đề này có thể được giải quyết bằng cách đặt [Bí mật] trong kho [Cài đặt];
(4) Email thông báo:
Thông báo email phổ biến trong Tác vụ GitHub, chỉ cần sử dụng tác vụ tương ứng. Cần lưu ý rằng do định dạng của SMTP được sử dụng, số tài khoản và mật khẩu của hộp thư không thể được tiết lộ. Vấn đề này có thể được giải quyết bằng cách cài đặt [Bí mật] trong kho [Cài đặt]. Trong quá trình thông báo qua email, bạn cần biết mật khẩu tài khoản của email đích, đồng thời cũng cần bật dịch vụ SMTP trong email, trường hợp này không nên cấu hình email của người gửi PR trong hoạt động.
Một giải pháp phù hợp là: thông qua các quy tắc gửi và nhận của chính hộp thư. Lấy Hộp thư doanh nghiệp Tencent làm ví dụ, hộp thư hỗ trợ chuyển tiếp tự động dựa trên nội dung của email. Chúng tôi chỉ cần mang tên github của người gửi (hoặc thông tin nhận dạng khác) trong email và bộ lọc quy tắc gửi và nhận dựa trên tên và tự động chuyển tiếp email đến người gửi PR. Thông qua phương pháp trên, không cần chỉ định các địa chỉ email khác nhau tùy theo những người gửi PR khác nhau trong hành động, chỉ cần gửi email đến"trạm trung chuyển"Đó là nó.
Sau khi hoàn thành công việc trên, bạn chỉ cần duy trì các trường hợp kiểm tra chức năng Premo theo nhánh của BitXHub để hoàn thành kiểm tra tự động tương ứng. Quy trình cụ thể được thể hiện trong hình dưới đây:
chữ
Giới thiệu về tác giả
Giới thiệu về tác giả
Chu Vệ Kiệt
Phòng thí nghiệm lưới dữ liệu công nghệ FunChain Nhóm BitXHub
