知識と経験が成功への両輪に! テスト自動化に必要な3つの技術とは 【自動テストの罠】

最終更新日時:2022.02.28 (公開日:2021.12.13)
知識と経験が成功への両輪に! テスト自動化に必要な3つの技術とは 【自動テストの罠】

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

前回の記事では、テスト自動化の前提となる「正しい理解と運用方法」について解説しました。今回は、自動テストを成功させるために必要な3つの技術「開発技術」「テスト技術」「自動化の技術」について、詳しく紹介します。

  • 自動テストツールであっても、スクリプト作成は必須条件
  • 幅広い知識と経験に基づくテストマネジメントが、自動化成功へ導く
  • 自動テストの運用経験が増えるほど、自動化の技術の向上につながる

自動テストツールであっても、スクリプト作成は必須条件

「開発技術」「テスト技術」「自動化の技術」の3つは、どれか1つが欠けているだけでもテスト自動化は成功しません。いずれの技術も、バランスよく身に付けることが大切になります。そして、テスト自動化を実施しようとするときに、まず必要になるのが「開発技術」です。自動テストの実施では、自動テストツールを意図した通りに動かすためのスクリプトやシナリオを作成します。開発技術は、そのスクリプト作成に必要で、言い換えるとプログラミング技術ということになります。

自動テストツールのスクリプト作成は、プログラミング言語を使用するため、その習得は必須条件です。また、自動化するテストの内容によって使用する自動テストツールが異なり、ツールによって求められるプログラミング言語も異なります。さらに、スクリプト作成で使うプログラム言語は、「VBA」や「Java」「JavaScript」といった代表的なものだけでなく、ツール独自のものなどもあります。ただし、すべての言語を習得する必要はありません。何か1つの自動テストツールの使い方を覚えておけば、自動テストで実行する動作自体には大きな違いはないため、言語が異なる他のツールを使う場合でも、プログラムの書き換え自体はそれほど難しい作業ではありません。

ノーコード/ローコードでシナリオを作成する自動化ツールもあります。その場合プログラム技術は使用しませんが、ループや変数、分岐などのプログラム知識は必要です。自分のスキルで使用できる自動化ツールを選択するのではなく、必要な自動化ツールが選択できるよう、どのツールでも使いこなせるスキルを持っていたほうが自動化ツールの選択の幅が広がり自動化できる範囲が広がるため自動テストの成功の確率が上がります。

幅広い知識と経験に基づくテストマネジメントが、自動化成功へ導く

テスト自動化を成功させるための3つの技術の中でも、最も大切になるのが「テスト技術」です。一口にテスト技術といっても、下記の6項目に細分化することができます。

  • 必要なテストケースを作成する技術
  • 必要なテストを作る技術
  • テスト技法の知識
  • テスト実施の技術
  • 評価対象の知識
  • テストマネジメントの知識

中でも、テスト自動化成功の鍵になるのが「テストマネジメントの知識」です。テストマネジメントには、テストを実施するためのリソースや時間、進捗の管理に加えて、開発チームの情報交換、状況報告、品質の把握、テスト計画(工数、人員数、リスク、テストの目的、ゴール、進捗報告方法、テスト項目の選定)策定など、多岐にわたります。

テスト自動化では、さまざまな不測の事態が起こります。例えばテストのリソースは、他のプロジェクトと共有されることがよくあります。そのため、テスト人員の不足に対処できるように、常に気を配っておく必要があるでしょう。また、そうした不測の事態が起きた場合、チームのどの範囲に、どのような方法で、どこまで内容を伝えるのか、といったことまで迅速に判断して、タイムリーに情報を共有することも大切です。情報が多すぎると要点がぼやけてしまい、少なければ品質への影響が測れなくなってしまう可能性があります。

さらに、効率的にテストを実施するためには、テストチーム内はもちろん、システム設計者やソフトウエア開発者とも常に情報共有できるよう意識しなければいけません。そして、プロジェクト全体を見ながら、テスト期間や実施回数、どの程度コスト削減・テストの効率化できるのかを状況に応じて判断することで、テスト自動化成功への道筋ができるのです。

自動テストで最も重要なことは、自動テストの導入により削減した工数を有効活用し、品質を上げていくことです。プロジェクトが抱える問題を把握し、余力が生まれた工数を有効活用する。これも自動テストに必要なテストマネジメントスキルといえます。

image2-2.jpeg

自動テストの運用経験が増えるほど、自動化の技術の向上につながる

開発技術とテスト技術は、テストエンジニアに共通して必要な技術といえます。その上で、テスト自動化を成功させるための最後のパズルのピースが「自動化の技術」。これを習得することで、テスト自動化の成功に手が届くようになります。そして自動化の技術も、以下の6項目に分類することができます。

  • 自動化すべきテストの見極め
  • メンテナンス構造の構築
  • 自動化のリスクを把握し回避する技術
  • 自動化の設計手法
  • 自動化の設計プロセスの理解
  • 自動化で発生する問題の解決力

これらの項目は、自動テストに特化したもので、端的に表すと「どこを効率化すれば良いのか」「それを実施するためにどのツールを使えばよいのか」といったことを見極める力です。この判断を誤ると、自動テストが途中で止まって、メンテナンスが増えてしまうため工数の削減につながりません。

テスト自動化では、回帰テストを何回実施した場合にその程度の工数削減ができるのか、といった自動化の効果を、検討段階で正確に見極めておく必要があります。第1回でもお伝えした通り、テスト自動化の目的は「工数の削減・テストの効率化」です。そのためには、まず計画段階で全体のプロセスを把握しておかなければいけません。

自動化の技術は、実際に自動テストを運用することで身に付けることができます。それは、繰り返し実施する必要があるテストが何かを把握し、それを自動化したときに初めて多くのことに気が付くことができるからです。また、仕様変更によるスクリプトの修正に関しても、どのように修正すれば工数を削減できるのかといったことなどは、自動テストの運用を重ねなければわかりません。

今回は、自動テストの成功に必要な3つの技術を紹介しました。それぞれ、身に付けるべきものが多いうえ、知識と経験の両方が必要とされ、ハードルが高いと感じるかもしれません。しかし、テスト自動化に限らず、技術はトライ&エラーを繰り返すことで身に付くもの。工数削減・テストの効率化というテスト自動化の根幹の目的さえ見失わなければ、大きな失敗をすることはありません。そして、地道に実践を重ねることによって、技術は着実に磨かれます。そうして身に付けた技術は、自動テストのエンジニアにとって大きな武器になるはずです。

今回話を伺った方

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

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

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

t-dash_image.PNG

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

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

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

執筆者:Qbook編集部

ライター

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