Cognizant ITSを使ったモバイルアプリUIテストの自動化(1) - Cognizant Intelligent Test Scripterとは


 
皆さんはモバイルアプリのシステムテストや受け入れテストに自動化ツールは導入されていますでしょうか。
2018年現在、アプリの自動テストツールと言えばAppiumが主流ですが、シナリオを作るにあたりテストコードを書く必要があるため、普段コードを書かない方には導入しづらいのではないかと思います。

Cognizant Intelligent Test Scripter(以下Cognizant ITS)はテストデザイン、テスト実行、レポート作成、保守などの日々のテスト作業をGUIで行える自動テストツールで、開発元である当社がオープンソースで公開しているため無料で利用できる所が特徴です。


 
Cognizant Intelligent Test Scripter - GitHub Pages

また、シナリオとページオブジェクトは分離して管理されているため、アプリが完成していないうちからシナリオを作り始めることができたり、仕様変更によるシナリオのメンテナンスなどが簡単になり、SeleniumやAppiumの弱点を克服しています。

Webアプリケーション開発向けだけでなく、AndroidやiOSなどのネイティブアプリケーションのテストにも使用することができます。

ただオープンソースであるため詳細な説明書は付属しておらず、コードを書かない方や、Appiumを使ったことが無い方には理解が難しいと思われます。
本連載では、コードを書かない方でも、Cognizant ITSを使ってスマホアプリの自動テストが導入できるようになるよう解説していきたいと思います。


連載目次


それでは、どのようなシーンで一番Cognizant ITSが活躍できるのか。本記事ではCognizant ITSの特徴を紐解いていきたいと思います。

Cognizant ITSができること

Cognizant ITSはAppiumだけでなく多くのテストツールが統合されています。まだ確認できていない機能もありますが下記のようなことができると言われています。

  • Selenium/Appiumを使用したマルチプラットフォームなGUI自動テスト
  • 動的テストデータを使用した反復テスト
  • ページオブジェクトとシナリオを分けてテスト設計可能
  • スクリーンショットを比較して行うビジュアルリグレッションテスト
  • iOS、Androidアプリのオブジェクトスパイ
  • カスタムメソッドの登録(要コーディング)
  • BDD featureの作成、インポート
  • Selenium Gridに対応
  • SauceLabs、BrowserStack、Perfectoなどのクラウドプラットフォームでの実行
  • テスト管理モジュールとの連携(QC、JIRA-Zephyr、TFS)
  • 実行後にレポートをメールで自動送信

 

テストケース作成画面

オブジェクトスパイ

テスト実行画面

テストレポート画面

スクリーンショット比較

レポートメール

Cognizant ITSのメリット、デメリット

テストが自動になるといっても、メリットだけではありません。SeleniumやAppiumと同じように、テストの作成に時間が掛かるなどのデメリットもあります。

メリット

  • 回帰テストの人件費を減らすことができる一度ケースを作っておけば、リリース毎、スプリント毎、アップデート毎など何度でも使いまわせる
  • 単調で時間のかかる作業を人が行わなくてよい
  • 自動化した分のリソースをアドホックテストなどに回すことができる
  • テスト手順を明示化できる手順を共有しやすい
  • 人為的な手順ミスが起きにくい
  • 修正後の想定外のエラーの早期発見ができる影響範囲の大きい修正を行いやすくなる
  • テストのシナリオ作成、実行、レポートまですべてGUIで行えるコードを書かない方でも担当できる
  • 仕様変更によるシナリオの修正がスクリプトよりも楽にできる
  • 画面要素とシナリオが分けて管理されているアプリが出来ていなくても、先にシナリオだけ作ることができる
  • 画面に変更があってもシナリオに影響が出にくい

 

デメリット

  • Cognizant ITSを使うための学習コストがかかる
  • テスト作成の工数がかかるSeleniumでは初回サイクルは手動の3倍以上かかると言われている
  • 仕様変更の度にメンテナンスをしなければならない
  • 実行に時間がかかるSeleniumやAppiumと同様、一つ一つの動作に間が空いており、手動より時間がかかる
  • アプリ開発側にも協力してもらう必要があるオブジェクトを特定できるような一意のidがついていないと、オブジェクトの指定が難しい

 

Cognizant ITSの向き不向き

上記で洗い出したメリット/デメリットやCognizant ITSの機能から、Cognizant ITSの導入が向いているケース、向いていないケースは下記が考えられます。
 

向いているケース

  • リリースの多いプロジェクト長期間継続的にリリースを行うプロジェクト
  • 毎週リリースしなければならないようなプロジェクト
  • テスト担当者がコードを書く方ではない
  • 修正後、機能や見た目に何か影響がでていないかの確認(リグレッションテスト)
  • 値を変えて何度も同じ機能をテストするケース
  • 複数の端末で同じテストを行うケース

 

向いていないケース

  • リリースの少ないプロジェクトキャンペーンなど一回で使い捨てのプロジェクト
  • 3回以上テストを回す必要のないプロジェクト
  • UIを使用しない機能単体レベルのテスト
  • アドホックテストのような繰り返し同じ操作を行わないテスト
  • 物理センサー(GPS、加速度、カメラ、NFCなど)を使用したシナリオのテスト
  • 端末の設定(GPS、ネットワークのON/OFFなど)を途中で変更するシナリオのテスト
  • オブジェクトのIDが動的に変わってしまうUIのテスト

 

まとめ

この通りCognizant ITSは、テストに必要な多くの機能が統合され、しかもGUIで扱える上に、オープンソースで公開されています。
しかし便利な自動ツールと言えどもケースによって向き不向きがあります。そのため、いきなり大半をCognizant ITSに任せようとすると、向いているテスト、向いていないテストを見極めながら運用していかなければならず、逆に工数がかかり、導入が難しくなってしまいます。
まずはテストケースの1つか2つの観点のみ任せてみて、徐々に任せる観点を増やしていくような導入の流れが良いのではないでしょうか。

次回はCognizant ITSのインストール方法を説明していきたいと思います。
第2回 Cognizant ITSのインストール>>

参考サイト
Cognizant Intelligent Test Scripter - GitHub Pages
GitHub - CognizantQAHub/Cognizant-Intelligent-Test-Scripter(外部リンク)
Selenium導入ガイドラインなど: Web屋のまじめな話 | 株式会社アスペア(外部リンク)