SlideShare a Scribd company logo
1 of 30
Fitnesseを用いたテストの効率化について 第一回デジタルエンタメ研究会(仮)2011-04-23 HN: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の表形式でテスト結果を表示する Fitnesse Wiki形式で記載されたテストケースを独自のデータに変換して実際のテストフレームワークに渡す 受け取ったテストケースを元にテストを実行し、その結果を返す 連携用フレームワーク
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.GettingStartedWithFitNesseInCpp Java/C#でのFitnesse 導入資料 http://www.jasst.jp/archives/jasst05e/pdf/S5-B-1.pdf TDD,BDD,SDD,ATDDについての話題 http://togetter.com/li/4220 Fitnesse公式 http://www.fitnesse.org/FrontPage 参考文献・サイト

More Related Content

What's hot

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 

What's hot (20)

設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャ
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
HTTPを理解する
HTTPを理解するHTTPを理解する
HTTPを理解する
 
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
 
企業システムにアジャイルは必要か
企業システムにアジャイルは必要か企業システムにアジャイルは必要か
企業システムにアジャイルは必要か
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
トピックブランチとは
トピックブランチとはトピックブランチとは
トピックブランチとは
 
DNS再入門
DNS再入門DNS再入門
DNS再入門
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
SFUの話
SFUの話SFUの話
SFUの話
 
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
ChatGPTを使った要件定義のRDRA的考察.pdf
ChatGPTを使った要件定義のRDRA的考察.pdfChatGPTを使った要件定義のRDRA的考察.pdf
ChatGPTを使った要件定義のRDRA的考察.pdf
 
How to implement CI with OutSystems using Jenkins and BDD Framework
How to implement CI with OutSystems using Jenkins and BDD FrameworkHow to implement CI with OutSystems using Jenkins and BDD Framework
How to implement CI with OutSystems using Jenkins and BDD Framework
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
機械学習応用のためのソフトウェアエンジニアリングパターン
機械学習応用のためのソフトウェアエンジニアリングパターン機械学習応用のためのソフトウェアエンジニアリングパターン
機械学習応用のためのソフトウェアエンジニアリングパターン
 
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
 
CIが分からない PE(SETエンジニア)の1年生がWebAPIの負荷テストを 背伸びしてCI運用した
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用したCIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
CIが分からない PE(SETエンジニア)の1年生がWebAPIの負荷テストを 背伸びしてCI運用した
 

Viewers also liked

HTML5 Conference 2013 HybridCast
HTML5 Conference 2013 HybridCastHTML5 Conference 2013 HybridCast
HTML5 Conference 2013 HybridCast
Satoshi Shoda
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 

Viewers also liked (20)

HTML5 Conference 2013 HybridCast
HTML5 Conference 2013 HybridCastHTML5 Conference 2013 HybridCast
HTML5 Conference 2013 HybridCast
 
English for programmers
English for programmersEnglish for programmers
English for programmers
 
BigQuery勉強会 Standard SQL Dialect
BigQuery勉強会 Standard SQL DialectBigQuery勉強会 Standard SQL Dialect
BigQuery勉強会 Standard SQL Dialect
 
2016年を振り返って
2016年を振り返って2016年を振り返って
2016年を振り返って
 
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
 
"総務も!!"アジャイルプラクティス!
"総務も!!"アジャイルプラクティス!"総務も!!"アジャイルプラクティス!
"総務も!!"アジャイルプラクティス!
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
 
Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with Thymeleaf
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
新規ビジネスデザイン研修 DYA2  テキスト<サンプル版>
新規ビジネスデザイン研修 DYA2  テキスト<サンプル版>新規ビジネスデザイン研修 DYA2  テキスト<サンプル版>
新規ビジネスデザイン研修 DYA2  テキスト<サンプル版>
 
Rdra4越境アジャイル
Rdra4越境アジャイルRdra4越境アジャイル
Rdra4越境アジャイル
 
AD設計の基礎から読み解くIaaS On AD
AD設計の基礎から読み解くIaaS On ADAD設計の基礎から読み解くIaaS On AD
AD設計の基礎から読み解くIaaS On AD
 
Hyper-V仮想マシンをAzureへV2C移行
Hyper-V仮想マシンをAzureへV2C移行Hyper-V仮想マシンをAzureへV2C移行
Hyper-V仮想マシンをAzureへV2C移行
 
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
 
CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)
 
Docker 再入門 2016 update
Docker 再入門 2016 updateDocker 再入門 2016 update
Docker 再入門 2016 update
 
Agile and Business
Agile and BusinessAgile and Business
Agile and Business
 
ピクト図解(R)表記ルールで作成したビジネスモデル事例
ピクト図解(R)表記ルールで作成したビジネスモデル事例ピクト図解(R)表記ルールで作成したビジネスモデル事例
ピクト図解(R)表記ルールで作成したビジネスモデル事例
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツール
 

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

少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
Takuto Wada
 

Similar to Fitnesse を用いたテストの効率化について (20)

Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
 
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdfテストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
 
20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編
 
Jsテストツール 〜 sails.js×mochaでtest 〜 (1)
Jsテストツール 〜 sails.js×mochaでtest 〜 (1)Jsテストツール 〜 sails.js×mochaでtest 〜 (1)
Jsテストツール 〜 sails.js×mochaでtest 〜 (1)
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
 
Ti dd force09
Ti dd force09Ti dd force09
Ti dd force09
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
20141101渋谷ruby会議
20141101渋谷ruby会議20141101渋谷ruby会議
20141101渋谷ruby会議
 
いつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYAいつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYA
 
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
 
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
 
Rx t study130216
Rx t study130216Rx t study130216
Rx t study130216
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 

Recently uploaded

Recently uploaded (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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