何でも自動化は失敗のもと! 誤解をなくしテスト自動化を成功に導く方法を紹介【自動テストの罠】

最終更新日時:2021.11.01 (公開日:2021.11.01)
何でも自動化は失敗のもと! 誤解をなくしテスト自動化を成功に導く方法を紹介【自動テストの罠】

ソフトウェアの開発現場での自動テストは、正しく運用されれば1回のテストで最大30〜50%の工数削減が可能なすぐれもの。しかし、筆者がテスト自動化を始めて15年たった今でも、その運用が失敗する例は後を絶ちません。そこで、「自動化の罠」の第一回では自動テスト失敗の背景にある「テスト自動化は難しい」「自動化すればテストの工数は激減する」「テスト自動化で品質が向上する」という3つの大きな誤解を解消。テスト自動化を成功に導くための考え方や手順を解説します。

今回話を伺った方

image4.png
林 尚平(はやし しょうへい)

1979年生まれ、兵庫県出身。大学院卒業後、システムエンジニアとして業務系システムの開発に従事し、その後にテストエンジニアに転向し自動テストに出会う。10を超える自動化ツールを使いこなし、現場に最適な自動化内容や自動化ツールの提案、業務系/組み込み系問わず自動テストの導入提案をおこなうなど、テスト工数削減に悩む数々の現場で自動テストの導入、運用、支援などを行っている。主な著書『ソフトウェアテスト自動化の教科書〜現場の失敗から学ぶ設計プロセス』(技術評論社刊)。

テスト自動化に失敗するのには、理由がある

開発現場で自動テストを取り入れたいと考えてはいるものの、「テストの自動化は難しい」と敬遠されることがあります。これは過去に自動化に取り組み、失敗した経験のある方が陥りがちな誤解です。自動テストを活用するには、まず「なぜ失敗したのか」を正しく理解することが必要です。

導入失敗の理由の大多数は、テスト自動化に関する知識不足から、進め方やリスクを理解していないまま安易に自動テストを導入してしまうことです。その結果、やみくもにテストを自動化しようとして、作成したシナリオのメンテナンスなどでかえって手動の試験より工数が増え、相応の成果を上げることができずに失敗してしまうのです。

ほか、よくある失敗例は、自動化したプログラムが動いていることに満足して、本来の目的である「工数削減」や「テストの効率化」につながっていないケースです。これは特に初心者が陥りがちで、自動テストが難しいと考えるため、簡単なプログラムを動かすことだけに意識が向かい、自動で動いていることに満足してしまうのです。

さらに、自動テストツールを実装した経験が少ない人の場合、「取りあえず簡単に自動化できる試験を自動化しよう」と考えてしまい実行する価値のないテストを自動化してしまい、実行してしまうことで、ほとんど成果を上げることができないという例もよく見られます。「自動化しやすい試験=自動テストが有効な試験」ではありません。運用を想定した試験の自動化でなければ、作成したシナリオのメンテナンス効率が悪かったり、自動化しても効果が少ない試験になったりしてしまうのです。

img02.png

テスト自動化の成功には正しい知識とツール選びが重要

では、テスト自動化を失敗しないためには何が必要なのでしょうか。それは、やはりテスト自動化の正しい知識です。ツールの使い方だけではなく、自動化のプロセスやリスクを理解することが重要になります。そして、テストを始める前に「何のために」「どの試験を自動化するのか」を明確にすることが欠かせないのです。

ただ残念ながら、テスト自動化に関する正しい知識は、インターネットではほとんど得ることはできません。インターネットで自動化について検索しても自動テストツールの使い方に関する説明がほとんど。テスト自動化そのものについての幅広い解説は、ほとんどないといえます。そのため、「インターネットに使い方が載っていたという理由で、自動化したい試験に合っていないツールを無理やり使って失敗した」という、本末転倒なケースも見受けられるほどです。

自動テストを正しく導入し、成果を上げたいと思ったら、まず専門家に相談したり、広く専門書を読んだりして、テスト自動化に関する知識を幅広く身につけていただきたいです。拙書『ソフトウェアテスト自動化の教科書〜現場の失敗から学ぶ設計プロセス』(技術評論社刊)もおすすめです。

もちろん、テスト自動化では、ツール選びも重要です。多少使い方が難しくても、細かく設定できるツールの方が、汎用性があって良いツールと言えます。私の具体的なおすすめとしては、「Autoit」や「UiPath」が挙げられます。自動テストツールの中には、プログラミング技術を必要とせず、簡単に使うことができるものもありますが、そうしたツールは、簡単なことしか自動化できません。導入しても実施したい試験を自動化できないことが多く、使ったところで意味がない動作を繰り返すだけになってしまいます。

実施するべき試験を自動化してこそ工数削減ができる自動テスト

