手動テストから自動テストに移行する方法:Idera DevOps Tools ポッドキャスト エピソード2.1

ソフトウェアテストは、リリース前に不具合を特定し、修正するために不可欠です。テストは効率的であるのに越したことはありません。そのため、みなさんは手動テストから自動テストへの移行を検討しているかもしれません。

手動テストでは、アプリケーションの機能のエラーを検出するために、テスターが一連のステップを人手で物理的に実行する必要があります。

自動テストとは、ソフトウェアを使用してソフトウェアをテストすることです。自動テストでは、ツールを使ってソフトウェアの機能をテストし、その結果を予測された結果と比較します。これにより、開発チームはより多くの時間を他の重要な業務に集中できます。自動テストは、テストプロセスを効率化して時間とコストを削減するだけでなく、より質の高い製品を提供します。2016年の調査(英文)では、回答者の24%が最初の 6カ月以内にテスト自動化の投資に対するリターンを得ています。

しかし、手動テストから自動テストへの移行は困難に思えるかもしれません。本記事では、移行方法について、最近のポッドキャストの内容を文字に起こしたものをご紹介します。

ポッドキャストは2022年1月20日に公開されたものです。本記事の内容は元の録音から若干変更されています。全編をお聴きになるには、以下からどうぞ。

手動テストから自動テストへの移行:ポッドキャストの書き起こし

ジャッキー キング:皆さん、こんにちは。Idera DevOps Toolsポッドキャストの最新エピソードにようこそ。私たちの目標は、ソフトウェア開発における重要なトピックについて皆さんに情報を提供することです。アプリケーションの構築、テスト、デプロイの各ステップで約100万人のユーザーを支援するソリューションを持つ当社の専門家が、魅力的な洞察、視点、情報をご提供します。私はRanorexジャッキー キングと申します。本日ポッドキャストに参加するのは、TestRailのプロダクトマネージャーのサイモン ナイトさん、Ranorexのプロダクトマネージャーのジョン レイノルズさん、そしてXRay ホセ ドミンゲスさんです。

本日のテーマは、「手動テストから自動化に対応したテストへの移行」です。ロックダウンやリモートワーク、スタッフの離職や不足など、企業が過去2年間、そして2022年に向けて直面し続けるあらゆる課題において、自動化がサポートするテストには多くの魅力があります。

サイモン ナイト:皆さん、こんにちは。ジャッキーにご紹介いただきました、TestRailのプロダクトマネージャー、サイモン ナイトです。今回は、私たちが「自動化がサポートするテスト」とは何を意味するのかについて、少しお話ししたいと思います。この業界では時々「自動テスト」といった言葉が使われ、テストにおいて自動化が人間に取って代わりつつあるかのような言い方をされるのを耳にすることがあります。しかしそれは、テスト自動化の本当の目的ではないと思います。テスト自動化の目的は、反復的な作業をすべて自動化することで、人間が得意とする創造的な作業、つまり、アプリケーションの機能を本当に理解するための思考や調査により多くの時間を割けるようにすることです。

たとえばクロスブラウザーテストや回帰テストが挙げられます。ほかにも良い例として、さまざまなデータ値を多数のフィールドに入力する横断的なテストがあります。

Ranorexはテスト自動化ツールなので、この点についてはRanorexの同僚であるジョンがいろいろと考えを述べてくれると思います。

ジョン レイノルズ:サイモン、ありがとう。私たちが見てきたのは、適切なテストケースに焦点を当てることで、テスト自動化の投資に対する最大のリターンを得られるということです。適切なテストケースとは、サイモンが言ったような、反復作業の自動化、複数ブラウザーでの同じテストの実行、回帰テスト、データ駆動型テストなどです。つまり、異なるデータセットを使って何度もテストを繰り返すことです。そして、その ROI  (投資対効果) は、生産性の向上だけでなく、品質とユーザー満足度の尺度でも測ることができます。つまり、手動で行う必要のないタスクを自動化することで、テスターがより多くの時間を他の作業に費やすことができるようになり、より徹底した製品テストが可能になります。

しかし、手動テストから「自動化がサポートするテスト」への移行について話すとき、ROIは本当に最後の話なので、その前に、自動化プロジェクトを成功させるために何が必要かを見てみましょう。

最初のステップは、チームが自動化プロジェクトに対応する準備ができていることを確認するために、準備状況のアセスメントを完了することです。

テスト自動化プロジェクトを成功させるための重要なステップ

