0
Fitnesseを用いたテストの効率化について<br />第一回デジタルエンタメ研究会(仮)2011-04-23<br />HN:cac+<br />
1.Fitnesse とは<br />2.Fitnesse デモ<br />3. 展望<br />4. まとめ<br />5. 質疑応答<br />あじぇんだ的な何か<br />
1.Fitnesse とは<br />……の前に<br />
BDD<br />って知ってますか?<br />
BDD = Behavior Driven Development<br />日本語では「振舞駆動開発」<br />ざっくり説明すると……<br />要求仕様を満たしているかどうかのテスト(コード)を先<br />に作成し、プログラミングを行う...
TDD(=Test Driven Development)<br />プログラムの動作を保障するテストを(先に)作成する。<br />テストケースの作成はテスト実行者の経験に委ねられる(事が多い)。<br />テスト工数が肥大化しがち。<br ...
BDD は肥大化する開発規模とテストにおける解法の一つである……かも?<br />
前振りが長くなりましたが……<br />1.Fitnesse とは<br />
FitをWiki形式の表で自動テスト駆動するように拡張したJava製のテスト補助エンジン(+フレームワーク)<br />BDDにとっても向いてる<br />対応言語はJava、C#、C/C++ etc...<br />Webサーバの機能を持ちW...
Fitnesseの構成<br />テスト実行者<br />Wikiの表形式でテストケースを記載する<br />Wikiの表形式でテスト結果を表示する<br />Fitnesse<br />Wiki形式で記載されたテストケースを独自のデータに変換...
FitnesseはあくまでWikiの表形式によるテストケース<br />  を独自の形式に変換するツールなので、実際にテスト<br />  を実行するコードに対するフレームワークが必要<br />言語毎に連携させるフレームワークは異なる<br ...
仕様作成者 or テスト実行者<br />Wiki の表形式ベースでテストケース (テストパラメータ)を作成する<br />プログラマー<br />Cslim等の連携用フレームワークを用いてテストケースの雛形を作成する<br />結局、何をすれ...
それじゃあ意味がない!!<br />でも、使い辛いんでしょ?<br />
2.Fitnesseデモ<br />
環境:Visual Studio2010(Windows)<br />簡易的な仕様書を作成し、それをそのままテストケースとして稼動させる例を実装する<br />……予定でしたが、時間が無かったのでデフォルトに用意してあるプロジェクトを見ていく事...
Wikiの表形式で作成したテスト(ケース)の自動実行<br />過去のテスト結果を自動で記録<br />テストケースのリファクタリング<br />テスト結果やWikiページの検索<br />Fitnesseで出来る事まとめ<br />
連携用フレームワークを用いた専用のテストプログラム<br />の作成が必須なので、習熟しているテストフレームワー<br />クからの乗り換え(学習)コストが掛かる<br />欠点1:システム構築者の負担が重い<br />誰かが犠牲になって既存の...
仕様がテストケースに成り得るのがFitnesseの持ち味なのに、その仕様が既に存在していると……<br />更に、使用しているテストプログラムの書き換えが発生するとなると採用に二の足を踏まれ易い<br />テスト履歴の視認性アップや管理性の向上...
UI が英語<br />当然ヘルプも英語<br />国内での採用事例もほとんどないので、参考資料もほぼ全部英語<br />欠点3: 英語ェ……<br />
3. 展望<br />
仕様とテストケース(パラメータ)の結合が可能<br />テスト作成工数の減少<br />テストプログラムのメンテ軽量化<br />テスト結果の可視化、共有化が容易<br />テスト結果の保持、比較が容易<br />テストの流れが明快になる<br...
仕様書をFitnesseにそのまま食わせる事が可能な <br />Wikiの表形式で作成する事で、<br />テスト実行者(実装者)が仕様を勘違いしていてテストになっていなかった<br />仕様変更の度にテストプログラムを書き換える必要があり、...
便利なんだけどデータをテスト用に変換するのがめんどくさい各種テーブル等も気軽に利用可能になる<br />   -> 例:ディシジョンテーブル<br />テスト作成工数の減少<br />
Webサーバ形式なので、チームの共有サーバに設置すれば気軽に全ての人員がテスト結果を参照可能<br />テスト結果だけでなく、テストケースも気楽に参照可能<br />テスト結果の可視化、共有化が容易<br />
プログラム作成者はテストの雛形までを作成<br />テスト実行者がテストケース(パラメータ)を作成<br />テストはデイリーで自動実行<br />という流れを構築できる。<br />分業の範囲も明確になる<br />若干プログラム作成者のコス...
自動化の推進<br />JenkinsやSikuliといったツールと組み合わせる事に<br />よりシステムテストの自動化まで持っていきたい<br />連携用フレームワーク(clism)の改造<br />GoogleTestばりにテスト用マクロ...
BDDを採用すると無駄なテストを減らした上にテストの<br />品質を向上できる! ……かも<br />まとめ<br />Fitnesseを採用するとBDD的な、仕様とテストケースが一体化した開発を行う事ができる!……かも<br />つまり、F...
BDDって便利そうだけど……<br />詳細な仕様が決まってないと<br />                 実装できないじゃん!<br />ゲーム開発でそれはありえない!<br />Pre FAQ<br />
仕様先行が本来あるべき姿<br />ゲーム業界にはよくある事、と仕様検討無しで実装を<br />   開始し、後で修正……という悪習から脱却する機会<br />にもなりうる<br />ただし、全てのプロジェクトに採用すれば上手く回る、<br /...
Cslim 導入<br />http://schuchert.wikispaces.com/cpptraining.GettingStartedWithFitNesseInCpp<br />Java/C#でのFitnesse 導入資料<br /...
Upcoming SlideShare
Loading in...5
×

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

4,983

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,983
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
22
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×