QbookジャーナルQBOOK JOURNAL

テスト自動化には欠かせない、選ぶべきツールのチェックポイントとは?

執筆者:宮北 裕子

テスト自動化には欠かせない、選ぶべきツールのチェックポイントとは?

これからテストの自動化を導入される皆さんにお聞きします。
テストの自動化導入は簡単だと思いますか?

すでに導入された皆さんにお聞きします。
テストの自動化導入は、滞りなく、計画どおりにサクサクできましたか?

順調に費用対効果を上げられているでしょうか?

本連載では、実際の経験から学んだ 『 テストの自動化導入を成功させるポイント 』 を、全4回に分けて解説したいと思います。

自動化導入に奮闘したエンジニアが解説する「成功する自動化導入」のコツ

第1回の記事では、自動化導入の基盤となる「導入前にやっておきたいチェックポイント」と題して、テストを自動化する前に事前にやっておくべき4つのポイントを解説しました。

戦略も立てずに、すぐさま行動に移して工数の無駄を生じさせるのではなく、戦略を十分に立て、着実に前へ前へと進んでいただくために必要なポイントです。「まだ読んでいない!」という方は、まずこちらからお読みいただくことをお勧めいたします。

さて、「成功する自動化導入」第2回では、自動化には欠かせない「ツールの選び方」を解説します。

  • 自動化ツールのチェックポイント
  • やってはいけないツール選定
  • 自動化ツールって、「無償」 と 「有償」 どちらがいいの?

自動化ツールのチェックポイント

自動化ツールを選定する際のチェックポイントを、私の経験談を交えながらご紹介します。

1. テストする製品固有のインプットとの相性

自動化ツールが、テスト対象の基本機能の操作を一通り認識し、忠実に再現できるか、様々な観点で確認してみましょう。

オブジェクトの認識度やメンテナンスの必要性や頻度、チューニングの必要性など、テストで手間のかかるところを特に重点的に確認するのがよいでしょう。例として、マウス操作のポイントをご紹介します。

テスト対象のプログラムが、マウスホイールや右クリックに機能を割り当てている場合を考えてみてください。

自動化ツールは、マウス操作を認識してその操作を正しく記録し、記録した操作を忠実に再現できる必要があります。大前提として、操作を正しく記録できる必要があるわけですが、本記事を執筆している2020年現在でも、マウスホイールや右クリックに未対応なツールがあり、注意が必要です。

自動化ツールを購入後に、それがもしマウス操作に対応していないツールだった場合、全て独自で実装しなければ自動化ができず、大変苦労することになってしまいます。重要視される場合には必ず確認してください。

相性問題は、上述のマウスの他に、テキスト比較や画像比較などでもあり得ます。このように、対象となる製品と自動化ツールの相性を定量的に評価して、ベストマッチとなるツールを選定する必要がありますが、その際、自動化したい操作や自動化ツールの機能に対する重要度付けも行って、十分に比較しましょう。

2. GUIの認識性能を比較する

自動化ツールは日進月歩で進化を続けており、有名な製品だからと言って一概に秀でている製品とは言えない場合があります。対象の製品によって、全く異なる結果となる場合があるからです。

例えば、開発言語や実装構造によっても異なりますし、動作環境による影響を受ける場合もあります。例えば、対象の製品固有の仕様で動作するブラウザ、自社開発したブラウザなどでは、自動化ツールが 正常動作しないこともあります。

もちろん、ツールベンダーの用意したデモ環境上およびデモ製品に対しては、何の問題も発生せず、スムーズに記録操作できることは当たり前と言えます。そのため、体験版で必ずしなければならないことは、自動化したい製品を対象にした自動化ツールによるGUIの認識能力の確認です。

デスクトップアプリ、Webアプリ、モバイルアプリ別に、実際に自動化を導入したい製品で、いずれのGUIもすべて容易に認識できるかを十分に確認してください。

特にテスト対象の製品がWebシステムではなく、デスクトップアプリの場合には、差が大きく開く可能性がありますし、AndroidやiOSなどのモバイルブラウザを使ってテストをしたい場合、モバイル対応と記載されていても、実際の一般的なWebブラウザ(GoogleChrome、Safari等)でななく、ツール会社の独自のWebブラウザでのみ自動化可能となっているケースがあります。

もし、モバイル端末を使用して検証する場合、ツール導入前にテスト対象の製品が問題なく動作するか確認してみてください。私は、実際のブラウザ(Safari)では自動化ツールが動作せず、とてもがっかりしたことを、今でも鮮明に覚えています。

