費用対効果を上げるための戦略とは? 「成功する自動化導入」のコツ

最終更新日時:2022.03.02 (公開日:2022.03.02)
費用対効果を上げるための戦略とは? 「成功する自動化導入」のコツ
もくじ

ソフトウェアテストの自動化を導入するためのポイントを、いくつかの回に分けて解説してきました。

第1回では、自動化導入の基盤となる「導入前にやっておきたいチェックポイント」と題して、テストを自動化する前に事前にやっておくべき4つのポイントを解説しました。
第2回では、自動化には欠かせない「ツールの選び方」を解説しました。
第3回では、失敗できない人のための「フィージビリティスタディ(実現可能性の調査)」について解説しました。

第1回から第3回までの記事では、テスト自動化を導入する準備におけるポイントをご紹介しました。
今回は、総仕上げとして、前回までの解説コンテンツで示した注意すべき点をおさらいしつつ、「テスト自動化導入の戦略」について紐解いていきましょう。

自動化導入に奮闘したエンジニアが解説する「成功する自動化導入」のコツ

テスト自動化のマイナス要素を理解し、費用対効果を得られる計画を立てる

昨今、テストの自動化に着手される方は大いに増えています。
しかしながら、導入したは良いものの、運用の費用や工数が想定以上に大幅にかかってしまい、こんなはずではなかったと感じられている方が多いようです。
では、なぜ自動化により期待した費用対効果を得られず、また工数も大幅にかかる悪循環が生まれてしまうのでしょうか。

その理由は、テストの自動化に対するメリットにのみ着目して自動化導入を押し進めたからです。
違うと否定される方もいらっしゃるかもしれませんが、自動化導入後の良いイメージが先行し、リスクへの対応策が十分に練られていなかったことが要因となっているのではないでしょうか。

皆さんは、自動化の成功と失敗をどのように判断されますか?

私が考える自動化導入の成功とは、結果的に満足できる費用対効果を得られることであり、逆に失敗とは、工数に見合う費用対効果が得られないことだと考えます。
テストの自動化にはさまざまなメリットがありますが、一方で、コストもある程度必要になります。このコストを想定しておかないと、せっかくテスト自動化を導入しても、思ったよりも効果が得られないという結果になってしまいます。

テスト自動化にかかるコストを理解し、予算を立て、どうやって費用対効果を得るのか具体的に計画しましょう。

初期コストがかかるため、導入前に十分な戦略を立てる

自動化による費用対効果は実施回数に比例するため、初期段階では効果を感じられないことが多いです。そのため、戦略を立てないまま、自動化を押し進めることは無謀と言えるでしょう。テスト自動化を導入する際にかかる初期コストは想像以上に高額となることがあるため、自動化を適用することが本当に妥当か否かをきちんと判定すべきです。

まず、自動化にかかるコストについて整理してみましょう(図1)。大きく分けて、2種類に分類することができます。

220301-img1.png

図1 : テストの自動化を導入する際にかかる初期コスト

無償の自動化ツールを導入するという選択肢もありますが、有償ツールに比べると機能が少ないために、開発工数がかさむ傾向があります(第2回「ツールの選び方」で解説)。いずれを選択されても初期費用はかかるわけですから、これら費用や開発工数の予算を立てることは必要不可欠であり、上層部に対しコストリスクを共有することは必要な工程です。

コストだけがかかり、メリットを得られないまま導入中断となってしまわないために、あとで後悔しないために、導入前に十分な協議を行い、費用対効果を得られるように綿密な戦略を立てましょう。

手動テストよりも手間がかかる作業が多いことを考慮して、慎重に計画する

自動化には夢があります。しかし、戦略を立てずに押し進めると失敗してしまいます。

自動テストは、手動テストよりも作業フェーズが多く、工数が嵩む傾向にあります(図2)。手動テストに比べ、導入コストがかかります。それにもかかわらず、一般的に、テストの自動化導入後の良いイメージばかりが先行して、テストの自動化導入に対する作業工程がイメージできていないケースが多いように感じます。

単純に工数が増えると言われてもイメージしにくいでしょうから、作業の差異を比較してみましょう(図2)。

220301-img2.png

図2 : 手動テストと自動テストの作業差異

図2にまとめた通り、作業フェーズは、手動テストよりも自動テストの方が多いことが分かります。

自動テストは細かな定義が必要です。一方で、定義したことしかできず、手動テストよりもより多くの手間がかかります。例えば、テスト設計を比較した場合、自動化用のテストケースの方がより詳細に手順や結果を記載する必要があります。手動テストであれば、「任意な値を入力」と曖昧な定義が許されますが、自動テストでは入力する値1つ1つを細かく定義する必要があります。

