機械学習自動テストツール「magic pod」体験チュートリアル

90
機械学習自動テストツール Magic Pod」体験チュートリアル システムテスト自動化カンファレンス 2017-2 2017.12.10 TRIDENT 伊藤 望

Upload: nozomi-ito

Post on 28-Jan-2018

1.029 views

Category:

Software


2 download

TRANSCRIPT

Page 1: 機械学習自動テストツール「Magic Pod」体験チュートリアル

機械学習自動テストツール「MagicPod」体験チュートリアル

システムテスト自動化カンファレンス 2017-22017.12.10

TRIDENT伊藤望

Page 2: 機械学習自動テストツール「Magic Pod」体験チュートリアル

About Mep伊藤望

p株式会社TRIDENT代表取締役n MagicPodの開発・運営 &テスト自動化支援

p コミュニティ運営

n 日本Seleniumユーザーコミュニティ

p執筆

Page 3: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チュートリアルの目標

p MagicPodの利用環境を整える

p実際のアプリを使った自動テストの作成・実行を体験してみる

Page 4: 機械学習自動テストツール「Magic Pod」体験チュートリアル

事前準備

http://www.trident-qa.com/magic-pod-handson-setup/

Page 5: 機械学習自動テストツール「Magic Pod」体験チュートリアル

アジェンダ

1. MagicPodの概要2. 入門課題 [チュートリアル]

3. 実践課題 [チュートリアル]

Page 6: 機械学習自動テストツール「Magic Pod」体験チュートリアル

1.MagicPodの概要

Page 7: 機械学習自動テストツール「Magic Pod」体験チュートリアル

MagicPodp機械学習を活用した自動テストWebサービス

n ディープラーニングなどの技術を活用

n 現在はモバイルアプリ向けのみ

p読みやすい自動テストが簡単に作成できる

Page 8: 機械学習自動テストツール「Magic Pod」体験チュートリアル

利用プラン

p 20テストケースまでは無料p それ以上は 10テストケースあたり 1000円 /月p テスト実行回数や、1社あたりの利用ユーザー数は無制限

Page 9: 機械学習自動テストツール「Magic Pod」体験チュートリアル

構成

CIツール

クラウド環境

Webサーバー

スクリプトDB

ユーザー環境

Magic Pod Desktop

端末

①開始②スクリプト取得

③実行

Page 10: 機械学習自動テストツール「Magic Pod」体験チュートリアル

2.入門課題 [チュートリアル]

Page 11: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p MagicPodの利用環境を整えますp Androidの「APIデモ」アプリを題材に、基本的なコマンドの使い方を覚えます

入門課題

Page 12: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p ユーザー登録を行う

n https://magic-pod.com/homeにアクセスn 「新規登録」からユーザー登録

ユーザーの登録

Page 13: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p会社ごとに1つの「組織」を作成p管理者となるユーザーが「組織」を作成

組織の登録

Page 14: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p 「組織」の下にプロジェクトを作成する

n プロジェクトはアプリごとに作成するのがオススメ

n 「APIDemoApp」のプロジェクトを作成しましょう

プロジェクトの登録

Page 15: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1テストを作ってみよう

入門課題その1

「APIデモアプリ」の「Accessibility」のリスト行をタップするだけの、簡単なテストを作成してください

Page 16: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p プロジェクトにテスト「入門課題その1」を作成しますp作成したら編集画面を開きます

入門課題その1テストの作成

Page 17: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p APKファイルのパスを取得1. ファイル「ApiDemos-debug.apk」を右クリック2. メニューが開いた状態で、 「Option」キーを押す3. 「パス名をコピー」

入門課題その1APKファイルの指定

Page 18: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p ターゲットOSは「Android」p APKファイルのパスを指定

入門課題その1APKファイルの指定

Page 19: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p 「新バージョンのテスト実行エンジンを使う」をチェック

n より安定した「UiAutomator2」を使います

p 「テスト実行前にアプリの状態をクリアする」もチェック

n 毎回アプリの初期状態からテストが始まります

入門課題その1各種設定をチェック

Page 20: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1画面キャプチャの取得

p Android端末をUSBケーブルで接続しますp APKファイルを指定した状態で、「接続ボタン」()を押します

Page 21: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1画面キャプチャの取得

p MagicPodDesktopが起動するので、先ほど登録したメールアドレスとパスワードを入力します

Page 22: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1端末との接続

p しばらく待つと、端末との接続とアプリのインストールが完了します

p完了後、接続ボタンのステータスが青色になります