ホセ ドミンゲス: その通りです、ジョン。では、その話題に入りましょう。なぜテスト自動化が必要なのか、自動化によってどのような問題を解決しようとしているのかを理解する必要があります。たとえば、ビルドとリリースのパイプラインでQAがボトルネックになっていませんか?あるいは、本番環境でエラーが多発しているのでしょうか?解決しようとしている問題を特定したら、次に、具体的で測定可能な成功の定義を設定する必要があります。これは、基本的なプロジェクト管理の観点からも、とても重要なことだと思います。

壊れたプロセスを自動化が修復するわけではありません。そのことを理解するのが重要です。開発チームのメンバーとのコミュニケーションが十分でないためにQAがボトルネックになっている場合、自動化ではそれを解決できません。したがって、準備状況のアセスメントでは、既存のプロセスのレビューを実施する必要があるほか、テストデバイス、データ、環境などのリソースの確保が必要です。しかし、最も重要なことは、自動化に熱心で、プロジェクトを推進する意欲のあるチャンピオンがチーム内に1人以上必要だということです。

そして最後に、現在のテストの管理方法について考えてみましょう。テスト自動化ツールに加え、たとえばTestRailやXRayのようなテストケース管理ツールは必要でしょうか?

サイモン ナイト:もちろん必要です! しかし、準備状況のアセスメントを実施した後、次のステップは適切なチームを編成することです。ホセが言ったように、チーム内に1人以上のテスト自動化チャンピオンがいることが重要です。他の重要なチームメンバーとしては、利害関係者グループの代表者、開発者、テスター、ビジネス アナリスト、システム管理者といった人々が含まれる可能性があります。そして、このチームは理想的には定期的にミーティングを行う必要があります。目標を設定し、自動化の取り組みの進行状況を監視し、必要であれば戦略を調整し、最終的にソリューションを承認するためにです。

また、テスト自動化のためにいくつかのケースを準備することをお勧めします。自動化されたテストケースの初期セットには、スモークテスト、ビルド受け入れテスト、そしておそらくリスクの高い回帰テストが適しています。理想的には、選択したテスト自動化ツールが主要な機能で動作することを確認するために、少なくとも1つのエンドツーエンドのテストケースを含めることをお勧めします。リサ クリスピンが過去に言っていた「スチール スレッド テストケース (a steel thread test case)」(英文)です。

ジョン レイノルズ: ありがとう、サイモン。次のステップは、複数個のツールを調査して選択し、PoCを行うことです。PoCは短期的なプロジェクトにすぎません。一般的には、数週間かけて自社環境の主要なツールを評価し、評価基準に照らして測定することで、より「自動化がサポートするテスト」に移行する際にそのツールがニーズを満たすかどうかを判断します。

Ranorex では、ハンズオンでの評価時にセールス エンジニアがサポートします。自動化ツールによって、期待されるROIの計算を開始することもできます。

ホセ ドミンゲス: 自動化ツールを選択したら、自動テストを実装するプロセスをすぐに開始できます。テスト環境をセットアップし、必要な統合を構成します。Jiraのような欠陥トラッキング アプリケーションや、これまでに話題に上がったTestRailやXRayなどのテスト管理ソリューション、CI/CDサーバーなどです。テスト自動化は、それ自体がソフトウェア開発のプロジェクトであるため、テストケースの管理にGitなどのバージョン管理システムを使用することを検討してください。

チームがトレーニングを受けられるように、そして手動テストから移行する学習曲線に対応できるように、必ず時間を取ってください。初期段階では、学習に対する労力と投資が増えることが予想されますが、それが後に生産性の向上につながるでしょう。学習曲線を早めるために、専門的なトレーニング サービスに投資するのも優れた選択肢です。これらのサービスを提供するパートナーは世界中にたくさんあります。私たちがお勧めするのは、身近にいる人を見つけることです。

サイモン ナイト:ありがとう、ホセ。また、自動化されたテストケースは、アプリケーションコードや手動テストケースと同じように、愛と配慮をもって扱うべきだと思います。そうすることが必要な範囲では、コードそのものがドキュメントである場合もあることを念頭に置き、必要な部分にはさらにサポートドキュメントを追加すべきです。XRayやTestRailのようなツールは、このような場合に役立ちます。

多くの人が作業している場合、Gitのようなバージョン管理システムを使って、意図しない変更や競合、そして消失から、自動化コードを保護することを必ず検討してください。私は過去に、自分のコードを完全に消失してしまった人たちを見てきました。実は私自身も、ソースのバージョン管理ツールにコードをチェックインしなかったために、コードを消失したことがあります。バージョン管理システムの導入は、絶対にやっておいたほうが良いことです。

