65
開開 開開開開 開開開開開 ・・ VSTS/TFS 開開開開開 開開開開 開開開開開開開開開 開開開開開開 ・・ DevOps 開開開開開開開開 1 開開開開開開開開開 開開開開開開開開開開Microsoft MVP 開開 開2016 開 11 開 21 開 開開 () Copyright© 2016 Shin-ichi Koga All Rights Reserved.

ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

  • Upload
    -

  • View
    726

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

1

開発・テスト・リリースでVSTS/TFS をフル活用する方法

ウォーターフォール・アジャイル・ DevOps どんなチームでも

アバナード株式会社 シニアコンサルタント( Microsoft MVP )古賀 慎一

2016 年 11 月 21 日(月)

Copyright© 2016 Shin-ichi Koga All Rights Reserved.

Page 2: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

2

このセッションのゴール

Work の使い方をイメージする

Test と Work の Bug の使い方を決めることができる

Build と Release の使い方と Code に必要な条件を理解する

VSTS / TFS をフル活用して、低コストで高品質な開発・運用を!

工程管理・進捗管理・開発

シナリオテスト管理 バグ管理

自動ビルド 承認ワークフローによるデプロイ

ウォーターフォール・アジャイル・ DevOps それぞれのチームにあった

自動テスト・分岐

Page 3: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

3

自己紹介古賀 慎一

Microsoft MVP for Visual Studio and Development Technologies

アバナード株式会社 シニアコンサルタント

前職ではクラウドサービス開発で TFS 導入事例http://tech.surviveplus.net/archives/1114

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

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

書籍執筆 日経 BP 社より発売中

Page 4: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

4

アジェンダ

VSTS/TFS で出来ることは DevOpsWork による工程管理・進捗管理

Test によるシナリオテスト管理

Work の Bug によるバグ管理

Code によるソースバージョン管理

Build & Release による継続的デリバリー(自動ビルド・自動テスト・自動デプロイ)

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

Page 5: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

5

VSTS/TFS で出来ることは DevOpsウォーターフォールとアジャイルに継続的デリバリーをプラスする

Page 6: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

6

VSTS/TFS で何ができますか?

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

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

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

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

Build & Release ⇒ 自動ビルド・自動テスト・自動デプロイ(継続的デリバリー)

Test ⇒ シナリオテスト管理・バグトラッキングシステム

Page 7: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

7

VSTS/TFS で出来ることは DevOps

アジャイル (≒Dev) + 継続的デリバリー (≒Ops) = DevOps

開発向けの機能と運用向けの機能を分けずに 1 つのサービスとして提供

全ては 開発 と 運用 を繰り返す ためにある(早く安く高品質で)

中投資 中投資

時代の変化とニーズに応じて常にアップデート 数年で基礎から見直す

Page 8: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

8

DevOps と各機能のバランス

Home ダッシュボード・見える化 (Dev = Ops)Code ソースバージョン管理 (Dev)Work タスク管理・工程管理・進捗管理・バグトラッキングシステム (Dev ≧ Ops)Build & Release 継続的デリバリー (Ops)Test シナリオテスト管理・バグトラッキングシステム ( Dev ≦ Ops ≒ QA )

Dev Ops

Page 9: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

9

VSTS/TFS はウォーターフォールでは活用できない?

メニューと用語がアジャイル・ DevOps 向け

そのままでは旧来のウォーターフォールでは使い方がわからない

Code しか使われていない現場が多い

10 年前の Visual SourceSafe と同じ使い方になりがち

Page 10: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

10

考え方は「前提として」ちゃんとつながっている

約 40 年前 ウォーターフォール (書類で管理、 Windows やパソコンが生まれる前)

約 15 年前 アジャイル ( .NET 登場、 Java が普及し始めた頃)

7 年前 DevOps ( TFS 2010 DevOps 対応に生まれ変わる )

現在 DevOps 2.0 へ (VSTS 、 Azure 、クロスプラットフォーム、マイクロサービス)

※ Microsoft Tech Summit より

作る物の機能・規模・複雑さの増大、スピードも求められる

書類で頑張る方法から、システムの支援を受けて効率化・自動化へ

Page 11: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

11

実は日本のウォーターフォールはもはやアジャイル!

要件、機能、実装、テストの繋がりを保って開発するも( WBS 段階的詳細化)

