9割が失敗するソフトウェアテスト自動化の現状

膨らむコストを削減する自動テスト

ソフトウェアテストは、開発したソフトウェアが正しく動くのか、ユーザーが満足する品質を満たしているのか確認し、不具合の発生リスクを減らすための工程です。計画された仕様書どおりにつくられているのか確認するのはもちろん、ユーザーのあらゆる使用パターンや条件を把握し、品質基準を設けて、基準をクリアするまで何度もくり返します。⁠品質には問題ない」⁠市場にリリースしても不具合は出ない」という状態にすることがテストです。

当然、多くのパターンをくり返し確認するので、テストの工数は大きくなります。一般的にテストは、開発工程全体の約45%のコストを占めています。さらに、テストで発見された不具合や問題への対応が発生することで、テスト工数はさらに膨らむ傾向にあります。

この膨らんでいくテスト工数に対して、現場ではコスト削減の圧力が高まっています。働き方改革やコロナ禍での変化により、現在のテスト現場では、⁠コストを減らしつつ、品質を落とさない」ということが求められているのです。

これを解決できるのが自動テストです。くり返しおこなう必要があるテスト手順や、基準を満たしているかの判定について、ツールやプログラムで自動化することによって、テストにかかる工数を削減します。エンジニアの手動による工数が削減できるので、テストエンジニアは人間の創造性を必要とするテストに集中でき、さらなる品質アップも目指すことができます。

なぜ自動テストは失敗するのか

しかし、テスト現場では「9割の自動テストが失敗する」と言われています。なぜ自動テストは失敗してしまうのでしょうか。いくつもの要因がありますが、ここでは以下の2つを紹介したいと思います。

  • 「自動で動いた」ということだけで満足してしまう
  • そもそも自動テストの正しい知識・ノウハウが無かった

自動テストでは、ツールやプログラムでテスト手順や基準判定を自動でおこないます。つまり、テストのために小さなプログラムを新たに開発するようなイメージでしょう。テスト現場では、開発側ほどプログラム作成のノウハウがない場合もあり、多くの現場で自動でテストができたことだけで満足してしまい、自動テストの本当の目的を見失いがちです。

また、自動テストについては、書籍やWebでも「○○ツールによる自動化」などの限定的な内容が目立ちます。新たに自動テストを始めようとしたときに、特定のツールに無理に合わせて導入してしまったことにより、現場に合わない自動テストとなってしまって、失敗してしまうことが多くあります。

さらに、⁠プログラムでテストを自動化する」というイメージが先行してしまい、担当者や現場の上司ごとに自動テストの目的・内容を勝手にイメージしてしまっていることもあります。システム開発の場合、お客さん側にも勝手なイメージがある場合があり、その齟齬によって問題が発生してしまったり、余計なコストがかかってしまうケースもあります。

正しい自動テストのノウハウを身につける

自動テストを成功させるためには、正しい知識・ノウハウを知ることが大切です。そのうえで、現場によって異なる状況に合わせて、⁠本当にコスト削減ができるのか」という最大の目的を達成できるように設計・実施することが必要です。

本書ソフトウェアテスト自動化の教科書では、テスト現場で自動テストを担当する現役エンジニアである著者が、数々の失敗から試行錯誤をくり返してつくりあげた「自動テストの4つのプロセス」を伝授します。基本的なソフトウェアテストの知識はもちろん、自動テストの目的や方法をきちんと押さえつつ、⁠現場の失敗例」を随所に交えて、あらゆる現場に対応するための考え方もまとめました。本書にある考え方を身につけ、現場での実践をくり返すことで自動テストの経験値を積み、⁠本当のコスト削減」⁠その先にある品質向上」を目指しましょう。