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

テスト

V8にはエンジンをテストするためのテストフレームワークが含まれています。このフレームワークを使用すると、ソースコードに含まれる独自のテストスイートや、Test262テストスイートなどの他のテストを実行できます。

V8テストの実行

gmを使用して、任意のビルドターゲットに.checkを追加するだけで、テストを実行できます。例:

gm x64.release.check
gm x64.optdebug.check # 推奨: 適度に速く、DCHECKが有効。
gm ia32.check
gm release.check
gm check # デフォルトのすべてのプラットフォームをビルドしてテスト

gmはテストを実行する前に必要なターゲットを自動的にビルドします。テストを絞り込むこともできます:

gm x64.release test262
gm x64.debug mjsunit/regress/regress-123

すでにV8をビルドしている場合は、手動でテストを実行することもできます:

tools/run-tests.py --outdir=out/ia32.release

再度、実行するテストを指定することもできます:

tools/run-tests.py --outdir=ia32.release cctest/test-heap/SymbolTable/* mjsunit/delete-in-eval

--helpを付けてスクリプトを実行すると、その他のオプションを確認できます。

追加テストの実行

デフォルトで実行されるテストセットには、すべての利用可能なテストが含まれているわけではありません。gmまたはrun-tests.pyのコマンドラインで追加のテストスイートを指定できます:

  • benchmarks(正確性用のみ; ベンチマーク結果の生成はなし!)
  • mozilla
  • test262
  • webkit

微小ベンチマークの実行

test/js-perf-testの下には、機能のパフォーマンスを追跡するための微小ベンチマークがあります。これらの特別なランナー: tools/run_perf.pyを使用して実行します。以下のように実行してください:

tools/run_perf.py --arch x64 --binary-override-path out/x64.release/d8 test/js-perf-test/JSTests.json

すべてのJSTestsを実行したくない場合は、filter引数を指定できます:

tools/run_perf.py --arch x64 --binary-override-path out/x64.release/d8 --filter JSTests/TypedArrays test/js-perf-test/JSTests.json

インスペクターテスト期待値の更新

テストを更新した後、その期待値ファイルを再生成する必要がある場合があります。次のコマンドを実行して達成できます:

tools/run-tests.py --regenerate-expected-files --outdir=ia32.release inspector/debugger/set-instrumentation-breakpoint

これは、テストの出力がどのように変わったかを確認する場合にも便利です。まず、上記のコマンドを使用して期待値ファイルを再生成し、その後以下を使用して差分を確認してください:

git diff

バイトコード期待値の更新(リベースライン化)

バイトコード期待値が変更されることでcctestの失敗が発生することがあります。ゴールデンファイルを更新するには、以下を実行してtest/cctest/generate-bytecode-expectationsをビルドしてください:

gm x64.release generate-bytecode-expectations

その後、生成されたバイナリに--rebaselineフラグを渡してデフォルトの入力セットを更新します:

out/x64.release/generate-bytecode-expectations --rebaseline

更新されたゴールデンファイルは現在、test/cctest/interpreter/bytecode_expectations/にあります。

新しいバイトコード期待値テストの追加

  1. cctest/interpreter/test-bytecode-generator.ccに新しいテストケースを追加し、同じテスト名のゴールデンファイルを指定します。

  2. generate-bytecode-expectationsをビルドします:

    gm x64.release generate-bytecode-expectations
  3. 実行します

    out/x64.release/generate-bytecode-expectations --raw-js testcase.js --output=test/cctest/interpreter/bytecode-expectations/testname.golden

    ここで、testcase.jstest-bytecode-generator.ccに追加されたJavaScriptのテストケースを含み、testnametest-bytecode-generator.ccに定義したテストの名前です。