なぜテスト自動化はアジャイル開発と相性がいいのか
近年、市場の変化はますます激しくなり、いかなる企業、サービスにおいても機敏に変化し続ける「アジリティ」が求められるようになりました。そして、アジリティを確保する上で「アジャイル開発」は有効な開発手法であり、多くの企業が採用しています。一方で、アジャイル開発を採用し段階的にリリースをするようになるとリリース頻度は増え、その分テストも膨大になります。その際、いかにテストを効果的、効率的に行なっていくかがリリース頻度を左右するといっても過言ではありません。
2022年11月24日に開催された本ウェビナーでは、アジャイル開発に関わる方々向けに、いかにテストを効率的に行うか。なかでも、テストフェーズをどのように自動化すればより良いアジャイル開発を実現できるかについてご紹介しています。
セミナー概要
セミナー名
アジャイル開発とテスト自動化 〜より良いアジャイル開発のためにできること〜
開催日時
2022年11月24日 (木) 11:00~12:00
タイムテーブル
- イントロダクション 5分
- メインセッション:アジャイル開発とテスト自動化 30分
- Q&A 20分
- クロージング 5分
登壇者
早川 侑里(オーティファイ株式会社 カスタマーサクセスマネージャー)
第三者検証会社を2社経験し、テストエンジニアとしてのキャリアを積んだ後、受託開発会社にてQAチーム立ち上げを経験。実際にAutifyの社内導入をリードした経験を持つ。 その後、Autifyに入社し現在はQAエンジニアとしての経験を活かしながらカスタマーサクセスマネージャーとしてクライアントに伴走している。
本セミナーは見逃し配信中です!こちらから当日のセミナーの動画をご覧ください。
アジャイル開発とは?
そもそもアジャイルとは「素早い」「頭の回転が早い」「機敏な」といった「とにかく早い!」という意味です。
早く開発したいという思いからアジャイル開発は採用されますが、よく比較される対象としてウォーターフォール開発があります。
ウォーターフォール開発は要件定義から運用までを滝のように上から工程が流れていくことから名付けられています。特に大きな規模の開発でよく使われる手法です。
一方で機能レベルなどの細かい単位で開発を行い、早く細かい機能リリースを繰り返していくのが、アジャイル開発です。機能リリースを早められる一方で、小さな規模でのサイクルを繰り返す中で手戻りや方向修正が発生します。
なぜアジャイル開発は品質の担保が難しいのか?
アジャイル開発では品質の担保が難しい1つ目の理由は短期間でサイクルを回すため、テストを行う時間が限られてしまうことです。
前述のV字モデルでのテストのように一つ一つを確認しながら、リリースしていくことは難しいです。
2つ目は開発中の仕様変更が発生した際の影響範囲の確認が不足する場合があることです。
3つ目は開発が進むにつれてテストをする機能が膨大になり、時間の制約からテスト範囲を制限する必要があるためです。
品質を諦めて機能開発を進める方が良いか?
リリースサイクルを早めるためには品質を諦めて機能開発をするしかないのでしょうか?
いえ、諦めない方がいいです。
ユーザーがサービスに求めるものは次のように、数多くあります。
- 品質
- ブランド
- 価格
- 機能充実
- 使いやすさ
その中でも安全にサービスを提供し、利用してもらうために品質の担保は避けて通ることはできません。
そこで、ユーザーの求めるものに答えることができないと「機会損失」に繋がってしまいます。
ある調査ではサーバが1分停止すると5,600ドルもの損失を出していると言われています。
また、1時間ダウンしてしまうと大企業では数百万ドル、中小企業で最大54万ドル、日本円で7,500万円ほどの損失になります。
テスト自動化とは
テスト自動化を導入した際には手動テストよりもコストは高くなってしまいますが、実行回数に応じて緩やかに自動テストのほうがコストが抑えられるようになっていきます。
自動テストの初期はどうしても学習コストがかかったり、テスト方針を決めたりといった理由からコストがかかります。ただし、実行回数が増えていけば広い範囲を低コストでカバーでき、さらに実行回数や時間に縛られないため、コストの伸びは緩やかになっていきます。
つまり、テスト自動化でコストを削減するためには「繰り返し利用、かつ継続的にテスト」を作成していく必要があります。
なぜテスト自動化はアジャイル開発と相性がいいのか?
まず、ウォーターフォール開発の場合には各工程で1度しか実施されない事が多いです。
また、運用開始後は機能が追加されるまでに時間が空いてしまうため、繰り返しテストを実施することは現実的ではありません。
一方で、アジャイル開発の場合は短期間で開発サイクルを回すため、テストを実施する機会は多いです。
また、定期的に機能が追加されるため、その都度確認項目も増えます。
そのため、繰り返しテストを実施しやすい環境になりやすいです。
さらに、ウォーターフォール開発の場合、計画時点で作成するものが決まっており、テストも計画以上のものが発生しない想定で進められます。
そのため、継続したテストの作成に繋がりにくい特徴があります。
また、アジャイル開発では開発サイクルを回すたびにテスト対象が増え、新しいテストも増えていきます。
そのため、継続してテストを作りやすい環境になります。
これらの理由から自動テストと相性が良いのはアジャイル開発といえます。
導入コストを下げるには?
テスト自動化を効率良く導入するためには導入コストを下げて、仕組みを作る必要があります。
導入コストを下げるためには
- 学習コストを下げる
- エラーや課題の解消を早めに実施する
- すべてテストするのではなく、抑えたいポイントを優先する
の3つの方法が考えられます。
導入する際にはコードベースでは、どうしてもコードの勉強やテストを作るためにどのような実装をしていかなければいけないかということを学ぶ必要があります。
そのため、エンジニアでなくても誰でもテストが作れることが学習コストの削減になり使いやすいUIのツールを選ぶことが解決策になります。
また、ツールの導入にはトライアンドエラーが付き物ですが、トライアンドエラーを繰り返す回数をなるべく少なくすることもコスト削減になります。そのためにはCSのサポートが充実しているツールを選ぶこともまた重要です。
最後に全てをテストするのではなく、抑えたいポイントを優先することです。機能として落としたくないものを考えてクリティカルパスを意識します。
最後に
良いアジャイル開発を実現するためには「早く」「誰でも」「簡単に」できるテスト自動化が不可欠です。
最初は小規模でスタートし、常にテストが回っている状況を作る。そこから開発に合わせて徐々に自動テストの領域を広げていくことで、結果的にコスト削減になります。
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。