Page 23: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1画面キャプチャの取得

p 「デスクトップアプリでUIをキャプチャ」を押すと、アプリの現在の画面がアップロードされます

Page 24: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1テストスクリプトの作成

p領域「Accessibility」を押すテスト手順を作成しますn 端末によっては、「リストの1行目」という名前になっていることもあります

p画面キャプチャエリアから、テストスクリプトエリアに、項目をドラッグ&ドロップ

Page 25: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1テストの実行

p ボタンを押すと、テストが実行されます

p テストが成功すれば、課題は完了です

p テスト実行結果の番号を押すと、テスト結果の詳細を確認できます。

Page 26: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1解答例

Page 27: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1Tips「詳しい要素情報の確認」p Chromeの右クリック >「検証」の機能で、Appiumの要素情報を調べられます

Page 28: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1Tips「要素名の変更」p MagicPodDesktopで取得した要素をクリックすると、名前を自由に変更できます

※Web上に画像をドラッグ&ドロップした場合は修正不可

Page 29: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その1Tips「テストコードの実体」p /Users/<ユーザ名>/Desktop/magicPod/test以下

テスト手順 (…/test以下) UIマップ (…/test/base/ui以下)

画面情報を修正するとこの日本語が書き換わる

Page 30: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その2複数画面のテストを作ってみよう

入門課題その2

「APIデモアプリ」の以下のテストを作成してください

1 「Accessibility」のリスト行をタップ

2 「Accessibility NodeProvider」のリスト行をタップ

Page 31: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p プロジェクトにテスト「入門課題その2」を作成します

入門課題その2複数画面のテストを作ってみよう

Page 32: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p アプリの指定等は、現状テストごとに必要です

入門課題その2各種設定をチェック

Page 33: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その2複数画面のアップロード

p画面キャプチャは何枚でもアップロードできます

p スキャンが始まれば、次のUIをアップロード可能です

UI切り替えボタン

UI追加ボタン

Page 34: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その2解答例

Page 35: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その2Tips「画面キャプチャが増えてきたら」p画面名を変更し、目的の画面を見つけやすくしましょう

p画面の順番はドラッグ&ドロップで変更できます

Page 36: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その3スクロールしてみよう

入門課題その3(10分)

「APIデモアプリ」の以下のテストを作成してください

1 「Graphics」のリスト行をタップ

2 「Surface Window」のリスト行をタップ

Page 37: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その3ヒント「スクロールしてみよう」

p スクロールの範囲外の要素をタップするには

1. タップしたい要素が写っている画面をキャプチャします

2. 「表示されるまでスワイプ」を使い、要素を表示します

3. 要素をタップします

スワイプの方向に注意!!

Page 38: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その3解答例

Page 39: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その3Tips「テストを強制終了したい」p以下の2つを実施すればOKです

1. MagicPodDesktopを×ボタンで閉じる2. ブラウザ上でページを読み込み直す

Page 40: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その4テキスト入力と値のチェック

入門課題その4 (10分)

「APIデモアプリ」の以下のテストを作成してください

1 App>Activity>Custom Titleに移動

2 「Left isbest」入力エリアに「テスト」と入力

3 「ChangeLeft」ボタンをタップ

4 画面上部タイトルの「Leftisbest」が「テスト」に変わったのをチェック

ボタン

タイトル

入力エリア

Page 41: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その4ヒント「テキスト入力と値のチェック」

p テキスト入力は、「テキスト入力」のコマンドを使います

p値のチェック(アサート)は、「一致するかチェック」のコマンドを使います

Page 42: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その4解答例

※要素名は、一部わかりやすい名前に変更しています

Page 43: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その4Tips「エラー時の画面を見たい」p テスト結果画面のエラー行にマウスを当てると、エラー時の画面キャプチャが表示されます

p それ以外の行のキャプチャは、実行時のものではないので注意!

Page 44: 機械学習自動テストツール「Magic Pod」体験チュートリアル

入門課題その4Tips「エラー原因を詳しく調べたい」p テスト結果画面の「エラー時のUIツリーを表示」でUI情報を詳しく調査できます

Page 45: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p入門課題は以上です!

入門課題

Page 46: 機械学習自動テストツール「Magic Pod」体験チュートリアル

3.実践課題 [チュートリアル]

Page 47: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p Instagramで、より実践的なテストを作ってみましょう1. ログイン/ログアウトが成功すること2. 画像のアップロードが成功すること (チャレンジ課題)

実践課題

Page 48: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p 初に、Instagramにテスト用ダミーアカウントを作成してください

