アジャイルとリーンの黎明期から,ソフトウェアテストに関するプラクティスや価値観は根本的に変化した。ソフトウェアテストのプラクティスはもはや,DevOps文化と切り離して考えることはできないのだ。
SisenseでR&D事業のディレクタを務めるアジャイルコーチのShirly Ronen-Harel氏が,DevOpsの世界におけるソフトウェアテストの考え方について,一連の記事を自身のブログ記事に書いている。
煩わしさから解放された迅速かつコラボレーティブな開発作業,継続的テスト,継続的デプロイメント,継続的な監視などを含むDevOpsは,より迅速な価値を提供するためのコラボレーション実現を目指すという,正しい価値観がなくては機能しません。
IBMでDevOps SMEとアジャイルエバンジェリストを務め,著書も持つSanjeev Sharma氏は,“Understanding DevOps”と題したブログ記事の中で,DevOpsの不可欠な部分として継続的テストに言及している。
継続的インテグレーションもデリバリも,継続的テストなくしては(ほとんど)意味を持ちません。運用方法を知らない,すなわちアプリケーションが実運用でどのような動作をするのかを知らないようでは,DevOpsのすべてのプロセスが意味をなさないのです。
Ronen-Harel氏はDevOpsの目的について,開発(Dev)と運用(Ops)の垣根を取り払うことだと言う。これは同時に,開発とテストと運用の垣根を取り払う必要がある,という意味でもある。従来のテスト運用と同じものは何もない。 DevOps文化の下で,テストの方法も大きく変わっているのだ。それゆえ,テストのすべてが変わる。テスタのスキルセット,メソッド,テストの方法,テストするタイミング,テストの計画や実行の方法,すべてが変わるのだ。
結局のところ,優秀なツール,“優れた”プロセス,明確に定義された責任というのは一部分に過ぎません。DevOpsの世界で効果的なテストを実現したいのならば,それに合った価値観を確立する必要があります。
さらに氏は,テストをDevOpsに相応しいものにする文化的な要素について,次のように説明している。
- コラボレーション – DevOpsとはプロダクトオーナ,開発者,テスタ,アナリスト,アーキテクトのコラボレーションに他ならない。
- テストはどこにでもある – テストすべきことがすべての場所にある以上,すべての場所でテストを行う必要がある。
作り上げるすべてのものに,品質の証として,私たちのブランドを刻みましょう。QAを守りの手段ではなく,実現のための手段として考えるのです。
Spirent CommunicationsでDevOpsの継続的テストソリューションのシニアソリューションアーキテクトを務めるMarc Hornbeek氏は,自身のブログで,テストを開発プロセスの中心に置くことによって,開発サイクルの最後に”ビッグバン”テストを残すことで起きるリリース遅延や品質などの問題を回避するべきだ,と述べている。
- 常に動作するソフトウェア – 動作するソフトウェアとは,コードとテストが並立するという意味である。
- 全員参加 – 最終製品のバグに責任を持つのはテスタだけではない,私たちすべてが問題とその解決に責任を持つのだ。
- リーン思考 – サイロの削減,無駄の排除,ボトルネックの特定,価値中心の考え方,継続的インテグレーション。
アジャイルとDevOps文化では,生産ラインを一体のものとして捉えます。ユニット個別にコスト計算を行う代わりに,最初から最後までの価値のフロー全体に注目するのです。
この他にも氏は,オーナーシップの共有,早期フィードバック,可視性,継続的改善などの要素を挙げている。
氏はテスタを,イネーブラ(enabler)であり,スキルを持った開発者,スキルを持ったビジネス代表であると定義し,その実現のために,次のような提案をする。
- マネージメントの積極的なサポートと理解
- 急激に変化する環境に対応する必要がある,という事実を理解すること
- 常に技術の変化の上にあること
- 高度に熟練したテスタ
- 高度に熟練した開発者
- チームプレーが可能な人選
- 意識が十分に徹底していなくても,まず始めること。意識は時間とともに成長するものだからだ。
- アジャイルコーチの雇用