ジョン レイノルズ:そうですね。自分のしたことが原因で、これまでの仕事をすべて失ってしまうことほど、つらいことはありません。
ですから、PoCに着手し完了したら、最後のステップは、この自動化プロジェクトを成功裏に進めることです。ツールを選択したら、自動化スイートを維持・拡大するために、改善サイクルを回します。各サイクルにおいて、何がうまくいき、何がうまくいかなかったかを確認し、必要に応じて戦略を調整します。それにより、本当に効果を上げる領域に、自動化を導入できます。そして、選択したツールから得られる実際のROIを計算し始めることも可能です。

テスト自動化における最大の障壁を克服する

ジャッキー キング: テスト自動化プロジェクトの主要な段階についてお話したところで、チームが手動からテスト自動化へ移行する際に直面するいくつかの障壁について簡単に見ていきましょう。Pulse Researchと協力して、私たちは最近94人のITリーダーを調査し、ユーザーインターフェーステストを自動化する際の障壁の上位3つを特定するよう依頼しました (下図参照)。

障壁その1:テスト自動化ツールのコスト

この調査によると、第一の障壁は、自動化ツールのコストです。無料やオープンソースのツールの人気が高いので、これは本当に興味深いことだと思います。私はコストが一番の障壁になるとは思いませんでした。もちろん、オープンソースのツールには隠れたコストがあり、総所有コスト (TCO) を引き上げてしまう可能性があります。いわば無料で子犬を手に入れるようなものです。

ホセ、テスト自動化のコストという障壁を克服する方法について、何か考えはありますか。

ホセ ドミンゲス: そうですね、ジャッキー。これらのツールを見ると、隠れたコストがあるかもしれないという話ですが、使用しているツールのユーザーあたりのコストだけではありません。

そのため、この障壁を克服する方法として、ツールの導入前にROI分析を行うことが挙げられます。自動化の潜在的なコストと、現在の手動テストのコストを比較検討するのです。ここで言うコストとは、ハードウェア、ソフトウェア、トレーニング、給与などのことではありません。最も重要なのは、欠陥のあるコードをリリースすることによって発生するコストです。エンドユーザーが製品で遭遇する大きなバグは、自動化ツールに支払う費用よりも、ずっと大きな影響を与えるかもしれません。

ジョン レイノルズ: そうですね。RanorexのWebサイトからダウンロードできる無料のROI計算機テンプレートがあります。このテンプレートでは、チームの規模や専門知識、手動で行っているテストの数、手動でテストを行う場合のコストと自動化する場合のコストなどの変数が考慮されます。数字を入力することで、手動テストの最初の実行と、その後のサイクルにかかる時間と人件費の合計を計算してくれます。

ROIの目安として、Ranorexの顧客の80%以上が、テスト自動化の導入後に生産性が20~40%向上したと報告しています。

障壁その2:チーム内に自動化の専門家がいない

ジャッキー キング:  UIテスト自動化の障壁に関するアンケートでは、2番目に「自動化の専門家がチームにいない」という結果が出ていますね。

サイモン ナイト: これは、ある意味共通の問題だと思います。以前に提案した「テスト自動化のチャンピオンをチームに置く」という話に少し戻ります。このチャンピオンは、フルタイムのメンバーの場合もあれば、コンサルタントや何らかの形の契約者の場合もあります。ここが重要なのですが、チャンピオンは必ずしも、テスト自動化に関して「なんでもござれ」のロックスターのようなアーキテクトである必要はありません。Ranorexのようなツールを使って比較的ローコード/ノーコードのアプローチを取っている場合は特にそうです。しかし、プロジェクトに十分な情熱と熱意を持ち、完成まで推進できる人、そして技術的な観点から十分なスキルを持つ人である必要があります。

ジョン レイノルズ: そして、ローコードやノーコードの機能を備えたツールは、チームが自動化スキルを習得するための足がかりになるということもわかっています。そのため、最初にローコードまたはノーコードのセットアップを使用してテストを設定し、それらを微調整できます。もしツールでコードを使ったテストもできるなら、テスターはコード化された自動テストのやり方も学び始めるでしょう。

障壁その3:自動化するテストの数

ジャッキー キング:アンケートで明らかになった 3 番目の障壁は、自動化すべきテストの数が多過ぎるということです。

