Upload
yasuhiko-yamamoto
View
422
Download
0
Embed Size (px)
Citation preview
わんくま同盟 名古屋勉強会 #40
Xamarin で自動化テストしよう
2016/12/17BluewaterSoft @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とネイティブUIhttp://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-6352ページ、¥3,110 (消費税込み)
2016/12/17 5
わんくま同盟 名古屋勉強会 #40
C#プログラマーのための 基礎からわかるLINQマジック!
• Amazonhttp://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.com/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/17BluewaterSoft @biac
2016/12/17 45