開発者ブログ
HTML5資料室 » JSCoverage

JSCoverage

Last modified by simdy on 2014/07/10, 17:11

JavaScriptのコード実行カバレッジを計測するツールJSCoverageに関する情報を載せていきます。

ここでは、JSCoverageサーバの使用方法について記述しています。

JSCoverage概要

  • 計測したいJSソースファイルに事前にインストルメント処理を行います。
    • コードの各行ごとに「この行を通過した」ことを記録するコードが挿入されます。
  • 処理を行ったJSを実行すると結果が特定のオブジェクトに保存されます。
  • 3項演算子を使うと全体で1行とみなされます(制限事項)
  • ダウンロードはこちらから:JSCoverage

結果のサーバ出力

JSCoverageサーバを立ち上げてカバレッジを計測すると、その計測結果をサーバへ送ることができます。送られた実行結果はマージした状態で見られるので、複数のブラウザでの実行結果をマージしたカバレッジを見ることができます。

サーバへファイルを配置

結果をサーバ出力するためには、カバレッジ計測を行うソースフォルダをJSCoverageサーバ上に置く必要があります。
サーバ版を使わない場合と同様で、jscoverage.exeを使って、出力位置をJSCoverageサーバのルート内に指定します。

mkdir ..\server\
set server=.\server
jscoverage --encoding=UTF-8 %server%\qunitTestOrg %server%\inst

JSCoverageサーバの起動

ダウンロードしたjscoverage-server.exeを実行すると、JSCoverage用のサーバが立ち上がります。

  • 起動例
    jscoverage-server.exe --verbose --port=8000 --report-dir=report

サーバが起動すると、コマンドプロンプトが立ち上がります。

以下、起動時の主要なオプションの説明です。

 --verbose , -v

指定すると、コマンドプロンプトに、アクセスログを出力します。

 --document-root=PATH

サーバのルートとなるパスを設定します。デフォルトはカレントディレクトリ。

 --no-instrument=URL

指定したURL以下にあるjsファイルのカバレッジを計測しないようにします。

 --ip-address=ADDRESS

指定したIPアドレスで起動します。デフォルトは127.0.0.1。

 --port=PORT

JSCoverageサーバを指定したポートで立ち上げます。デフォルトは8080。Tomcatと同時に立ち上げる場合は、ポート番号が被らないように設定します。

 --report-dir=PATH

マージ結果を出力するフォルダパスを指定します。デフォルトは"jscoverage-report"ですが、URL中に"-"があるとJSCoverageサーバからアクセスできないことがあります(詳しい条件は未確認)ので、"-"のないパスを設定した方が無難です。

テスト実行方法

サーバを起動したら、http:localhost:8000/jscoverage.html にアクセスできます。(IPアドレス、ポートは起動時設定によります。)

通常のJSCoverage版と同様に、この画面からカバレッジ計測を行うURLを指定します。ここに指定するURLはJSCoverageサーバ内でなければなりません。そのためカバレッジを計測したいファイルは全てサーバへ配置する必要があります。

通常のJSCoverageページと違い、サーバ版には"Store"タブがあります。カバレッジの計測を行ったら、このタブから"Stroe Report"ボタンをクリックして結果をサーバに送ることができます。

結果の取得(閲覧)方法

サーバへ送信した結果は、http:localhost:8000/report/jscoverage.html から見ることができます。(--report-dirの設定によります。)
サーバへ送信された複数のカバレッジ計測結果をマージした結果が表示されます。

集計結果のリセット

reportフォルダをフォルダごと削除すれば結果がリセットされます。

サーバの停止

jscoverage-server --shutdown --port=8000
起動しているサーバのポートを指定する必要があります。


Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.