DevOps体制では、デプロイメントをどんどん行っていきます。トップレベルのパフォーマンスを発揮するDevOps組織の場合、1日に最大4回、つまり年に1,460回デプロイを行います。

それぞれのデプロイメントでは、本番環境のソフトウェアの機能変更を行います。デプロイメントは、その変更がエンドユーザに直接影響与える前にテストする最後のチャンスと言えます。

もっとも成熟したテスト組織であれば、デプロイよりずっと前のフェーズからQA活動を開始します。まずは開発者による開発活動からはじまり、彼らはコードが保存されるたびに、コミットのたびに、プルリクエスト(PR)の承認プロセスのたびにテストを行っていきます。

高度な自動化を採用すれば、プロセス全体で厳密にテストを実行していても、デプロイのペースを落とさずに維持できるのです。

一方で、成熟度の低い組織ではプルリクエストフェーズ(PRフェーズ)になって、ようやくテストをはじめることが多く、テストという活動がデプロイ近くに集中してしまいます。自動化されたテストがなければ、デプロイの流れを壊してしまい、成熟した組織(または競合他社)の開発スピードに急ブレーキをかけてしまうでしょう。

infographic-testing-for-devops-pipelines-30NOV2020_Uテストのペースを加速する

PRやデプロイフェーズでテストを行う組織は、テストのプロセスを最適化し、より高速でスマートな状態を実現できます。

ちょうどよい例がPRの承認フェーズにあります。mablを使いこなすユーザには、正式なデプロイの前に、エフェメラル環境(Ephemeral environment)に対して頻繁にデプロイを行っています。

たとえば、PRが承認される直前に、自動化されたツールが、ブラウザからアクセスできるアプリのQA環境を起動します。これによって、開発者は、変更がメインブランチにマージされる前に、手動と自動の両方で完璧に回帰テストを実行できます。環境は変更がマージされると同時に破棄され、クラウド利用のコストを節約できます。

エフェメラル環境を使用すると、開発者はコードフェーズやPRフェーズの初期段階でできなかったテストを実行できます。たとえば、クロスブラウザテストは、このような一時的な環境でのみ実行可能です。しかし、多くの開発者は、この種のテストをデプロイ段階で行うことを好んでいるのが現状でしょう。

プレ本番環境での自動テスト

前述の通り、デプロイフェーズは、多くの開発者がテストに集中するフェーズです。そこに自動テストがないと、市場投入までの時間が遅れる可能性があります。自動化がミッションクリティカルな問題になるのです。これらの点を考慮し、mablはデプロイフェーズに重点を置いて設計されています。開発者が比較的短時間で、集中的に意味のあるテストを実行できるような設計です。

コードはメインブランチにマージされ、プレ本番環境などにデプロイされようとしているケースを考えます。mablを利用し、ステージング環境が作成されました。プルリクエストがマージされると、タグが付き、自動化されたプロセスによって新しいメインブランチがステージング環境にデプロイされます。

より成熟した開発者は、開発、QA、ステージング用の環境を用意し、それぞれの環境で独自のテストを適用します。

それぞれの環境はインターネット上にホストされた実在する環境で、URLを介してアクセスできます。そして、さまざまな手動・自動テストのプラットフォームとして使用されます。環境は永続的に利用できるため、その価値を打最大化するためには、継続的にテストを実行する必要があります。

開発者が変更をメインブランチにマージするたびに、用意していた自動テストがセットアップされ、実行される形が理想でしょう。これらのテストはQA環境やステージング環境に変更が行われるたびに実行され、機能レベルのテストだけでなく、すべての回帰テストを実行します。

最大数百のテストが必要になる可能性がありますが、それらは自動的に実行されるように設定されており、DevOpsのリズムに十分な速度でクラウド上で高速に実行されます。

テストをしない判断も必要なのでしょうか? テスト自動化の唯一のトレードオフは、クラウドでホストされているテスト環境のコストです。テストの実行にはコストがかかってしまいます。

時間を節約するために、すべてのブラウザーでテスト実行しない判断をしたり、長時間かかるテストを回避するなど、時間を節約する方法はたくさんあります。通常、開発者は変更が反映されるたびに、一部のテスト実行をさけたりしますが、テストスイート全体を一晩実行するほうがベストプラクティスと言えます。

mabl によるテストのベストプラクティス

mablは、すべての組織が、自動テストに対して同じ成熟度レベルではないことを理解しています。そのため、すべての組織がすべてのフェーズで効果的なテストを実行できるプロダクト開発に専念しています。

高度なローコードのテスト自動化と、ユーザーが艶いやすいインタフェースにより、すべてのDevOps組織が最大限の能力でテストできるようになります。その結果、アプリケーションのパフォーマンスが向上し、顧客満足の向上につながっていくのです。

プレ本番環境、または開発ライフサイクル全体におけるテストの改善を試してみませんか?今すぐ無料トライアルにお申込みを!