Skip to content

Commit

Permalink
「テストコードのメンテナンス性を高め」の部分を「テスト対象の環境の違いを気にすることなく、直観的にテストが書ける」に修正
Browse files Browse the repository at this point in the history
  • Loading branch information
mizzy committed Jan 21, 2014
1 parent b743dc3 commit 4cb3a64
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion 01.tex
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ \section{はじめに}

``Agile infrastructures and operations''を実践するためのプロセスとして,テスト駆動開発\cite{test_driven_development}の手法をサーバ構築・運用に応用した``Test-Driven Infrastructure''\cite{test_driven_infrastructure_with_chef}が提案されており,このプロセスを支援するテストフレームワークがいくつも登場している\cite{chefspec}\cite{rspec-puppet}\cite{cucumber-chef}\cite{minitest-chef-handler}\cite{test-kitchen}\cite{rspec-system}.これらのうち,ChefSpec\cite{chefspec},rspec-puppet\cite{rspec-puppet}は,構成管理ツール固有の言語で書かれたコードの内容をテストするのみで,実際にコードをサーバに適用し,設定が正しく行われたかどうかまではテストしない.そのため,単体テストしては利用できるが結合テスト用途には利用できない.Cucumber-chef\cite{cucumber-chef},minitest-chef-handler\cite{minitest-chef-handler}はChefという特定の構成管理ツールに依存している.そのため,Chef以外の構成管理ツールでは利用することができない.Test Kitchen\cite{test-kitchen}やrspec-system\cite{rspec-system}は,テスト用Virtual Machine(以降VMとする)の作成,テスト用VMへの構成管理ツールの適用,テストの実行をトータルで行う統合テストスイートであるが,標準で持つテスト実行機能は汎用性に乏しく,特定の構成管理ツールに依存しており,OSやディストリビューション毎の違いを意識したテストコードを書く必要がある.

我々は,テストフレームワークの汎用性を高めるために,構成管理ツール特有の振る舞い,例えば,パッケージのインストールやシステムユーザの作成などを抽出,一般化し,それらをテストするためのコマンドをOSやディストリビューション毎に分離,その上でOSや実行形式の違いを吸収するレイヤーを設けることにより,汎用コマンド実行フレームワークを定義した.続いて,テストコードの記述の抽象度を高め可読性を上げるために,宣言的かつ自然言語に近い記法で汎用コマンド実行フレームワークを操作できる制御テストフレームワークを定義した.これにより,テストコードのメンテナンス性を高め,サーバの運用・管理コストを低減することができる.また,フレームワークを用途別に分離して定義することにより,制御テストフレームワークを独自の記法に変更することも容易である.例えば,本論文で提案するテストフレームワークでは,テスト記法としてRSpec\cite{rspec}を採用しているが,他のテストフレームワークに差し替えたり,あるいはまったく独自の記法に差し替えたりすることも可能である.このテストフレームワークをserverspec\cite{serverspec}と名付けた.serverspecを採用している企業も既に存在する\cite{nintendo}\cite{wantedly}.
我々は,テストフレームワークの汎用性を高めるために,構成管理ツール特有の振る舞い,例えば,パッケージのインストールやシステムユーザの作成などを抽出,一般化し,それらをテストするためのコマンドをOSやディストリビューション毎に分離,その上でOSや実行形式の違いを吸収するレイヤーを設けることにより,汎用コマンド実行フレームワークを定義した.続いて,テストコードの記述の抽象度を高め可読性を上げるために,宣言的かつ自然言語に近い記法で汎用コマンド実行フレームワークを操作できる制御テストフレームワークを定義した.これにより,テスト対象の環境の違いを気にすることなく,直観的にテストが書ける.また,フレームワークを用途別に分離して定義することにより,制御テストフレームワークを独自の記法に変更することも容易である.例えば,本論文で提案するテストフレームワークでは,テスト記法としてRSpec\cite{rspec}を採用しているが,他のテストフレームワークに差し替えたり,あるいはまったく独自の記法に差し替えたりすることも可能である.このテストフレームワークをserverspec\cite{serverspec}と名付けた.serverspecを採用している企業も既に存在する\cite{nintendo}\cite{wantedly}.

本論文の構成について述べる.2章ではサーバの構成管理とテスト手法について更に詳しく述べる.3章では提案するサーバテスト手法と実装について述べ,4章では提案手法の評価について論じ,5章で結びとする.

0 comments on commit 4cb3a64

Please sign in to comment.