今、あらためて考えるテスト自動化【第1回】:KeyConductors
開発プロジェクトを進める上で、避けて通れないのがテストフェーズだ。だが、忙しくそこまで手が回らないというケースもあるだろう。そこで、テストの自動化について説明したい。
テスト自動化の概要
当社の渡會による連載“今さら聞けないシステムテスト”では、システムテストの重要性やその実施方法などをお伝えいたしましたが、近年では、ソフトウェアの複雑化や開発期間の短縮化により、なかなかテストに時間を割けないという方もいらっしゃるのではないでしょうか。
そこで、本連載では、高精度かつ効率的なテストをサポートする“テストの自動化”をテーマとして、その仕組みや現場でよく使用するテストの自動化ツールについて解説いたします。
第1回となる本稿では、まずテストの自動化の概要についてご説明いたします。
1. テスト自動化とは
テスト自動化とは、テストにまつわる作業の全体あるいは一部を自動化することを指します。
一口にテストと言っても、そこにはさまざまなプロセスが含まれます。ソフトウェアテスト技術者資格認定組織である「ISTQB(国際ソフトウェアテスト資格認定委員会)/JSTQB(日本ソフトウェアテスト技術者資格認定組織)」の定義によると、テストプロセスは以下の5つの要素で構成されています。
【テストプロセス】
- テスト計画作業とコントロール
- テストの分析と設計
- テストの実装と実行
- 終了基準の評価とレポート
- 終了作業
”テスト自動化”とは、上記のテストプロセスうち「テスト実行」について、テストツールなどを用いて自動化することを指します。また、最近では「テスト実装」のプロセスにおいても、テスト仕様書から自動的にテストケースを生成して自動化する場合もあります。いずれにしても、今まで人手で行なっていた作業を自動化することで、省力化や、精度の向上、実施時間の短縮などを実現できます。
2. テスト自動化が注目される背景
テストの自動化が注目される背景には、開発プロセスの変化があります。従来はウオーターフォール型が中心でしたが、2000年頃から急速にアジャイル開発が普及しました。アジャイル開発とは、短い期間で開発サイクルを回す手法であり、この短い開発サイクルの中で、同時にテストも実施します。アジャイル開発を生み出したエンジニアの一人Kent Beck氏が考案した「TDD(Test Driven Development:テスト駆動開発)」は、単体テストの実施後にソフトウェア本体を実装する手法であり、これはテスト自動化を前提とした開発プロセスとなっています。
また、最近ではクラウドベースのサービスの普及に伴い「CI(Continuous Integration:継続的インテグレーション)/CD(Continuous Deployment:継続的デプロイメント)」といった開発手法が広く用いられています。こうしたCI/CDによる短いスパンでリリースを繰り返す開発手法では、自動化されたテストによるスモークテストや、リグレッションテストを行うことが必須となり、ますますテスト自動化への需要が増してきています。
さらに、AI(人工知能)をテストに活用する動きもあり、これまで人間でしか検証できなかった障害をAIにより自動的に検知することも可能になりつつあります。
3.テスト自動化への幻想と有効なポイント
テスト自動化により、テスト期間を短縮でき、さらに精度も上げられるため、非常に大きなメリットを得られます。しかしながら、テストを自動化する際は、そのための開発コストもかかりますし、継続的にその仕組みをメンテナンスするコストも必要になるため、コストとのトレードオフを常に念頭に置く必要があるでしょう。
例えば、自動化ツールの導入などによりコストが膨らむ場合や、一度だけしか実施しないテストなど、自動化しないほうが良いケースもあります。
また、当然のことですが、自動化するだけではテストの品質は上がらないため、テスト自体の品質やカバレッジについては別途考える必要があります。
このように、開発プロセスの変化や、CI/CDといった手法の普及により、今日では開発現場でテストの自動化が一般的になりつつあり、非常に多くのプロジェクトで実施されています。
第2回は、実際のテスト自動化の仕組みについてお伝えいたします。
Copyright © ITmedia, Inc. All Rights Reserved.