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.

AltStyle によって変換されたページ (->オリジナル) /