Test Automation Tools

ソフトウェアプロダクトの品質を担保するテストについて、オートメーションツールを紹介する。

背景

ソフトウェア開発においては、アジャイル・ヲーターフォールなどの開発手法に関わらず、数々のテストを実施しなければならない。ディベロッパーがコード単位で行うユニットテストから始まり、インテグレーションテスト・ユーザーアクセプタンステストなど、テストがカバーする範囲や、ユーザの視点か否かといった観点でテストを分類することができる。

テストは新たに開発した機能が動作することももちろんだが、新規機能の追加によって既存機能が破壊されていないか (Regression) を確認することも重要で、機能が増えるごとにテストのパターンは指数的に増加し、マニュアルテストはすぐに追い付かなくなる。そのような状況下で限られた人材で品質を担保するために、オートメーションツールが役立つ。

テストオートメーションツール

まず、テストオートメーションツールがどのように動作するか、UIテストを例に取って紹介する。オープンソースで歴史のあるSeleniumが出している簡易版のSelenium IDEを使ってエヴァアビエーション社のウェブサイトでケージコードが正しく表示されていることを確認するテストを行う。

まずは、Chrome ExtensionであるSelenium IDEをChromeに追加する。続いて、Selenium IDEを開いて新しいプロジェクトを作る。(プロジェクトの中で複数のテストを登録することができる。) Record a new test in a new projectを選択し、ベースとなるURLであるhttps://www.evaaviation.comを指定する。

Selenium IDEBase URL

Start Recordingを押すと、ブラウザが自動的に開き指定したサイトにジャンプするので、ここからユーザが取る動作を淡々と行う。Selenium IDE is recording…のマークがブラウザに現れている間、Selenium IDEが動作1つ1つを記録していく。ここでは、メニューにある企業情報のリンクを押し、目的の情報が記されたページを開く。

Recorded StepsText Validation

以上でユーザの操作は終了のため、Selenium IDEに戻って録画停止ボタンを押す。最後に、行3の下をクリックし、表示された情報を評価するステップを追加する。commandの中から、表示されたtextを評価するassert textを選択し、targetの横のアイコン () をクリックする。ページの中から該当するエレメントを選択し、比較したい値をvalueに登録する。以上でテストの設計は終了だ。

Selecting the target element

再びSelenium IDEに戻って実行を押すと、Selenium IDEが登録された動作を順次実行する。すなわち、(1) ブラウザが自動的に開き、エヴァアビエーション社のウェブサイトへナビゲートし、(2) 会社概要をクリックし、(3) 指定したテキストの内容を比較する。結果は下のLog欄に表示される。

Results

このように、動作と評価を組み合わせて記録していくことでテストを設計する。一旦設計すれば、都度実行するだけでマニュアル作業や目視確認の手間を大幅に省略することが可能となる。

製品

テストの種類が多数あるように、オートメーションのツールも無数にある。試しにTest Automation Toolと検索しただけでも、次のような名前が挙がってくる。これらの中から選択するに当てっては、GartnerG2のようなサイトが参考になるだろう。ここでは言及数の多い3つを簡単に紹介する。

Abbot
Apache JMeter
Appvance
AscentialTest
Autolt UI Testing
Coded UI
Cross Browser Testing
Cubic Test
cucumber
eggPlant
FitNesse
Ghost Inspector
GTT
IBM Functional Tester (RTF)
IcuTest
iMacros
Jubula
Kaliostest
Kantu Selenium IDE
KantuX Pro
Katalon Recorder
Katalon Studio
Leapwork
LoadUI
mabl
Maveryx User Interface Testing Tool
MicroFocus SilkTest
MicroFocus Unified Functional Testing (UFT)
Parasoft Soatest
Postman
Powershell UI Automation
QAliber
QF-Test
QMetry
Qualitia
Ranorex
Rapise
RCP Testing Tool
riatest
Sahi
Selenium
Selenium IDE
sikuli
Silk Test
Snaptest
Soaptest
SoapUI
Squish GU Testing Tool
SWAT
SWTBot
Telerik
Telerik TestStudio
Tellurium
Test Partner
Testcafé
TestComplete
TestCraft
Testim
Testing Anywhere
Testing Whiz
Testingbot
TestProject
TestStackWhite
Tosca Testsuite
Tricentis Tosca
Unified Functional Testing
Verifaya
WatiN
Watir
Zaptest
LambdaTest
Zephyr
TestArcjotect
functionize
WorkSoft Certify
  • TestComplete: CrossBrowserTesting・SoapUIなどCI/CD向けに数多くのテストツールを提供するSMARTBEARのプロダクトの1つである。当然、それらプロダクトとの互換性があり、JIRA・git・Jenkinsなどといった外部のソフトウェアともインテグレーションできる。
  • Ranorex: デスクトップ・ウェブ・モバイルをターゲットとしたテストプラットフォーム。プロダクトの配色テーマを変更できるほか、レポーティングツールを兼ね備えている。
  • Telerik Test Studio: Mobile・RESTful API・パフォーマンステストをも含めたパッケージとなっている。Visual Studioのプラグインとしても作動するが、サポートされているバージョンが2010・2012・2013であり、言語もC#とVB.NETと限られている。

結言

ウェブアプリケーションを念頭に置くと、テストの自動化には、スクリプトの作成以外にも次のような機能が必要だ。テスト結果の保存・異常時のレポートおよびアラート・入力値のパラメータ化とループ・実行スケジュール・クロスブラウザチェック・パフォーマンステストなど。近年では、異なるバージョンのアプリケーションでもスクリプトを書き変えずにテストを実行できるよう、AIが支援するといった製品も出てきている。

アプリケーションのタイプ・機能によって最適な製品は異なるであろうが、できるだけスクリプトに手間をかけずに始められること、そして少ないメンテナンスで続けられることが望まれる。

お問い合わせはこちらまで。