DevOpsのテストの部分は見過ごされがちですが、おろそかにしていると痛い目にあってしまいます。ガートナーは次のように注意を呼びかけています。「ソフトウェアエラーが招くコストと影響が拡大していることを考えれば、既存のユーザー体験を破綻させかねないバージョンをリリースしたり、セキュリティや信頼性やコンプライアンスに関わる新たなリスクに組織をさらしかねない新機能を導入したりすることは許されません」。継続的統合と継続的デリバリーがDevOpsで扱われる範囲の大部分を占めている現状の中で、継続的テストはその陰に隠れながら、DevOpsの重要な要素としての位置をつかみつつあります。
継続的テストとは、単なる品質管理(QA)機能とは違います。それはむしろ、開発環境で始まります。デベロッパーがQAチームにコードを渡して、「よろしく」といえば済む時代は終わりました。DevOps環境では、品質は全員の責任です。デベロッパーは品質を十分に意識したコードを構築し、テストデータを提供します。QAエンジニアは自動化テストケースを作成し、テスト環境を構築します。
QA側に求められる重要な要素は、スピードです。そもそもQAサイクルに何日も、何週間もかかっていては、ウォーターフォール開発時代の延々と長い開発スケジュールに逆戻りです。テストエンジニアは、テストプロセスの大部分を自動化するだけでなく、テスト方法論の見直しも行いながら、短納期という課題に対応しています。
「継続的テストは、各アプリケーションが組織に与えるビジネス上のリスクの評価に役立つ意思決定の中枢システムを作り出します。継続的テストは、一貫して適用することで、開発チームがビジネス上の期待に応え、経営陣に可視性のある情報を提供するための指針となります。それによって経営陣は、十分な情報に基づいて妥協点を探った意思決定をし、リリース候補版のビジネス価値を最大限に引き出すことができるのです。」
—「ITリーダーのための継続的テスト」 パラソフト
意外かもしれませんが、テストとQAに関しては運用チームにも重要な役割があります。運用チームは、監視ツールが導入され、テスト環境が適切に構築されていることを確認する役割を担うことができます。また、機能テスト、負荷テスト、ストレステスト、リークテストに参加し、本番環境にある類似のアプリケーションの使用経験に基づく分析を提供することもできます。
継続テストから得られるメリットには、そのために努力する価値が十分にあります。DevOps環境において、テストチームはデベロッパーが品質とスピードのバランスをとるのを助けます。自動化ツールを利用することで、テストのコストが抑えられ、テストエンジニアが時間を有効に使えるようになります。何より大きいのは、継続テストを行えば、統合テストをプロセスの早い段階で実施できるため、テストサイクルが短縮されることです。
継続的テストでは、従属サービスを仮想化することでテストのボトルネックをなくすことができます。さらに、システムの変更に応じて容易にデプロイ、共有、更新ができる仮想化テスト環境の構築が簡素化されます。こうした機能によってテスト環境のセットアップとメンテナンスのコストが低減し、統合テストをライフサイクルの早い段階で実施できるようになることで、テストサイクルが短縮されます。