テスト駆動開発などの開発手法を取り入れて、後工程を出来るだけ前倒し

最後まで顧客に見せないことはなく、早い段階で細かく動作をデモ

後工程になって明らかになる顧客の要望もできるだけ取り入れる

V字ではなく、 WOOO... ≒ アジャイル

ならば、より “アジャイルらしいウォーターフォール” で効率よくやろう!

Page 12: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

12

文書での管理から TFS画面での管理に変更できる

PMBOK に出てくる文書で、

日々更新・集計するものは Work / Test に対応する画面がある

簡単入力・リアルタイムで見える化 ⇒ 報告時に書類にエクスポート

あまり変わらないものは Code に保存する

Markdown はダッシュボードに表示可能 ⇒ Word に変換可能

ウォータフォール式文書が報告や納品に必要なら

その時エクスポート・変換して作成できる!(普段は TFS画面で見える化)

Page 13: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

13

開発手法・用語と人の役割の違い

アジャイル開発手法をウォーターフォールにも追加可能

単体テスト、テスト駆動開発、カンバン (必要に応じて効率化可能)

完全に対応するものは 用語 の違いに慣れるだけ

人の役割の違い

• WBS の作成・設計・実装・テスト・デプロイを違う人がやる

• 実質同じ人がやる

• チームで適切に分担してやる

どの管理でも予定と実績の比較が必要(チームメンバーの使い方はほぼ同じ)

Page 14: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

14

VSTS/TFS をウォーターフォールでも活用できる!

この後、具体的に解説・・・

アジャイル・ DevOps 向けのメニューと用語に慣れる

TFS 簡単入力・リアルタイム見える化、報告時や納品時に文書ファイル化

人の役割に応じて、 Work と Test の使い方を明確にする

アジャイル開発手法を取り入れて、 Build や Home を活用する

ウォーターフォール + 継続的デリバリー ≒ DevOps だって可能

Page 15: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

15

どんなチームでも

VSTS/TFS の機能をフル活用して DevOps ができる!

Page 16: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

16

Work による工程管理・進捗管理ウォーターフォールとアジャイルの違いは、いつ誰がタスクを作るか?

Page 17: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

17

Work の基本は「その期間に何をするか?」

誰が Assigned To

この期間(週)に Iteration

何を Task

あとどれくらいの時間で Remaining Work

やるか? やっているか? To Do / Doing / Done ( Proposed / Active / Resolved / Closed )

開発者は自分のタスクを完了させていく

Page 18: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

18

イテレーション期間は

進捗報告・確認 ・カイゼンの最小単位

ウォーターフォールなら週次報告 etc...

アジャイル・スクラムならプロダクトをリリースする最小リードタイム

開発者 ( チームメンバー ) は期間中にタスクを完了させる

管理者は期間ごとにレポートを取得し、報告と改善を実施できる

リリース、仕掛の進捗、チームの生産性の実績、 EVM の元となる実績値

バーンダウンチャート

Page 19: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

19

タスクを誰が作るか?

開発者にとって「自分のタスクを完了させる」のは同じ

そのタスクを誰が・いつ・洗い出して・見積もるか?

ウォーターフォールとアジャイル・スクラムでは大きく違う

ここに注意すれば、どちらでもうまく Work を使いこなせる

Page 20: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

20

ウォーターフォールのタスクの管理方法(全体)

プロジェクトの開始時

WBS (日付なし)階層構造で一覧化した作業項目の一覧 + 見積もり工数

スケジュールとリリース ( WBS に日付と人を設定)

開発中

毎日 作業を実施して、実績工数・進捗状況 を入力・集計

週次など EVM (予実の比較、 CPI ・ SPI などインデックス値による評価)

課題の解決・改善(問題の発見が遅れる程、対応は困難)

Page 21: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

21

ウォーターフォールのタスクの管理方法(開始時1)

WBS (日付なし)階層構造で一覧化した作業項目の一覧 + 見積もり工数

Project でタスクの一覧を作成

大分類・中分類・小分類・・とタスクを詳細化していく

親子関係を必ず維持、 WBS番号( 1.1.1 など)でタスクを識別

過去の実績から、タスクの見積もり工数(時間・日数)を設定

Page 22: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

22

ウォーターフォールのタスクの管理方法(開始時2)スケジュールとリリース ( WBS に日付と人を設定)

タスクにリソース(作業者)をアサインする

