SlideShare a Scribd company logo
1 of 43
Download to read offline
Unit / UI Testing - Xamarin
2017/06/25
JXUG 福岡 Xamarin 活用事例キャッチアップ!
株式会社アイキューブドシステムズ
藤本 武
Agenda
Introduction
Unit Test
UI Test
Resources
Appendix
Introduction - Architecture & Test Framework
 本資料では、以下の内容を説明します
 Unit Test : NUnit
 Xamarin.UITest
View ViewModel
Xamarin.UITest Unit Test Unit Test App
Portable Class LibraryXAML, AXML, Storyboard Native Class Library
Model
Unit Test
Unit Testing with NUnit
Unit Test Agenda
Unit Test の基本
Data-Driven Tests
Moq の利用
Unit Test の基本
 例:割り算(Divide)メソッドの単体テストを考える
Unit Test の基本
 テストプロジェクトの作成
Visual Studio 2017 Visual Studio for Mac
Unit Test の基本
 例:最も基本的なテスト
TestFixture 属性の付与
Test属性の付与
テスト対象のクラスの処理を実行
実行結果の検証
Unit Test の基本
 テストの実行
Visual Studio 2017
Unit Test の基本
 テストの実行
Visual Studio for Mac
Unit Test の基本
 結果の検証
 NUnit が提供する Assert クラスを利用する
 前処理と後処理
 SetUp 属性
 この属性を付与すると、各テストメソッド実行前に呼び出される
 TearDown 後処理
 この属性を付与すると、各テストメソッド実行後に呼び出される
主なメソッド 概要
Assert.That オブジェクトが制約に従うかどうかを検証する
Assert.AreEqual 二値が等しいかどうかを検証する
Assert.IsTrue 指定した条件が真となるかを検証する
Assert.IsNull 指定したオブジェクトが null かどうかを検証する
Assert.Throws<T> 例外がスローされることを検証する
Data-Driven Tests - TestCase
 TestCase 属性をテストメソッドに付与
・属性に指定した値がテストメソッドに渡される
・この例の場合、3回テストメソッドが呼ばれる
Data-Driven Tests - TestCaseSource
 テストデータを返すクラスとそのメソッドを指定
Moq の利用
 ViewModel, Model には、以下のようなコードブロックが存
在し、単純に単体テストを行うことが難しい場合がある
 Native 機能に依存する部分
 外部サービスに依存している部分
View ViewModel
Xamarin.UITest Unit Test Unit Test App
Portable Class LibraryXAML, AXML, Storyboard Native Class Library
Model
Moq を利用することで上記のような部分を簡単に Mock 化することができる
Moq の利用
 例:データベースアクセスを行う IDataStore に依存する ViewModel
Moq の利用
 Moq を使った Unit テストコードの例
Mock クラスでインスタンスを生成
Mock の振る舞い(メソッド)を設定
Mock オブジェクトの Object プロパティを利用する
UI Test
UI Testing with Xamarin.UITest
UI Test Agenda
Overview
IApp Interface
REPL (read-eval-print-loop)
Xamarin Test Recorder
Overview
 UI Test プロジェクトの作成
Visual Studio 2017 Visual Studio for Mac
Overview
 Xamarin.UITest プロジェクトの構造
AppInitializer
UI Test の初期化・構成を行う
Test(ひな型)
UI テストを記述するクラス
Overview
 AppInitializer
既にインストールされたアプリをテストするとき
・Android : パッケージ名
・iOS : Bundle Id
特定のデバイス上でテストを行う場合
・iPhone 7 (iOS 10.3) の Simulator
テストするバイナリを指定する場合
・iOS:app ファイル
スクリーンショットのローカル保存
Overview
 TestFramework は Nunit
Overview
 IApp インターフェース
 テスト対象のアプリケーションの操作を行うためのインターフェース
IApp Interface
 IApp Interface には、アプリケーションのコントロールの取
得・操作などを行うメソッドが提供されている
主なメソッド 説明
Query 指定した条件に該当する UI 要素を検索する
Tap UI 要素をタップする
Screenshot スクリーンショットを撮影する
EnterText テキストを入力する
SwipeLeft 左スワイプ
SwipeRight 右スワイプ
ScrollDown 下にスクロールする
ScrollUp 上にスクロールする
Flash 当該 UI 要素を点滅させる
IApp Interface
 Query メソッドによる UI の検索(Xamarin.Forms)
AutomationId を付与
IApp Interface
 Query メソッドによる UI の検索(続き)
