テスト自動化の成功・失敗を分けるのは「継続性」
こんにちは。MagicPodでエバンジェリストをしているYoshiki Itoです。
システムテスト自動化は、関連書籍が複数出版されるなど、以前と比べて普及が進んでいるように思います。毎年年末ごろに行われているテスト自動化カンファレンスのアンケート結果でも、システムテスト自動化の経験がない方は2024年末で29%と、41%で最多となった2017年から減少傾向にあります。
普及に伴ってさまざまな組織・チームにおけるテスト自動化の事例も公開されており、
- テスト自動化を成功させるには
- テスト自動化の失敗を避ける方法
などの情報も充実してきました。 弊社でも、テスト自動化の成功・失敗に関連する情報を公開しております。
- テスト自動化を成功させる4つのSTEP
- 競プロ思考でE2Eテストを成功させる - Speaker Deck
- スタートガイド:5.テスト自動化の習慣を最速で定着させる(ブラウザ) – MagicPodヘルプセンター
一方で、これからテスト自動化を導入しようとしている方が「成功」や「失敗」と聞いても、具体的なイメージを持ちづらいかもしれません。私はこれまで様々な組織でテスト自動化の導入を支援してきましたが、ベストプラクティスやアンチパターンを知っているだけでなく、そもそも「成功・失敗」を正しく認識すること自体がテスト自動化の成功につながると考えています。
そこで本記事では、テスト自動化の成功・失敗とはどのような状態を指すものなのか、解説していきます。
テスト自動化の成功は、自動化の目的次第
まずはテスト自動化の成功とはなにか、から考えていきましょう。 テスト自動化に限らず、なんらかの物事に対して成功・失敗を考えるときには、対応する目的があるはずです。 テストを自動化する目的があることで、成功=目的達成、失敗=目的未達成という判断ができるわけです。よく「テスト自動化は目的を明確にして始めましょう!」と言われますが、成功判断をするうえでも大事なポイントになってきます。
代表的なテスト自動化の目的
ではテスト自動化の目的とは何でしょうか。これは組織やチームによって様々なので、世間一般で決まったものはありません。
たとえば
- 手動では実施困難なテストを行いたい
- リリース毎により広範囲のテストを実施したい
- テスト実行にかかる時間を短縮し、リリースサイクルを早めたい
などが考えられます。
その中でも、Webアプリケーションやモバイルアプリケーションを開発されている方々からよく伺うのは、やはり
- テストを効率化したい、頻度を上げたい
- テストにかかっているコストを削減したい
などが多いです。
テスト自動化の成否は特定のゴールでは決まらない
効率化や頻度向上・コスト削減を目的としてテスト自動化を始めたとして、たとえば「ある時点からテストの頻度が2倍になったので成功!」といった判断になるでしょうか。そうはなりませんよね。
テストの頻度が2倍になったら、それが新たな普通・基準になり、その頻度を維持しつづけなければなりません。つまりテスト自動化がうまく機能していて、効果がある状態をキープする必要があります。
このことから、テスト自動化の成功とは
- テスト自動化の目的を達成できており
- かつ、自動化したテストが継続的に運用・改善できていること
が条件だと言えます。単純に一度自動化しました、では足りません。自動テストで効果が得られている状態を継続できるサイクルに入って初めて成功です。
テスト自動化の代表的な失敗:続かなくなること
成功のポイントに「継続」を置いたのは、これが失敗パターンにも大きく関わっているためです。
昨今はツールの進化や技術情報の充実などにより、テスト自動化を始める時点でつまづくことはかなり少なくなっている、と感じています。その一方で、一度自動化したテストを継続的に保守運用することができずに止まってしまう、というパターンはまだまだ多く見受けられます。
運用ができなくなる原因は様々です。プロダクトに大きな変更が入って自動テストのメンテナンスが追いつかなくなることもあれば、テスト自動化の主体が曖昧で自然消滅してしまう・・・といったケースもあります。
対策のひとつとしては、テスト自動化を成功させる4つのSTEPでも触れているように、まずは少数のテストでも良いので自動テストの運用を行うことが挙げられます。いきなり大きく自動化するのではなく、継続的に運用できる量からスタートし、そこから増やしていく方法が有効です。
運用イメージを具体的に描くことが継続のカギ
少ない量から始めるメリットとしては、運用に際して発生する様々な手間やトラブルがコントロール可能な規模で抑えられる点が挙げられます。定期的に実行しているテストの数が少なければ、もしテスト手順の変更が必要になった場合でも少ない工数で対応できる、ということです。
もうひとつのアプローチとしてぜひおすすめしたいのが、運用に際して発生する様々な手間やトラブルを事前に想像しておくこと、運用イメージを具体的に描いておくことです。
テスト自動化導入前に漏れがちで、かつ運用にあたって意外と工数がかかる点として、テスト結果の確認や調査が挙げられます。手動でのテストと異なり、自動テストはテスト実行と結果の確認が別のタスクとして存在します。自動テストが成功している間は良いのですが、失敗した場合には原因の調査・切り分けが必要です。
そのため、システムテストを自動化して毎晩実行しているチームなどでは、出勤後のテスト結果確認と失敗原因調査を当番制にしているところもあります。これが当番制ではなく特定の個人が担当していると、自動テストの確認・修正が属人化して開発のボトルネックになったり、異動や退職によって自動テストが維持できなくなったりするリスクもあります。
このように、誰が自動テストのメンテナンスをするのか等、運用イメージをあらかじめ具体的に描いておくことで、自動化導入後の想定外を減らせます。地味ですが、大事なポイントです。
テスト自動化は、継続して初めて成功。運用イメージを明確にして導入を
本記事では、テスト自動化の成功・失敗について説明しました。
テスト自動化は「一定数のテストケースが自動化できたこと」や「ある時点で効率や頻度が期待通りになったこと」では成功とはいえません。期待した効果を継続的に得られて初めて成功であり、この継続という点が重要な要素です。
自動化したテストを継続的に運用している状態になるために、またそこに至る過程で頓挫してしまわないようにするために、テスト自動化が日々の開発業務の中に取り込まれた状態をできるだけ具体的にイメージしておくことが有効です。
テスト自動化を導入したあとの運用について相談したい、ディスカッションしながら運用イメージを描いていきたい、といったご要望があればお気軽にご連絡ください。
