DevOps時代の開発とテスト

CI/CDの実現のために、それぞれのプロセスをスムーズに「つなぐ」必要性は理解できたと思います。では、ソフトウェア開発で時間を多くかける「開発」と「テスト」のアジリティを上げるにはどうすればよいでしょうか?
Fadi Stephan氏の「Testing From Day 1」は、DevOps時代の開発と、それに伴うテストについて、とても分かりやすく説明されたセッションでした。
例えば、アジャイル開発をはじめようとして、タイムボックス(スプリントやイテレーション)のサイズを2週間にしたとします。もし、それぞれのスプリントで、要件定義、設計、コーディング、テストをしていたらどうでしょう? これはアジャイルな開発になるでしょうか?

「最後にテストする」のではなく、このセッションのタイトル「Testing From Day 1」のとおり、「最初からずっとテストしていく」のが、フィードバックサイクルを繰り返していくDevOps時代のテストなのです。
スクラムを導入し、1か月(4週間)のスプリントを採用した場合はどうでしょう? 1つのスプリントの中で要件定義して、設計して、コーディングにとても時間がかかってしまい……残りのわずかな時間でテストをしていませんか?

こういったウォーターフォールモデルを小さくしただけのアジャイル開発をよく見かけますが、タイムボックスが設定されただけで、小さく開発をしていくことにはなるでしょうが、本質的な変化は起きていません。

開発やテストが「工程である」という認識が残っている限り、この問題は解決しません。テストはテスターだけではなく、開発に関わる全員の責任となり、1つのスプリントで同時並行的に実行しなければ、漸進的な開発による恩恵は得られないでしょう。
そして、自動化できるテストがあれば、できる限り自動化していかなければアジリティを高められません。また、機能レベルのテストがUIを通さずできるようなアーキテクチャも必要になってきます。