ホセ ドミンゲス: ここで私がお勧めするのは、小さく始めて、それを反復することです。通常、すべてを自動テストにして、すぐに100% にしようという野心が見られますが、それは簡単ではありませんし、常に可能であるとは限りませんし、チームによってはそのような野心を持つべきでないとさえ言えます。その代わりに、最も繰り返されるテストまたは重要な機能のテストに焦点を合わせましょう。小さなリスク分析を行って、重要なケースの優先順位を決め、それを出発点として自動化を試みることもできます。

もう 1 つの一般的なアプローチは、スモークテストを自動化したり、より長いシナリオ ベースのテストに焦点を当てることです。これらのテストは欠陥を見つけるために多くの価値があるからです。

障壁その4:テスト自動化に十分な時間が取れない

ジャッキー キング: サイモン、このアンケートで報告された 4 番目の障壁は、開発サイクルの中でUIテストの自動化のための十分な時間がないことです。

サイモン ナイト: 時間が足りない? そんなことないですよ。誰が考えたんでしょうね?
でも、まじめな話、時間は常に課題ですからね。難しいものです。テストチーム (私たち自身のテストチームでさえも) の共通の懸念は、そのテストが手動であれ自動であれ、自分たちがやりたい、行う必要のあるすべてのテストを実行するのに十分な時間がない、というものです。これは、アジャイルや何らかのリーン開発アプローチを実践しているチームにも言えることですし、ウォーターフォールアプローチにも同様に言えることだと思います。事実、テストに終わりはありません。昔から言われているように、「バグの存在を証明することはできても、バグの不在を証明することはできない」ということです。この証明は、どれだけテストを行っても不可能です。

特に自動化については、実際にテストするUIができるまで、UIに焦点を合わせたテスト自動化の作成を開始できないという課題があります。

多くのチームがDevOpsと継続的デプロイについて話し合っている一方で、私たちが実際に目にするのは、多くのチームが一連の小さなウォーターフォールサイクルのようなスプリントを実行していることです。たとえば、あなたのチームが2週間のスプリントで作業している場合、チームの他のメンバーが新機能に取り組んでいるのと同時に、前回の開発サイクルから繰り返す予定のテストを自動化することで、この問題に対処できます。そして、現在のサイクルでリリースされた新機能の UI テストは、少なくとも最初のうちは、常に手動で行うことができます。

障壁その5:既存の自動化の不安定さまたは信頼性の低さ

ジャッキー キング: ジョン、5つ目の障壁についてお聞きします。「既存の自動化の不安定さまたは信頼性の低さ」です。

ジョン レイノルズ:テストが不安定であったり信頼性が低かったりすると、自動化に移行しようとするときに、最初からうまくいかない可能性があります。そのようなテストは、自動化プロジェクトを開始したときにテストに対するチームの信頼を低下させます。テスターは、テスト結果を無視するようになるかもしれませんし、自動化の実行を完全に止めてしまうかもしれません。

そこで、テストを作成するときに、最初からテストをより安定したものにするためにできることがいくつかあります。1 つ目は、UIに小さな変更があった場合でも動作し続ける、インテリジェントなツール (たとえばRanorexなど) を使用することです。しかし、あなたが使っているツールが何であれ、テストが小さく、そしてモジュール化されていれば、テストの信頼性が高くなり、デバッグが容易になります。

依存関係をできる限り排除するようにしてください。つまり、あるテストが別のテストの正常な完了に依存してはなりません。各テストには、テストデータの作成など、テスト実行前にシステムを準備するために必要なセットアップ手順を必ず含めてください。また、各テストでは、実行後にシステムをクリーンアップするための「ティアダウン」も実行する必要があります。

そして、必ずテストをテストしてください!  回帰スイートやテスト対象の機能分野に追加する前に、テストを複数回実行してください。また、さまざまな順序で実行することで、アプリケーションに隠れた依存関係がないことを確認できます。

ジャッキー キング: サイモン、ジョン、ホセ、今日は、手動テストからテスト自動化への移行方法について話してくれてありがとう。聞いてくださったすべてのリスナーにも感謝します。今後のエピソードを聞き逃さないよう、ぜひ我々のポッドキャストのサブスクリプションを登録してください。

もし、あなたのチームが時間とコストを節約し、品質を向上させる反復可能なテストを作りたいと考えているなら、自動テストがその答えです。

(この記事は、開発元 Ranorex 社 Blog 「How to Transition from Manual to Automated Testing: Idera DevOps Tools Podcast Episode 2.1」2022年1月20日の翻訳記事です。)