3. 容易に自動化でき、実行して正しい結果が得られること

テスト対象と自動化ツールの相性については先にご説明していましたが、ここでは別のタイプの相性問題をご説明します。テスト対象と自動化ツールの相性が悪い場合には、動作が重かったり、システムが原因不明で落ちたりと、今後のメンテナンス性に不安を感じることもあります。

私は、その当時有名だった製品3つだけではなく、ネット上で探しあてた6製品を加え、合わせて9製品をじっくり比較しましたが、同じ結果となった製品は1組もなく、大いに違いを感じました。残念だったのは、有名だからと言って、有償だからと言って、いずれも相性が良いというわけではなかったことです。さらに言えば、その9製品のうち、3製品しか使い物にならなかったという結果でした。

特に、有償ツールを導入する場合には初期投資が必要です。決して安くありませんし、ライセンス数に応じた更新料が毎年かかります。

「こんなはずではなかった」 と思うことがないように、体験期間を最大限に有効活用していただきたく思います。

4. 新しい環境 (OSバージョン、フレームワーク等)への適応スピード

自動化を導入したい製品の開発言語によってはバッチを当てる必要があったり、新しいOSバージョンによっては未対応であったり、一部機能しか動作しなかったりと、問題に違いが出てくると思います。

もし、自動化したい対象製品が、新しいOSバージョンにいち早く対応すべき製品である場合には、OSに対する対応スピードも選定基準となります。自動化ツールのサイト上に適応履歴ありますので、いつもどのくらいの期間で対応されているかを確認しておきましょう。

新しいOSバージョンにいち早く対応してくれるツールを探す場合、英語版がお勧めです。主に自動化ツールは英語版のツールを日本語対応したものが多いからです。日本語対応をするために時間を要します。英語版を使えば、その分の時期を早めることが可能となるわけです。

確かにログも英語で出力されるため、英語が不得意の方は最初戸惑うかもしれません。私も英語は苦手で、最初は戸惑いました。しかし、出力されるログの種類はそれほど多くありません。そのため、初回はWebで翻訳しましたが、それを共有化することで、ログの和訳表を用意することができました。結果として、英語版であることは、問題とはならなくなりました。

5. 他ツールとの連携

他ツールと連携することができれば、より強力で広範囲に自動化を適用することが可能です。例えば、継続的インテグレーション (CI) ツール、テスト管理 (TM) ツール、簡単なタスク スケジューリング ツールと連携できれば、自動テストが自動的に開始されるという大きなメリットを得られます。

単純にスケジューリングされたタスク (毎夜午前0時など) によって呼び出すことは一般的に実施可能ですが、自動テストの開始が特定のアクション (開発者からのソース コードのコミットなど)、定期的なビルド (夜間ビルドなど)、またはテスト自動化対象のテストケースによって呼び出しできるかどうかも重要なポイントと言えます。

6. ライセンス形態(有償ツールの場合)

1ライセンスでデスクトップアプリ、Webアプリ、モバイルアプリをすべて網羅できる場合もあれば、デスクトップアプリ、Webアプリ、モバイルアプリを個々で販売されているケースもありますので注意が必要です。

選定と並行して、必要ライセンス数での見積りも依頼しておきましょう。

自動化ツールの有償版によくあるライセンス形態
端末固定のライセンス

端末1台1台に対して、端末指定してライセンスを設定する方式のことです。
基本、他の端末では使用できません。

フローティングライセンス(端末非固定のライセンス)

ソフトウェアの使用許諾(ライセンス)の方式の一種で、ライセンスのみをサーバーで管理し、サーバーに繋がったコンピューターなら、ライセンス数の範囲内で対象のソフトウェアを使用することができる方式のことです。ソフトウェア自体は何台でもインストール可能ですので、同時に使用(起動)できるライセンス数分を購入して使用してください。

私は、『端末固定のライセンス』ではなく、『フローティングライセンス』をお勧めしています。会社には人事異動があり、担当の配置換えも常です。また、作業工程としてはテストケースを自動化に適したケースに設計しなおす作業等も含まれるため、常に自動化ツールを起動しているわけではありません。そのため、編集可能なライセンスと、実行のみのライセンスを組み合わせて購入されることで、コストを大幅に削減することをお勧めします。

やってはいけないツール選定

