SlideShare a Scribd company logo
Fitnesseを用いたテストの効率化について第一回デジタルエンタメ研究会(仮)2011-04-23HN:cac+
1.Fitnesse とは2.Fitnesse デモ3. 展望4. まとめ5. 質疑応答あじぇんだ的な何か
1.Fitnesse とは……の前に
BDDって知ってますか?
BDD = Behavior Driven Development日本語では「振舞駆動開発」ざっくり説明すると……要求仕様を満たしているかどうかのテスト(コード)を先に作成し、プログラミングを行う手法。BDDとは
TDD(=Test Driven Development)プログラムの動作を保障するテストを(先に)作成する。テストケースの作成はテスト実行者の経験に委ねられる(事が多い)。テスト工数が肥大化しがち。BDD(要求)仕様に従った形でテストを作成する。テストケースの作成が明快である。不必要なテストケースを作成するのを抑える事ができる。TDDと何が違うの?
BDD は肥大化する開発規模とテストにおける解法の一つである……かも?
前振りが長くなりましたが……1.Fitnesse とは
FitをWiki形式の表で自動テスト駆動するように拡張したJava製のテスト補助エンジン(+フレームワーク)BDDにとっても向いてる対応言語はJava、C#、C/C++ etc...Webサーバの機能を持ちWiki としても利用可能Wiki の表形式記法をベースにテストケースを作成可プラグインによる拡張で blog 機能も持たせられるらしいFitnesseってなんぞ※Fit -> HTML のテーブル形式でテストケースを作成可能な補助エンジン
Fitnesseの構成テスト実行者Wikiの表形式でテストケースを記載するWikiの表形式でテスト結果を表示するFitnesseWiki形式で記載されたテストケースを独自のデータに変換して実際のテストフレームワークに渡す受け取ったテストケースを元にテストを実行し、その結果を返す連携用フレームワーク
FitnesseはあくまでWikiの表形式によるテストケース  を独自の形式に変換するツールなので、実際にテスト  を実行するコードに対するフレームワークが必要言語毎に連携させるフレームワークは異なるC/C++では「cslim」Javaでは「FitSharp」フレームワークは自作も可能   -> 例えば、GoogleTestをベースに作成するとか連携用フレームワークについて
仕様作成者 or テスト実行者Wiki の表形式ベースでテストケース (テストパラメータ)を作成するプログラマーCslim等の連携用フレームワークを用いてテストケースの雛形を作成する結局、何をすればいいの?役割分担が明確!
それじゃあ意味がない!!でも、使い辛いんでしょ?
2.Fitnesseデモ
環境:Visual Studio2010(Windows)簡易的な仕様書を作成し、それをそのままテストケースとして稼動させる例を実装する……予定でしたが、時間が無かったのでデフォルトに用意してあるプロジェクトを見ていく事に実際に見てみよう
Wikiの表形式で作成したテスト(ケース)の自動実行過去のテスト結果を自動で記録テストケースのリファクタリングテスト結果やWikiページの検索Fitnesseで出来る事まとめ
連携用フレームワークを用いた専用のテストプログラムの作成が必須なので、習熟しているテストフレームワークからの乗り換え(学習)コストが掛かる欠点1:システム構築者の負担が重い誰かが犠牲になって既存のフレームワークと互換の取れるフレームワークラッパを作るとプロジェクト全体が幸せになれる(ボソッcppunitやGoogleTestを利用している場合ならそこまで手間無しにラッピングできるかも(検証中)
仕様がテストケースに成り得るのがFitnesseの持ち味なのに、その仕様が既に存在していると……更に、使用しているテストプログラムの書き換えが発生するとなると採用に二の足を踏まれ易いテスト履歴の視認性アップや管理性の向上の恩恵は受けられる導入する事によりテストケースの見直しを行える効果はあるかもしれない欠点2: 既存のプロジェクトへの効果が薄い
UI が英語当然ヘルプも英語国内での採用事例もほとんどないので、参考資料もほぼ全部英語欠点3: 英語ェ……
3. 展望
仕様とテストケース(パラメータ)の結合が可能テスト作成工数の減少テストプログラムのメンテ軽量化テスト結果の可視化、共有化が容易テスト結果の保持、比較が容易テストの流れが明快になるFittnese導入によるメリット
仕様書をFitnesseにそのまま食わせる事が可能な Wikiの表形式で作成する事で、テスト実行者(実装者)が仕様を勘違いしていてテストになっていなかった仕様変更の度にテストプログラムを書き換える必要があり、そこでエンバグを引き起こしてしまったという残念だが「良くある」事態を防ぐ事ができる。仕様とテストケース(パラメータ)の結合が可能個人的に Fitnesse導入の最大のメリットはこれ!
便利なんだけどデータをテスト用に変換するのがめんどくさい各種テーブル等も気軽に利用可能になる   -> 例:ディシジョンテーブルテスト作成工数の減少
Webサーバ形式なので、チームの共有サーバに設置すれば気軽に全ての人員がテスト結果を参照可能テスト結果だけでなく、テストケースも気楽に参照可能テスト結果の可視化、共有化が容易
プログラム作成者はテストの雛形までを作成テスト実行者がテストケース(パラメータ)を作成テストはデイリーで自動実行という流れを構築できる。分業の範囲も明確になる若干プログラム作成者のコストが高めになるかもテストの流れが明快になる
自動化の推進JenkinsやSikuliといったツールと組み合わせる事によりシステムテストの自動化まで持っていきたい連携用フレームワーク(clism)の改造GoogleTestばりにテスト用マクロを充実させたりしてみると採用への足掛かりになるかも?Fitnesse展望Jenkinsについては粉川先生のCEDECの講演を参考に!CEDiLで無料で見れますhttp://cedil.cesa.or.jp/
BDDを採用すると無駄なテストを減らした上にテストの品質を向上できる! ……かもまとめFitnesseを採用するとBDD的な、仕様とテストケースが一体化した開発を行う事ができる!……かもつまり、Fitnesseを採用すればテスト工程の効率化を図れ、メインのアプリ開発に注力できる!……トイイナ
BDDって便利そうだけど……詳細な仕様が決まってないと                 実装できないじゃん!ゲーム開発でそれはありえない!Pre FAQ
仕様先行が本来あるべき姿ゲーム業界にはよくある事、と仕様検討無しで実装を   開始し、後で修正……という悪習から脱却する機会にもなりうるただし、全てのプロジェクトに採用すれば上手く回る、   という訳ではない。基幹系は向いてるけど、試行錯誤   前提のゲームシステム部には向いてないかもしれな   い。よく考えて採用するのが大事。その考え方が悲劇を生むのです バ     グ
Cslim 導入http://schuchert.wikispaces.com/cpptraining.GettingStartedWithFitNesseInCppJava/C#でのFitnesse 導入資料http://www.jasst.jp/archives/jasst05e/pdf/S5-B-1.pdfTDD,BDD,SDD,ATDDについての話題http://togetter.com/li/4220Fitnesse公式http://www.fitnesse.org/FrontPage参考文献・サイト

More Related Content

Fitnesse を用いたテストの効率化について