SlideShare une entreprise Scribd logo
1  sur  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 参考文献・サイト

Contenu connexe

Tendances

Tendances (20)

TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
HTTP/2の現状とこれから
HTTP/2の現状とこれからHTTP/2の現状とこれから
HTTP/2の現状とこれから
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とは
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
情報科学における18のメタテクニック
情報科学における18のメタテクニック情報科学における18のメタテクニック
情報科学における18のメタテクニック
 

En vedette

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

En vedette (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の開発プロセスとプロジェクト管理ツール
 

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

少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
Takuto Wada
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
Tomomi Kajita
 

Similaire à 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 ?
 
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
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 

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