AutomationId の値が “TodoText” の UI 要素を検索
・UI 要素の検証は NUnit の Assert を利用
・UI 要素の一つ目の Text の値を検証
REPL (read-eval-print-loop)
 UI Test コードを記述するための支援ツール
 アプリケーションの UI ツリーをコンソールで操作することができる
app.Repl() で起動される
tree コマンド
・UI ツリーを表示
 Xamarin Test Recorder とは
 UI テストコードを自動的に生成する支援ツール
 使い方
 Test Fixture 属性の「Record New Test」ボタンを押して実行する
Xamarin Test Recorder
Xamarin Test Recorder
 画面を操作すると、その操作に対応するテストコードが追記される
ツールの起動を待つこと
Resources
 NUnit
 https://www.nunit.org/
 Moq
 https://github.com/moq/moq4
 Xamarin.UITest
 https://developer.xamarin.com/guides/testcloud/uitest/
Appendix
Appendix: Unit Test with Visual Studio Team Services
 VSTS の自動ビルドのタスクに Unit Test のタスクを追加できる
Appendix: Unit Test with Visual Studio Team Services
 Unit Test のタスク設定
Unit Test プロジェクトのアセンブリを指定
Appendix: Unit Test with Visual Studio Team Services
 Unit Test のタスク設定(続き)
・カスタムテストアダプタのパスを指定
・NUnit
・NUnit Test Adapter のパスを指定
・テストプロジェクトに Nuget
パッケージをインストールしておくとよい
Appendix: Unit Test with Visual Studio Team Services
 Unit Test の結果は、自動ビルドの結果の中に保存される
Appendix: VSTS と Mobile Center の連携
 VSTS のビルドタスクで、Mobile Center の UI Test 実行することができる
Appendix: VSTS と Mobile Center の連携
 設定
Apk, app ファイルのパス
UI Test を指定
UITest のビルド出力先
Appendix: VSTS と Mobile Center の連携
 設定(続き) Xamain.UITest のパス
Mobile Center への接続設定
・Mobile Center 側で API Token を
発行しておく必要がある
ユーザー名とMobile Center のアプリケーション識別子 {username}/{app_identifier}
Devices の値は次ページを参考
Appendix: VSTS と Mobile Center の連携
 設定(続き)
 Devices の値は、Running tests のコマンドに表示される --devices オプ
ションの値
Appendix: VSTS と Mobile Center の連携
 結果の確認:テスト結果概要
Appendix: VSTS と Mobile Center の連携
 結果の確認(続き):各テスト項目の結果
Appendix: VSTS と Mobile Center の連携
 結果の確認(続き):テスト項目の詳細
Appendix: VSTS と Mobile Center の連携
 結果の確認(続き):テストログ

More Related Content

Similar to 20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin

アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。Dai FUJIHARA
 
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介Shinsuke Matsuki
 
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Naoto Kishino
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考えるyasuohosotani
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門Shingo Tamaki
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説Kinji Akemine
 
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようSalesforce Developers Japan
 
機械学習を活用したテスト自動化システムの設計
機械学習を活用したテスト自動化システムの設計機械学習を活用したテスト自動化システムの設計
機械学習を活用したテスト自動化システムの設計Nozomi Ito
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 智治 長沢
 
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発Akira Inoue
 
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)Kotaro Ogino
 
完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜
完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜
完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜Nozomi Ito
 
iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2Shin Ise
 
Enterprise TEST Forum 2012
Enterprise TEST Forum 2012Enterprise TEST Forum 2012
Enterprise TEST Forum 2012智治 長沢
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック智治 長沢
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App CenterTakeshi Fujimoto
 
iOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestiOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestKatsumi Kishikawa
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際Satsuki Urayama
 
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpharyuji koyama
 

Similar to 20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin (20)

アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
 
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
 
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
 
About junit
About junitAbout junit
About junit
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
 
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
 
機械学習を活用したテスト自動化システムの設計
機械学習を活用したテスト自動化システムの設計機械学習を活用したテスト自動化システムの設計
機械学習を活用したテスト自動化システムの設計
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
 
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
 
完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜
完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜
完全版:「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜
 
iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2
 
Enterprise TEST Forum 2012
Enterprise TEST Forum 2012Enterprise TEST Forum 2012
Enterprise TEST Forum 2012
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App Center
 
iOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestiOSアプリケーションの Unit Test
iOSアプリケーションの Unit Test
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
 
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
 

More from Takeshi Fujimoto

2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 LauncherTakeshi Fujimoto
 
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System HelpersTakeshi Fujimoto
 
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 PreferencesTakeshi Fujimoto
 
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とはTakeshi Fujimoto
 
