わんくま同盟 名古屋勉強会 #40
Xamarin で
自動化テストしよう
2016/12/17
BluewaterSoft @biac
2016/12/17 1
わんくま同盟 名古屋勉強会 #40
スピーカー紹介
• BluewaterSoft 山本 康彦 a.k.a @biac
まだ人工衛星が飛んでない時代に生まれ、HONDAでクルマの設計やってました
• Microsoft MVP for Windows Development (2014/10-2017/9)
• Windows ランタイム アプリ開発 / 記事や書籍の執筆 やってます
22016/12/17
わんくま同盟 名古屋勉強会 #40
スピーカー紹介
~ このセッションに関連する@ITの記事
• 特集:Visual StudioとXamarinで始める
iOS/Android/UWPアプリ開発
– 第1回:Xamarinでアプリを作ろう
http://www.atmarkit.co.jp/ait/articles/1609/23/news019.html
– 第2回:Xamarin.FormsとネイティブUI
http://www.atmarkit.co.jp/ait/articles/1611/02/news025.html
– 第3回:Xamarinにおけるコードの共通化とプ
ラットフォーム固有のコードの記述
http://www.atmarkit.co.jp/ait/articles/1612/02/news021.html
32016/12/17
わんくま同盟 名古屋勉強会 #38
LINQ
マジック!
新刊のCM
42016/12/17
わんくま同盟 名古屋勉強会 #40
C#プログラマーのための 基礎からわかる
LINQマジック!
• 2016年5月12日 発売♪
• 「LINQ? なにそれ美味しいの!?」
…という人に!
• 技術評論社
ISBN: 978-4-7741-8094-6
352ページ、¥3,110 (消費税込み)
2016/12/17 5
わんくま同盟 名古屋勉強会 #40
C#プログラマーのための 基礎からわかる
LINQマジック!
• Amazon
http://amzn.to/1Seb1Mb
※ Kindle版は¥2,880
• 技評デジタルパブリッシング
¥2,880 (PDF/ePubセット)
https://gihyo.jp/dp/ebook/2016/978-4-7741-8176-9
• その他のオンラインショップは、技評社のサイト
を参照してください
https://gihyo.jp/book/2016/978-4-7741-8094-6
2016/12/17 6
わんくま同盟 名古屋勉強会 #40
C#プログラマーのための 基礎からわかる
LINQマジック!
LINQは…
• 複雑な繰り返し処理 (ループ) が
簡潔に書ける♪
• パフォーマンスは
ほとんど低下しない!!
この本は、その秘密を解き明かします
2016/12/17 7
わんくま同盟 名古屋勉強会 #40
〔速攻入門〕 C#プログラミング
http://bluewatersoft.cocolog-nifty.com/blog/SokkoCSharp.html
〔速攻入門〕 C#プログラミング すぐに現場で使える知識
~ Java か C++ の経験があれば、 いっそう有利な最短ルート
中 博俊 (著), 猪股 健太郎 (著), 岩永 信之 (著), 山本 康彦 (著)
技術評論社 (2012/3/9)
Android / iPhone 開発をやってきた人に
最適な C# 解説書です
2016/12/17 8
わんくま同盟 名古屋勉強会 #38
Xamarin入門
正確には Visual Studio の
Xamarin tools (Xamarin for
Visual Studio)
2016/12/17 9
わんくま同盟 名古屋勉強会 #40
ざ ま り ん
Xamarin ってナニモノ?
• Xamarin Inc. のクロス プラットフォーム 開発ツール
Android / iOS / Windows
• C#で開発
• Xamarin Inc. をMicrosoftが買収 (2016/3/18)
⇨ Xamarin Platformが、Visual Studioに無償で入った♪
※ Community版(無償)以上。Expressには無し
2016/12/17 10
わんくま同盟 名古屋勉強会 #40
Xamarin の製品構成
※ 日本代理店はXLsoft https://www.xlsoft.com/jp/products/xamarin/
2016/12/17 11
IDE (Mac用 / Windows用) 自動テスト用クラウド
アプリ モニタリング トレーニング
これがVisual Studioに入った!
HockeyApp
Visual Studio Mobile Center (PV)
わんくま同盟 名古屋勉強会 #40
2つのXamarin Platform
※ https://www.xamarin.com/studio ; https://www.xamarin.com/visual-studio
2016/12/17 12
Xamarin Studio (Mac用) Xamarin for Visual Studio
これから紹介するのはこちら♪
Visual Studio for Mac (PV)
わんくま同盟 名古屋勉強会 #40
Xamarin入門 ⇒ 続きは…
• わんくま名古屋 #39 (2016/5/21)
「Xamarin で始める iOS / Android アプリ開発」
http://www.slideshare.net/yasuhikoy/38-20160521-xamarin
• @IT:Visual StudioとXamarinで始めるiOS/Android/UWPアプ
リ開発
第1回 http://www.atmarkit.co.jp/ait/articles/1609/23/news019.html
第2回 http://www.atmarkit.co.jp/ait/articles/1611/02/news025.html
第3回 http://www.atmarkit.co.jp/ait/articles/1612/02/news021.html
2016/12/17 13
わんくま同盟 名古屋勉強会 #38
テストの目的
と自動化戦略
なんのためにテストする?
どこを自動化する?
2016/12/17 14
わんくま同盟 名古屋勉強会 #40
テストの目的
• 検証
決めたとおりに出来てる?
– 仕様 (設計) 通りにプログラムが
出来上がっているか?
– 大概、こっちしかやってない
• 評価
それでいいの?
– 仕様 (設計) を評価する。
仕様 (設計) は正しいか?
仕様 (設計) に改善点はないか?
– βテストの本来の目的
2016/12/17 15
わんくま同盟 名古屋勉強会 #40
テストの自動化しやすさ
• 検証
– 原理的には自動化可能
– ユニットテスト:容易
UIテスト:サポート次第
• 評価
– 現在は不可能
※ AI研究次第?
2016/12/17 16
わんくま同盟 名古屋勉強会 #40
検証テストのどこを自動化すべきか?
• 原理的には、どんな検証テストでも自動化できる
• 仕事としての開発では、コストが問題
• つまり、コストメリットがあるなら自動化する
自動化するコスト < 繰り返し手動テストするコスト
2016/12/17 17
わんくま同盟 名古屋勉強会 #38
Xamarinの
自動化テスト
UIテストも可能
2016/12/17 18
わんくま同盟 名古屋勉強会 #40
Xamarin for VSで使える自動化テスト
• ユニットテスト
– MSTest
[UWP、PCL]
– NUnit
[PCL、Android、iOS]
※ AndroidとiOSは、各プラット
フォーム上でNUnitを実行
• UIテスト
– Xamarin UI Test
[Android、iOS]
– Coded UI Test
[UWP]
※ Enterprise版のみ
2016/12/17 19
わんくま同盟 名古屋勉強会 #38
MSTest
MS純正ユニットテストフ
レームワーク
2016/12/17 20
わんくま同盟 名古屋勉強会 #40
ユニットテスト - MSTest
• プロジェクト作成時
上:.NET用
下:WinRT用
• 2つの違いは、テスト用
ライブラリ
⇒http://www.tdd-
net.jp/2013/12/mstestwindows-w.html
※ WinRT用の方が便利♪
でも、起動が遅い orz
2016/12/17 21
わんくま同盟 名古屋勉強会 #40
ユニットテスト - MSTest
• MSTest for .NET
– PCL用のユニットテスト
https://docs.microsoft.com/ja-
jp/visualstudio/test/unit-test-your-
code
• MSTest for WinRT
– UWP用のユニットテスト
Windows 8.x / Windows
Phone 8.x も
– PCL用のユニットテストも
OK
※ テスト起動に時間が掛かる
2016/12/17 22
わんくま同盟 名古屋勉強会 #40
ユニットテスト - 【参考】MSTest V2
• UWP用と.NET用を
統合
現在 preview 版
https://www.nuget.org/profiles/
MSTestFramework
https://blogs.msdn.microsoft.co
m/visualstudioalm/2016/06/17/
taking-the-mstest-framework-
forward-with-mstest-v2/
2016/12/17 23
わんくま同盟 名古屋勉強会 #38
NUnit
OSS ユニットテストフレー
ムワーク
2016/12/17 24
わんくま同盟 名古屋勉強会 #40
ユニットテスト - NUnit
• NUnitについては次を参照
⇒CodeZine「NUnitの全貌
~ 基本から、最新バージョ
ンの新機能まで」
(2012/04/13)
https://codezine.jp/article/detail/6518
2016/12/17 25
わんくま同盟 名古屋勉強会 #40
ユニットテスト - NUnit
• PCL用
1. 普通にクラスライブラリのプ
ロジェクトを作る
2. NuGetからNUnitを追加する
3. テスト対象を参照に追加し、
手作業でテストクラスを作る
• Android用/iOS用
– 各プラットフォーム用の
NUnitLiteを使用
Android用の例を次に
2016/12/17 26
わんくま同盟 名古屋勉強会 #40
ユニットテスト - NUnit [Android]
• 新規プロジェクトで [テス
ト] - [Unit Test App
(Android)]
2016/12/17 27
わんくま同盟 名古屋勉強会 #40
ユニットテスト - NUnit [Android]
1. テストを書く
2. テストプロジェクトを実行する
(実機またはエミュレータ)
3. デバイス上でテストを実行する
(画像)
2016/12/17 28
わんくま同盟 名古屋勉強会 #38
Coded UI
Test
MS純正 UIテストフレームワーク
WPFやUWP用だよ!
2016/12/17 29
わんくま同盟 名古屋勉強会 #40
UIテスト - Coded UI Test
• Enterprise版のみ
詳細はMSDN参照: 「UI オートメーションを使用してコードをテストする」
https://msdn.microsoft.com/ja-jp/library/dd286726.aspx
2016/12/17 30
わんくま同盟 名古屋勉強会 #38
Xamarin UI
Test
Xamarin 付属 UIテストフレーム
ワーク
Android / iOS アプリ用だよ!!
2016/12/17 31
わんくま同盟 名古屋勉強会 #40
Xamarin UIテスト - 試してみた環境
• Windows 10 1607 (14965.1001)
Visual Studio 2015 Update 3
• Xamarin 4.2.1.60 (47830f6)
Xamarin.Forms 2.2.0.45
※ バージョンが違うと、細部は異なる可能性があります
• Android アプリのUIテストをやってみよう❢
2016/12/17 32
わんくま同盟 名古屋勉強会 #40
Xamarin UIテスト - 対象アプリ
• Xamarin.Forms (PCL) で、こんなアプリを作った
• UIコントロールにテストからアクセスするには、AutomationIdを
付けておく
2016/12/17 33
ボタンをタップすると、
ラベルの文字列が変わる
わんくま同盟 名古屋勉強会 #40
Xamarin UIテスト - プロジェクト追加
• 新規プロジェクトのダイアログで
[UI Test App (Xamarin.UITest | Cross-Platform)] を選択
2016/12/17 34
わんくま同盟 名古屋勉強会 #40
Androidのプロジェクト設定を変更
[Android Options] で [Use Shared Runtime] のチェックを外す
2016/12/17 35
わんくま同盟 名古屋勉強会 #40
テスト初期化時:
Androidアプリを起動
AppInitializerクラスのStartAppメソッドに1行追加
2016/12/17 36
わんくま同盟 名古屋勉強会 #40
テスト初期化時:
スクリーンショットを可能にする
AppInitializerクラスのStartAppメソッドに1行追加
2016/12/17 37
わんくま同盟 名古屋勉強会 #40
始めのテスト:
REPLコンソールを表示してみる
TestsクラスのAppLaunchesメソッドに1行追加
2016/12/17 38
今回、iOSのテストはしないので
コメントアウトした
わんくま同盟 名古屋勉強会 #40
テストの準備:
最新のapkを作成する
アプリを一度デバッグ実行しておく
2016/12/17 39
わんくま同盟 名古屋勉強会 #40
始めのテスト:
テストエクスプローラーから実行
デバイス(or エミュレーター) は起動したままで!!
2016/12/17 40
わんくま同盟 名古屋勉強会 #40
始めのテスト:
テストエクスプローラーから実行
REPLコンソール
treeコマンドで、
実行中のUIコント
ロールの一覧を確
認
2016/12/17 41
わんくま同盟 名古屋勉強会 #40
2つめのテスト:
ボタンをクリックしてみる
Testsクラスにテストメソッドを追加
2016/12/17 42
わんくま同盟 名古屋勉強会 #38
まとめ
今回はここまで!
2016/12/17 43
わんくま同盟 名古屋勉強会 #40
Xamarin で 自動化テスト、やってみた♪
• 基本NUnit、らしい。
UWPアプリにはMSのテストも利用可
• Android / iOS のユニットテストは、たるい。
ロジックはできるだけ PCL 推奨。
• Xamarin UI Testは、クラウドで実行可能♪
442016/12/17
わんくま同盟 名古屋勉強会 #40
Xamarin
自動化テスト入門
2016/12/17
BluewaterSoft @biac
2016/12/17 45

わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう