Facebook x

ジャンル

【実践】初めてのテスト自動化導入マニュアル|導入前に検討すべきこと~[#1]
テスト自動化 更新日 2025.03.26
x hatenabookmark
0

【実践】初めてのテスト自動化導入マニュアル|導入前に検討すべきこと~[#1]

執筆: 江村 禎昭

バルテス・ホールディングス株式会社 ソリューション事業推進部 首席研究員

「テスト自動化を導入したいけど、どのように進めればいい?」「まず何を検討したら良いの?」と、お悩みの方も多いのではないでしょうか。

テスト自動化を導入する際は、テスト自動化の特徴・メリットを認識したうえで、テスト自動化を具体的にどこに活用して、開発プロセスを改善させるかの検討が必要です。

次に、テスト自動化を導入するにあたっていろいろな制約を把握する必要があります。また、実際に手を動かすテスト自動化エンジニアを集めていきます。そして実際に自動化構築を進め、導入、そして継続テスト実行まで進めることで、テスト自動化が最大限に発揮します。

本記事では、初めてテスト自動化を導入される方のために、まず認識しておくべきテスト自動化の目的・効果と、検討すべき事項について解説していきます。

ステップ①.png

【実践】初めてのテスト自動化導入マニュアル の連載一覧

もくじ
  1. テスト自動化を導入する目的・メリット
  2. テスト自動化をどこで活用する?主な活用方法5つ
    1. リグレッションテスト
    2. テスト条件設定、事後処理
    3. 非機能テスト
    4. 不具合検出後の確認テスト
    5. 受け入れテストフェーズ
  3. 【開発モデル別】テスト自動化のボトルネック
    1. ウォーターフォールモデル
    2. V字モデル
    3. アジャイル開発
  4. テスト自動化導入検討で考慮すること
  5. まとめ

1.テスト自動化を導入する目的・メリット

テスト自動化は、テストサイクルの時間を短縮し、ソフトウェアを迅速に市場に投入するのに役立ちます。

導入する前には、自動化の目的やメリットについて検討しましょう。

特にリグレッションテストでは、再利用を促進し、コストを削減し、テスト実行間の整合性を提供します。手動テストの労力を削減し、迅速なフィードバックを提供することで、開発者を支援します。

また、品質ゲート(各工程で品質をチェックするポイント)を設定することで、プレプロダクション環境や本番環境への迅速な展開が可能になることもメリットです。

これにより、欠陥を早期に発見し、市場投入までの時間を短縮できます。シフトレフトアプローチを採用することで、テスト実行時間を短縮し、品質意識の文化を促進します。

2.テスト自動化をどこで活用する?主な活用方法5つ

導入に際して、テスト自動化を具体的にどこで活躍させるかを検討する必要があります。

この章ではテスト自動化の主な活用方法を5つご紹介します。

2-1 リグレッションテスト

リグレッションテストは、ソフトウェアの修正や新機能追加が行われたとき、既存の機能に無影響であるかを確認するためのテストです。これにより、新たな不具合が発生していないことを保証します。

このリグレッションテストは、プロジェクトの中で頻繁に行われます。理想としては、開発者がプログラム修正(不具合改修を含む)しテスト環境にデプロイする毎に行います。テスト自動化は、広範囲のテストを迅速に、かつ一貫性のあるテストを行うことができるため、リグレッションテストにおいては効率的な手段です。これにより、開発者は早期に問題を特定し、修正することができ、開発サイクルの短縮と市場投入までの時間を短縮できます。

2-2 テスト条件設定、事後処理

自動化に限らず、テストを行うとき、テスト条件が整っている必要があります。

主な条件の一つが、テストデータの準備です。テスト前提のテストデータは、ユーザー操作によって作られるものが多く、この操作を自動化することによってテスト条件設定の効率化を図ることができます。

また、テスト終了後、同じテストを再度行う、もしくは不要となったデータの削除(データ量削減のため)を目的とした、クリーニング作業が、事後処理としてあります。この操作も自動化することで、オペレーションの効率化につながります。

2-3 非機能テスト

プロダクトの応答時間やスループット性能を評価するパフォーマンステスト(負荷試験やストレステスト)としてもテスト自動化は有効です。

パフォーマンステストに特化した自動化ツールを使えば、高負荷を簡単にかけることが可能になります。

また、システムが長時間安定して動作するかを確認する耐久性テストにも効果的です。例えば、モバイルアプリケーションでは長時間操作すると、メモリリークなどでクラッシュすることがあり、その検知に非常に有効です。

2-4 不具合検出後の確認テスト

確認テストとは、コード修正後に報告された欠陥に対処し、欠陥が解消されたことを検証するテストです。

このテストは自動化に適しています。

再現手順が明確で再実行が容易で、また複数のプラットフォームやデバイスでの検証によりテスト時間を削減することができます。

2-5 受け入れテストフェーズ

運用受け入れテストは、ソフトウェアの運用システムへの準備を保証し、通常はリリース直前に実施されます。テスト環境と本番運用環境とで同じように動作するという保証がないため、これを担保するために運用受け入れテストは必要になります。

運用受け入れテストを自動化すると、特に自動テストを繰り返し、複数の環境で実行できる場合に、大きなメリットを提供できます。

また、プロダクトの新しいバージョンがリリースされたときに、過去のバージョンのテスト結果と比較することで一貫性が確保されます。運用受け入れテスト用の信頼性の高い自動テストは、時間の経過とともにコストを削減することができます。

はじめてのテスト自動化 導入の手引き

はじめてテスト自動化を導入される方に向けて、テスト自動化の目的とメリット・デメリット、成功させるためのポイントを解説します。

3.【開発モデル別】テスト自動化のボトルネック

開発モデルは、テスト自動化の効率に大きく影響します。

どの開発モデルでも、テスト自動化の成果はありますが、どこがボトルネックであるかを認識したうえで、テスト自動化を導入することが望ましいでしょう。

開発モデルごとのボトルネックについて簡単にご紹介します。

3-1 ウォーターフォールモデル

ウォーターフォールモデルのテストフェーズは開発の最後(要件分析、システム設計、実装フェーズの後)に行われることが多く、テスト自動化の開始が遅れる傾向があります。そのため、テスト自動化による効果を十分に発揮できず、投資対効果が低くなるという課題があります。

ただし、テスト自動化導入後、次のプロジェクトが始まったときには、作成したテスト自動化はリグレッションテストとして活用できるため、実装フェーズ中にも大きな効果を発揮することができます。

4-2 V字モデル

V字モデルは、ウォーターフォールモデルに比べてテストの計画が早い段階から行われますが、実際のテスト自動化の実施は依然として後回しになりがちです。

そのため、テスト自動化によるメリットは得られるものの、最新のアジャイル開発手法と比較すると、その効果は限定的です。

4-3 アジャイル開発

アジャイル開発ではスプリントと呼ばれる短い開発サイクルの中で、テスト自動化を継続的に行うことが理想とされています。

各スプリントの終わりには、全てのテストが自動化され、製品の品質が担保される状態を目指しますこれにより、迅速なフィードバックを得ることができ、開発の効率化に大きく貢献することができます。

アジャイル開発が成熟していない組織では、このテスト(テスト自動化の実装など)の工数を正しく見積もれず、スプリント内でテスト自動化を達成することができない問題が発生することがあります

4.テスト自動化導入検討で考慮すること

ここまでテスト自動化導入を検討するにあたって、検討すべきことについて解説してきました。

しかし、考慮しておきたいことは他にもたくさんあります。

なぜなら、テスト自動化の導入を進めるにあたり、多くの要素が影響するからです。

本章では、導入をスムーズに進めるためにあらかじめ検討しておくべき要素についてまとめてご紹介します。

考慮すべき要素                詳細
1.時間制約 自動化の調査、実装可能期間、実装工数などに時間を要します。プロジェクトのスケジュールが、自動化の範囲やスピードに影響します。
2.専門知識とリソース テスト自動化エンジニア のスキルレベルと人数によって、自動化の難易度やスピードが変わります。
3.ツールライセンス 自動化ツールを使用する場合は、ライセンス費用がかかります。
4.適応性 テスト自動化が、プロダクトの仕様変更や拡張に対応できる必要があります。
5.メンテナンス 自動化テストの保守と更新は継続的に発生するタスクです。
6.テスト実行環境 テスト自動化を実行させるテスト環境を確保する必要があります。テスト環境は、アプリケーションエンジニアやテストエンジニア(手動テスト)、他ステークホルダーが使用することが一般的です。また、テスト環境のハードウェアスペックなどに制約(低スペック)も考えられます。安定して自動化テストが実行されることを確保することが望ましいです。
7.テスト実行環境 テスト自動化を実行させるテスト環境を確保する必要があります。テスト環境は、アプリケーションエンジニアやテストエンジニア(手動テスト)、他ステークホルダーが使用することが一般的です。また、テスト環境のハードウェアスペックなどに制約(低スペック)も考えられます。安定して自動化テストが実行されることを確保することが望ましいです。
8.プラットフォームサポート プロダクトに応じて、Web アプリケーション、デスクトップ アプリケーション、モバイルアプリなど、異なるプラットフォームに対応する必要があります。
9.構成管理 テスト自動化のスクリプト、設定、テストデータなどをバージョン管理する必要があります。特に、プロダクトのバージョンに合わせたテストスクリプトを管理しておくと、ブランチ開発や、ロールバックなどに柔軟に対応できます。
10.デプロイメント テスト自動化を環境にデプロイする仕組み化が望ましいです。また、プロダクトのバージョンに合わせた自動化スクリプトのデプロイや、マルチ環境(異なるOSやミドルウェアバージョン)へのデプロイができるとオペレーションが煩雑になりません
11.CI/CD統合 テスト自動化を最大限に活用するために、CI/CD パイプラインに組み込めるように検討する必要があります。
12.テスト管理統合とレポート テスト結果を管理し、レポートを作成する機能が必要です。また、レポートを閲覧する関係者に対していつでも見られるように、かつその人に合ったレポートをダッシュボードなどで提供する必要があります。
13.テスト自動化導入後の活用 テスト自動化を導入した後、運用フェーズになります。この開発プロジェクトでテスト自動化の役割を終えるようであると、テスト自動化が最大限に活かされません。今後の開発プロセスでどのように使うかを検討する必要があります。
14.テスト自動化エンジニアの育成 テスト自動化導入後、新しいメンバーが参画すれば、構築したテスト自動化の学習する必要があります。その育成計画を検討する必要があります。

まとめ

今回は、テスト自動化導入時に最初に検討することをお話ししました。

テスト自動化は手段であって目的ではありません。テスト自動化の特徴を知り、開発生産性を向上させるためにどのように活用するか、しっかりした目標を設定すると、導入中、また導入後のアップデートもぶれずに進めやすくなります。

また、導入前にクリアにしておくと望ましいことが多くあります。すべてをクリアにする必要はありません。ただ、そういったことも先々あることを認識しておくだけで、ある程度構築が進んだ後で、大きな後戻りはなくなります。

PR
T-DASH.png

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

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

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

テスト自動化
x hatenabookmark
0

執筆: 江村 禎昭

バルテス・ホールディングス株式会社 ソリューション事業推進部 首席研究員

石川県金沢市生まれ。趣味は富士山登山、ほぼフルマラソン。20年以上インターネットサービス会社に勤め、アプリケーションエンジニア、プロダクトマネージャ、テストエンジニアと様々なロールを担当してきた。バルテス・ホールディングスに入社後、テスト自動化導入のコンサルティングや、テスト自動化ツールであるT-DASHの導入支援を担当する。Jasst Hokkaido, Tohoku, Tokyo 等で講演