狠狠撸

狠狠撸Share a Scribd company logo
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 の基本
? 例:割り算(顿颈惫颈诲别)メソッドの単体テストを考える
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 (20)

アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
?
自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介
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
?
完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?
完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?
完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?
Nozomi Ito
?
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
Takeshi Fujimoto
?
iOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestiOSアプリケーションの Unit Test
iOSアプリケーションの Unit Test
Katsumi Kishikawa
?
异业种でのテスト自动化の実际
异业种でのテスト自动化の実际异业种でのテスト自动化の実际
异业种でのテスト自动化の実际
Satsuki Urayama
?
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
ryuji koyama
?
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
?
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
?
自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介
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
?
完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?
完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?
完全版:「鲍滨自动テストツールと础滨」?础滨を使った自动テストの「今」と「未来」?
Nozomi Ito
?
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
Takeshi Fujimoto
?
iOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestiOSアプリケーションの Unit Test
iOSアプリケーションの Unit Test
Katsumi Kishikawa
?
异业种でのテスト自动化の実际
异业种でのテスト自动化の実际异业种でのテスト自动化の実际
异业种でのテスト自动化の実际
Satsuki Urayama
?
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
ryuji koyama
?
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
?

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
Takeshi 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 Helpers
Takeshi 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 Preferences
Takeshi 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 Extension
Takeshi 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-2018
Takeshi Fujimoto
?
Xamarin with Entity Framework Core
Xamarin with Entity Framework CoreXamarin with Entity Framework Core
Xamarin with Entity Framework Core
Takeshi Fujimoto
?
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209
Takeshi Fujimoto
?
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibility
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 Launcher
Takeshi 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 Helpers
Takeshi 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 Preferences
Takeshi 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 Extension
Takeshi 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-2018
Takeshi Fujimoto
?
Xamarin with Entity Framework Core
Xamarin with Entity Framework CoreXamarin with Entity Framework Core
Xamarin with Entity Framework Core
Takeshi Fujimoto
?
Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209Introduction to Xamarin - JXUG 20171209
Introduction to Xamarin - JXUG 20171209
Takeshi Fujimoto
?

Recently uploaded (15)

空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
CRI Japan, Inc.
?
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
shomayama0221
?
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
CRI Japan, Inc.
?
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
shomayama0221
?
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?

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 の基本 ? 例:割り算(顿颈惫颈诲别)メソッドの単体テストを考える
  • 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 の連携 ? 結果の確認(続き):テストログ