45
わんくま同盟 名古屋勉強会 #40 Xamarin 自動化テストしよう 2016/12/17 BluewaterSoft @biac 2016/12/17 1

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

Embed Size (px)

Citation preview

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

わんくま同盟 名古屋勉強会 #40

Xamarin で自動化テストしよう

2016/12/17BluewaterSoft @biac

2016/12/17 1

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

わんくま同盟 名古屋勉強会 #40

スピーカー紹介

• BluewaterSoft 山本 康彦 a.k.a @biacまだ人工衛星が飛んでない時代に生まれ、HONDAでクルマの設計やってました

• Microsoft MVP for Windows Development (2014/10-2017/9)

• Windows ランタイム アプリ開発 / 記事や書籍の執筆 やってます

22016/12/17

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #38

LINQマジック!

新刊のCM

42016/12/17

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

わんくま同盟 名古屋勉強会 #40

C#プログラマーのための 基礎からわかるLINQマジック!

• 2016年5月12日 発売♪

• 「LINQ? なにそれ美味しいの!?」…という人に!

• 技術評論社ISBN: 978-4-7741-8094-6352ページ、¥3,110 (消費税込み)

2016/12/17 5

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #40

C#プログラマーのための 基礎からわかるLINQマジック!

LINQは…

• 複雑な繰り返し処理 (ループ) が簡潔に書ける♪

• パフォーマンスはほとんど低下しない!!

この本は、その秘密を解き明かします

2016/12/17 7

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

わんくま同盟 名古屋勉強会 #40

〔速攻入門〕 C#プログラミング

http://bluewatersoft.cocolog-nifty.com/blog/SokkoCSharp.html

〔速攻入門〕 C#プログラミングすぐに現場で使える知識

~ Java か C++ の経験があれば、いっそう有利な最短ルート

中 博俊 (著), 猪股 健太郎 (著), 岩永 信之 (著), 山本 康彦 (著)

技術評論社 (2012/3/9)

Android / iPhone 開発をやってきた人に最適な C# 解説書です

2016/12/17 8

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

わんくま同盟 名古屋勉強会 #38

Xamarin入門

正確には Visual Studio のXamarin tools (Xamarin for Visual Studio)

2016/12/17 9

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

わんくま同盟 名古屋勉強会 #40

ざ ま り ん

Xamarin ってナニモノ?• Xamarin Inc. のクロス プラットフォーム 開発ツールAndroid / iOS / Windows

• C#で開発

• Xamarin Inc. をMicrosoftが買収 (2016/3/18)⇨ Xamarin Platformが、Visual Studioに無償で入った♪

※ Community版(無償)以上。Expressには無し

2016/12/17 10

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

わんくま同盟 名古屋勉強会 #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)

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

わんくま同盟 名古屋勉強会 #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)

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #38

テストの目的と自動化戦略

なんのためにテストする?どこを自動化する?

2016/12/17 14

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

わんくま同盟 名古屋勉強会 #40

テストの目的

•検証決めたとおりに出来てる?

– 仕様 (設計) 通りにプログラムが出来上がっているか?

– 大概、こっちしかやってない

•評価それでいいの?

– 仕様 (設計) を評価する。仕様 (設計) は正しいか?仕様 (設計) に改善点はないか?

– βテストの本来の目的

2016/12/17 15

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

わんくま同盟 名古屋勉強会 #40

テストの自動化しやすさ

•検証

– 原理的には自動化可能

– ユニットテスト:容易UIテスト:サポート次第

•評価

– 現在は不可能※ AI研究次第?

2016/12/17 16

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

わんくま同盟 名古屋勉強会 #40

検証テストのどこを自動化すべきか?

• 原理的には、どんな検証テストでも自動化できる

• 仕事としての開発では、コストが問題

• つまり、コストメリットがあるなら自動化する

自動化するコスト < 繰り返し手動テストするコスト

2016/12/17 17

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

わんくま同盟 名古屋勉強会 #38

Xamarinの自動化テスト

UIテストも可能

2016/12/17 18

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #38

MSTest

MS純正ユニットテストフレームワーク

2016/12/17 20

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

わんくま同盟 名古屋勉強会 #40

ユニットテスト - MSTest

• プロジェクト作成時上:.NET用下:WinRT用

• 2つの違いは、テスト用ライブラリ⇒http://www.tdd-net.jp/2013/12/mstestwindows-w.html

※ WinRT用の方が便利♪でも、起動が遅い orz

2016/12/17 21

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #38

NUnit

OSS ユニットテストフレームワーク

2016/12/17 24

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