n ユーザー名/パスワードは、ともに他人に見られてもよいものn メールアドレスは、 [email protected]のように+以降を加えることで、既存メールアドレスを使い回せます(gmailの場合)

p Q:ユーザー登録のテストも自動化しないんですか?n A:自動で何回も作っているとInstagramに弾かれるようになったので、やめましょう

実践課題ダミーアカウントの作成

Page 49: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p 「Instagram」のダミーアカウントで、ログインしてログアウトするテストを自動化してみます

実践課題その1ログイン・ログアウトをしてみよう

Page 50: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p 「Instagram」のプロジェクトを新たに作成しましょうn プロジェクトはアプリごとに作成するのでした

実践課題その1新しいプロジェクトの登録

Page 51: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p 「Instagram」プロジェクトにテスト「ログインとログアウトが成功すること」を作成します

実践課題その1テストの作成

Page 52: 機械学習自動テストツール「Magic Pod」体験チュートリアル

1. 端末とMagicPodを接続します(アプリ名は空でOK)2. 2つのチェックボックスをONにします3. 「ターゲットタイプ」を「パッケージ/アクティビティ」にします

実践課題その1Instagramアプリの指定方法

Page 53: 機械学習自動テストツール「Magic Pod」体験チュートリアル

3. 端末上でInstagramを起動します4. ブラウザ上で「アプリ情報を取得」を押します

5. 現在起動しているアプリの「パッケージ/アクティビティ」情報が取得できます

実践課題その1Instagramアプリの指定方法

Page 54: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1ログイン・ログアウトをしてみよう

実践課題その1(60分)

別紙「実践課題テストケース」の「実践課題その1」のテストケースを自動化してください

Page 55: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1ヒント「要注意ポイント」

p 初の1回しか表示されない初回画面

p表示されたりされなかったりするダイアログ

Page 56: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1ヒント「テスト実行せずにアプリ状態をクリア」

p Instagramの先頭画面が出てこない!などの場合p端末の[設定]>[アプリ]>[Instagram]>[ストレージ]にて、[データ]と[キャッシュ]を消去n (端末によって異なります)

Page 57: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1ヒント「時々出るダイアログの処理」

p ダイアログが表示された時に限りボタンを押したい

p 「条件分岐」を使うと、特定の場合のみ処理が可能

p 「条件分岐終わり」コマンドを忘れずに

Page 58: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1ヒント「端末の文字入力ができなくなった!」

p キーボードが自動テスト用のものになっています

p端末の[設定]>[詳細設定]>[言語と文字入力]>[デフォルトのキーボード]を変更してくださいn (端末によって異なります)

Page 59: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1ヒント「謎のStateElementReference」p画面が不安定なタイミングで操作しようとした場合に発生します

p 「待機」コマンドを使って解決できます

n 例:「一致するまで待つ」コマンドなら、エラーが出ても一定時間リトライします

Page 60: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1解答例

Page 61: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その1解答例

Page 62: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その2写真を撮影・投稿してみよう

実践課題その2

別紙「実践課題テストケース」の「実践課題その2」のテストケースを自動化してください

p早く終わった方はチャレンジ!

Page 63: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その2ヒント「共有ステップ」

p ログインの処理を毎回書きたくない

n メンテナンス性も悪そう

p 「共有ステップ」の機能で、よく使う処理を部品にして繰り返し使える

Page 64: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その2ヒント「共有ステップ」

1. 使いまわしたい処理のあるテストの画面で、「共有ステップを新規作成」

2. 共有ステップ化する範囲を選択

Page 65: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その2ヒント「共有ステップ」

3. 名前を指定して、共有ステップを作成

4. プロジェクト内の各テストから利用可能になります

Page 66: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その2解答例

Page 67: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実践課題その2解答例

Page 68: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p実践課題は以上です!

実践課題

Page 69: 機械学習自動テストツール「Magic Pod」体験チュートリアル

今日やったことのまとめ

p MagicPodの利用環境を整えました

p MagicPodの基本的なコマンドの使い方を学びました

p実際のアプリを使って実践的なテストを作成しました

Page 70: 機械学習自動テストツール「Magic Pod」体験チュートリアル

pみなさんのアプリのテスト自動化に、MagicPodをぜひ活用してみてください!

p チャットルームも、ご登録ください!

Page 71: 機械学習自動テストツール「Magic Pod」体験チュートリアル

お疲れさまでした!

Page 72: 機械学習自動テストツール「Magic Pod」体験チュートリアル

付録

Page 73: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題

