BitXHub는 Qulian Technology가 독자적으로 개발한 크로스체인 기술 플랫폼으로 이기종 제휴 체인을 기반으로 상호 운용성 솔루션을 제공합니다. 일일 반복 프로세스에서 BitXHub 크로스체인 플랫폼의 기능이 사용자 요구를 충족하고 출시 또는 배송 전에 가능한 한 많은 문제를 찾아 수정하기 위해 Premo 테스트 도구가 등장했습니다. Premo는 BitXHub 자체 gosdk를 기반으로 주로 구현되며 확장 및 유지 관리가 쉽습니다. 이 기사는 주로 Premo의 테스트 프레임워크에 대한 개요를 제공하기 위해 기능 테스트, 성능 테스트 및 자동화 테스트의 세 가지 측면에 중점을 둡니다.
【아키텍처 개요】
Premo 테스트 프레임워크는 아래 그림과 같습니다. 테스트 기반 콘텐츠는 크게 "기능 테스트"와 "성능 테스트"로 나뉩니다. 기능 테스트는 주로 전체 테스트 프레임워크를 실현하기 위한 테스트 및 증언과 gosdk 기반 BitXHub 크로스 체인 플랫폼의 통신 및 호출을 기반으로 하며 성능 테스트는 주로 gosdk 기반 코루틴을 통해 실현됩니다. Premo는 기능 테스트를 기반으로 지속적인 통합 테스트를 추가로 구현하며 지속적인 통합 테스트 부분은 주로 GitHub Actions로 구현됩니다.
【기능 검사】
기능 테스트 모듈은 주로 BitXHub 프로젝트 자체 gosdk, testify 오픈 소스 라이브러리 및 테스트 라이브러리에 의해 구현됩니다. 기능 테스트 모듈은 테스트의 기능 포인트에 따라 여러 테스트 파일로 나뉩니다.각 테스트 파일의 테스트 케이스는 테스트 스위트에 포함됩니다.일일 테스트에서 필요한 기능 포인트에 따라 다른 스위트를 실행할 수 있습니다. 그림과 같이 다음과 같이 테스트하십시오. 예를 들어, model1001_chain_test.go의 모든 테스트 케이스는 model1 suite에 포함되며, 체인 관련 테스트 케이스를 실행해야 하는 경우 model1 suite만 실행하면 됩니다.
▲병렬화 테스트
프로젝트의 지속적인 확장으로 인해 테스트 케이스의 수도 증가하고 전체 테스트 케이스로 돌아가는 데 걸리는 시간이 점점 길어지고 있습니다. 버전 개발. 병렬 테스팅은 이 문제를 효과적으로 해결할 수 있지만 새로운 문제, 즉 테스트 사례 간의 결합이 발생합니다. 많은 사용 사례는 직렬 테스트 과정에서 문제를 노출하지 않지만 병렬 테스트가 수행되면 동시성 문제가 나타납니다.
BitXHub 교차 체인 플랫폼을 예로 들면 BitXHub 교차 체인 플랫폼은 교차 체인 거래를 받는 과정에서 계정 주소에 따라 논스 값을 유지하여 교차 체인 거래의 질서를 달성하고 논스 값을 유지합니다. 1. 수신된 논스 값이 예상 논스 값보다 작으면 BitXHub 크로스체인 플랫폼은 트랜잭션을 폐기합니다.반대로 예상 논스 값보다 크면 BitXHub 크로스체인 플랫폼은 nonce가 예상 값에 도달할 때까지 트랜잭션을 임시로 저장합니다. 이를 위해서는 병렬 테스트 사례에서 nonce 값을 인위적으로 유지해야 합니다. 따라서 병렬 테스트에서 매우 중요한 점은 유스케이스 간의 상대적 독립성을 유지하는 것인데, 유스케이스의 상대적 독립성을 유지하는 방법은 프로젝트 자체의 로컬 조건에 맞게 조정되어야 합니다.
【성능 시험】
크로스 체인 서비스 시스템이 신뢰할 수 있고 안정적인지 측정하는 중요한 포인트는 크로스 체인 자체의 성능 지표입니다. 위의 요구 사항에 따라 Premo는 BitXHub 크로스 체인 플랫폼의 성능이 요구 사항을 충족하는지 확인하기 위해 BitXHub 자체 gosdk를 기반으로 완전한 성능 테스트 솔루션 세트를 구현했습니다. Premo의 성능 테스트는 주로 스트레스 테스트로, BitXHub 크로스체인 플랫폼에 대량의 크로스체인 트랜잭션을 전송하여 크로스체인 트랜잭션을 처리하는 BitXHub의 성능을 검증합니다. 전체 성능 테스트는 주로 애플리케이션 체인 준비, 크로스 체인 트랜잭션 전송 및 TPS 계산의 3단계로 나뉩니다.
▲ 애플리케이션 체인 준비
교차 체인 트랜잭션을 보내기 전에 서로 다른 트랜잭션 유형에 따라 일정 수의 응용 프로그램 체인을 릴레이 체인에 사전 등록해야 Premo가 이러한 응용 프로그램 체인의 ID를 사용하여 교차 체인 트랜잭션을 릴레이에 보낼 수 있습니다. SDK를 통해 체인. 애플리케이션 체인이 성공적으로 등록된 후 릴레이 체인에서 트랜잭션의 유효성을 확인하기 위해 해당 확인 규칙을 배포해야 합니다.
▲크로스체인 트랜잭션 보내기
미리 설정된 TPS와 애플리케이션 체인 수에 따라 애플리케이션 체인이 1초 이내에 BitXHub 크로스체인 플랫폼으로 전송해야 하는 크로스체인 트랜잭션 수를 계산할 수 있습니다. 사전 설정된 거래 유형은 해당 거래 본문을 구성할 수 있습니다. 교차 체인 트랜잭션의 질서 있는 요구 사항으로 인해 트랜잭션 본문에서 각 교차 체인 트랜잭션의 nonce 값을 유지해야 합니다. 동시에 교차 체인 트랜잭션을 보다 균등하게 전송하기 위해 Premo는 일부 교차 체인 트랜잭션을 50ms마다 BitXHub 교차 체인 플랫폼으로 전송합니다.예를 들어 Premo는 총 2000개를 전송하기 위해 20개의 응용 프로그램 체인을 시뮬레이션해야 합니다. 초당 교차 체인 트랜잭션 애플리케이션 체인은 1초 내에 100개의 교차 체인 트랜잭션을 전송해야 하며 각 애플리케이션 체인은 50ms마다 5개의 교차 체인 트랜잭션을 전송합니다.
▲ 통계 TPS
통계적 TPS는 BitXHub 크로스체인 플랫폼에서 블록 이벤트를 구독함으로써 달성됩니다. 블록 이벤트를 구독한 후 BitXHub 크로스체인 플랫폼에서 발행한 각 블록은 Premo로 푸시됩니다.Premo는 블록의 트랜잭션 수를 계산하여 TPS를 계산합니다.각 트랜잭션의 지연 = 블록을 받는 시간 - 트랜잭션 시간 문질러. Premo는 위의 정보를 기반으로 TPS 및 초당 평균 트랜잭션 대기 시간을 인쇄합니다.
【자동 테스트】
자동화 테스트의 주요 기능은 브랜치가 마스터 브랜치 또는 릴리스* 브랜치로 승격될 때 전체 기능 테스트 케이스의 테스트를 완료하고 동시에 테스트 결과에 따라 해당 테스트 보고서를 생성하는 것입니다. 테스트 보고서를 서버에 게시하여 PR 제출자에게 알립니다.
▲메이크 커맨드
Premo는 make 명령에 기능 테스트를 추가하고 make 명령을 통해 전체 기능 테스트를 수행할 수 있습니다. 동시에 make 명령은 테스트 결과에 따라 해당 테스트 보고서를 생성합니다.
▲GitHubActions
텍스트
▲allure-server
GitHub의 오픈 소스 Allure Report Server는 GitHub Actions를 통한 테스트 보고서 게시를 지원하고 allure-server는 docker를 지원합니다.
"위에서 수행해야 할 작업이 많습니다. 조금씩 분석할 수 있습니다."
(1) PR에 따른 트리거 동작:
자세한 내용은 github 작업의 워크플로를 트리거하는 공식 문서 Events의 관련 장을 참조하십시오.
(2) 목적 분기 기능 테스트에 따라:
작업에서 대상 브랜치 이름을 얻을 수 있습니다.Premo의 테스트 사례는 BitXHub 크로스 체인 플랫폼의 버전에 따라 유지되므로 기능 테스트를 위해 대상 브랜치 이름에 따라 Premo를 풀링하기만 하면 됩니다.
(3) 방출 테스트 보고서:
테스트 보고서 게시는 위에서 언급한 allure-server를 통해 주로 이루어집니다. 한 가지 주의할 점은 allure-server에 해당하는 서버의 주소를 노출할 수 없으며, 그렇지 않으면 서버에 불안정을 가져올 수 있습니다.이 문제는 창고 [설정]에서 [비밀]을 설정하여 해결할 수 있습니다.
(4) 이메일 알림:
이메일 알림은 GitHub Actions에서 일반적이며 해당 작업을 사용하십시오. 사용하는 SMTP 형식으로 인해 사서함의 계정 번호와 비밀번호는 공개할 수 없습니다. 이 문제는 창고 [설정]에서 [비밀]을 설정하면 해결할 수 있습니다. 이메일 알림 과정에서 대상 이메일의 계정 비밀번호를 알아야 하며, SMTP 서비스를 활성화하기 위한 이메일도 필요하므로 액션에서 PR 제출자의 이메일을 구성하는 것은 바람직하지 않습니다.
적합한 솔루션은 사서함 자체의 송수신 규칙을 사용하는 것입니다. Tencent Enterprise 사서함을 예로 들어 사서함은 이메일 내용에 따라 자동 전달을 지원합니다. 이메일에 제출자의 github 이름(또는 기타 신원 정보)만 전달하고 이름을 기준으로 송수신 규칙을 필터링하여 자동으로 PR 제출자에게 이메일을 전달하면 됩니다. 위의 방법을 통해 action에서 PR 제출자마다 다른 이메일 주소를 지정할 필요가 없으며 이메일을 보내면 됩니다."환승역"그게 다야.
위의 작업을 완료한 후 BitXHub의 분기에 따라 Premo 기능 테스트 케이스를 유지하기만 하면 해당 자동화 테스트를 완료할 수 있습니다. 구체적인 프로세스는 아래 그림에 나와 있습니다.
텍스트
저자 소개
저자 소개
주 웨이지에
FunChain 기술 데이터 그리드 연구소 BitXHub 팀