2019 07-20 JXUG Xamarin.Forms の今
2019 07-20 JXUG Xamarin.Forms の今2019 07-20 JXUG Xamarin.Forms の今
2019 07-20 JXUG Xamarin.Forms の今Takeshi Fujimoto
 
Portable class library to .NET Standard Extension
Portable class library to .NET Standard ExtensionPortable class library to .NET Standard Extension
Portable class library to .NET Standard ExtensionTakeshi Fujimoto
 
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018Takeshi Fujimoto
 
Xamarin with Entity Framework Core
Xamarin with Entity Framework CoreXamarin with Entity Framework Core
Xamarin with Entity Framework CoreTakeshi Fujimoto
 
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Takeshi Fujimoto
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibilityTakeshi Fujimoto
 

More from Takeshi Fujimoto (10)

2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
2019-11-22 JXUG Introduction to Xamarin.Essentials #4 Launcher
 
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
2019-10-18 JXUG Xamarin.Essentials - #3 File System Helpers
 
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
2019-09-20 JXUG Introduction to Xamarin.Essentials #2 Preferences
 
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは
2019 08-30 JXUG Xamarin.Essentials #1 Xamarin.Essentials とは
 
2019 07-20 JXUG Xamarin.Forms の今
2019 07-20 JXUG Xamarin.Forms の今2019 07-20 JXUG Xamarin.Forms の今
2019 07-20 JXUG Xamarin.Forms の今
 
Portable class library to .NET Standard Extension
Portable class library to .NET Standard ExtensionPortable class library to .NET Standard Extension
Portable class library to .NET Standard Extension
 
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
Xamarin in Microsoft Build 2018 - JXUG Fukuoka May-25-2018
 