リソースの一日の作業量をみて、タスクに日付を設定

マイルストーン、クリティカルパスの確認

ガントチャート完成

リソースの単価とタスクの工数から見積もり金額が確定

受託開発の場合、この内容で提案&契約できれば開発開始

Page 23: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

23

ウォーターフォールのタスクの管理方法(開発中1 )毎日 作業を実施して、実績工数・進捗状況 を入力・集計

作業者はガントチャートで「今日やるタスク」を確認

自分で一日の作業したタスクと作業時間と記録

作業完了後に Project Server で自分の作業時間を登録

Project Server が無いときは、 Excel などで収集して、

PM が Project ファイルに全員分の進捗を登録する(これがすごく大変)

Page 24: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

24

ウォーターフォールのタスクの管理方法(開発中2 )週次など EVM (予実の比較、 CPI ・ SPI などインデックス値による評価)

ガントチャートのイナズマ線ではタスクごとの遅れを確認

EVM では全体を数値で把握

日付、 PV: 完了しているべきタスクの見積もり工数、 EV : 完了している工数、

SPI : 予定より遅いか?早いか?、 CPI : 予定より工数がかかっているか?かかっていないか?

課題の解決・改善(問題の発見が遅れる程、対応は困難)

顧客に説明してベースラインの変更(再スケジュール)これは本当にすごく大変

ウォーターフォールでもできるだけ早く問題に気づいて対応したい

Page 25: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

25

ウォーターフォールのタスクを

VSTS / TFS を使用して管理するには・・・

Page 26: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

26

ウォーターフォールでは Work をこう使う(開始時1)WBS (日付なし)階層構造で一覧化した作業項目の一覧 + 見積もり工数

これまで通り Project で作成

製品、フェーズ、機能、要件、納品物に注目

WBS を 3 階層(タスクなし) or 4 階層で TSF にインポート (※違いは後述)

CMMI テンプレートを使用  Epic / Feature / Requirement(Backlog) / Task  に対応

親子関係を必ず維持してインポート WBS番号( 1.1.1 など)もタイトルにつける

4 段階の場合 見積もり工数は Task の Remaining Work と Original Estimate に

3 段階の場合 見積もり工数は Backlog の Original Estimate に

Page 27: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

27

ウォーターフォールでは Work をこう使う(開始時2)スケジュールとリリース ( WBS に日付と人を設定)

これまで通り Project で計画

タスクが、 TFS のイテレーション期間のどれにあたるか?

該当する Iteration Path を設定して TFS にインポート

タスクがそのイテレーション期間に表示される

担当者も Assigned To に設定してインポート

Project ファイルをマスタースケジュールとして保管しておく

Page 28: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

28

ウォーターフォールでは Work をこう使う(開発中1 )毎日 作業を実施して、実績工数・進捗状況 を入力・集計

作業者は Work で「この期間でやるタスク」を確認

Task を開始・完了させる

作業したら Completed Work に時間を足して、 Remaining Workを減らす

PM の登録作業は不要

誰でもカンバンボードで進捗をリアルタイムに確認

開発者も PM もすごく楽!それでいて、より正確な記録!

Page 29: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

29

ウォーターフォールでは Work をこう使う(開発中2 )3 段階でインポートしたときは、 Task の作成をチームメンバーに任せる

作業者は Work で「この期間で完成させるバックログ」を確認

バックログを完成させるために必要な全てのタスクを洗い出し、見積もる

Task を追加

見積もり工数を Task の Remaining Work と Original Estimate に入れる

PM はバックログの見積もり工数と、タスクの合計工数を比較してチェック

Page 30: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

30

ウォーターフォールでは Work をこう使う(開発中3 )Task を Project で作成するとちょっとした作業が追加で必要になったときに困る( Project の最小タスクが TFS の Task )

ウォーターフォールでタスクを足すのは変更報告が必要な場合が多い

Project でタスクを登録しなおして、承認を得て、 TFS に再インポート・・・

必ずやらなくなる・やれなくなるTFS にタスクを追加しないで作業する癖がつく、実績と乖離、 TFS が使われなくなる

Task をメンバーが追加できる 3 段階のインポートがお勧め( Project の最小タスクは、 TFS の Backlog )

TFS タスクの追加は、 Project のタスク追加ではない(作業用の詳細化)

Page 31: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

31

