メインコンテンツまでスキップ

テストと検証

TypeScriptSDKは、src/tests/フォルダー下にあるe2eunitの2種類のテストを使用します。

  • e2eテスト – エンドtoエンドテストは、SDKメソッドから始まり、REST/インデクサーAPIとスマートコントラクトと対話し、ブロックチェーンレベルに至るまでのエンドtoエンド操作のテストをする事が目的です。たとえば、トランザクションが送信されたかどうかをテストするには、SDKが予期するトランザクションペイロードを構築することから始め、REST APIに送信リクエストをポストし、トランザクションデータを取得してブロックチェーンに完全に送信されたことを確認します。
  • unitテスト – 単体テストは、提供された入力を使用してSDK内の関数の出力をテストする事が目的です。例えば、アカウントのアドレスが有効かどうかをテストできます。

トランザクションビルダーとBCS

BCSは、署名、送信するためのトランザクションペイロードを組み立てシリアル化する際使用されます。

異なるプログラミング言語には異なるプリミティブ型の制約 (例: バイト長、値の範囲など) とさまざまな複合的な型のサポート (例: enum、struct、class等)がある事を考えると、データをシリアル化したコードを検証するのは困難です。

Aptos SDK は、トランザクションビルダーとBCSを以下の2つの方法で検証します。

  1. 最初のレベルの検証は、単体テストとエンドtoエンド(e2e)テストを通して行われます。
ヒント

BCS シリアライザーの単体テストの例は、serializer.test.tsにあります。

BCSトランザクションを送信するためのe2eテストの例は、aptos_client.test.tsにあります。

  1. 検証の2番目のレベルは、テストベクトルを使用したファジングテストです。テストベクトルは、Aptosブロックチェーンで使用されているのと同じコードによって生成されます。テストベクトルはJSONオブジェクトの配列です。各JSONオブジェクトは、ランダム化された入力と予期された出力を含みます。 AptosSDKは、テストベクトルを解析およびロードして、トランザクションビルダーとBCSの実装を検証できます。

2つのテストベクトルがあります。それぞれが1種類のトランザクションペイロードをカバーします。

ベクトルアイテムは一目瞭然ですが、スペースを節約しデータのオーバーフローを回避するため、特別なシリアル化メソッドが使用されます。詳細は以下で解説します。

  • すべてのアカウントアドレスは16進コード化されています。
  • エントリー関数のargs(引数)は16進コード化されます。
  • U64、U128の数値は文字列リテラルとしてシリアル化され、データの切り捨てを回避します。
  • U8は(文字列ではなく)数値としてシリアル化されます。
  • スクリプトのcodeとモジュールBundleは16進コード化されています。
ヒント

タイプスクリプトSDKがベクトル検証を行う方法については、transaction_vector.test.tsコード例を参照してください。