Xamarin with Entity Framework Core
Xamarin with Entity Framework CoreXamarin with Entity Framework Core
Xamarin with Entity Framework Core
 
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibility
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (10)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin

  • 1. Unit / UI Testing - Xamarin 2017/06/25 JXUG 福岡 Xamarin 活用事例キャッチアップ! 株式会社アイキューブドシステムズ 藤本 武
  • 3. Introduction - Architecture & Test Framework  本資料では、以下の内容を説明します  Unit Test : NUnit  Xamarin.UITest View ViewModel Xamarin.UITest Unit Test Unit Test App Portable Class LibraryXAML, AXML, Storyboard Native Class Library Model
  • 5. Unit Test Agenda Unit Test の基本 Data-Driven Tests Moq の利用
  • 6. Unit Test の基本  例:割り算(Divide)メソッドの単体テストを考える
  • 7. Unit Test の基本  テストプロジェクトの作成 Visual Studio 2017 Visual Studio for Mac
  • 8. Unit Test の基本  例:最も基本的なテスト TestFixture 属性の付与 Test属性の付与 テスト対象のクラスの処理を実行 実行結果の検証
  • 9. Unit Test の基本  テストの実行 Visual Studio 2017
  • 10. Unit Test の基本  テストの実行 Visual Studio for Mac
  • 11. Unit Test の基本  結果の検証  NUnit が提供する Assert クラスを利用する  前処理と後処理  SetUp 属性  この属性を付与すると、各テストメソッド実行前に呼び出される  TearDown 後処理  この属性を付与すると、各テストメソッド実行後に呼び出される 主なメソッド 概要 Assert.That オブジェクトが制約に従うかどうかを検証する Assert.AreEqual 二値が等しいかどうかを検証する Assert.IsTrue 指定した条件が真となるかを検証する Assert.IsNull 指定したオブジェクトが null かどうかを検証する Assert.Throws<T> 例外がスローされることを検証する
  • 12. Data-Driven Tests - TestCase  TestCase 属性をテストメソッドに付与 ・属性に指定した値がテストメソッドに渡される ・この例の場合、3回テストメソッドが呼ばれる
  • 13. Data-Driven Tests - TestCaseSource  テストデータを返すクラスとそのメソッドを指定
  • 14. Moq の利用  ViewModel, Model には、以下のようなコードブロックが存 在し、単純に単体テストを行うことが難しい場合がある  Native 機能に依存する部分  外部サービスに依存している部分 View ViewModel Xamarin.UITest Unit Test Unit Test App Portable Class LibraryXAML, AXML, Storyboard Native Class Library Model Moq を利用することで上記のような部分を簡単に Mock 化することができる
  • 16. Moq の利用  Moq を使った Unit テストコードの例 Mock クラスでインスタンスを生成 Mock の振る舞い(メソッド)を設定 Mock オブジェクトの Object プロパティを利用する
  • 17. UI Test UI Testing with Xamarin.UITest
  • 18. UI Test Agenda Overview IApp Interface REPL (read-eval-print-loop) Xamarin Test Recorder
  • 19. Overview  UI Test プロジェクトの作成 Visual Studio 2017 Visual Studio for Mac
  • 20. Overview  Xamarin.UITest プロジェクトの構造 AppInitializer UI Test の初期化・構成を行う Test(ひな型) UI テストを記述するクラス
  • 21. Overview  AppInitializer 既にインストールされたアプリをテストするとき ・Android : パッケージ名 ・iOS : Bundle Id 特定のデバイス上でテストを行う場合 ・iPhone 7 (iOS 10.3) の Simulator テストするバイナリを指定する場合 ・iOS:app ファイル スクリーンショットのローカル保存
  • 23. Overview  IApp インターフェース  テスト対象のアプリケーションの操作を行うためのインターフェース
  • 24. IApp Interface  IApp Interface には、アプリケーションのコントロールの取 得・操作などを行うメソッドが提供されている 主なメソッド 説明 Query 指定した条件に該当する UI 要素を検索する Tap UI 要素をタップする Screenshot スクリーンショットを撮影する EnterText テキストを入力する SwipeLeft 左スワイプ SwipeRight 右スワイプ ScrollDown 下にスクロールする ScrollUp 上にスクロールする Flash 当該 UI 要素を点滅させる
  • 25. IApp Interface  Query メソッドによる UI の検索(Xamarin.Forms) AutomationId を付与
  • 26. IApp Interface  Query メソッドによる UI の検索(続き) AutomationId の値が “TodoText” の UI 要素を検索 ・UI 要素の検証は NUnit の Assert を利用 ・UI 要素の一つ目の Text の値を検証
  • 27. REPL (read-eval-print-loop)  UI Test コードを記述するための支援ツール  アプリケーションの UI ツリーをコンソールで操作することができる app.Repl() で起動される tree コマンド ・UI ツリーを表示
  • 28.  Xamarin Test Recorder とは  UI テストコードを自動的に生成する支援ツール  使い方  Test Fixture 属性の「Record New Test」ボタンを押して実行する Xamarin Test Recorder
  • 29. Xamarin Test Recorder  画面を操作すると、その操作に対応するテストコードが追記される ツールの起動を待つこと
  • 30. Resources  NUnit  https://www.nunit.org/  Moq  https://github.com/moq/moq4  Xamarin.UITest  https://developer.xamarin.com/guides/testcloud/uitest/
  • 32. Appendix: Unit Test with Visual Studio Team Services  VSTS の自動ビルドのタスクに Unit Test のタスクを追加できる
  • 33. Appendix: Unit Test with Visual Studio Team Services  Unit Test のタスク設定 Unit Test プロジェクトのアセンブリを指定
  • 34. Appendix: Unit Test with Visual Studio Team Services  Unit Test のタスク設定(続き) ・カスタムテストアダプタのパスを指定 ・NUnit ・NUnit Test Adapter のパスを指定 ・テストプロジェクトに Nuget パッケージをインストールしておくとよい
  • 35. Appendix: Unit Test with Visual Studio Team Services  Unit Test の結果は、自動ビルドの結果の中に保存される
  • 36. Appendix: VSTS と Mobile Center の連携  VSTS のビルドタスクで、Mobile Center の UI Test 実行することができる
  • 37. Appendix: VSTS と Mobile Center の連携  設定 Apk, app ファイルのパス UI Test を指定 UITest のビルド出力先
  • 38. Appendix: VSTS と Mobile Center の連携  設定(続き) Xamain.UITest のパス Mobile Center への接続設定 ・Mobile Center 側で API Token を 発行しておく必要がある ユーザー名とMobile Center のアプリケーション識別子 {username}/{app_identifier} Devices の値は次ページを参考
  • 39. Appendix: VSTS と Mobile Center の連携  設定(続き)  Devices の値は、Running tests のコマンドに表示される --devices オプ ションの値
  • 40. Appendix: VSTS と Mobile Center の連携  結果の確認:テスト結果概要
  • 41. Appendix: VSTS と Mobile Center の連携  結果の確認(続き):各テスト項目の結果
  • 42. Appendix: VSTS と Mobile Center の連携  結果の確認(続き):テスト項目の詳細
  • 43. Appendix: VSTS と Mobile Center の連携  結果の確認(続き):テストログ