• 会員限定
  • 2021/01/29 掲載

Serverspecとは?超入門、テスト自動化で選ばれる3つの強みと注意すべき利用方法

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

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
会員になると、いいね!でマイページに保存できます。
クラウドなどの登場でシステム開発が複雑化するにつれて、さまざまな設定を「自動化」していく動きが本格化している。その中でも、テスト工程を自動化するツール、その代表例と言えるのがオープンソースソフトウェア(OSS)の「Serverspec」だ。前回は構成管理ツールである「Ansible」について紹介したが、Ansibleが主に設定(構築)工程の作業を自動化するためのツールだとすれば、Serverspecは後工程を担う。そもそもテスト自動化ツールとは何をするものなのか。その中でServerspecはどのような特徴を持っているのか。入門記事としてそれぞれ順に解説していこう。
画像
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つの特徴
関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます