本連載では、スマートフォン(Android/iOS)アプリ開発における、システムテストを自動化するツールを紹介していきます。初回はシステムテスト自動化の基礎知識とMonkeyTalkについて。
テスト自動化ツールの紹介に先立って、本連載で扱う「システムテスト」の位置付け、またシステムテストのうち、どのテスト(テストタイプ)を自動化していくのかについて説明します。
システムテストとは、ユニット(単体)テスト、統合(結合)テストをパスしたアプリを対象として実施するテストレベルであり、スマートフォンアプリでは以下の位置付けで行われるテストに当たります。
テストレベルの概念や、より一般的なシステムテストの位置付け、またそれを自動化するに当たっての目的やROI(Return On Investment/投資利益率)などについては、下記連載記事を参照してください。
また、BDD(Behavior Driven Development/振る舞い駆動開発)における「受け入れテスト」もほぼ同じ位置付け・観点を持ちますので、本連載では同義と扱います。
BDDの定義や観点などについては下記連載で扱っていますので、こちらも参考にしてください。
システムテストを含め、それぞれのテストレベルでは、その結合度に応じたさまざまな観点のテストが行われます。このテストの種類は「テストタイプ」と呼ばれています。
テストタイプには、「機能テスト」「使用性テスト」「回帰テスト」「性能テスト」「ロードテスト」「ストレステスト」などの種類がありますが、この中で最も自動化する価値の高い「機能テスト」を本連載では扱います(筆者はこれを「システムレベルの機能テスト」と呼んでいます)。
機能テストは、テスト対象の機能仕様に基いて実施するテストで、アプリがどう振る舞うか(ある入力に対して、どのような出力を行うか)を確認します。
システムテストではアプリのUIを操作して入力し、UIに表示される内容をもって出力を判断することになります。古典的なテストツールではタップする点をスクリーンのx,y座標で指定し、出力は画面のスクリーンショットをもって画像で判定するなどしていました。
これに対し、近年のモダンなテスト自動化ツールでは、アプリの画面を構成する(iOSではUIView、AndroidではLayoutの)ツリー構造をたどってUIコンポーネントを特定し、そのUIコンポーネントをコントロールすることによってテストを実行できます。従って、アプリの画面レイアウトが変更されても、同じテストコードを修正することなく使い続けることができます。
また、自動化した機能テストは「回帰テスト」にも利用できます。回帰テストとは、アプリのバージョンアップの際、エンハンスバグ(デグレード)の混入を早期発見することを目的に同じテストを実行するもので、このとき、もし画面レイアウトが少々変更されていてもそのまま実行できるロバストな(変更に強い)テストであることは重要です。
なお、本連載では扱わないテストタイプのうち、例えば「使用性(ユーザビリティ)テスト」は、その評価が人間の知覚・感覚に依存するため機械的な合否判断が難しいテストです。ここには、実機を実際に人間の手で操作して操作のしやすさなどを評価することの他、複数のOSバージョンや機種での表示崩れ、文字がトランケート("..."で省略)されるなど、いわゆる「見栄え」の検証も含みます。
見栄えに関しては、自動化したテストの中でスクリーンショットを撮影して残し、判断は人間が目視で行うといった半自動での運用を検討してみてください。
MonkeyTalk(旧称:FoneMonkey)は、米CloudMonkey社(Gorilla Logic社からのスピンオフ)が開発・公開しているオープンソース(GNU Affero General Public License, version 3)のテスト自動化ツールで、QA担当者にも扱いやすい表形式でのテストスクリプト記述が可能です。
また、扱うことのできるUIコンポーネントは抽象化されており、iOSアプリとAndroidアプリでテストスクリプトをほぼ共通化できます。
MonkeyTalkの主な特徴は以下の通りです。
MonkeyTalkは、CloudMonkey社のWebサイトからダウンロードできます。本稿執筆時点では基本機能を持つCommunity Editionの他、CI(継続的インテグレーション)連携機能などが追加されたProfessional Editionのパブリックベータ版が配布されています。
本稿では、Community Editionのバージョン2.0.5を使用して解説します。
ダウンロードにはユーザー登録が必要です。"MonkeyTalkのサイト上部にある「register」からユーザー登録を行った後、「DEVELOPER RESOURCES」→「DOWNLOADS」をクリックし、開発プラットフォームを選択するとzipファイルのダウンロードが始まります。
Copyright © ITmedia, Inc. All Rights Reserved.