AWSで実現するシャノンのSelenium自動テスト環境のその後

このエントリーをはてなブックマークに追加

生産性チームのkmtです。
シャノンでは比較的早い段階から自動テストに取り組んできました


過去の記事はコチラ






順調にテストケースが増えるなか、いくつかの課題を解決するために、自動化環境の改善を行いましたのでその概要をお伝えしたいと思います。

今回解決を目指した課題は以下の3つです。


1.いつでもどのチームでもこの環境を利用できるようにスケールさせたい

QAではリリース前に数台のAWS環境で自動テストを流していたのですが、もう1台増やしたいなあというときにあの設定忘れてた、あれ入れ忘れてる等がありなかなかスムーズに増やせる状況ではありませんでした。
年々テストは増え、実行時間も少しずつ長くなってきたのですが通常の業務が忙しいとまだ大丈夫かな?と二の足を踏んでなかなか追加のテスト環境を増やせませんでした

また

少人数でスクラムチームを組んでおり、多数のプロジェクトが同時並行ですすんでいます。
当然リリース時期がかぶったりするのですが、各チームで一部の自動化は流してはいるものの最終的にリリースブランチに統合しないと自動化が全て流れませんでした。
その結果最後に不具合が発見されることがありました。

それらを解消したいというのが今回の目標の1つでした。


2.テスト実行時間を削減したい

大量のテストを今以上に早い時間で確認して、開発チームの人たちに安心して素早いリリースを実施してもらいたいというのが2つめの目標でした。


3.ついでに、ここ数年運用していて煩わしい部分はなるべく解消したい

ここを改修したいとかJenkinsをバージョンアップしたいとかいろいろあったのですが、弊社の開発エンジニアの人数も増え、リリースのためのテストをしつつ環境のメンテナンスをするのが難しい状況でした。
このチャンスにそのあたりもついでに解消したいというのが3つめの目標でした。

ただし
なるべく少ない工数で実施したいので、全体の仕組みを大きくは変えないという制約をつけました。
あれもこれもやりすぎるとやはり工数がかかってしまうのでどこかで線引きをする必要があるためです。




これらの目標を少ない工数で改善する為に今回選択したのがAWSのイメージをコピーしてスケールさせる方法です。

  1. ベースイメージとなるインスタンスとAMIを作成しておきます。
  2. チームは環境が必要になったら1.のベースイメージから自分のチーム用のインスタンスを作成します。(masterイメージ)
  3. 上記実施後、自動テスト実行JenkinsJOBを実行すると指定した台数分自分のチーム用のインスタンス(AMI)をコピーしてインスタンスを作成し各AWSでテストが実行されます。
  4. テストが終了したAWSは結果をS3を通して、masterイメージに同期しその後、Terminateされます。
  5. チームメンバーはmasterイメージのJenkinsを参照して自動テストの結果を確認します。




シャノンでは以前からAWSを使用しているので基本的な部分を変更することなく簡単にスケールできるのですが
今回の対応でテストを実施するクライアントもAWSの中にいれてしまいました。
(以前はサーバはAWS、クライアントは別のレンタルサーバを利用していました。)
サーバとクライアントが分かれているとネットワークや運用で面倒だなといった部分もあったのですが、今回の対応で1つのAWSでテストが完結するのでスッキリとした作りになりました。


注意するポイント

  1. 1つのAWSイメージが大きくなるとコピーするので課金もそれなりになってきます。1つのAWSでどれくらいのテストを流すのか運用を明確にしましょう。
  2. 繰り返しテストを流すとごみがたまりすぐ容量が一杯になるのでとにかくごみを消すスクリプトをいれましょう。

今後の課題


  1. 各テストの実施前の準備がまだ結構かかっていること。 DBの復元等、APIではなくDBを復元するツールを作成して使用していますが、複数のDBの復元を実行するとやはり時間がかかってしまっています。
  2. 1つのAWSイメージが大きいとコピーするので課金がコストが増えてしまうこと。DBのチューニングや運用方法の見直しでサイズをもう少し小さくできるのではないかと考えています。

最後に
今後も環境の課題はでてくると思いますが、AWSやJenkinsをつかって安定した自動化テストをまわせるような取り組みを継続してできればなと思っています。



シャノンでは、このような活動に価値をおくメンバーを募集中です。





次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...