
テスト自動化
テスト自動化とは、人の手によって行われるソフトウェアテストの全体あるいは一部を自動化することを意味します。
そもそもソフトウェアテストは、不具合を見つけることが目的です。
そのため、テストを繰り返し行うことも増えています。
テスト自動化によって、テストにかかる人的負担を減らし、将来的なコストの削減が期待できます。
テストといっても、その中にはさまざまなプロセスが含まれます。
ソフトウェアテスト技術者資格認定組織である「ISTQB(国際ソフトウェアテスト資格認定委員会)/JSTQB(日本ソフトウェアテスト技術者資格認定組織)」の定義によると、テストプロセスは以下の5つの要素で構成されています。
テストプロセス
・テスト計画作業とコントロール
・テストの分析と設計
・テストの実装と実行
・終了基準の評価とレポート
・終了作業
1. テスト自動化が求められる背景

テスト自動化はこれまで「難しい」「ハードルが高い」と思われてきました。
その理由は、ノウハウやスキルの不足に加え、専門性の高い人材が不足している点だと考えられます。
近年は市場のスピードや移り変わりが激しく、開発中に市場のニーズが変わってしまうことも珍しくありません。
そのため、現在は素早く効率の良いソフトウェア開発が求められています。
テスト自動化は、短期間で高品質なソフトウェアを低コストで開発したいというニーズが高まるにつれ、大きな注目を集めるようになっています。
2. テスト自動化の効果と導入するメリット

1.不具合を早い段階で発見できる
テスト自動化によって、時間を問わず繰り返し実行できるような環境づくりが可能です。結果的に、人が行っていたときよりも短い時間で不具合を発見できます。
不具合を早い段階で発見できることで、業務上のムダが無くなり、開発にかかる時間を効率化できます。
2.費用対効果に優れている
人の手によって行われる手動テストは、莫大な労力とコストがかかります。かといって人を減らせばテストが不十分になってしまうため、人員は減らせません。
テスト自動化は、始めこそ初期費用がかかるものの、一定の実行回数を超えてしまえばコストは人が行っていたときよりも削減できます。
中長期的なコスト削減を考えている場合は、テスト自動化を導入したほうがよいでしょう。
3.人材不足の解消に繋がる
手動テストの場合は、人員不足を考慮し、通常テストを行う人員に加え、予備の人員も確保しておく必要があります。しかし、テスト自動化には過度な人員確保が必要ありません。
時間を問わずに実行できるため、終業後、深夜、休業日などの営業時間外でも実行可能です。
4.ヒューマンエラーを回避できる
手動テストでは、ヒューマンエラーが起こるケースもあります。しかし、テスト自動化で正誤を判断するのはシステムです。
素早くテストできるだけではなく、ヒューマンエラーも回避できます。
3. テスト自動化を導入する注意点

テスト自動化には多くのメリットがあります。
しかし、いくつかの注意点もあります。
テスト自動化によるメリットを十分に活かすためにも、導入前に注意点をしっかり把握しておくことが大切です。
1.手動テストに比べて初期段階で多額の費用がかかる
テスト自動化は、テストコードを作成するコストをはじめ、ツールを使いこなすための学習にかかる費用など、手動テストに比べて多くの初期コストが発生します。自動化する対象がどのくらい繰り返して実行されるテストなのか、テスト自動化にどのような効果を求めるかなど、費用対効果を総合的に判断して導入する必要があります。
2.長期的な保守運用が必要
テスト自動化を導入し、すぐには効果を得られません。長い期間、繰り返し運用を続けることで、効果が得られます。
長期的に運用するためにも、保守とそのためのリソースが必要です。
導入後に関連する機能のアップデートがあったときは、テストコードの修正も必要になります。
3.自動テストには向き・不向きがある
テスト自動化には、向き・不向きがあります。
たとえば、ヒューマンエラーが起こりやすいテストや繰り返し実施しなければならないテストは、自動テスト向きです。
しかし、実施回数が少ないテストや手順が定まっていないテストには向いていません。
初期費用もかかるため、テスト自動化を導入する際は、この向き不向きの見極めが非常に重要です。
4.設計通りにしかテストできない
自動テストは、事前に設計したテストコードどおりのテストを行います。
テストコードに書かれていなければ、明らかな不具合と判断される内容でも検出できません。
起こりうる問題や不具合が予測される場合は、それを含めてテストコードを書く必要があります。
4. テスト自動化の導入方法

