2019/12/13

Writer: Son.TT &Kaori Goto / Quality Assurance Solution Div


ソフトウェア開発のライフサイクルにおいてテスト実行が必要であることは言うまでもありませんが、テスト実行のアプローチとしては、
・マニュアルテスト(手動テスト)
・オートメーションテスト(自動テスト)
が存在します。世の中の潮流としては自動テストを活用する現場が増えていますが、本稿ではその背景を整理するとともに成功のための秘訣をまとめます。


1. 手動テストの特徴

手動テストとは、人が実際にシステムを操作して期待通りの挙動が得られるかを確認するテストを指します。

本来、様々なテスト条件や入力パターンを網羅して実施することが理想的ですが、テストの量が増えれば増えるほど多大な工数(=費用)を要すため、網羅を期待したテストには向きません。 しかし、人はテストケースには書かれていない「システムの微妙な違和感」などにも気付くといった優れた面も持っています。

手動テストにおいて完全に手順化されたチェック作業は自動に置き換えることは可能ですが、妥当性の判断や違和感の検知などは人にしかできないという点は忘れてはいけません。



2. 自動テストの特徴

一方で自動テストは、テストケースに書かれたことしかテストできませんが、一度実装をしてしまえば、実行自体には人手をかけずに何度も繰り返すことが可能となります。

また、テストのデータバリエーションをカバーすることにも向いており、例えばECサイトであれば「ログインして商品をカートに入れて購入する」というテストを作成しておけば、同じロジックを利用して「あらゆる会員種別」「あらゆる商品種別」でテストができるわけです。

また、多ブラウザ環境でのテストなども容易に行えます。
近年テスト自動化を導入する現場が増えている背景としては、以下のことがあげられるでしょう。

・リリースサイクルが短くなり、高頻度でリグレッションテストを必要とするケースが増えている
・ユーザーのプラットフォーム環境が多様化しており、同じテストを複数環境で実施するニーズが増えている



3. 自動テストのROI

cc ROI:投資収益率グラフ

ただし、テスト自動化には間違った期待を持たれやすく失敗事例が多いのも実情です。
最も多いのがコストを見誤ることです。極端な例だと、テスト自動化によって「実装費用だけ捻出できれば、その他お金がかからない。」と考えてしまうケースがあるようですが、実際にはそれ以外にも、以下のような費用も考慮に入れる必要があります。

・ハードウェアとソフトウェアの費用
・自動化ツールのライセンス料
・環境サービス料
・スクリプトエキスパートの採用料
・ツールの育成費用

つまり、テスト自動化導入は投資としての側面もあるので、どこでどう回収するかの事前の戦略が必要です。
ここでROIと呼ばれる投資収益率グラフを見てみましょう。

手動テストとコスト比較してみると、導入初期のイニシャルコストの点から見ると、自動テストの方が高いことがわかります。しかし、プロジェクトがメンテナンスフェーズに入ると次第に減少していきます。

ソフトウェアの新しいバージョンまたはシステムの更新をする際、スクリプトを何度も繰り返し使用することで将来のコスト削減につながります。
つまり、テスト自動化を導入するか検討する際には、自動テストコードを何回利用できるか、など将来の見通しも立てた上で、初期投資を回収できるかなどのシミュレーションが必要になるわけです。


4. 自動テストのメリット ― テストカバレッジの拡大

テストカバレッジ IE、Chrome、Firefox、Safariなどのすべてのインターネットブラウザをサポートするソフトウェアをテストするのは短時間では困難。

更に、コスト比較だけでは測れない大きな効果があります。それは、「手動では実施しきれなかったテストを実現すること(テストカバレッジを拡大すること)」です。
例えばプロジェクトで、IE、Chrome、Firefox、Safariなどのすべてのインターネットブラウザをサポートするソフトウェアをテストする必要があるとします。

ご自身がそのプロジェクトのソフトウェアテスターだと想像してください。
締め切りが近づいていますが、頑張っても、作業が終えられそうにない・・・。
自動化されたソフトウェアテストは、テストの範囲を拡大して、ソフトウェアの品質を向上させるのに役立ちます。 複数のコンピューターで、異なる構成と数千のデータセットを同時に実行できます。
アプリケーションの内部をさらに詳しく調べ、メモリの情報、データテーブル、内部プログラムの状態を確認し、製品が期待どおりに動作しているかどうかを判断することも可能です。


5. 自動テストのメリット ― 手動テストではできないことを自動化する。

前述の例は「時間が無限にあれば出来たテスト」の例ですが、その他に「そもそも人間ではテストできない」という特性のテストを自動テストで実現することもあります。

例えば、人によって数千のユーザーで同時に24時間365日、制御されたアプリケーションテストを実現することは不可能ですよね。
自動化されたテストでは、24時間休みなくネットワーク、ソフトウェア、およびWebアプリケーションとやり取りする無制限の数の仮想ユーザーをシミュレートして、パフォーマンステスト、ストレステスト、セキュリティテストを実行し、高い要求に応じてソフトウェアの信頼性を確認する事ができます。



6.まとめ

テスト実行には大きく「手動テスト」と「自動テスト」のアプローチがあることを述べました。
それぞれにメリットがありますので一概にどちらが良いかを評価するものではありません。
目的に応じて適切なものを選び、多くの場合は一つのプロジェクトの中で組み合わせて実行することが望ましいでしょう。
自動テストは、現在のシステム開発環境に非常に適した特徴を持っており、もし導入をされていない場合は一考の価値がありますが、自動テストの特徴や狙い所などを正しく理解して用いることが肝要です。
目的を定め戦略をもって進めていくことで、効果を最大化することができるでしょう。



―――――――――――――――――――――――――――――――――――――――
参考文献:
https://smartbear.com/solutions/automated-testing/
https://blog.codeship.com/5-reasons-for-automated-testing/
https://www.oracle.com/technetwork/cn/articles/when-to-automate-testing-1-130330.pdf

このTest-Service BLOGでは、皆さんがソフトウェアテストを実施する際に参考になるような情報をお届けします。


CONTACT

お問い合わせ

当社では、ソフトウェアテストサービスについてご相談を承っています。
作業効率化したいので、具体的な提案が欲しい。予算内に収まるのか?など

無料相談受付中です。お気軽にご相談ください。
pagetop