さらに、多くの人が陥りがちな誤解が「自動化でテストの工数が激減する」というものです。この誤解によって、自動化を導入しても結果としてメンテナンス工数が増えたり、処理が止まったりして人間による修正や確認を行うことで、かえって工数が増えてしまうことになります。工数の削減が自動化の狙いなので、こうした状況は自動化が失敗したということに他なりません。

重要なのは、「どのテストを自動化するか」という見極めです。適したテストを自動化すれば、著しい効果も期待できます。

例えば、データ駆動型テスト※では、大幅な工数削減につながった事例もあります。ある病院用に開発した医療事務のソフトウェアは、データベースに年齢や住所、医薬品といった多数の項目があり、それを元に請求金額を算出する仕様でした。それらの項目を組み合わせると、約1300パターンの確認をしなければいけません。実際に運用が始まると、新しい医薬品が追加されるなどデータベースが更新される度に試験をする必要があり、自動化前は1人月かかっていました。しかし、テスト自動化を導入したところ、準備と結果の確認だけになり、30分程度で終わるようになったのです。自動化するテストによっては、95%以上の工数削減も可能になります。必要な試験の工数削減が可能になってはじめて、「自動化が成功した」といえるのです。

※「データ駆動型テスト」......スプレッドシートや外部テーブルなど、データプール呼ばれる外部ファイルからデータを取り入れテストする手法。

自動化が必要な試験の見極めも担当者の重要なスキル

「自動化で品質が向上する」という誤解も、全ての試験を自動化できるという考えが原因になっています。テスト自動化は、まず前提として、"ソフトウェアの品質を上げるために行うものではない"と認識しておかなければいけません。

テストの自動化で実現できることは、"デグレ(品質劣化)の確認"です。それまで正常に動作していた機能に不具合が起きていないか確認するために、同じ動作を何度も繰り返すようなテストを自動化するのです。上記の医療事務のソフトウェアのように、1回試験を実施して問題がなかったものに何らかの変更が加わった際、新しい不具合が起きていないか確認するときに、自動化の力が発揮されます。人間は、全くミスをせずに何時間も同じ作業を繰り返すことは不可能ですが、自動化ツールなら、人間より格段に速く正確に、プログラム通りの操作を実行し続けることができます。

逆に、不具合を出すため(品質を上げるため)の試験は、自動化すべきではありません。1回だけ実施して不具合がないことを確認する試験は、手動で行うべきなのです。例えばランダム試験のように、人間が考えて怪しい箇所を調べるような試験は、手動で行う必要があります。自動テストは、作成したシナリオ通りにしか動かないため、シナリオ以外のところで起こる不具合を検出することはできないのです。

上記を念頭に置いてテスト全体を見渡してみると、実は自動化するべき試験はそれほど多くないということがわかるでしょう。その中で自動化すべき試験を見極めることも、自動化担当者の重要なスキルの一つです。そして、そのスキルは、知識と同時に経験を積み上げることで、磨かれていくのです。品質向上はテスト自動化により削減された工数で試験を実施することで実現できます。

img03.png

自動化前に上層部に現実的な効果を理解させる

自動化の担当者は、ここまでに解説した内容に加えて、もう一つ大切な仕事があります。それは、上司やプロジェクトリーダーなどの上層部に「テストの自動化によって工数が激減するわけではない」ということを理解してもらうことです。前述した通り、自動テストを誤解している人の多くは、自動化すればするほど効率化できると考えています。そのため、「自動化が成功しているにもかかわらず、思ったほど結果が出ていない」と思われてしまうのです。

それを防ぐため、担当者は事前にテスト自動化の導入による現実的な効果を説明しておく必要があります。しかし残念ながら、相手が実際に自動化を担当した人でもない限り、なかなかわかってもらえないことも多いのが実情です。効果が見込めないテストを自動化した場合の工数・コストの試算などのデータに基づいて説明を行い、自動テストが決して万能の魔法ではないことは、きちんと理解してもらうことが重要です。

とはいえ、テストの30〜50%の工数を削減できることは、ソフトウェア開発に大きな効果をもたらすはずです。上層部に限らず、テストチーム内でも自動テストの適切な運用と現実的な効果を把握しておくと、プロジェクト全体をより円滑に進めることにつながるでしょう。

PR
ローコードテスト自動化ツール T-DASH

t-dash_image.PNG

T-DASHはWebアプリケーションの動作確認・検証をコードを書かずカンタンに作成・実行できるテスト自動化ツールです。

初期設定からテストの実行まで、T-DASHのすべての機能でコードを書く必要はありません。そのため開発を担当していない非エンジニアの方でも手軽にご利用いただけます。

他のテストツールを導入している企業さま、まだ自動化ツールを試してみたことがない企業さまもこの機会にT-DASHにぜひ触れてみてください。

執筆者:Qbook編集部

ライター

バルテス株式会社 Qbook編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。