テスト自動化の導入方法と手順について解説します。
1.テスト自動化を導入する目的を明確にする
テスト自動化には多くのメリットがあります。しかし、導入するだけですべてのメリットが得られるとは限りません。多くのメリットを受けるためには、導入前に目的を明確にすることが大切です。
「コスト削減」「人員削減」「時間削減」「定期実行」「連続実行」など、目的に優先順位をつけて達成できるかどうかを検討しましょう。
2.テスト自動化をする範囲や対象を決定する
テスト自動化の目的が明確になったら、自動化する範囲や対象を決めます。すべてのテストを自動化できれば理想的ですが、先にご紹介したとおり自動化に向いていないケースもあるので見極めが大切です。
コスト削減が目的の場合は、コスト削減が見込める部分に注目して絞り込みを行います。
3.テスト自動化に必要なツールを選定する
自動化の目的・範囲・対象が決まったら、自動化に必要なツールを選定します。開発目的や対象に適用できるツールの中から、継続して運用できるものを選びます。
メンテナンスコストやランニングコストも考慮して選定しましょう。
5. テスト自動化の導入で失敗しないポイント
テスト自動化の導入には、かなりの初期費用がかかります。
失敗しないためにも、ポイントを押さえて検討しましょう。
1.テスト自動化を正しく理解し、適したツールを選ぶ
テスト自動化では、正しいツール選びができないケースがあります。
ツールの概要や使い方はインターネットで検索すれば多くの情報が出てきますが、テスト自動化そのものを深く知れる資料は多くありません。
そのため、テスト自動化について正しい知識が付いておらず、自社に合わないツールを誤って選んでしまうこともあります。
自動テストを正しく理解したい、自社に合ったものを素早く導入したいという場合は、専門書を読んだり専門家に相談したりするのもよいでしょう。
2.工数削減のために「実施する意味のあるテスト」を自動化する
テスト自動化の導入そのものが目的となってしまい、導入しようとしているプロジェクトでテスト自動化の効果が得られるかなどの事前調査・検討が足りていないため、その後の自動化がうまく進まない場合もあります。
自動化によってテストの工数が大幅に削減できることを期待する人は多いでしょう。
しかし、テスト自動化を導入しても、メンテナンス工数が多い場合や処理が止まったときに人による修正や確認が増えてしまえば、実際の工数は増えてしまうことになります。
事前の関係者の認識合わせが不十分なために、テスト自動化に対する過度な期待や成果が求められ、いざ自動化したものの成果が出せないケースも散見されます。
①似たようなテストを別々に自動化してしまう、②「念のため」とテストケースが無駄に増えるのは避けるべきでしょう。
実施する意味のあるテストを自動化し、メンテナンスや処理が止まったときの工数を含めて工数が大幅に削減できることが理想的です。
3.どのテストを自動化すべきかを見極める
先にご紹介したとおり、テスト自動化には、向き・不向きがあります。
ヒューマンエラーが起こりやすいテストや、繰り返し実施されるテストは、自動テスト向きです。
また、テスト自動化によって「品質が上がる」と勘違いされやすいのですが、そうではありません。
実際は、テスト自動化によってヒューマンエラーを起こさず、繰り返しテストできるので「デグレ(品質劣化)の確認」につながります。
テスト自動化は事前に予測できる「設計通り」にしかテストできません。
品質を上げるためのテストは、自動化せず手動テストのほうが向いているケースもあります。
テスト自動化を導入する際は、テストを自動化すべきかどうかの見極めが非常に重要です。
4.開発プロセスの中のテストという認識を持つ
「テスト自動化」というと、工数削減を目的にしたテストの『実行』の自動化にばかり目が行きがちですが、近年はアジャイル開発・DevOpsなどの開発プロセスのシフトレフト化も浸透し、テストが開発フェーズの早い時期から実行されたり、設計からテストまですべてのフェーズが繰り返し行われたりすることもあります。
テスト自動化を効果的に推進する上で、「テスト自動化をどのように上手くやるか」という目先の点に留まることなく、開発プロセス全体を効率的に回すためのフェーズの1つとして、テスト自動化を位置付けることが大切です。