はじめに
自動化戦略はQA戦略の一つとして捉えてみよう
私は、テスト自動化戦略を「単独の施策」ではなく、QA戦略の一部として捉えることをお勧めしています。
日頃からテスト計画を立てているQAエンジニアの方であれば、まずは「既存のテスト計画に自動E2Eテストをどう組み込むか」を考えてみるのが良いと思います。
その問いから出発すると、「自分たちに本当に必要な自動E2Eテストツールは何か」が見えやすくなるのではないでしょうか。
自動E2Eテストを導入する際には、単に「普段のリグレッションテストを自動化したい」といった表面的な目的だけでなく、旗振り役となる担当者がプロダクト全体の品質保証をどう実現するのかを考え、その中で自動E2Eテストをどのように位置づけるのかを定義することが非常に重要です。
そのプロセスの中で、「自分たちは自動E2Eテストに何を求めるのか」を言語化していくと、それがコードベースのツールなのか、SaaSなのか、といった方向性が見えてきます。さらに、どのフレームワークやサービスを活用すべきかも、自然と絞り込まれていくことで、視界がクリアになっていきます。
この記事では、私が組織全体のQA戦略、そしてそれに内包される自動E2Eテスト戦略をどのように考え、その中で出会ったTestimというプロダクトが、なぜ私のQA戦略に合致したのかをお伝えします。
「QA戦略から逆算して自動E2Eテストツールの要件を考えると、どのような選択になるのか」という一例として読んでいただければ幸いです。
組織のビジョンがE2Eテストツールの選定を左右する
自動E2Eテスト導入がもたらす広範な影響
自動E2Eテストの導入は、「便利なツールで工数を減らす」ことにとどまりません。品質保証のアプローチそのものを変える可能性がありますし、「浮いた工数で何をするか?」という新たな問いも生まれるはずです。
また、自動E2Eテストを導入すると、テストを新規作成するだけでなく、継続的に更新・運用していく必要があります。そこには、例えば次のような運用上の判断が伴います。
- 自動E2Eテストが失敗した際、その事象をどう扱うべきか。
- それは単なる新しい差分がマージされたことによる失敗なのか、それとも不具合なのか。
- それは本番環境でも発生している不具合なのか。
こういった切り分けが都度発生します。失敗した事象に対して都度対応するのも悪くはありませんが、できることならすぐにキャッチして修正する取り組みも必要になってきます。そうなると、テスト自動化の導入前と後で、QAエンジニアの働き方が変わるかもしれません。
新しく自動E2Eテストを導入するということは、このように既存のテストプロセスに大きな影響を与えます。効率的で意味のある運用をしようと考えれば、既存の開発プロセスやブランチ戦略にまで大きく影響を与えてしまう可能性すらあるのです。
判断軸となる「QA組織の品質戦略」
その時、大事になってくるのが、QA組織の品質戦略です。
どのようにプロダクトの品質を担保しようとしていて、その中で自動E2Eテストはどのような立ち位置なのか。これが明確に定まっていないと、もし有償ツールを導入した場合、「高価な便利ツールを契約しただけ」で終わってしまいかねません。
どのようなツールであれ、本格的に使おうとすると、エンジニアをひとり採用するのに近いコストになることも珍しくありません。有償のテスト自動化ツールとは、そういう性質の投資対象です。
その時、あなたがどのようなツールを選び、それをどのように効果的に使っていくのか。その判断軸となるのは、あなたの組織の戦略やビジョンなのです。
組織におけるあなたの役割
もし、あなたが組織をリードする立場であれば、自動E2Eテスト導入前にこのビジョンがあるかどうかが、まず大切なポイントになります。
一方で、あなたが単なる一チームメンバーで、リードする立場ではなかったとしても、上司やリーダーに対してビジョンを提示することは、ボトムアップで施策を進めていくための基本となります。あなたが明確な根拠を客観的に説明することができれば、優秀なリーダーたちは喜んで手伝ってくれるでしょう。
筆者の立場とアプローチ
前置きが長くなりましたが、私は現在、所属企業でQA組織づくりを任されており、同時にQA技術面のリードも担っています。
実は、テスト自動化の推進は、専任の SET(Software Engineer in Test)が担っているため、お任せしています。
ですが、この立場の私にとって、自動E2Eテストは立派な品質戦略の一部であり、決して他人事ではありません。
そのため、私はQA組織全体に対してビジョンを示し、その同じ方向・目的に沿って自動E2Eテストを導入していただければ問題はない、という基準を示しています。もちろんSETの方にも「こうしたい」という戦略はあります。ただ、その目的や方向性・角度だけは同じになるように認識合わせをすることで、お互いが自律して行動しても問題が起こらないように組織をデザインする必要があります。
そこで、私が推進役やリーダー・マネージャー陣に対して示しているのは、以下のような思いとビジョンです。
全員が自律的なQAチームを作りたい
私には「自律的なQA組織を作りたい」という、一貫した思いと、とても抽象的な目標があります。これを体現するためには、モダンな考え方も取り入れつつ、組織における立ち位置を抽象的に定義する必要がありました。
そこで、私はQA組織全体に対して、以下の3つのビジョンを示しています。
※会社内部情報になるため、実際とは異なる書き方・抽象度でご紹介します。
私が示す3つのビジョン
質とスピードは同時に成り立つ
- 開発のアジャイル化(高速化)に対応するため、QAもスピードを落とさずに品質を担保します。
- 状況に応じて、顧客価値を重視する定性的なテスト(探索的テストなど)と、機能の網羅性と詳細な定義を重視する定量的なテスト(従来のスクリプトテスト)を使い分けるハイブリッドな戦略をとります。その他、チーム全体アプローチ、継続的テスト(後述)を活用していきます。これにより、質とスピードを高次元で両立させます。
自走して自らの技術を発揮できる
- これは「シフトレフト(開発工程の早い段階から品質保証活動を行うこと)」の実践方法の方針です。
- 固定観念からの脱却: 「QAはテストをする役割」という固定観念にとらわれず、メンバーそれぞれの専門知識や技術、経験を活かして、プロダクト価値の最大化にどう貢献できるかを自ら考えます。
- 具体的な活動: 不具合の分析、要件やデザインのレビュー、リスクの洗い出しなど、開発の早い段階から積極的に関与し、そもそも不具合を作り込まないための活動を行います。
スクラムチームを支援する存在になる
- 単なる品質のチェック担当ではなく、品質という分野においてはチームを積極的に後押しするリーダー的な存在となることを目指します。
- 役割: プロダクトマネージャーやプロダクトオーナーが意思決定をしやすいように支援します。
この3つのビジョンは、一見、自動E2Eテストツールの導入とは関係のないことに見えるかもしれません。ですが、これを実現するために自動E2Eテストがどうあるべきかを考えていくと、実はツール選定をする際に大事な要件が見えてきます。
①【要件】自動E2Eテストは、顧客価値を重視するテスト活動を支援するものでなければならない
ビジョンとの関連: 質とスピードは同時に成り立つ
QAエンジニアは、非常に高い抽象と具体の往復スキルを持っています。細かい技術解説は今回の記事の趣旨から外れるため割愛しますが、私は、QAが専門技術を使ってより難しく、より抽象的で曖昧な事柄という難しい領域に注力してほしいと思っています。
そのためには、より具体的で定量的な領域をテクノロジーで解決できるのであれば、どんどん解決していきたいと考えています。それが例えばAIを活用することだったり、様々な形が考えられますが、自動E2Eリグレッションテストには、成否を判断するための明確な基準、つまりオラクルが存在します。
ほとんどの自動E2Eテストツールにおけるオラクルとは、「過去に成功したテストケースが、システムへの変更後も同じように成功すること」であり、これが期待される正しい結果となります。
さらに、自動化は「未知の入力」に対するテストにおいても明確なオラクルを提供できます。その代表例が、ファジング(Fuzz Testing)です。
ファジングとは、プログラムに対して予期しないデータや無数のランダムなデータを自動生成して入力し、システムの堅牢性を試すテスト手法です。入力がランダムであるため期待結果を定義しにくいように思えますが、実際には以下のような非常に明確なオラクルが存在します。
- クラッシュしないこと: どのようなデータが入力されても、サーバーダウンや例外で停止しない。
- 不変条件を満たすこと: 「データのエンコードとデコードを行ったら元に戻る」といった、システムが常に守るべきルールを破らない。
- 性質(プロパティ)を維持すること: 「合計値を求める関数は、引数の順序を入れ替えても結果は同じ」といった、コードが持つべき抽象的な性質が常に成り立つことを検証する。
このようにファジングは、人手では想定しきれない入力に対し、「システムが守るべき普遍的なルール」をオラクルとして検証するため、これも自動化テストが持つ強力な利点の一つと言えます。ファジングの面白さは、入力はランダム(未知)でも、期待結果(ルール)は明確であるという対比にあります。「未知の入力」に対して「既知のルール」があるのです。
このような視点で自動E2Eテストを捉えることで、QAエンジニアはどんなテストを自動化に任せるべきかが明確になっていきます。これによって、私が掲げたビジョンの1つ目、「質とスピードは同時に成り立つ」が達成される手助けになります。これが、まず私の組織に自動E2Eテストが必要な理由になります。
②【要件】自動E2Eテストは、さまざまな特技を持つQAエンジニアの誰もが活躍できるツールでなければいけない
ビジョンとの関連: 自走して自らの技術を発揮できる
私の組織は、中途入社するQAエンジニアだけで構成されています。私はある程度人数が集まった状態で入社しているのですが、事業会社やSES出身者であったり、業界も旅行やゲーム、人事労務領域や求人サービスと、バックグラウンドは非常に様々です。
QA業界は非常に幅が広いです。幅が広いということは、各個人のスキルも異なるということです。みんなそれぞれ何かに尖っているのです。
その誰もが活躍するためには、
- 最低限は誰でも使えること(参画のハードルが低いこと)
- かつ 得意分野に応じて工夫や拡張ができること(余白と自由度があること)
を両立したツールである必要があります。
自由度が高いという意味ではコードベースが最もですが、「誰でも活躍できる」ためにコードベースが最適かというと、QAエンジニアにとってはそうとは限りません。コードが書けるかどうかはエンジニアとしての良し悪しではなく、その人にとってのこれまでの経験からくる専門性でしかありません。
この多様な専門性が発揮できる、懐の深い自動E2Eテストツールを探していました。
そして、そのようなツールを導入することで2つ目のビジョンである「自走して自らの技術を発揮できる」を達成する手助けになると考えています。これが、次に私の組織でどんな自動E2Eテストツールが必要になるのかという理由です。
Testimは、キャプチャアンドリプレイ型の自動E2Eテストツールでありながら、ローコードの手軽さと、コードによる本格的な拡張性を両立したハイブリッドなプロダクトです。当時推進役のSETと話し合いましたが、この特徴は私がTestimを使いたいと思う後押しとなりました。
③【要件】自動E2Eテストは、定量化されたデータによりPMを支援できるツールでなければいけない
ビジョンとの関連: スクラムチームを支援する存在になる
「テストとは計測する手段です」計測をするということは、データとなって定量化されるということです。これは、オラクルが厳密に明確な自動E2Eテストならではの特性です。再現性が非常に高いため、信頼できるデータとして集計することができます。
単にテストをしただけでは、品質が良いのか悪いのかを判断することはできません。
- テストをしたら、バグが出た。出し切ったから安心でしょうか?
- テストをしたら、バグが出なかった。バグが出なかったから安心でしょうか?
このように、計測した結果をどのように分析してどう解釈するのか、また分析した結果をどう活用するのかに、とても価値があります。
自動E2Eテストは、こうした定量化によって課題を明らかにする手助けとなります。PMに定量化された根拠のある数字を元に、リリースに関する重要な意思決定やプロジェクトの中断・続行の判断を手助けすることが可能になります。
それが可能となる自動E2Eテストツールを導入することで、3つ目のビジョンである「スクラムチームを支援する存在になる」を達成できる手助けとなります。
Testimは、この要件に対しても以下の機能で貢献します。
- ラベル機能: テストを「決済機能」や「優先度:高」といったビジネスの文脈でラベリングすることが可能です。
- ダッシュボード: 品質の推移を把握することが可能です。
- AIによる安定したテスト実行(スマートロケーター): UIの軽微な変更に起因するテスト失敗(ノイズ)を削減します。これにより、「テストの失敗=プロダクトの不具合」という相関性が高まり、意思決定の根拠として信頼できるデータを生成しやすくなっています。
まとめ
私が組織全体のQA戦略をどのように考え、そこにTestimがどうしてQA戦略に噛み合ったのかについてお話ししました。
もしあなたが自動E2Eテストツール選定の旗振り役を任されていたら、まずは「あなたは自分の組織やプロダクトをどのように良くしていきたいのか」「その中で自動E2Eテストをどう活用するのか」を考えてみてください。
これを考えていくと、何が自分にとって最良の手段なのかが見えてくるかもしれません。もしかしたら手書きでコードを書くことかもしれませんし、完全なキャプチャアンドリプレイのツールで満足できるかもしれません。
何が適切なツールとなり得るかは、あなたのQA戦略にかかっています。
参考(Testim公式):https://www.tricentis.com/ja/products/test-automation-web-apps-testim