テスト自動化とは

テスト自動化とは

テスト自動化とは

テスト自動化とは、テストにまつわる作業の全体あるいは一部を自動化することを指します。一口にテストと言っても、そこにはさまざまなプロセスが含まれます。ソフトウェアテスト技術者資格認定組織である「ISTQB(国際ソフトウェアテスト資格認定委員会)/JSTQB(日本ソフトウェアテスト技術者資格認定組織)」の定義によると、テストプロセスは以下の5つの要素で構成されています。

テストプロセス

  1. テスト計画作業とコントロール
  2. テストの分析と設計
  3. テストの実装と実行
  4. 終了基準の評価とレポート
  5. 終了作業

テスト自動化とは、上記のテストプロセスうち「テスト実行」について、テストツールなどを用いて自動化することを指します。また、最近では「テスト実装」のプロセスにおいても、テスト仕様書から自動的にテストケースを生成して自動化する場合もあります。いずれにしても、今まで人手で行なっていた作業を自動化することで、省力化や、精度の向上、実施時間の短縮などを実現できます。

テスト自動化が注目される背景

テストの自動化が注目される背景には、開発プロセスの変化があります。従来はウォーターフォール型が中心でしたが、2000年頃から急速にアジャイル開発が普及しました。アジャイル開発とは、短い期間で開発サイクルを回す手法であり、この短い開発サイクルの中で、同時にテストも実施します。アジャイル開発を生み出したエンジニアの一人Kent Beck氏が考案した「TDD(Test Driven Development:テスト駆動開発)」は、単体テストの実施後にソフトウェア本体を実装する手法であり、これはテスト自動化を前提とした開発プロセスとなっています。

また、最近ではクラウドベースのサービスの普及に伴い「CI(Continuous Integration:継続的インテグレーション)/CD(Continuous Deployment:継続的デプロイメント)」といった開発手法が広く用いられています。こうしたCI/CDによる短いスパンでリリースを繰り返す開発手法では、自動化されたテストによるスモークテストや、リグレッションテストを行うことが必須となっており、ますますテスト自動化への需要が増しています。 さらに、AI(人工知能)をテストに活用する動きもあり、これまで人間でしか検証できなかった障害をAIにより自動的に検知することも可能になりつつあります。

テスト自動化への幻想と有効なポイント

テスト自動化により、テスト期間を短縮でき、さらに精度も上げられるため、非常に大きなメリットを得られます。しかしながら、テストを自動化する際は、そのための開発コストもかかりますし、継続的にその仕組みをメンテナンスするコストも必要になるため、コストとのトレードオフを常に念頭に置く必要があるでしょう。 例えば、自動化ツールの導入などによりコストが膨らむ場合や、一度だけしか実施しないテストなど、自動化しないほうが良いケースもあります。 また、当然のことですが、自動化するだけではテストの品質は上がらないため、テスト自体の品質やカバレッジについては別途考える必要があります。

自動化に向いているテスト

このように、開発プロセスの変化や、CI/CDといった手法の普及により、今日では開発現場でテストの自動化が一般的になりつつあり、非常に多くのプロジェクトで実施されています。

次回は、テスト自動化ツールについてお伝えいたします。

石黒 邦宏
株式会社デジタルハーツ CTO
株式会社SRA、ネットワーク情報サービス株式会社を経て、株式会社デジタル・マジック・ラボで UNIX ソフトウェアの開発、インターネット経路制御の運用に関わり、オープンソースウェアで経路制御を実現する GNU「Zebra」を開発。1999 年 10 月、米国にて IP Infusion を創業。2015年株式会社アプリックスのCTOに就任しBeaconの技術開発・サービス開発に従事。2018年デジタルハーツにCTOとして参画。
テスト自動化に関するお問い合わせ
各種サービスについて、お気軽にご連絡ください。
03-3379-2053
営業時間:平日9:30~18:30
お問い合わせ