手動テストであれば、実施者が目視で確認しながら操作を行うことができ、一度で意図した操作を行えますが、自動テストではちょっとしたタイミングによって操作にズレが生じ、意図しない操作となりNGとなることがあります。そのような場合、待機時間を追加したり、画面遷移やデータ表示を待つようにしたりするなどのチューニングが必要です。デバックやチューニングの効果が正しいことを確認するためには、何度も繰り返し実行して同じ操作となることを確認(再実行)する必要があります。

このように、一般的にテスト自動化の導入・そして運用には、手動テスト以上の工数がかかります。したがって、自動化することで費用対効果を十分に得られるようにするには、さまざまな事前検討や準備が重要になります。

テスト自動化が目的になってしまうと無謀な計画となってしまう可能性があります。テスト自動化は目的ではなく、あくまで手段です。テスト自動化による効果が得られるように費用対効果を考えて、1つ1つ計画しましょう。

予算を確保したら、費用対効果を得るための目標を設定する

導入当初はコストがかかるため、十分な予算を確保されることをお勧めいたしますが、これはあくまで初期投資です。

初期投資をするわけですから、その効果を得なければなりません。漠然と 「効率化したい!」「自動化するぞ!」 と定性的なモチベーション的目標を掲げるのではなく、初期段階から定量的で現実的な短期目標と長期目標をそれぞれ定めましょう。

「初期コスト」と「手動テストと自動テストの作業差異」を十分に理解し、自動化のポイントを押さえて、自動化効果が得られる期日目標を定めてください。
もし、現実とのギャップで進捗が思うようにいかず、コストばかりがかかり、良い費用対効果が得られていない場合、戦略を見直しましょう。テストケースの選び方、実装の仕方等に対する問題点を洗い出しましょう。良い費用対効果が得られる前に衰退してしまっては勿体ないですから、問題点を見つけ出し、改善して、テストの自動化のやり方を見直しながら、目標達成を目指してください。

期待以上の費用対効果を得るためには、戦略が必要不可欠

テストの自動化導入を何も考えずに推し進めてしまった場合、費用も工数も嵩んでしまうことは説明したとおりです。
戦略は必要不可欠であるため、実際に私が実践した5つの戦略をご紹介いたします。

戦略①. 費用対効果を得られるテストケースから自動化していく
戦略②. 開発言語は1つに絞る
戦略③. 開発ルールを策定する
戦略④. 共通スクリプトを活用する
戦略⑤. 開発スキルを身に着けよう

戦略①. 費用対効果を得られるテストケースから自動化していく

自動化することで費用対効果を得られないテストケースは自動化すべきではありません(第3回「フィージビリティスタディ」で解説)。先の図2に示したとおり、作業フェーズが手動テストに比べて多いこともあるため、費用対効果を得るためには自動化に向いているテストケースか否かを見極め、自動化に向いているテストケースのみを選択して、可能な限り工数を削減させることがとても重要です。

何の対策もなく端から順々に自動化を導入してしまった場合、自動化に全く向かないコストリスクの高いテストケースに直面し、多大な工数をかけたにも関わらず、それでも実装できないといった結果に陥る可能性があります。費用や工数だけがかかって、何のメリットも得られないといった結果は本末転倒ですから、コストリスクを考慮する必然性を感じずにはいられません。全てのテストケースを対象とできる場合も実際にありますが、自動化に適さないテストケースは一旦除外しましょう。

まずは自動化しやすいテストケース、費用対効果を得やすいケースからの着手を推奨いたします。いかに開発工数を短縮できるかがとても重要です。例えば、今後仕様変更はないであろう機能、いわゆる基本機能の中でも複雑なスクリプトを書かなくてもよい単純なテストケースから自動化を導入されることをおすすめしています。

例. ツール機能のみで自動化可能なテストケース
実装が容易なテストケースは工数がかからないので、費用対効果が高く、おすすめです。

例. ユーザーが良く使う機能のテストケース
回避テスト等、テストを実行できる回数が多いテストケースは費用対効果が高いため、おすすめです。
逆に繰り返し実行しないであろうテストケースは自動化をおすすめできません。

例. データ駆動型のテストケース
多少実装が困難でも、自動化による費用対効果が高いため、おすすめです。

例. テストケースのデータ作成
テストデータを大量に作成する場合に、おすすめです。

戦略②. 開発言語を1つに絞る

開発言語は1つに絞りましょう(第1回「導入前にやっておきたいチェックポイント」で解説)。
開発言語が増えると、開発スキルが複数必須となり、人材探しにも苦労してしまいます。
メンテナンスも困難になるでしょうから、おすすめできません。

