Blog
hifive Developer Channelへようこそ! » 開発情報(hifive開発者向けリソース) » テストコード記述ガイド(hifive本体開発者向け)

テストコード記述ガイド(hifive本体開発者向け)

Last modified by simdy on 2012/12/18, 14:55
以下は、hifive本体開発者向けの情報です。
hifiveを使ったアプリケーションを開発される方は、チュートリアルリファレンスをご参照ください。


概要

hifive本体のテストコードの記述に関するルール・ガイドを説明する。

使用ツール

  • QUnit
    • 単体テスト
  • Selenium2(予定)
    • 画面系のテスト時に使用予定

単体テストのファイルテンプレート

/*
 * Copyright (C) 2012 NS Solutions Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */


(function() {
   // =========================================================================
   //
   // Constants
   //
   // =========================================================================

   // =========================================================================
   //
   // Privates
   //
   // =========================================================================

   //=============================
   // Variables
   //=============================

   // TODO テスト対象モジュールのコード定義をここで受けて、各ケースでは ERR.ERR_CODE_XXX と簡便に書けるようにする
   var ERR = ERRCODE.h5.core.data;

   //=============================
   // Functions
   //=============================

   // =========================================================================
   //
   // Test Module
   //
   // =========================================================================

   //=============================
   // Definition
   //=============================

   // TODO module()関数による、テストモジュールとsetup/teardownの記述

   //=============================
   // Body
   //=============================

   // TODO テストケース本体

})();

テストファイルの配置

testフォルダ以下に、以下のように配置

test/(テスト対象モジュール)/(テストモジュール名).js

※(テスト対象モジュール)は、「.」を「_」にしたフォルダ名にする

例:test/h5_core_data/moduleName.js

単体テスト(QUnit)ケース記述時のルール

テストモジュールは「APIの基本的なテスト」および「フィーチャー単位のテスト」ごとに別ファイルとする

1ファイルにつき1モジュールにする(module()は1ファイル中1回だけ)

テストモジュール名はキャメルケースにする

テストモジュールのファイル名は「(テストモジュール名).js」とする

例:h5.core.data.jsを対象に、基本的なAPIのテストと、バリデーションについてのテストを記述する場合

  • バリデーションのテスト:h5.core.data_validation.js

module()のsetup, teardownを適切に使用する

  • テストの前提条件の生成にはsetupを使用する。同じ初期化コードをコピペしない。
    • setupで生成したものは、teardownで適切に破棄する。
    • 初期生成にパラメータが必要(パラメータ化すればコピペせずに済むようになる)なら、(setupの代わりに)共通関数を作る。

エラーの発生をアサーションで記述する場合、エラーコード値でチェックする(messageは見ない)

  • メッセージは変更される可能性がある(多言語化対応などで言語が変わる場合もあり得る)ので、メッセージ(文字列)によるアサーションは行わない。

アサーション記述時、エラー定数は必ず test/_h5errorcode.js で定義されている定数を使用する

定数はERRCODE名前空間の下に、モジュールごとにぶら下がっている。

例:

ERRCODE.h5.core.data.ERR_CODE_INVALID_DESCRIPTOR

QUnitのテストケースフィルタについて

文法

テストケース名、またはモジュール名の先頭に [xxx] として書く。
「未知のブラウザに対しては全てのテストを行う」という観点から、
フィルタ条件にマッチした場合に限り、そのテストをスキップする。

各タグはORで結合される。したがって、 [build#min; browser#ie:6] というフィルタは
「min版、またはIE6の場合はテストをスキップする」という意味になる。

例:

 [tag1#value1; tag2#value2; ...]

利用可能なタグ

タグ取り得る値または文法意味
builddev / minビルド種別
browser(browser) : (version)[:docmode=(docmode)]、複数のブラウザを指定する場合は「|」でつなぐ(OR指定)バージョンは省略不可。ハイフンで範囲指定可能。ブラウザ名はキーで指定。docmodeはIEの場合のみ有効。ie:8-10:docmode=7|ch:0-24

browserのプレフィックスキー

ブラウザプレフィックスキー
IEie
Firefoxff
Chromech
Safarisa
Operaop

スマートデバイスの場合は「(browser)-(OS種別)」の組で表現する。

ブラウザ(OS)キー
MobileSafari(iOS)sa-ios
Android標準ブラウザand-and
IE Mobileie-wp
Chrome for Androidch-and
Chrome for iOSch-ios
Firefox Mobileff-and
Opera Mobileop-and

環境設定パラメータの記述方法

環境設定パラメータは、window.H5_TEST_ENVオブジェクト、またはクエリパラメータで指定できる。
両方に同じパラメータが記述されている場合はH5_TEST_ENVオブジェクトの値が優先される。

CI環境

  • タイムアウト等テスト続行不能なエラー発生時は FAILED.(理由).(疑似Pkg記法) とする。
    • 例:FAILED.TIMEOUT.xxxx

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