ウォーターフォールでは Work をこう使う(開発中4 )週次など EVM (予実の比較、 CPI ・ SPI などインデックス値による評価)

4 段階では Task の Original Estimate と Completed Work を比較

3 段階では Backlog の Original Estimate と、子 Task の Completed Workの合計を比較

もとの Project ファイルの実績値に入力( TFS からエクスポートしてコピペ)

Excel にエクスポートして Power BI で分析もできる

EVM レポートを作成して進捗会議で報告する

課題の解決・改善(問題の発見が遅れる程、対応は困難)

PM が集計に苦労しないでチームの状況を把握できるのですぐに手を打てる

Page 32: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

32

Work をインポート・エクスポートするにはクエリ

方法をスライドで解説

バックログとタスクをインポート・エクスポート

Team Foundation Server と Excel ・ Project との連携

http://www.slideshare.net/shinichikoga355/ss-43464369

Page 33: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

33

VSTS/TFS + Power BI で EVM レポートを作成できる

VSTS/TFS を使いながらウォーターフォールらしい管理・報告が可能

Page 34: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

34

アジャイル・スクラムでは Work をこう使う(1)

事前にバックログに要件・作業を登録

プロダクトオーナーから優先度をつけてやるべきことを挙げておく

期間の最初に「この期間でやるべきバックログ」を決める

過去の実績からバックログに見積もり時間を登録すると、 TFS が計算

工数時間ではなく、チーム内で使う相対見積もりの数値

しばらく同じチームで開発すると、 1期間にできる数値が分かってくる(ベロシティ)

プロダクトオーナーにバックログを宣言して期間開始

Page 35: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

35

アジャイル・スクラムでは Work をこう使う(2)毎日、チームメンバー全員で、

バックログを完成させるために必要な全てのタスクを洗い出し、見積もる(こちらは工数で良い)

Task を追加し、見積もり工数を Task の Remaining Work に入れる

Task を 開始・完了させる

チーム全体でタスク全部を完了できるか?毎日セルフチェックする

期間内に完成させられる工夫をチームで考える(自立した組織)

無理なことは無理と宣言する

Page 36: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

36

期間内に終わらないときはどうするか?

ウォーターフォールではそのまま

以前の Iteration の作業であっても、実際に作業したときに Task を完了させる(遅延)

遅れが EVM レポートとして報告される。最終的にどこかで取り返す。

アジャイル・スクラムでは、未完成であっても完了

期間の完了時に、プロダクトオーナーにその期間で完成したものを正確に報告する

終わらなくて続けたいバックログも、

新しい別のバックログとして次の期間以降に作業する

次の期間で、他のバックログと優先度を比較する

Page 37: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

37

タスクが足されて見積もりより遅延するんだけど?チームの事実として受け入れよう

見積もりが甘い

無理なスケジュールをハラスメントで無理やり終わらせていなかったか?

スキルが不足しているメンバーをアサインした?

引継ぎが不足していた?引継ぎのコストをそもそも見積もっていなかった?

これらが顕在化 ・見える化された と理解しよう

例えば「人を足せば早くできるわけじゃない」が明確に見える化されてしまう

正しく見積もって出来ることをしよう!そのうえで工数を下げる工夫を!

Page 38: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

38

Test によるシナリオテスト管理テストケースを作成、テストを実施して、結果を記録する

Page 39: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

39

Test は手動テストを扱う

コードによる単体テストは Test ではなく、 Code に保存して Build で扱う(※後述)

Test では 手動テストの計画・実行・結果の記録を扱う

最新結果のチャートを Home に表示して見える化

Test にテスト計画を追加するには Test Manager 拡張機能

( Visual Studio Enterprise or Test Professional サブスクリプション※ or 支払い ) が必要※ユーザーの設定で Basic になっていないか?確認

Page 40: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

40

テストケースと結果の管理

タスクが完了させて無くしていく作業

バックログが完成していく成果物・納品物(実際のファイルは Code に保存)

テストはテストケースの一覧 + 結果の一覧

= 「今、製品は正常か?」の一覧表

必要に応じてテストを実施、再実施して、最新結果の一覧を更新していく

Page 41: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

41

要件ベースのテストスイートを作る

ウォーターフォール V字モデルを思い出してみる

後工程〇〇テストは、前工程□□をテストする・・

Work に登録されているテスト対象の機能や要件の Backlog に対応する

