■世の中、どんなテストツールがあるのか?
- 機能テストツール
QuickTestProfessional,SilkTest,Functional Tester,WebDriver,Selenium IDE,, - 負荷テストツール
LoadRunner,SilkPerformer,Performance Tester,JMeter,, - セキュリティテストツール
AppScan,WebInspect,Paros,SQLInjection,, - テスト管理ツール
Quality Center,TestLink,, - サーバ監視・解析系ツール
EndoSnipe,Introscope,jennifer,Diagnostics,,
などがあります。
機能、負荷、セキュリティ関連のツールは、手動ではできない(多過ぎる)テストを自動化することが主な目的と言えます。
管理、監視関連のツールは、情報の共有(見える化)を行うことが目的といえるのではないでしょうか。
また、無償テストツール系(OSS等)は、対象アプリの種類や利用工程、利用方法によってさらにたくさんのツールが存在し、単独で使うよりも、組み合わせて利用されているケースが多いと思います。
■自動テストツールの選定方法
テストツールを導入するとき、まず目的を明確にします。
- 何に利用するのか?(テスト対象のアプリは?どんなテストを?)
- いつ利用するのか?(どの工程?、プロジェクト単位?組織で?)
- 誰が利用するのか?(専任者が必要か?)
- どこで利用するか?(ツールの動作環境は?)
- どれくらい利用するのか?(何回実行されるか?利用頻度は?)
- いくらかかるか?(導入前の購入(有償/無償)は?学習コストは?導入後の削減割合は?)
その上で、様々なツールから候補を絞り込みます。
そしてツールの特性を理解する為に必ずお試し利用します。
有償系のツールは、数週間〜数ヶ月のお試し利用が可能な物が多く、OSS系のツールは、ダウンロードし環境を整えることができればすぐに利用可能です。
ツールお試し時は、目的に合致しているか確認しつつ、ツールの特性を理解しながら動作させることにより、以下の項目を検討します。
- 対象アプリをきちんと動作させることが可能か?
- やりたいことができるか?
- 動かない箇所はないか?
- 扱いやすいか?
- ドキュメントが充実しているか?
- 事例があるか?
- サポートの有無は?
以下、GUIテストを自動化する際によく比較されるQuickTest Profesional(QTP)とSelenium(IDE+WebDriver)を利用したときに私が感じた事を記載します。
QTP
- 対応アプリが多い(Webアプリだけではなく、SAPやVB/VCアプリ等も動作可能)
- 検証できる項目が多い
- 記録後の実行再現性が高い
- UIが分かりやすい(?)
少なくとも、スクリプト作成を前提にしたUIではないので、利用者の敷居は低い - VBScript言語を用いて、高度なプログラミングも可能
- エビデンスが残し易い
- しかし
- 最新のブラウザへの対応が遅い
- 対象アプリは豊富だが、サードパーティ製コンポーネントを利用したアプリは動作しない
- NotesやMS Office系のソフトは動作しない
- 画面キャプチャーは表示されている箇所だけ(回避方法はある)
- Windows環境にしかインストールできない
- 購入、およびサポートが高い
Selenium
- 対応するWebブラウザが多い
- 動作環境が豊富(Win、Mac、Linux等)
- スクリプト作成言語が豊富(Java,Ruby,Python)
- 画面キャプチャーは、ブラウザ全体を取得できる
- 無償なのですぐに使える
- 他のOSSと組み合わせ易い
- しかし
- 対応アプリは、Web系アプリのみ
- どちらかというと開発者向けツールでありスクリプト開発環境の構築、開発言語の知識が必要
- サポートがないので、躓いた時、自身で情報収集が必要(解説サイトは英語が多い)
Webアプリをテストする場合、一概にどちらが有利ということはないのですが、学習コスト(人材を利用できるようになるまでの教育期間)は、検討項目からよく抜けてしまいがちです。高額な有償ツールを導入(購入)しただけで安心してしまい、誰も利用出来ずお蔵入りしているツールも多々見かけます。逆に、OSS系を利用する際に、動いたとしても、メンテナンスできないスクリプトができあがりバージョンアップ毎に動かないスクリプトが増えていく場合もあります。開発と同様にまだ誰にでも利用できるツールとは言えないので、適切な学習・習得コストを見積もることは大切です。
ツール導入にあたって一番重要なのは、利用し効果が継続的にでる事。
そのためにも学習コスト、メンテナンス性を十分意識した上で導入を考えることが重要です。
