はじめに
技術の進化とともに開発スピードは格段に上がり、システムはより複雑になり、求められる品質も高まっています。アジャイル開発やDevOpsという言葉が一般的になった今、これまで幾度となく議論されてきた「スピードと品質」の問題は、トレードオフではなく、「両者をどう実現するか」に前進したのではないでしょうか。
アジャイル開発・DevOps時代において、そうしたテストや品質のあり方を考えるために「アジャイルテスティング」という言葉がキーワードになります。言い換えるならば、「アジャイル開発におけるテスト、品質、QAエンジニア、テスターのあり方」とも言えます。アジャイルテスティングにはいろいろな流派があるようなので、ここでは「アジャイル開発をうまく支えるためのテストや品質保証のアプローチ」としています(参考:アジャイルテスティング問答 - 千里霧中)。
また、アジャイルテスティングはプロセスや方法論ではなく、テストや品質に関わるエンジニアのマインドセットやチーム文化、本質的な価値や原則と言えます。よって、具体的なプラクティスが定義されているわけではないので、関連する文献を読むだけではマインドセットや精神論で行き詰まってしまう可能性があります。筆者も何をすればいいかよくわからなかったので、より具体的な実践方法がないかを今も探し続けています。
しかし、アジャイルテスティングが、スピードと品質を両立するための重要なキーワードであることは間違いないでしょう。その中でも特に「テスト自動化」は中心的なプラクティスになりつつあります。
この連載では、テスト自動化の時代背景からはじまり、テスト自動化の戦略や戦術、具体的な実装方法まで幅広く扱います。そして、「これを読んだらとりあえず最近のテスト自動化がだいたいわかる」レベルを目指し、皆さんをスピードと品質を両立させるアジャイルテスティングの世界へとお連れします。
それでは、アジャイルテスティングの旅をはじめましょう!
想定する読者
- アジャイルテスティングをはじめたい・理解したい・実現したい方
- テスト自動化をはじめたい・理解したい・実現したい方
- ソフトウェア開発に関わるすべての方々
テスト自動化は手段でしかありません。よって、テスト自動化によって実現するアジャイルテスティングの理解が重要になります。今回はテスト自動化に焦点を当てていますが、アジャイルテスティングの実現にはそれ以外の要素も必要です。この連載ではいくつかのポイントのみ簡単に触れます。
アジャイル開発・DevOps時代のテストと品質
なぜ今テスト自動化が重要なのでしょうか?
従来型の開発であれば、要件を定義し、設計・開発を行い、テストを行ってリリースする形が一般的でした。作るものが決まっていた時代であれば、このやりかたはとても効率的です。
しかし、何を作ればいいかわからなかったり(ユーザーが本当に欲しいものを作るのは至難の業です)、リリース後にビジネスを育てていかなければならなかったりする場合だと、従来型の開発方法はリードタイムが長く、作ってはみたけれど「誰にも使われなかった……」となってしまう可能性があります。
最近では当たり前のように使われている「アジャイル開発」や「DevOps」は、どちらも直線型の開発ではなく、開発と運用を繰り返しながら、漸進的に繰り返し開発をすすめる手法です。
これらによって小さくリリースし、ユーザーのフィードバックを受け取りながら、サービスやシステムを徐々に大きく育てていきます。何を作ればいいかわからないなら、少しだけ作って、ユーザーに試してもらいながら改善する作戦が有効です。
スクラムなどのフレームワークの普及により、この10年でアジャイル開発は「当たり前」になってきたように感じます。では、テストや品質はアジャイルになったでしょうか? 開発はアジャイルだけど、テストや品質がウォーターフォール。そういった現場もまだまだ多いのではないかと思います。
アジャイル開発がテストや品質を置き去りにしてしまっていたとしたら、これからの10年でその遅れを取り戻さなければなりません。