クラウドテスティング(Cloud testing)はクラウドの力を利用するテストの手法である。これは多くの場合、テストにかかる時間を削減するか、アプリケーションの現実世界でのトラフィックをシミュレートする目的で行われる。加えて、高いトラフィックを持つウェブアプリケーションのスケーラビリティ要求を満たすためにテストも同様にスケールする必要がある。
Matt Heusser氏はかつてはテストラボが広く普及していたと指摘した。そこではかつて多くの空間を使って、多様なマシンを持っていた。
それは数百平方フィートのスペースを占め、5~20台のコンピュータを置いていた。それぞれのコンピュータは異なる組み合わせのシステムソフトウェアが導入されていた。私たちはそれぞれのマシンでインストールしてテストする必要があり、そしてさらに次のテスト実行のためにマシンのイメージを再度とる必要がある場合もあった。
現在、状況は大きく異なっている。VMware Fusionのようなツールを活用することで、一つのマシンで様々な組み合わせを実行することが可能である。同様に、同じ物理デバイスの上でいくつかのサーバインスタンスを実行することも可能だ。このようにテスト環境を作成することは1行のコマンドだけと言っていいほどシンプルである。テストの実行にかかる時間を削減するために、Matt氏は分散コンピューティングの活用を薦めている。
テストスイートを10程度(または100程度)に分割し、15個のコンピュータのそれぞれにテストを実行させ、結果とともにレポートを返すことを想像してみてください。仮想化ツールを最大限に利用すれば、クラウドホスティングプロバイダから領域を1CPU時間ずつ少額でレンタルすることができます。テストの実行はもっとも遅い1テストくらいの時間しかかからないでしょう。
モデル駆動によるテスト自動化を使うと、ごく短い時間でさまざまなシナリオを並列に実行することが出来るかもしれない。
Jim Ensell氏はクラウドはアジャイル開発にポジティブな影響を持っていると指摘している。Jim氏によれば、
複数のプラットフォームのテストのためのクラウドリソースを利用出来るようにし、単体テストや機能テストを並列に走らせ、効率的な負荷テストを実行することを、開発者や品質保証管理者はしきりにやりたがるようになるでしょう。これらはパブリッククラウドを利用することが最適と思える負荷となります。彼らは猛烈にクラウドリソースを利用し、時とともにさまざまな要求を持つ傾向があるからです。そして従量課金モデルもこのタイプのクラウドの利用方法に対しては非常に有効に機能するのです。
Devcentralでは、現代のウェブアプリケーションのスケールをテストするには同様にスケールするテストインフラストラクチャが必要であると書かれている。クラウドのおかげで、組織はこのようなインフラストラクチャを構築するためのコストにひどく高額なリスクを負うことから救われるかもしれないのだ。
アプリケーションを自動化しインターネット規模でのスケールさせることはインターネット規模のテストソリューションに対しても – その何分の1かのコストで – 同じように可能であろう。そのため、必要なものは、クラウドにデプロイ可能な負荷生成クライアント、いくつかのクラウドコンピューティング環境、アプリケーションとインフラストラクチャを極限まで追い込むために必要な規模をつくりだすことができるようなその分散クライアントをコントロールする方法である。
しかしながら、テストのためにクラウドに向かうことにはそれ特有の懸念も内包している。
テスターであるMatt氏によれば、開発チームが“クラウドが駄目になったら何が起きるんだ?”と問う必要があるのとまったく同じことだ。ほかにもバックアップ戦略、復元戦略、テストデータの消失からの復旧の戦略などを含む重要な問いかけがあるだろう。
いくつか課題はあるにせよ、クラウドはテストのための強力なプラットフォームを提供する。重要なことは必要性を確認すること、そして、わずかなコストで利用することが出来る膨大なリソースを効率的に利用するための戦略を構築することにある。