| フィットネス | |
|---|---|
| 安定版リリース | v20230503 / 2023年5月3日[1] ( 2023-05-03 ) |
| リポジトリ |
|
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | テスト自動化 |
| ライセンス | CPL [2] |
| Webサイト | fitnesse.org |
FitNesseは、 Webサーバー、Wiki、そしてソフトウェアの自動テストツールです。Ward Cunninghamの統合テストフレームワークに基づいており、システム機能の詳細で読みやすい記述を容易にすることで、単体テストではなく受け入れテストをサポートするように設計されています。
FitNesseは、開発されたシステムのユーザーが、特別な形式の入力(プログラマー以外のユーザーでもアクセス可能な形式)を入力できるようにします。この入力は解釈され、自動的にテストが作成されます。その後、これらのテストはシステムによって実行され、出力がユーザーに返されます。
このアプローチの利点は、ユーザーからのフィードバックが非常に速いことです。テスト対象システムの開発者は、いくつかのサポート(特定の規則に準拠した「フィクスチャ」という名前のクラスなど)を提供する必要があります。
FitNesseはJavaで書かれています(Micah MartinがRobert C. Martinらの協力を得て開発しました[3] )。当初はJavaのみをサポートしていましたが、その後、他の言語( C++、Python、Ruby、Delphi、C#など) 向けのバージョンが追加されました。
フィットネスの原則
テスト方法としてのFitNesse
FitNesseは、Fitフレームワークを基盤とした、非常に使い勝手の良いインターフェースとして設計されました。アジャイルスタイルのブラックボックステスト、受け入れテスト、回帰テストをサポートすることを目的としています。このテストスタイルでは、ソフトウェア開発プロジェクトの機能テスターは、ソフトウェア開発者と協力してテストスイートを開発します。
FitNesseテストは、ブラックボックステストの概念に基づいています。ブラックボックステストでは、テスト対象システムをブラックボックスと見なし、事前に設定された入力に対する出力に基づいてテストを行います。機能テスターは、機能的な観点からテストを設計し、FitNesseツール内で表現する役割を担います。一方、ソフトウェア開発者は、FitNesseツールをテスト対象システムに接続し、FitNesseがテストを実行し、実際の出力と期待される出力を比較する役割を担います。
『Fit for Developing Software』で説明されているように、このテスト方法の背後にある考え方は、テスターと開発者の強制的なコラボレーションによって、2 つのグループが相互にコミュニケーションをとることを学びながら共通言語を開発するように強制することで、システムと要件の相互理解が向上するというものです。
テストツールとしてのFitNesse
Fitnesseでは、テストは入力と期待される出力の結合として記述されます。これらの結合は、決定表の表現形式の一種です。FitNesseツールは、文字通りの決定表からクエリを実行する表、テストスクリプト(つまり、結果を得るために実行すべき手順の順序)を表現する表まで、様々なバリエーションをサポートしています。最も一般的な形式は、テスト設計者が自由に解釈できる完全に自由形式の表です。ただし、すべてのテストは何らかの表の形で表現されます。
FitNesseはテストを簡単に作成することに特化しており、テスターと開発者はテスト実行の仕組みに煩わされることなく、高品質なテストの作成に集中できます。FitNesseの仕組みを考えると、テストを簡単に作成するには以下の3つの要素が必要です。
- テーブルを簡単に作成します。
- テーブルをテスト対象システムへの呼び出しに簡単に変換します。
- テストのドキュメント化を簡単かつ柔軟に行うことができます。
これらの要件を満たすため、FitNesseはWikiメカニズムを活用しています。Wikiは従来、HTMLページを簡単かつ迅速に作成でき、特に表の表現を簡素化します。これらの特性により、基本的なWikiWiki言語はFitNesseの「ユーザーインターフェース」として理想的な選択肢となっています。つまり、非常に自由な形式の表を簡単に表現できる一方で、表の内容を比較的単純なテキストに限定しているのです。
つまり、WikiWiki言語は、特定のテストに必要なあらゆる形状のテーブルを扱うことができ、同時に、テーブルの内容はソフトウェア呼び出しに簡単にマッピングできる英数字テキストに限定されます。さらに、FitNesseの各テストはWikiページであるため、各テストテーブルをWikiテキスト内に埋め込むことができます。これにより、機能テスターは適切なレイアウトで説明文を迅速に組み込むことができます。
ソフトウェアツールとしてのFitNesse
FitNesseはJavaで開発されたツールで、単一の実行可能なjarファイルとして提供されます。この実行ファイルには、Wikiエンジン、組み込みWebサーバー、テストエンジン、そしてFitNesse独自のスタイルでWebサイトを作成するために必要なすべてのリソース(画像、スタイルシートなど)が含まれています。
FitNesseは、テストツールとしての使いやすさに特化しています。そのため、必要なコンポーネントがすべて搭載されています。ツールを実行すると、組み込みのWebサーバーが起動し、テストページをローカルでもインターネット経由でも簡単に公開できます。組み込みサーバーは非常に軽量で、ラップトップからでも、フル機能のサーバーマシンからでも実行できます。
ツールを起動すると、組み込みサーバーに独自のWikiエンジンが展開されます。このWikiエンジンも同様にシンプルさを重視しており、実行にバックアップデータベースを必要とせず、Wikiエンジンによって解釈され、組み込みWebサーバーによって提供されるファイルベースのWikiページコレクションを作成するだけです。
このツールによって作成されるデフォルトのWikiには、FitNesseユーザーガイドといくつかのサンプルが含まれています。デフォルトのドキュメントリポジトリには、FitNesseスタイルのデフォルトのWikiを公開するために必要なものがすべて揃っています(つまり、すべての画像、スタイルシート、JavaScriptファイルなどが、基本的なWikiページリポジトリと共に作成されます)。
Wikiエンジンは非常に基本的なものですが、Wikiエンジンに共通する基本的な機能はすべて備えています。検索エンジン、ページごとの変更履歴、ファイル概要などです。また、ファイルの削除、移動、名前変更などのリファクタリング操作もいくつか用意されています。さらに、テスト実行用の標準ボタン、個々のテストページやテストスイートの定義方法、傾向分析のためのテスト結果の履歴概要など、テスト固有の機能も備えています。さらに、ページをロックしたり、Wikiへのアクセスをセキュリティ保護したりするための、いくつかのセキュリティ機能も備えています。
テスト実行
FitNesse システム内のテストには、テストごとに 4 つのコンポーネントが含まれます。
- テストを決定表として表現した wiki ページ。
- Wiki ページを解釈するテスト エンジン。
- テストフィクスチャは、テスト エンジンによって呼び出され、テスト対象のシステムを呼び出します。
- テストされているテスト対象システム。
ソフトウェア開発チームが作成するコンポーネントは、Wikiページとフィクスチャの2つです(もちろんテスト対象システムも作成しますが、ブラックボックステストの観点からは2つだけです)。Wikiページには、テストを表現する何らかの決定表が含まれています。例えば、除算を実行するコンポーネントのテストを表現することができます(この例はFitNesseの2分間の例に基づいています)。
| 分子の値 | 分母の値 | 結果? |
|---|---|---|
| 10 | 2 | 5.0 |
| 10 | 5 | 2.0 |
| 5 | 2 | 2.5 |
汎用テストエンジンとテスト対象システム間のリンクは、「フィクスチャ」と呼ばれるJavaコードによって確立されます。上記の表の場合、このコードは次のようになります。
パブリッククラスDivisionComponentTest はColumnFixtureを拡張します{ private double num ; private double denom ;
public void setNumeratorValue ( double分子) { num =分子; }
public void setDenominatorValue ( double denominator ) { denom = denominator ; }
パブリックdouble結果(){ SystemUnderTestを返します。divide (num 、denom ); } }
Wikiページとフィクスチャ間のマッピングは、キャメルケースへの変換という単純なマッピングです。このマッピングはすべてのテーブル見出しに適用され、フィクスチャクラス名とフィクスチャメソッドを識別するために使用されます。疑問符で終わる見出しはフィクスチャから読み取られる値と解釈され、その他の見出しはフィクスチャへの入力とみなされます。フィクスチャメソッドは、決定表の列順に、左から右へ呼び出されます。
テストエンジン
上で説明した実際のマッピング(およびフィクスチャメソッドの呼び出し)は、テストエンジンによって実行されます。FitNesseは、FitエンジンとSLIMエンジンという2つのテストエンジンをサポートしています。
フィット
Fitは単なるエンジンではなく、それ自体がテストフレームワークです。テストの実行、Wikiページの解釈、出力ページの生成といった機能を備えています。FitNesseは元々、Fitをユーザーインターフェースとして利用するために構築されており、ツール名の由来となっています。
Fitは、テストにおける多くの責任を明確に分離するのではなく、統合するフレームワークです。そのため、ソフトウェア開発者はFitエンジンのフィクスチャがFitフレームワークの基底クラスを継承する必要があるという代償を払うことになります。これはJavaでは不便であり、フレームワークが開発者のクラス継承の機会を一度しか奪ってしまうことを意味します。また、フィクスチャは本質的に重い構成要素であることを意味します。こうした考慮から、FitNesseチームは近年、SLIMテストエンジンに移行しました。
スリム
SLIM(Simple List Invocation Method)はFitの代替手段です。SLIMエンジンは、Slimプロトコル(Wayback Machineに2014年12月6日にアーカイブ)の実装です。SLIMエンジンは、Wikiベースのテストのすべての要素を組み合わせるのではなく、フィクスチャの呼び出しのみに集中します。FitNesse Wikiエンジンによってリモートで呼び出される独立したサーバーとして動作します。Wikiページの解釈と結果ページの生成は、Wikiエンジンの一部となっています。
SLIMエンジンは、シンプルなPOJOである、はるかに軽量なフィクスチャを可能にします。これらのフィクスチャはフレームワーククラスの拡張や使用を必要としないため、設計が簡素化され、フィクスチャ設計者はテスト対象システムを適切に、そして可能な限りシンプルな方法で呼び出すことに集中できます。また、継承ルートもオープンに保たれているため、フィクスチャ開発者は必要に応じてフィクスチャ階層を作成できます。
参照
- 受け入れテスト駆動開発
- 例による仕様
- 受け入れテスト(機能テストとも呼ばれる)
- ソフトウェアパフォーマンステスト
- 回帰テスト
- ワティル
- StoryTestIQ (STIQ) は、Selenium と Fitness wiki のマッシュアップです (注意: Wiki はもう存在しません (2009 年に削除されました)。ここでは参照のみに残されています)
参考文献
- ソフトウェア開発に適した統合テストフレームワーク Rick Mugridge、Ward Cunningham著 ( ISBN 978-0-321-26934-82005年6月にプレンティスホールから出版された
- Gojko Adzic著『FitNesseによるテスト駆動型.NET開発』(ISBN 978-0-9556836-0-2)Neuri Limited発行(2008年2月28日)
- Phillip A. Laplante: ソフトウェアとシステムのための要件エンジニアリング、Auerbach Publications、フロリダ州ボカラトン、2009年、166~167ページ、ISBN 978-1420064674
参考文献
- ^ "FrontPage.Download". fitnesse.org . 2023年7月6日閲覧。
- ^ Martin, Robert C. 「ライセンスヘッダー」. FitNesseソースリポジトリ. GitHub . 2012年7月4日閲覧。
- ^ Robert, Martin. 「TDDの3つのルール」. butunclebob.com . 2019年8月23日閲覧。
外部リンク
- ツールのウェブサイト
- ソースリポジトリ
- FitNesseでサポートされている言語
- FitNesse専用のディスカッショングループ
- FitNesseのプレゼンテーション