Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,302 views

Published on

2017/12/10に行われた、システムテスト自動カンファレンス2017-2のチュートリアルの資料です。

Published in: Software
  • Be the first to comment

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

  1. 1. 機械学習自動テストツール 「Magic Pod」体験チュートリアル システムテスト自動化カンファレンス 2017-2 2017.12.10 TRIDENT 伊藤 望
  2. 2. About Me p 伊藤 望 p 株式会社TRIDENT 代表取締役 n Magic Podの開発・運営 & テスト自動化支援 p コミュニティ運営 n 日本Seleniumユーザーコミュニティ p 執筆
  3. 3. チュートリアルの目標 p Magic Podの利用環境を整える p 実際のアプリを使った自動テストの作成・実行を体 験してみる
  4. 4. 事前準備 http://www.trident-qa.com/magic-pod-handson-setup/
  5. 5. アジェンダ 1. Magic Podの概要 2. 入門課題 [チュートリアル] 3. 実践課題 [チュートリアル]
  6. 6. 1. Magic Podの概要
  7. 7. Magic Pod p 機械学習を活用した自動テストWebサービス n ディープラーニングなどの技術を活用 n 現在はモバイルアプリ向けのみ p 読みやすい自動テストが簡単に作成できる
  8. 8. 利用プラン p 20テストケースまでは無料 p それ以上は 10テストケースあたり 1000円 /月 p テスト実行回数や、1社あたりの利用ユーザー数は 無制限
  9. 9. 構成 CIツール クラウド環境 Webサーバー スクリプトDB ユーザー環境 Magic Pod Desktop 端末 ①開始 ②スクリプト 取得 ③実行
  10. 10. 2. 入門課題 [チュートリアル]
  11. 11. p Magic Podの利用環境を整えます p Androidの「APIデモ」アプリを題材に、基本的なコマンド の使い方を覚えます 入門課題
  12. 12. p ユーザー登録を行う n https://magic-pod.com/home にアクセス n 「新規登録」からユーザー登録 ユーザーの登録
  13. 13. p 会社ごとに1つの「組織」を作成 p 管理者となるユーザーが「組織」を作成 組織の登録
  14. 14. p 「組織」の下にプロジェクトを作成する n プロジェクトはアプリごとに作成するのがオススメ n 「APIDemoApp」のプロジェクトを作成しましょう プロジェクトの登録
  15. 15. 入門課題その1 テストを作ってみよう 入門課題その1 「APIデモアプリ」の「Accessibility」のリスト行をタップする だけの、簡単なテストを作成してください
  16. 16. p プロジェクトにテスト「入門課題その1」を作成します p 作成したら編集画面を開きます 入門課題その1 テストの作成
  17. 17. p APKファイルのパスを取得 1. ファイル「ApiDemos-debug.apk」を右クリック 2. メニューが開いた状態で、 「Option」キーを押す 3. 「パス名をコピー」 入門課題その1 APKファイルの指定
  18. 18. p ターゲットOSは「Android」 p APKファイルのパスを指定 入門課題その1 APKファイルの指定
  19. 19. p 「新バージョンのテスト実行エンジンを使う」をチェック n より安定した「UiAutomator2」を使います p 「テスト実行前にアプリの状態をクリアする」もチェック n 毎回アプリの初期状態からテストが始まります 入門課題その1 各種設定をチェック
  20. 20. 入門課題その1 画面キャプチャの取得 p Android端末をUSBケーブルで接続します p APKファイルを指定した状態で、「接続ボタン」( ) を押します
  21. 21. 入門課題その1 画面キャプチャの取得 p Magic Pod Desktopが起動するので、先ほど登録した メールアドレスとパスワードを入力します
  22. 22. 入門課題その1 端末との接続 p しばらく待つと、端末との接続とアプリのインストール が完了します p 完了後、接続ボタンのステータスが青色になります
  23. 23. 入門課題その1 画面キャプチャの取得 p 「デスクトップアプリでUIをキャプチャ」を押すと、アプ リの現在の画面がアップロードされます
  24. 24. 入門課題その1 テストスクリプトの作成 p 領域「Accessibility」を押すテスト手順を作成します n 端末によっては、「リストの1行目」という名前になっているこ ともあります p 画面キャプチャエリアから、テストスクリプトエリアに、 項目をドラッグ&ドロップ
  25. 25. 入門課題その1 テストの実行 p ボタンを押すと、テストが実行されます p テストが成功すれば、課題は完了です p テスト実行結果の番号を押すと、テスト結果の詳細を 確認できます。
  26. 26. 入門課題その1 解答例
  27. 27. 実践課題その1 Tips「詳しい要素情報の確認」 p Chromeの右クリック >「検証」の機能で、Appiumの 要素情報を調べられます
  28. 28. 入門課題その1 Tips「要素名の変更」 p Magic Pod Desktopで取得した要素をクリックすると、名 前を自由に変更できます ※ Web上に画像をドラッグ&ドロップした場合は修正不可
  29. 29. 入門課題その1 Tips「テストコードの実体」 p /Users/<ユーザ名>/Desktop/magicPod/test 以下 テスト手順 (…/test以下) UIマップ (…/test/base/ui 以下) 画面情報を修正すると この日本語が書き換わる
  30. 30. 入門課題その2 複数画面のテストを作ってみよう 入門課題その2 「APIデモアプリ」の以下のテストを作成してください 1 「Accessibility」のリスト行をタップ 2 「Accessibility Node Provider」のリスト行をタップ
  31. 31. p プロジェクトにテスト「入門課題その2」を作成します 入門課題その2 複数画面のテストを作ってみよう
  32. 32. p アプリの指定等は、現状テストごとに必要です 入門課題その2 各種設定をチェック
  33. 33. 入門課題その2 複数画面のアップロード p 画面キャプチャは何枚でもアップロードできます p スキャンが始まれば、次のUIをアップロード可能です UI切り替えボタン UI追加ボタン
  34. 34. 入門課題その2 解答例
  35. 35. 入門課題その2 Tips「画面キャプチャが増えてきたら」 p 画面名を変更し、目的の画面を見つけやすくしましょう p 画面の順番はドラッグ&ドロップで変更できます
  36. 36. 入門課題その3 スクロールしてみよう 入門課題その3 (10分) 「APIデモアプリ」の以下のテストを作成してください 1 「Graphics」のリスト行をタップ 2 「Surface Window」のリスト行をタップ
  37. 37. 入門課題その3 ヒント「スクロールしてみよう」 p スクロールの範囲外の要素をタップするには 1. タップしたい要素が写っている画面をキャプチャします 2. 「表示されるまでスワイプ」を使い、要素を表示します 3. 要素をタップします スワイプの方向に注意!!
  38. 38. 入門課題その3 解答例
  39. 39. 入門課題その3 Tips「テストを強制終了したい」 p 以下の2つを実施すればOKです 1. Magic Pod Desktopを×ボタンで閉じる 2. ブラウザ上でページを読み込み直す
  40. 40. 入門課題その4 テキスト入力と値のチェック 入門課題その4 (10分) 「APIデモアプリ」の以下のテストを作成してください 1 App > Activity > Custom Title に移動 2 「Left is best」入力エリアに「テスト」と入力 3 「Change Left」ボタンをタップ 4 画面上部タイトルの「Left is best」が 「テスト」に変わったのをチェック ボタン タイトル 入力エリア
  41. 41. 入門課題その4 ヒント「テキスト入力と値のチェック」 p テキスト入力は、「テキスト入力」のコマンドを使います p 値のチェック(アサート)は、「一致するかチェック」のコ マンドを使います
  42. 42. 入門課題その4 解答例 ※ 要素名は、一部わかりやすい名前に変更しています
  43. 43. 入門課題その4 Tips「エラー時の画面を見たい」 p テスト結果画面のエラー行にマウスを当てると、エ ラー時の画面キャプチャが表示されます p それ以外の行のキャプチャは、実行時のものではな いので注意!
  44. 44. 入門課題その4 Tips 「エラー原因を詳しく調べたい」 p テスト結果画面の「エラー時のUIツリーを表示」でUI 情報を詳しく調査できます
  45. 45. p 入門課題は以上です! 入門課題
  46. 46. 3. 実践課題 [チュートリアル]
  47. 47. p Instagramで、より実践的なテストを作ってみましょう 1. ログイン/ログアウトが成功すること 2. 画像のアップロードが成功すること (チャレンジ課題) 実践課題
  48. 48. p 最初に、Instagramにテスト用ダミーアカウントを作成し てください n ユーザー名/パスワードは、ともに他人に見られてもよいもの n メールアドレスは、 example+123@gmail.comのように+以降 を加えることで、既存メールアドレスを使い回せます(gmailの 場合) p Q: ユーザー登録のテストも自動化しないんですか? n A: 自動で何回も作っているとInstagramに弾かれるように なったので、やめましょう 実践課題 ダミーアカウントの作成
  49. 49. p 「Instagram」のダミーアカウントで、ログインしてログ アウトするテストを自動化してみます 実践課題その1 ログイン・ログアウトをしてみよう
  50. 50. p 「Instagram」のプロジェクトを新たに作成しましょう n プロジェクトはアプリごとに作成するのでした 実践課題その1 新しいプロジェクトの登録
  51. 51. p 「Instagram」プロジェクトにテスト「ログインとログア ウトが成功すること」を作成します 実践課題その1 テストの作成
  52. 52. 1. 端末とMagic Podを接続します(アプリ名は空でOK) 2. 2つのチェックボックスをONにします 3. 「ターゲットタイプ」を「パッケージ/アクティビティ」にし ます 実践課題その1 Instagramアプリの指定方法
  53. 53. 3. 端末上でInstagramを起動します 4. ブラウザ上で「アプリ情報を取得」を押します 5. 現在起動しているアプリの「パッケージ/アクティビ ティ」情報が取得できます 実践課題その1 Instagramアプリの指定方法
  54. 54. 実践課題その1 ログイン・ログアウトをしてみよう 実践課題その1 (60分) 別紙「実践課題テストケース」の「実践課題その1」のテス トケースを自動化してください
  55. 55. 実践課題その1 ヒント「要注意ポイント」 p 最初の1回しか表示されない初回画面 p 表示されたりされなかったりするダイアログ
  56. 56. 実践課題その1 ヒント「テスト実行せずにアプリ状態をクリア」 p Instagramの先頭画面が出てこない!などの場合 p 端末の[設定]>[アプリ]>[Instagram]>[ストレージ]にて、 [データ]と[キャッシュ]を消去 n (端末によって異なります)
  57. 57. 実践課題その1 ヒント「時々出るダイアログの処理」 p ダイアログが表示された時に限りボタンを押したい p 「条件分岐」を使うと、特定の場合のみ処理が可能 p 「条件分岐終わり」コマンドを忘れずに
  58. 58. 実践課題その1 ヒント「端末の文字入力ができなくなった!」 p キーボードが自動テスト用のものになっています p 端末の[設定]>[詳細設定]>[言語と文字入力]>[デ フォルトのキーボード]を変更してください n (端末によって異なります)
  59. 59. 実践課題その1 ヒント「謎のStateElementReference」 p 画面が不安定なタイミングで操作しようとした場合に 発生します p 「待機」コマンドを使って解決できます n 例:「一致するまで待つ」コマンドなら、エラーが出ても一 定時間リトライします
  60. 60. 実践課題その1 解答例
  61. 61. 実践課題その1 解答例
  62. 62. 実践課題その2 写真を撮影・投稿してみよう 実践課題その2 別紙「実践課題テストケース」の「実践課題その2」のテス トケースを自動化してください p 早く終わった方はチャレンジ!
  63. 63. 実践課題その2 ヒント「共有ステップ」 p ログインの処理を毎回書きたくない n メンテナンス性も悪そう p 「共有ステップ」の機能で、よく使う処理を部品にして 繰り返し使える
  64. 64. 実践課題その2 ヒント「共有ステップ」 1. 使いまわしたい処理のあるテストの画面で、「共有 ステップを新規作成」 2. 共有ステップ化する範囲を選択
  65. 65. 実践課題その2 ヒント「共有ステップ」 3. 名前を指定して、共有ステップを作成 4. プロジェクト内の各テストから利用可能になります
  66. 66. 実践課題その2 解答例
  67. 67. 実践課題その2 解答例
  68. 68. p 実践課題は以上です! 実践課題
  69. 69. 今日やったことのまとめ p Magic Podの利用環境を整えました p Magic Podの基本的なコマンドの使い方を学びました p 実際のアプリを使って実践的なテストを作成しました
  70. 70. p みなさんのアプリのテスト自動化に、Magic Podをぜひ 活用してみてください! p チャットルームも、ご登録ください!
  71. 71. お疲れさまでした!
  72. 72. 付録
  73. 73. チャレンジ課題
  74. 74. チャレンジ課題 早く終わった方はチャレンジ チャレンジ課題 • 「実践課題その2」の投稿Captionチェックでは、前回の テストの投稿をチェックしてしまう可能性があります • 投稿Captionに毎回違う値を利用して、この問題を解決 してください
  75. 75. チャレンジ課題 ヒント「ユニークな値の生成」 p 「現在時刻を元に生成したユニークな値を保存」の コマンドを使うと、変数(パラメータ)に毎回違う値を セットできます p 変数は${変数名}で他のステップから参照できます
  76. 76. チャレンジ課題 解答例
  77. 77. チャレンジ課題 テストのコマンドライン実行 チャレンジ課題 プロジェクト「Instagram」の2つのテストを、コマンドライン から一括で実行してください
  78. 78. チャレンジ課題 テストのコマンドライン実行 p Magic Pod Desktopをいったん終了 p /Users/<ユーザー名>/ライブラリ/Application Support/magic_pod_desktopにある 「magic_pod_config.json」を、デスクトップなどにコピー
  79. 79. チャレンジ課題 テストのコマンドライン実行 p json設定ファイルを編集 n projectはInstagramのプロジェクトに n 全テストを実行したいので、testNumberは空白に n あとはそのままでOK p 詳しい設定ファイルの記法は http://www.trident- qa.com/magic-pod-batch-test-run に記載
  80. 80. チャレンジ課題 テストのコマンドライン実行 p Macのターミナルを開く p Magic Pod Desktopのあるディレクトリに移動
  81. 81. チャレンジ課題 テストのコマンドライン実行 p 以下のコマンドを実行 p プロジェクトの全テストが実行されます "Magic Pod Desktop.app/Contents/MacOS/Magic Pod Desktop" run --magic_pod_config=<magic_pod_config.jsonの フルパス>
  82. 82. チャレンジ課題 テストのコマンドライン実行 p テスト結果は「バッチテスト実行」のページで確認で きます。 p このページからでもテストの一括実行が可能です
  83. 83. 実際の運用
  84. 84. p 各テストケースに依存関係を持たせない n 「1テストだけ選んで実行」ができないと、バグ調査やテスト ケース修正に非常に時間がかかる 良いGUIテストスクリプトの条件
  85. 85. p 主要なテストケースに絞る n 数が多いと、実行時間がかかる & メンテナンス困難になる p バグ出しや細かい動作チェックは手動テストを併用 n 修正箇所以外に予期せぬ影響がないかを自動テストで チェック p 毎日実行して(=CI)、開発効率向上につなげる 良いGUIテスト自動化の運用
  86. 86. CIによる開発効率の向上 CIがない場合 CIがある場合
  87. 87. 主要テストケースをCIするメリット • 一人のバグで多くの開発者が影響を受けるのを防ぐ • 開発した直後に不具合を検出できるので、修正が簡単に 開発効率の向上 基本的な動作を担保した状態でテストを開始できる 手動テスト戻りの軽減 • サーバ構成変更時の動作チェック • 本番環境でトラブルが起きていないかの定期的な確認 様々な用途への流用
  88. 88. Magic Podで始める賢いテスト自動化 2. 「重要シナリオ」「各画面の基本動作」等の テストに絞って自動化 1. まずはCI • ソース修正箇所のテストは手動、修正箇所 以外の動作確認を自動化 • 毎日実行し、問題をすぐに検出 3. テストの完全自動化 アプリのビルドなどをCIツールで自動化 ユニットテストをメインで自動化
  89. 89. 高度なトラブルシューティング
  90. 90. 高度なトラブルシューティング p Magic Pod Desktopの「Appium Console」にAppiumサー バのログが出ています n デスクトップ/magicPod/appium_gui.logにも同様の内容が残 ります p Magic Pod Desktop画面下にある「Debug」チェックをON にするとより詳細なログが出ます n ウィンドウサイズを拡大する必要があります p 前回の画面キャプチャ取得時の画像とXML n デスクトップ/magicPod/capture_temp.*** p テスト失敗時の画面キャプチャの画像とXML n デスクトップ/magicPod/test_end_screen_shot.***

×