テストスイート(テストケースの親)を作れる(一括で作成可能)

テスト計画(テストスイートの親)に

「単体テスト」や「結合テスト」などを作成

開発・修正でどの範囲をテストする・しなおすか?(トレーサビリティ)

Page 42: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

42

Grid表示で簡単にテストケースとステップを登録

Excel の表のように一覧で登録できる

テストケース

テストステップ

アクション(操作)

期待される結果(そうならなかったら失敗とする条件)

Page 43: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

43

テスト実行(成功時の流れ)

Web でも、クライアント (Test Manager) でも

テストケースを選んで開始

ステップ(アクションと期待される結果)の一覧画面が表示される

ステップのアクションに従って順に操作

期待される結果通りならステップを成功に

必要に応じてコメントを追加、画像(エビデンス)を添付 (※後述)

全ステップ成功になるとテストケースが成功になる

Page 44: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

44

期待される結果にならなかったら

ステップの結果を失敗にする その時点でテストケースは失敗になる

ステップの結果にコメントを追加 どういう結果か?詳細を記載する

ステップの結果に画像を添付

エビデンスとしてスクリーンキャプチャを保存

Windows標準のスニッピングツール、 Light Cutter 、 OneNote のツールなど

右クリックメニューからステップの結果に画像を添付できる

間違ってステップ(計画)に添付してしまう人が多いので注意

Page 45: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

45

テストが失敗したら

バグを起票する(※後述)

開発作業中のテスト実施の場合にはバグを起票しなくてもいい

バグ起票のルールはチームで決めて、 README.md などに書いておく

テストケースのステップの間違い・更新が必要でないか?確認

要件ベースのテストスイートなら、 Work と Code のチェンジセット(※後述)を確認

バックログやタスクを追加して問題を解決する

Page 46: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

46

テスト結果チャートをダッシュボードに表示

何パーセントが成功しているか?で、全体として正常かどうか?を判断

Home に表示すると毎日見える

「壊れた窓効果」にならないように、テストの失敗を放置しない

テスト結果(ケースの結果、ステップの結果とコメント)の TSV形式エクスポートと

添付画像の一括ダウンロードができる Visual Studio 拡張機能あります(納品物の作成

に)※現在作成中でほぼ完成。公開準備が間に合っていないので、すぐに必要ならご連絡ください。

Page 47: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

47

Work の Bug によるバグ管理取り扱いを最初にチームで決めておく

Page 48: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

48

バグの扱い方はプロジェクトでルールを決める

イテレーション期間に属する・属さない

表示の仕方を設定で変更できる

ボードのイテレーション期間に表示するかどうか?

表示はバックログと同様か?タスクと同様か?

いつバグを起票するか?(テスト失敗時常に?テストフェーズのみ?)

そのバグをどう解決するか?(次の期間?その期間?期間に関係なし?)

Page 49: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

49

Work の Bug と Backlog ・ Task の違い

タスク・バックログは予定のイテレーション期間内に完了させることが目的

バグは期間内・あるいは期間に関係なく追加して、完了させることが目的

開発者の使用方法はほぼ同じ

バグに直接時間を入れて完了させてもいい、

バグに関連する別のタスクを追加して完了させてもいい

管理者の集計の仕方が変わるので、チームでどちらかに決めておく必要がある

Page 50: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

50

バグ チャートをダッシュボードに表示する

バグがすべて解決されているか?で、全体として正常かどうか?を判断

Home に表示すると毎日見える

「壊れた窓効果」にならないように、テストの失敗を放置しない

Bug は Work の Backlog や Task 同様、クエリでエクスポートできる

Bug に時間を入れるときは、 EVM で Backlog や Task の集計と同等に扱う

(クエリを準備するときに Bug がないと忘れがち)

Page 51: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

51

Code によるソースバージョン管理継続的デリバリーのために、改めてルールを見直しておく

Page 52: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

52

Work ・ Test と共に Code を使用する

ソースバージョン管理

チェックインするときに、タスクに関連付ける(強制もできる)

変更セットとタスクが関連付けられるので、何のための修正なのか?明確

コメントを強制するだけでは、人の努力に依存してしまう。

仕組みでミスできなくする。

Test が失敗したとき、 Work と Code のチェンジセットから原因をたどれる

Page 53: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

53

Build & Release と共に Code を使用する

ソースを分岐する