私は前職で、有償・無償の両方を対象に、日本語版の他に英語版も含めて、かなり細かく比較してツール選定しました。

もちろん、有償の場合は慎重になると思いますが、無償であったとしてもその後継続してメンテナンスを実施していかなければならないわけですから、無償なら何でも良いというわけにはいきません。

miya_image1.PNG

図1:自動化ツールの有償と無償に対するコストの違い

コストの観点から言えば、先にコストをかけるか、後からコストをかけるかの違いです(図1)。

無償ツールならコストをかけることなく始められますが、後々工数が嵩むことで費用対効果は低くなる可能性と、OSなどのバージョンアップに独自で改修対応していかなければならないリスクがあることも補足しておきます。

1. 自動化ツールを導入する前に、必ず体験版を入手して製品との相性を徹底的に比較せよ。

皆さんは、自動化ツールをどのように選定されましたか?

私の経験から出た結論は、「導入前に体験版で試すべき」です。

一般的に知られている高額な自動化ツールであっても、その自動化ツールが自社システムに一番適しているとは限らなかったからです。

体験版の使用期間には制限がありますが、私が試した際、自動化ツールの選定が不十分であったため、ツールベンダーと交渉し、複数回使用期間を延長させていただきました。実際に、体験版をインストールして自社製品との相性をじっくり操作してみてください。このツールは、とても使いやすく、自動化対象の製品にとって最適ツールであると確信が持てるまで、ぜひ検証していただきたいです。

2. デモ環境を過信しない

自動化ツールの紹介動画を観るだけ、自動化ツールのデモ用サイトで実際に使用するだけでは、ツールの問題は把握できません。デモ環境でサクサク動くのは当たり前だからです。実際にテストの自動化を導入したいテスト対象の製品で試すことがとても重要です。有名であっても(自分の環境では)全然使えないという結論に至ったツールが実際にありました。

実際に所有のPCにツールをインストールして、使用してみてください。思いもよらない発見があるはずです。

購入してから、導入してから気づくのでは遅いからです。事前に問題点を洗い出し、対策を立ててから導入しましょう。

3. 複数のツールを導入せず、最も適するツール1つに絞る。

以前、以下の2種類のツール(以後、TツールおよびRツール)を購入したことがあります(図2)。

miya_image2.PNG

図2:購入した自動化ツール

本来なら、主力製品との相性が良く、画像比較の機能が勝っていたTツール一本で購入したいと思っていました。 しかし、以前の職場では英語のツールに対するネガティブなイメージがあったこと、Tツールの方が高額であったことが懸念点でした。社内で検討した結果、Tツールに加え、少しでも価格が抑えられるRツールも同時購入する、という結論になりました。

用途としては、基本機能のテストはRツールで、機能に対する詳細テストはTツールで、と位置付けていたのですが・・・。月日が経ち数年後、Tツールしか使わなくなりました。今思えば、目先の問題だけを見て決めてしまった、という反省は否めず、もっともっと議論すべきでした。

Tツール一本に移行していった主な理由は3つです。

1. 主力製品との検証に使える機能が勝っていたこと

理由:画像比較のマスク機能が本当に使いやすかったため

2. 開発言語が異なっていたこと

理由:2つの言語スキルを向上させることは困難だったため

3. Tツールの共通スクリプトが豊富になったこと

理由:主要製品の自動化促進によりTツールの使用頻度が高まったため

これらの理由により、Rツールは利用しなくなりました。幸い、ライセンス数を制限して購入していたため、大きな無駄とはなりませんでしたが、もっと先を見据えて議論していればこうした結果にはならなかったでしょう。

「足りなくて困らないように」という理由から必要以上のライセンス数を購入することはお勧めしません。必要最低限のライセンス数で導入効果を出し、必要に応じてライセンス数を増やすことをお勧めいたします。

自動化ツールって、「無償」 と 「有償」 どちらがいいの?

自動化ツールには無償と有償の2種類があります。それぞれメリットとデメリットがあるため、それをきちんと把握しておく必要があります(図3)。

miya_image3.PNG

図3:自動化ツールの有償と無償にメリットとデメリット
無償ツール

代価を払わなくても使用できるツールです。導入のしやすさに利点があります。ただし、公式のサポートは受けられません。

初期投資としてのツール費用はかからないため、予算の検討や稟議申請など、社内的に手間のかかる手続きは一切なく、容易に導入することができます。

