visual studio online build を本気で使いこなして品質&効率を劇的に上げる! [...

35
Visual Studio Online BUILD ををををををををを をを をををををををををを &! [ Comm Tech Festival ] C-4 1 TFSUG Microsoft MVP for Visual Studio ALM をを を2015 を 9 を 26 を をを () Copyright© 2015 Shin-ichi Koga All Rights Reserved.

Upload: -

Post on 16-Apr-2017

3.847 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

1

Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる![ Comm Tech Festival ] C-4

TFSUG ・ Microsoft MVP for Visual Studio ALM  古賀 慎一

2015 年 9 月 26 日(土)

Copyright© 2015 Shin-ichi Koga All Rights Reserved.

Page 2: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

2

このセッションのゴール

※ 本セッション対象者は、ソースバージョン管理・タスク管理からもう一歩先に進みたい開発チーム

VSO BUILD で出来ること・出来ないこと のイメージを持つ

品質・効率を上げるために何をすべきか? を理解する

自社案件に VSO BUILD を 採用 出来るか?検討出来るようになる

高品質・低コスト・保守性の高い開発を行えるようになろう!

Visual Studio Online BUILD

Page 3: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

3

自己紹介古賀 慎一

Microsoft MVP for Visual Studio ALM

ソフトバンク・テクノロジー株式会社 Project Management Office (PMO) エキスパートエンジニア

クラウドサービス Online Service Gate® で TFS 導入事例http://tech.surviveplus.net/archives/1114

前職では 某大手 情報サイトのデータ入稿システム のフレームワークを開発

「仕組み」作りで 如何に高品質・低コストで早い開発を実現できるか?

エンタープライズ向けの実践的な C# サンプルを公開

Page 4: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

4

アジェンダ

品質・効率を左右するものは?

Visual Studio Online BUILD で出来ること

MVVM と単体テスト

自動ビルド・自動テスト

BUILD と RELEASEまとめ

このスライドは SlideShare で共有します ( http://www.slideshare.net/shinichikoga355/ )

※ Visual Studio 2015 で行える 単体テスト、コード化された UI テスト、ロードテスト、テストケースなどの解説も行います

Page 5: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

5

品質・効率を左右するものは?チーム開発でも最も注意すべきことは「デグレ」と「コードフリーズ」

Page 6: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

6

最も品質と効率に影響するのは「デグレ」

新しい機能を追加すると、以前動いていた機能が動かなくなった

「気付かずにそのままリリース」だけは避けなければ

ソースバージョン管理システムを導入すれば、変更を確認出来るケド

気付くのが遅くなるほど、修正・再確認にコストがかかる

⇒ コードを変えたらすぐに「壊れていないか?」確認したい

Page 7: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

7

もう 1 つは「コードフリーズ」がうまく出来ない事

テストと並行して、開発・修正が行われる現実

ソースバージョン管理システムを導入すれば、分岐で分離出来るケド

テスト失敗「最新のバージョンでは直っているから」は本当?

古いバージョンでテストを続けているとコストが無駄に消費される

⇒ コードを変えたらすぐに最新版でテストしたい・テストして欲しい

Page 8: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

8

Visual Studio Online BUILD をうまく使えば

コードを変えたらすぐに「壊れていないか?」確認できる

「デグレ」を抑え、起きてしまっても最小のコストに

コードを変えたらすぐに最新版でテストできる・テストしてもらえる

「コードフリーズ」出来ずにおこる無駄なテストコストを削減

高品質・低コスト・保守性の高い開発を行えるチームになる!

自動ビルド

自動テスト

自動リリース

Page 9: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

9

VSO BUILD で出来ること品質・効率を上げるためにローカルとオンラインで行う様々なテストと配置

Page 10: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

10

おさらい: VSO で何が出来ますか?

Visual Studio Online のメニューを見るとわかります

HOME  ⇒ ダッシュボード・見える化

CODE  ⇒ ソースバージョン管理

WORK  ⇒ タスク管理・工程管理・進捗管理・バグトラッキングシステム

BUILD  ⇒ 自動ビルド・自動テスト・自動リリース・継続的デリバリー

TEST  ⇒ テストケース管理(バグトラッキングシステム)・他機能はまだプレビュー

さらに RELEASE が追加される予定(リリース管理)

Page 11: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

11

VS ・ VSO で扱うテスト&リリース

Visual Studio は 単体テスト、コード化された UI テスト、ロードテスト

Visual Studio Online BUILD はビルド・テスト・リリースの手動 or 自動実行

• BUILD のテストは 単体テスト を表す

• BUILD のリリースは 簡易的なデプロイ を表す

Visual Studio Online TEST はテストケース管理とロードテスト

Visual Studio Online RELEASE は 複数環境へのデプロイと承認フロー(予定

Page 12: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

12

「ビルド定義」を作成・登録・実行するのが BUILD

どのソースコードをビルドするか?

ビルド後に(どの)単体テストを実行するか?

ビルド後に成果物をコピーするか?

成果物を(どこに)デプロイするか?

これらの「ビルド定義」を、手動・日次・曜日指定 で実行するか?

Page 13: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

13

ビルド・テスト・リリースの結果が VSO でわかる

手動で実行するとリアルタイムでログ・結果を確認できる

BUILD で結果をいつでも確認出来る ⇒ HOME にピン留めして「見える化」

Page 14: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

14

UI テストは VSO で実行できない

UI テストには「 Windows ログイン」が必要

自分の開発環境、あるいはオンプレ TFS のラボでしかテストできない

かつ、高度で、アプリ全体のシナリオテストには不向き

うまく部品化して“UI部品の単体テスト”として「コード化された UI テス

ト」を使うのがよい

※ 「コード化された UI テスト」を自動テストするとしても、ローカル環境で実行する

※ テストーケースの手動テスト操作の「ステップの一部を自動化」するには使えます

Page 15: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

15

どうすればうまく「単体テスト」を作れるか?

クラスライブラリ、あるいはアプリの一部分の「単体テスト」を作る

MVVM で設計・実装することがポイント = どこまで担保できるか?

M : Model  

DBやクラウドサービスから入手したデータを入れる箱

V: View

画面に表示して、人間がデータの内容を確認出来るようにする

VM : View Model

画面 (V) に表示するために、モデル (M) を複製して、その画面用のモデル (VM) とする

Page 16: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

16

MVVM と単体テストVisual Studio Online BUILD を使いこなすために必要な設計・実装

Page 17: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

17

MVVM : Model – View – View Model の動き

DBやクラウドから取得した Model を、画面用の View Model に格納

画面にデータバインドで表示

双方向バインドなら V でユーザーが値を変える VM も変わる

プログラムで今度は逆に VM から M に格納、それぞれ DBやクラウドに保存する

“A” Model

“C” View Model View “C”

Database “A”

Cloud Service “B”

“B” Model

データバインドData Binding

Web API, WCF

Entity Framework, LINQ to SQL

Page 18: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

18

MVVM ならロジックを分離して単体テストできる

MVVM の 色んな部分を差し替えることが可能  DB にもインターネットに繋がずにテスト出来る

“A” Model

“C” View Model 単体テスト

Database “A”

Cloud Service “B”

“B” Model

View Modelを試験

Web API, WCF

Entity Framework, LINQ to SQL

単体テスト“C” View ModelView Model

を試験

テスト用 Model を作るプログラム

“A” Model“B”

Model

Page 19: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

19

コード化された UI テスト で UI部品のみのテストも

MVVM で実装されていれば UI部品を、アプリをテストしやすい単位で分割する事も可能

“A” Model

“C” View Model

Database “A”

Cloud Service “B”

“B” Model

Web API, WCF

Entity Framework, LINQ to SQL

UI部品のみView“C” View Model

Data Binding

テスト用 View Model を作るプログラム

UI部品のみView

データバインドData Binding

Page 20: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

20

MVVM プロジェクト構成 <例> データベースプロジェクト( DB 定義)

共通クラスライブラリ(エンティティモデル、ビジネスロジック)

共通クラスライブラリの単体テスト

アプリの UI部品(ユーザーコントロール、 TypeScript 、 NuGet )

アプリ( WPF 、 ASP.NET MVC 、 SPA )

アプリの単体テスト

アプリのコード化された UI テスト

Web アプリの ロードテスト

セットアップ

Page 21: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

21

開発の流れ<例>

① 設計( UML図、 Word 、 Excel など)

② DB 定義作成・データベースへ発行 / 公開

③ エンティティモデル作成(データベースから edmx 更新)

④ アプリと共通クラスライブラリを作成(空のプロジェクト)

⑤ 機能メソッドの作成、単体テスト作成、実装を完成

⑥ ユーザーコントロールの作成、コード化された UI テスト作成、実装を完成

⑦ パッケージ作成、配置、シナリオテスト(テストケース作成・実施・記録)~ 修正

⑧ テスト済みのパッケージを製品としてリリース

Page 22: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

22

単体テストはメソッドをテストする

クラスライブラリ メソッド

引数を指定した時、戻り値が返る事、プロパティが変わる事、例外がスローされる事

Web コントローラ Action メソッド

GET/POST パラメータを指定したとき、 ViewModel を持った View が返る事、リダイレクトされる事

Web API なら C# の型で戻り値を確認( JSON への変換は自動で行われる)

これを Visual Studio & Visual Studio Online BUILD で実行する

Page 23: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

23

VSO の単体テストで DB を使ったテストもできる

(LocalDB)\ProjectV12 を作成し、 MDF をアタッチすれば DB が使える

ライブラリ用意したよ、使ってね(※ DAC パッケージにも対応)

サンプルあるよ

TFS ・ VSO ・ローカルで動作するデータベースを使った

単体テストの作り方・量産方法

https://code.msdn.microsoft.com/TFSVSO-dc7b8c9d

Page 24: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

24

VS2015 IntelliTest ならパターン網羅は自動で作れる① 複雑なテストケースを真剣に作る

② メソッドを実装

③ 完成したら IntelliTest 実行(コードカバレッジ 100% テストパターンが作成される)

④ 単体テストが全て揃えば、いつでも「壊れていない」事を確認できる

Page 25: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

25

ビルド時間を消費しないように 完成を確認する

ローカルでビルドとテスト成功を

確認する

Visual Studio BUILD で使用でき

「ビルド時間」は無料枠に制限、

重量課金 or 固定料金が選べる

Page 26: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

26

自動ビルド・自動テストチームの誰もコードを壊していない事を確認できる安心感こそが「品質」

Page 27: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

27

ビルド定義の作成 (1/2)

① VS で開発したソースコードを VSO CODE にチェックイン

② VSO BUILD で[+]を押して新規作成

③ 「 Visual Studio 」のビルドテンプレートを選択

④ 全てビルド or ソリューションをパスで指定

⑤ (ソリューションの)全て単体テスト or 名前で指定

⑥ [ Save]を押して保存

⑦ [ Queue build...]を押して実行 ※ビルド時間を消費

※ 保存すると Build definitions > All build definitions に表示

 任意の名前を付けられます

Page 28: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

28

ビルド定義の作成 (2/2)

⑧ ビルドとテストの成功を確認

⑨ Triggers を開いて「いつ実行するか?」を指定

チェックインされたらビルド

スケジュールでビルド(時刻・曜日を複数指定)

⑩ もう一度保存 自動ビルド・自動テスト設定完了

⑪ 左のビルド定義の名前の「ピン」のアイコン

を押して HOME にピンする

⑫ 毎日、ソースが壊れていない事を確認できる(見える化)

Page 29: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

29

BUILD と RELEASE近い将来「リリース管理」で開発・テスト・リリースの流れを開発する

Page 30: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

30

ビルド定義にデプロイを追加

BUILD でビルド後に成果物をコピーできる

さらに、成果物をデプロイする指定を追加

Azure への配置、 Power Shell 実行、

Windowsマシンへコピー などが選べる

簡易的な自動リリース

⇒ テストのための自動リリースであれば十分?

ビルド定義に

Deploy を追加

Page 31: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

31

将来 VSO RELEASE では本格的なデプロイを実現(予 リリース管理では「リリース定義」を作成

いわゆる承認ワークフロー

環境ごとに 担当者の承認とデプロイの実行 を行う

「リリース定義」を実行すると、ワークフロー開始

メール通知あり、 Web で承認・否認ができる

否認するとそこでワークフロー完了

承認するとデプロイが実行されて、次へ進む

全て完了すると、リリース完了

開発環境承認&デプロイ

QA 環境承認&デプロイ

ステージング環境承認&デプロイ

運用環境承認&デプロイ

※ この内容はリリース前の公開資料と、 2013 リリース管理の機能から、 VSO に追加される予定の機能を想定して解説しています

Page 32: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

32

まとめVisual Studio Online BUILD を使いこなして品質・効率をあげよう!

Page 33: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

33

まとめ

デグレを防ぐ「自動ビルド・自動テスト」

テスト対象を確実にするために「自動デプロイ」を使おう

VSO で自動テストできるのは「単体テスト」

MVVM で作れば、単体テスト・コード化された UI テストはうまく作れる

ローカルで「コード化された UI テスト」「ロードテスト」も活用しよう

将来、 RELEASE が出たら使おうね!

Page 34: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

34

拙著紹介( CM )チーム開発の教科書C# によるモダンな開発を実践しよう!

Visual Studio 2010/2012/2013/2015 対応

著者:古賀慎一 ( Microsoft MVP for Visual Studio ALM )

単行本: B5 変型判  288ページ

価格:定価 2916円(本体 2700円+税)

ISBN : 978-4-8222-9855-5

出版社:日経 BP 社 (目次: http://goo.gl/Q2Z7TZ )

発売日: 2015 年 10 月 8 日

Amazon.co.jp : http://goo.gl/HfcUSY

今日の内容も詳細に解説!

 

Page 35: Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4

Copyright© 2015 Shin-ichi Koga All Rights Reserved. 35