「テストと開発を並行で行う時は分岐必須」が常識だが ...

DevOps2.0 では チェックイン 即 自動テスト & リリース

これだとメインブランチしか要らない

そうでなければ開発・メイン・自動リリース用のブランチを用意する

メインブランチにマージすると自動的に単体テスト(※後述)

開発とテストが完了して、マージしたら自動的にデプロイ(※後述)

Page 54: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

54

Build & Release による継続的デリバリー自動ビルド・自動テスト・自動デプロイを実現する

Page 55: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

55

DevOps のために Build & Release を使う

Work ・ Test をうまく扱える( Dev )前提で、継続的デリバリー( Ops )を実現

ソース管理に保存すると、自動ビルド・自動テストされる状態を保つ

リリースにかかる時間を限りなく0に近づける

問題が発見された時に、前のバージョンに戻すことも自動化された状態を保つ

運用やリリースに関わる課題の解決も全て Work バックログの管理で行う。

プロダクトを継続的に開発

新機能の開発・リリースを 2週間程度で繰り返して、競争力を保つ

Page 56: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

56

継続的デリバリーがなければ

早いリリースを繰り返すことは不可能

Page 57: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

57

いや、ウォータフォールでは

そんなに繰り返してリリースすることないし…

Page 58: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

58

ウォータフォールでの継続的デリバリー

開発したらすぐに検証用サーバー・ Azure にリリースして動作確認

テストチームにテストを依頼するときに、必ず最新のプログラムにしたい

週次の定例会議で、ちょっとお客様に動きを見てもらいたい(≒アジャイル)

V 時の最後のリリースだけが継続的デリバリーの対象ではない!

Page 59: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

59

自動テスト(コードによる単体テスト)が前提

C#/Visual Basic 全てのメソッドに単体テストを作成

Code に保存

DevOps では必須

プログラムを書き換えて自分でテストを実行すると、壊れていないか?確認できる

チーム開発で、メインブランチにマージしたときに、壊れていないか?確認できる

単体テストが無ければ、壊れたまま自動リリースされてしまう可能性

あるいは全シナリオテストをやりおなおし必須に

Page 60: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

60

単体テストに求められること

引数と期待される結果の全バターンを網羅的にテスト

メソッドを使う機能や画面のシナリオテストで、パターン網羅は現実的でない

VSTS/TFS で動作する必要がある

SQL Server 、 SharePoint サーバーなどに接続可能なテスト

あるいは接続しないで実行できる設計(依存性の注入)

Fakes ( DateTime.Now を置き換える など)

実行順に依存しない・どの単体テストも単独で実行できること

Page 61: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

61

単体テストが作れる開発の方法

単体テスト出来るアプリの作り方を

スライド&サンプルで解説しています

「ちゃんとした C# プログラムを書けるようになる実践的な方法

 ~ Visual Studio を使った 高品質・低コスト・保守性の高い開発」 http://www.slideshare.net/shinichikoga355/starting-c-sharp

技術イケメン(経験者)にチームに参加してもらって

一緒に2ヶ月程度開発できるとマスターできるはず!

Page 62: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

62

ビルドとリリースをこう使う

ビルド定義で自動ビルド・自動テスト (より Dev側)

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

単体テストを実行するか?

パッケージの作成や検証サーバーなどへのデプロイも可能

リリース定義でビルド後に承認ワークフロー・デプロイ(より Ops側)

承認すると検証⇒ステージング⇒本番

Page 63: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

63

まとめ

VSTS / TFS で出来るのは DevOps= ウォータフォール or アジャイル(≒Dev )+ 継続的デリバリー

(≒Ops )

ウォーターフォールでは Project をマスターとして Work / Test を使う

アジャイル・スクラムでは Work / Test をマスターとして使う

Work / Test / Code と単体テストを使いこなしている前提で、

Build & Release を使うと継続的デリバリーが実現できる

Page 64: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

64

書籍と勉強会の CM

チーム開発の教科書

http://amzn.to/2euUzrW

はじめての ASP.NET SPA 開発入門

http://amzn.to/2eQKaUa

第 11回 Plus Programming .net 勉強会

「 ASP.NET SPA ビギナー & ステップアップ」 2016 年 12 月 17 日(土)

https://atnd.org/events/82659

Page 65: ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法

Copyright© 2016 Shin-ichi Koga All Rights Reserved. 65