社内で人材確保しやすい言語がおすすめですが、初心者の方が勉強するなら個人的にはPythonがおすすめです。
開発言語を決めたのであれば、変えないほうがよいでしょう。言語を変えると、メンテナンスの負担が高まり、工数超過、人材確保が困難となる等、様々な問題がのちに多発することになり得ます。

戦略③. 開発ルールを策定する

自動化ツールの使い方をメンバー間で共有し、統一しましょう(第1回「導入前にやっておきたいチェックポイント」で解説)。

テストスイート、テストケース、共通スクリプトに対する概念や命名基準等、ずっと同じメンバーで運用できるとは限りません。いつだれが抜けても同様の運用が可能となる体制づくりが必要不可欠です。それは自動化実装したスクリプトをメンテナンスする上でもとても重要です。誰が開発しても同じように書かれていれば、修正も容易だからです。

戦略④. 共通スクリプトを活用する

開発工数を短縮できるかがとても重要です。頻繁に使用するスクリプトは、共通スクリプトとしてグループ内で共有してフル活用していきましょう(第1回「導入前にやっておきたいチェックポイント」で解説)。

自動化導入にはスクリプトの作成が想定よりもかかってしまうなど、工数超過の懸念があります。工数が超過した場合には費用対効果を上げにくくなります。
その対策として、共通スクリプトの作成をおすすめします。初期投資としての工数超過への懸念は消えませんが、適切に行うことができれば、大きな利益となって帰ってくることが期待できます。共通スクリプトを作成したら、実装メンバーで共有しましょう。

戦略⑤. 開発スキルを身に着けよう

自動化ツールの有償版であっても複雑な処理をさせようと思ったら、開発スキルは必要不可欠です。日々少しずつで構いません。開発スキルを身に着けることをおすすめしたいです。

「こんなの当たり前でしょう!」 と、開発スキルを持っている方は思われるはずです。
もちろん、開発経験のある方々であれば当たり前の事ですが、世の中のテスター全員が開発スキルを持っているとは限らないわけです。自動化ツールの有償版であれば、基本的には開発スキルを必要としません。開発スキルがなくても導入可能であるため、開発スキルが必要と感じていない方もいらっしゃると思います。ですが、複雑な処理を実装するには開発スキルが必要です。そのため、あえて明示的に書かせていただきました。

私は前職でテスト自動化の導入を担いましたが、医療画像システムに対するテスト自動化には本当に苦労しました。実現にあたり、開発スキルが必要不可欠だったからです。前述のとおり、テスト部隊に開発のスペシャリストはいません。開発業務の経験がないに等しいメンバーばかりですから、勉強会を開催してスキル向上を目指しました。

現在は、無料で学習できる環境が多く存在します。開発スキルを身に着けるには自分でコードを書いてみるのが近道です。個人的には、PCでもモバイル端末でも学習できるオンラインプログラミング学習サービスの「Progate」をおすすめしたいです。「初心者でも、独学できるレッスン」 をコンセプトとしていますので、ぜひ一度お試しください。

おわりに

テストの自動化において、費用対効果を得るには戦略が必要不可欠です。すべてのテストケースを自動化しようとせず、まずは費用対効果を得られるテストケースのみを選択することが最大のポイントと言えます。自動化したテストケースがメンテナンスすることなく、何度も実行できれば、費用対効果が十分に得られるはずです。その可能性が十分に高いテストケースから自動化してみてください。

今回は、「費用対効果を上げるための戦略」について解説いたしました。
全4回にわたり、『テストの自動化導入を成功させるポイント』を解説しましたが、いかがだったでしょうか。

テストの自動化には夢があります。
導入したいと思われている方は、まず運用基盤の課題を明確化してください。そして、より良いツールを選定して、テスト自動化導入のためのフィージビリティスタディを実施してみてください。

この記事シリーズを読んだ皆さんは、テスト自動化におけるリスクを十分に把握したと同時に、事前にとるべき対策、回避策を把握できたのではないでしょうか。テストの自動化成功までには壁があるでしょう。しかし、壁を登った先に夢が大きく広がります。チャレンジされる皆さんが壁を乗り越え、高い費用対効果を得るとともに、バグの早期発見と発見率の向上、解決に貢献できるよう願っています。本記事が製品に対する品質レベルの向上に少しでも貢献できたら幸いです。

執筆者:宮北 裕子

バルテス株式会社 Webシステム品質事業部

医用システム開発会社にて、検証部門や品質管理部門の立ち上げや検証ルールの策定、テスト自動化の担当など多岐に渡るプロジェクトに13年間携わった後、バルテスに入社。バルテス入社後もテスト自動化に関与し、パフォーマンス検証や負荷検証を実施した実績がある。取得資格はJSTQB Advanced Level(テストアナリスト)など。JSTQB ALテスト自動化エンジニアの日本語翻訳WGメンバーでもある。...