開閉ボタン
ユーザーメニュー
ユーザーメニューコンテンツ
ログイン

  • 会員限定
  • 2021/01/29

テスト自動化ツール「Serverspec」とは何か? 3つの強みと注意すべき利用方法

連載:サーバ自動化の勘所

クラウドなどの登場でシステム開発が複雑化するにつれて、さまざまな設定を「自動化」していく動きが本格化している。その中でも、テスト工程を自動化するツール、その代表例と言えるのがオープンソースソフトウェア(OSS)の「Serverspec」だ。前回は構成管理ツールである「Ansible」について紹介したが、Ansibleが主に設定(構築)工程の作業を自動化するためのツールだとすれば、Serverspecは後工程を担う。そもそもテスト自動化ツールとは何をするものなのか。その中でServerspecはどのような特徴を持っているのか。それぞれ順に解説していこう。

BFT 開発推進部 善野 光太郎

BFT 開発推進部 善野 光太郎

大学卒業後、システムインフラという明確な強みを持つBFTに魅力を感じ、新卒で入社。現在、入社3年目。入社間もない頃からプロジェクトリーダを務め、さまざまな顧客のシステム構築においてHW・OS実装工程を中心に活躍。また教育サービス(BFT道場)の運用効率化を目指し、研修環境構築の自動化を推進するとともに、自らServerspecの研修を企画し、講師まで一貫して務めている。

BFT
東京、名古屋にてシステムインフラの強みを活かした基盤構築自動化サービスやIT技術の教育サービスなどを展開している。
https://www.bfts.co.jp/biz

画像
Serverspecとは
(Photo/Getty Images)

そもそも構成管理ツールとは?

 システム開発におけるテスト工程とは、システムが当初の要件通りの機能を有しており、その要件通りに動作するかを確認するための工程であり、システムの品質を担保することを目的とする。

 その中で使用されるテスト自動化ツールとは、その名の通り「自動でテストを行うツール」であるが、ツールの話をする前に、まずはシステム開発におけるテスト工程では、どのようなことが行われるのか、そして手動でのテスト実施にはどのような課題があるのか、について触れておきたい。

 システム開発の中でもインフラ領域のテストといえば、以下のようなテスト仕様書と呼ばれるものを作成し、このチェックリストに従って人の手で一項目ずつ実施していく、というような形のプロジェクトが多い。

No. 種目 テスト概要 手順 想定結果
1 サーバ
(ネットワーク)
ホスト名の設定を確認する。 以下のコマンドを実行する。
# uname -n
パラメータシートの値と等しいこと
2 hostsに名前解決に必要なホスト名が記載されていることを確認する。 以下のコマンドを実行する。
# cat /etc/hosts
パラメータシートの値と等しいこと
3 IPアドレス、サブネットマスクの設定を確認する。 以下のコマンドを実行する。
# ifconfig <if名>
パラメータシートの値と等しいこと
4 デフォルトゲートウェイの設定を確認する。 以下のコマンドを実行する。
# netstat -rn
パラメータシートの値と等しいこと


 このような方法でのテストは最初に手順に基づいて手動のオペレーションを行い、その結果のエビデンスを取得し、その内容が想定通りの結果であることを目視で確認する、という流れで行われる。

 しかし、このようなテストは人の手、人の目が介在するがゆえに、その品質が作業者により異なってしまう、という課題を抱えている。テスト結果が正当なものであることを確認する際に、間違っているのにそのテスト結果をOKとしてしまうこともあれば、さらにはオペレーションを誤ってしまい、サーバの動作に悪影響を及ぼしてしまう可能性すら考えられる。

 このように手動で行うテストは、その品質をどのように担保するかという課題を抱えることになる。前述の通り、テスト工程はシステムの品質を担保することを目的としているのにも関わらずだ。

 また上記のようなミスが発覚した場合、再テスト実施が必要になり、そのミスは限定的であるか、類似したものは発生していないかなどの、横並びチェックが入り、テスト工程の工数(費用と期間)がますます膨らむこととなるため、プロジェクトにおいては大きなダメージと言える。

 このような課題を解決するために活用するのが、今回紹介するテスト自動化ツールである。


テスト自動化ツールを使用するメリット

 テスト自動化ツールを使用すれば、従来では手動で実施していたテストをコード管理による自動実行にて実施することになる。実施内容が同一のコードによって管理されることで、そのテストの「冪等性(べきとうせい)」を保つことができる。

 前回の記事でも出てきたキーワードである「冪等性」だが、テスト自動化ツールにおいても重要なキーワードになる。テストの「冪等性」を保つことが出来れば、誰が実施しても何度実施しても同様の結果が得られるため、前述したようなミスを回避でき、テストの品質を担保することにつながる。

 加えて、ツールが無い場合だと、テスト対象の数に比例して、テスト実施体制(テスト実施要員)もテスト実施期間も膨らんでいくことになるので、工数を削減するというメリットも享受できる。以下にテスト自動化ツール導入の2大メリットをまとめる。

●品質担保
 テストの実行内容はコードにより管理されるため、手動オペレーションに伴って生じるミスを極力回避することができ、テストの品質担保が容易になる(注)。
注:逆説的な話だが、テストコードが誤っていると、すべてのテスト対象に影響する。

●工数削減
 テスト実施に必要な手動オペレーションはテストコードの実行のみとなるため、テスト項目やテスト台数が増加しても工数の増加を抑えることができる。

 また再実施も容易となるので、保守作業の中でテストが必要となった場合もコードを流用することで少ない工数でのテストを行うことができる。


Serverspecとは何か?

 このように、システム構築において大きなメリットを生むテスト自動化ツールの中で、インフラ領域(主にサーバ)のテストを行うツールとして最も有名なソフトウェアが「Serverspec」である。

 Serverspecは日本人開発者の宮下剛輔氏を中心に開発されているOSS(オープンソースソフトウェア)である。Rubyにより実装されており、RSpecというRubyのテストフレームワークを用いてテストを行う。

 インフラ領域のテスト自動化ツールはServerspec以外にも、いくつか代表的な製品があるが、それぞれは以下のような違いを持っている。

製品名 強み
Terratest 基盤レイヤ(クラウド基盤・仮想基盤など)の設定確認を行うことができる。
Serverspec
  • OSレイヤの設定値確認を行うことができる。
  • サーバの内部からテストを行う。
Infrataster
  • システムの正常性・異常性の動作確認を行うことができる。
  • サーバの外部からテストを行う。


 このようにServerspecはOSレイヤで、その設定値確認が強みだ。OSから確認できるものであればMWレイヤのテストも実施可能なので、サーバの内部のテストには最も適しているといえるだろう。

 設定値の正当性はテスト工程の中でも最もテスト件数が増えやすい傾向がある。ゆえに自動化導入によるメリットも大きく、またテスト項目一つ一つは単調なものが多いため、コード化も容易であり、自動化導入のハードルも低い(学習コストが低い)。そのためテスト工程で自動化を導入する最初の一歩として適していると言える。

【次ページ】Serverspecが利用される3つの特徴

開発ツール・開発言語 ジャンルのセミナー

開発ツール・開発言語 ジャンルのトピックス

開発ツール・開発言語 ジャンルのIT導入支援情報

ビジネス+IT 会員登録で、会員限定コンテンツやメルマガを購読可能、スペシャルセミナーにもご招待!