しかしながら、無償ツールの多くは、開発スキルが必要であるという懸念点があります。それもある程度の実務経験があるプログラマーレベルの開発スキルが必要であるため、人材を確保しにくくなる可能性があります。一般的に、ツールに搭載されている機能は有償ツールに比べて少なく、実装が容易ではないツールが多いです。そのため、開発経験が豊富なエンジニアが実装した場合には大きな問題になりませんが、開発経験が全くないテスターに自動化を担当させた場合には工数が嵩む傾向にあります。また、開発経験が豊富なエンジニアが実装する場合においても、自動化に対する戦略を十分に立てないと費用対効果を得にくい傾向があります。特にデータ駆動系の実装や、マウス(ホイール、右クリック)系の操作が多い場合には、テクニックが必要であり、苦労を要します。

有償ツール

代価を払わないと使用できないツールです。定期的なアップデートと、サポートも受けることができます。ツール費用は初期投資としてかかるだけでなく、年単位で更新料もかかります(例:初期投資として1ライセンス数百万、次年度以降も更新料1ライセンス数十万も発生)。

イニシャルフィーとランニングコストがかかることが大きな懸念点と言えます。しかしながら、それなりの金額を支払うだけあって、オブジェクト認識に優れ、GUIによる操作で自動操作を記録できるなど、開発スキルがなくても容易に実装可能なツールがあります。OSなどのバージョンアップにも順次対応されるため、ツールに対するメンテナンス工数はかかりません。さらに、ツール利用に対するサポート体制も整っており、困難に陥った際に、問い合わせることも可能です。これら、作成したスクリプトに対するメンテナンス性がとても優れているため、工数が嵩みにくく、よい費用対効果を得やすいことが利点と言えます。

このように、「有償」 と 「無償」のどちらが良いか悪いかは、一概には言えません。

例えば、仕様変更によりオブジェクトの順番が変わってしまったとします。有償ツールであれば、IDが付与されていなくてもオブジェクトを認識する機能が備わっていることが多く、大きな問題となりにくいのですが、無料ツールの場合、オブジェクトを認識できないケースや、すべてのオブジェクト認識を度々やり直ししなければならないケースが多く、手間がかかるイメージです。そのため、無償の自動化ツールに比べ有償の自動化ツールを導入した方がメンテナンスしやすいと言えます。順調にテスト自動化を導入できた場合、数年で費用対効果の逆転も可能です(図1)。しかしながら、図1のように無償の自動化ツールでも効果は得られますし、十分に機能を有しているツールも出てきています。

よって、有償だから無償だからといった理由で、単純に自動化ツールを選定することはお勧めできません。

コストの観点を抜きにした場合、次に自動化ツールの選定基準とすべきは、自社製品が売りとする機能を、自動化したいテストケースを、最も適切に容易に検証できるツールであるか否かです。このように、検証したい製品によってはメジャーなツールではなく、特化した機能を有するツールを導入することでメンテナンス性が向上し、よい費用対効果を得られやすくなります。

おわりに

ツールを選定する上で、製品との相性がよいツールであることはもちろんですが、私はその中でも最終的に、マウスホイールや右クリックが認識でき、画像比較のマスク機能、データ駆動機能を備えたツールを導入しました。英語版だったという点以外は、思い求めていた理想のツールと出会うことができたと思っています。

皆さんも本当に適しているツールを探し求めてください。皆さんにも最適なツールとの出会いがあることを願っています。

ツールを選定する際は、目先の費用に惑わされず、数年後まで試算して、本当に適しているツールを探すことをお勧めします。

PR
テスト自動化環境を1ヵ月で構築し、効果検証する「フィージビリティスタディ」

4ca87293cf55250f1642eb57b5d9833e.jpg

テスト自動化に踏み切りたいが、導入コストに対して成果が出るのか確信を持てない。自動化したスクリプトをメンテナンスできないなど、テストの自動化プロジェクトの懸念はありませんか。「フィージビリティスタディ」では、実際に自動テスト環境を構築し、効果・プロジェクトに対する自動化適正を評価・検証するフィージビリティスタディ(効果検証)で、自動化の効果を見える化します。

ライター:宮北 裕子

バルテス株式会社 第4ソフトウェアテスト事業部

医用システム開発会社にて、検証部門や品質管理部門の立ち上げや検証ルールの策定、テスト自動化の担当など多岐に渡るプロジェクトに13年間携わった後、バルテスに入社。前職で培った経験からテスト自動化に興味を...