Page 74: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題早く終わった方はチャレンジ

チャレンジ課題

• 「実践課題その2」の投稿Captionチェックでは、前回のテストの投稿をチェックしてしまう可能性があります

• 投稿Captionに毎回違う値を利用して、この問題を解決してください

Page 75: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題ヒント「ユニークな値の生成」

p 「現在時刻を元に生成したユニークな値を保存」のコマンドを使うと、変数(パラメータ)に毎回違う値をセットできます

p変数は${変数名}で他のステップから参照できます

Page 76: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題解答例

Page 77: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題テストのコマンドライン実行

チャレンジ課題

プロジェクト「Instagram」の2つのテストを、コマンドラインから一括で実行してください

Page 78: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題テストのコマンドライン実行

p MagicPodDesktopをいったん終了

p /Users/<ユーザー名>/ライブラリ/ApplicationSupport/magic_pod_desktopにある「magic_pod_config.json」を、デスクトップなどにコピー

Page 79: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題テストのコマンドライン実行

p json設定ファイルを編集n projectはInstagramのプロジェクトにn 全テストを実行したいので、testNumberは空白に

n あとはそのままでOK

p詳しい設定ファイルの記法は http://www.trident-qa.com/magic-pod-batch-test-runに記載

Page 80: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題テストのコマンドライン実行

p Macのターミナルを開く

p MagicPodDesktopのあるディレクトリに移動

Page 81: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題テストのコマンドライン実行

p以下のコマンドを実行

p プロジェクトの全テストが実行されます

"Magic Pod Desktop.app/Contents/MacOS/Magic Pod Desktop" run --magic_pod_config=<magic_pod_config.jsonのフルパス>

Page 82: 機械学習自動テストツール「Magic Pod」体験チュートリアル

チャレンジ課題テストのコマンドライン実行

p テスト結果は「バッチテスト実行」のページで確認できます。

p このページからでもテストの一括実行が可能です

Page 83: 機械学習自動テストツール「Magic Pod」体験チュートリアル

実際の運用

Page 84: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p各テストケースに依存関係を持たせない

n 「1テストだけ選んで実行」ができないと、バグ調査やテストケース修正に非常に時間がかかる

良いGUIテストスクリプトの条件

Page 85: 機械学習自動テストツール「Magic Pod」体験チュートリアル

p主要なテストケースに絞る

n 数が多いと、実行時間がかかる &メンテナンス困難になる

pバグ出しや細かい動作チェックは手動テストを併用

n 修正箇所以外に予期せぬ影響がないかを自動テストでチェック

p毎日実行して(=CI)、開発効率向上につなげる

良いGUIテスト自動化の運用

Page 86: 機械学習自動テストツール「Magic Pod」体験チュートリアル

CIによる開発効率の向上CIがない場合

CIがある場合

Page 87: 機械学習自動テストツール「Magic Pod」体験チュートリアル

主要テストケースをCIするメリット

• 一人のバグで多くの開発者が影響を受けるのを防ぐ• 開発した直後に不具合を検出できるので、修正が簡単に

開発効率の向上

基本的な動作を担保した状態でテストを開始できる

手動テスト戻りの軽減

• サーバ構成変更時の動作チェック• 本番環境でトラブルが起きていないかの定期的な確認

様々な用途への流用

Page 88: 機械学習自動テストツール「Magic Pod」体験チュートリアル

MagicPodで始める賢いテスト自動化

2. 「重要シナリオ」「各画面の基本動作」等のテストに絞って自動化

1. まずはCI

• ソース修正箇所のテストは手動、修正箇所以外の動作確認を自動化

• 毎日実行し、問題をすぐに検出

3. テストの完全自動化

アプリのビルドなどをCIツールで自動化

ユニットテストをメインで自動化

Page 89: 機械学習自動テストツール「Magic Pod」体験チュートリアル

高度なトラブルシューティング

Page 90: 機械学習自動テストツール「Magic Pod」体験チュートリアル

高度なトラブルシューティング

p MagicPodDesktopの「AppiumConsole」にAppiumサーバのログが出ています

n デスクトップ/magicPod/appium_gui.logにも同様の内容が残ります

p MagicPodDesktop画面下にある「Debug」チェックをONにするとより詳細なログが出ます

n ウィンドウサイズを拡大する必要があります

p前回の画面キャプチャ取得時の画像とXMLn デスクトップ/magicPod/capture_temp.***

p テスト失敗時の画面キャプチャの画像とXMLn デスクトップ/magicPod/test_end_screen_shot.***