わんくま同盟 名古屋勉強会 #40

ユニットテスト - NUnit

• NUnitについては次を参照

⇒CodeZine「NUnitの全貌~ 基本から、最新バージョンの新機能まで」(2012/04/13)https://codezine.jp/article/detail/6518

2016/12/17 25

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

わんくま同盟 名古屋勉強会 #40

ユニットテスト - NUnit

• PCL用

1. 普通にクラスライブラリのプロジェクトを作る

2. NuGetからNUnitを追加する

3. テスト対象を参照に追加し、手作業でテストクラスを作る

• Android用/iOS用

– 各プラットフォーム用のNUnitLiteを使用

Android用の例を次に

2016/12/17 26

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

わんくま同盟 名古屋勉強会 #40

ユニットテスト - NUnit [Android]

• 新規プロジェクトで [テスト] - [Unit Test App (Android)]

2016/12/17 27

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

わんくま同盟 名古屋勉強会 #40

ユニットテスト - NUnit [Android]

1. テストを書く

2. テストプロジェクトを実行する(実機またはエミュレータ)

3. デバイス上でテストを実行する(画像)

2016/12/17 28

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

わんくま同盟 名古屋勉強会 #38

Coded UI Test

MS純正 UIテストフレームワークWPFやUWP用だよ!

2016/12/17 29

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

わんくま同盟 名古屋勉強会 #40

UIテスト - Coded UI Test

• Enterprise版のみ詳細はMSDN参照: 「UI オートメーションを使用してコードをテストする」https://msdn.microsoft.com/ja-jp/library/dd286726.aspx

2016/12/17 30

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

わんくま同盟 名古屋勉強会 #38

Xamarin UI Test

Xamarin 付属 UIテストフレームワークAndroid / iOS アプリ用だよ!!

2016/12/17 31

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

わんくま同盟 名古屋勉強会 #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

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

わんくま同盟 名古屋勉強会 #40

Xamarin UIテスト - 対象アプリ

• Xamarin.Forms (PCL) で、こんなアプリを作った

• UIコントロールにテストからアクセスするには、AutomationIdを付けておく

2016/12/17 33

ボタンをタップすると、ラベルの文字列が変わる

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

わんくま同盟 名古屋勉強会 #40

Xamarin UIテスト - プロジェクト追加

• 新規プロジェクトのダイアログで[UI Test App (Xamarin.UITest | Cross-Platform)] を選択

2016/12/17 34

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

わんくま同盟 名古屋勉強会 #40

Androidのプロジェクト設定を変更

[Android Options] で [Use Shared Runtime] のチェックを外す

2016/12/17 35

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

わんくま同盟 名古屋勉強会 #40

テスト初期化時:Androidアプリを起動

AppInitializerクラスのStartAppメソッドに1行追加

2016/12/17 36

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

わんくま同盟 名古屋勉強会 #40

テスト初期化時:スクリーンショットを可能にする

AppInitializerクラスのStartAppメソッドに1行追加

2016/12/17 37

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

わんくま同盟 名古屋勉強会 #40

始めのテスト:REPLコンソールを表示してみる

TestsクラスのAppLaunchesメソッドに1行追加

2016/12/17 38

今回、iOSのテストはしないのでコメントアウトした

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

わんくま同盟 名古屋勉強会 #40

テストの準備:最新のapkを作成する

アプリを一度デバッグ実行しておく

2016/12/17 39

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

わんくま同盟 名古屋勉強会 #40

始めのテスト:テストエクスプローラーから実行

デバイス(or エミュレーター) は起動したままで!!

2016/12/17 40

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

わんくま同盟 名古屋勉強会 #40

始めのテスト:テストエクスプローラーから実行

REPLコンソール

treeコマンドで、実行中のUIコントロールの一覧を確認

2016/12/17 41

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

わんくま同盟 名古屋勉強会 #40

2つめのテスト:ボタンをクリックしてみる

Testsクラスにテストメソッドを追加

2016/12/17 42

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

わんくま同盟 名古屋勉強会 #38

まとめ

今回はここまで!

2016/12/17 43

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

わんくま同盟 名古屋勉強会 #40

Xamarin で 自動化テスト、やってみた♪

• 基本NUnit、らしい。UWPアプリにはMSのテストも利用可

• Android / iOS のユニットテストは、たるい。ロジックはできるだけ PCL 推奨。

• Xamarin UI Testは、クラウドで実行可能♪

442016/12/17

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

わんくま同盟 名古屋勉強会 #40

Xamarin

自動化テスト入門

2016/12/17BluewaterSoft @biac

2016/12/17 45