テスト
V8 にはエンジンをテストするためのテストフレームワークが含まれています。このフレームワークを使うと、ソースコードに含まれている自前のテストスイートと、Test262 テストスイート などのその他のテストを両方実行できます。
V8 テストの実行 #
gm
を使用して、任意のビルドターゲットに単に .check
を追加するだけで、テストを実行できます。例:
gm x64.release.check
gm x64.optdebug.check # recommended: reasonably fast, with DCHECKs.
gm ia32.check
gm release.check
gm check # builds and tests all default platforms
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
テストの出力がどのように変更されたかを調べたい場合にも役立ちます。まず上記のコマンドを使用して期待されるファイルを再生成し、次を使用して diff を確認します
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/
で利用できます。
新しいバイトコード期待値テストの追加 #
cctest/interpreter/test-bytecode-generator.cc
に新しいテストケースを追加し、そのテストと同じ名前のゴールデンファイルで指定します。generate-bytecode-expectations
をビルドします。gm x64.release generate-bytecode-expectations
を実行します。
out/x64.release/generate-bytecode-expectations --raw-js testcase.js --output=test/cctest/interpreter/bytecode-expectations/testname.golden
ここで、
testcase.js
にはtest-bytecode-generator.cc
に追加されたJavaScriptテストケースが含まれており、testname
はtest-bytecode-generator.cc
で定義されたテストの名前です。