Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Visual Studio
2015
Pex は
ユニットテス
トの福音とな
るか!?
2015/1/31
BluewaterSoft @biac
2015 MVP ComCamp 名古屋会場 1
スピーカー紹介
• BluewaterSoft 山本 康彦 a.k.a @biac
まだ人工衛星が飛んでない時代に生まれ、HONDAでクルマの設計やってました
• Microsoft MVP for Windows Platform Devel...
コミュニティ紹介
2015/1/31 2015 MVP ComCamp 名古屋会場 3
• わんくま同盟は、コミュニティで活動している者たちの集団です
• 縦の繋がりはなく、横の繋がりで成り立っています
東京 / 名古屋 / 大阪 / 福岡 /...
わんくま同盟: 主な活動内容
2015/1/31 2015 MVP ComCamp 名古屋会場 4
• 勉強会 http://wankuma.com/seminar/
東京・大阪・名古屋・福岡・横浜・マニラ…
ほぼ毎週どこかで勉強会
• ブログ...
わんくま同盟: 名古屋勉強会の活動
2015/1/31 2015 MVP ComCamp 名古屋会場 5
• 2007年12月から名古屋でも勉強会を年4回開催しています。
• 開催内容としては以下の内容となっています。
1. セッション(50分...
わんくま同盟: 次回の名古屋勉強会は
2015/1/31 2015 MVP ComCamp 名古屋会場 6
• わんくま同盟 名古屋勉強会 #34
http://www.wankuma.com/seminar/20150214nagoya34/...
Visual Studio
2015
次期 Visual Studio の
プレビュー版が利用可能です
2015 MVP ComCamp 名古屋会場 7
Visual Studio 2015、
数々の新機能とともに年内リリース
2015/1/31 2015 MVP ComCamp 名古屋会場 8
• 次期Visual Studio 2015
年内、たぶんWindows 10に
合わせて正式リリー...
Visual Studio 2015、
現在はCTP5を試せる♪
2015/1/31 2015 MVP ComCamp 名古屋会場 9
• プレビュー版は誰でも!
Visual Studioのサイトからダ
ウンロード可能
http://www....
Visual Studio 2015 の新機能の1つ、
Smart Unit Tests = 元 Pex
2015/1/31 2015 MVP ComCamp 名古屋会場 10
• Microsoft Research で開発
http://r...
Visual Studio
2015
Program
EXploration
for .NET
Smart Unit Tests !?
ざっくり言うと、どんなもの?
2015 MVP ComCamp 名古屋会場 11
Pexの使い方: STEP1
コードを書きます…
2015/1/31 2015 MVP ComCamp 名古屋会場 12
Pexの使い方: STEP2
メニューを選びます…
2015/1/31 2015 MVP ComCamp 名古屋会場 13
Pexの使い方: STEP3
ユニット テストが走ります。以上!
2015/1/31 2015 MVP ComCamp 名古屋会場 14
テストケース テスト結果
え…?
なんだって~っ!?
2015/1/31 2015 MVP ComCamp 名古屋会場 15
DEMO
PexSample01.sln
テスト自動実行~テスト保存まで
2015 MVP ComCamp 名古屋会場 16
結果の見方:
想定したテストケースが走ったか?
2015/1/31 2015 MVP ComCamp 名古屋会場 17
テストケース テスト結果
• FizzBuzzの外部設計
• 自動生成されたテストケー
スは、外部設計と一致して
いるか?
...
書いたコードがおかしいと…
2015/1/31 2015 MVP ComCamp 名古屋会場 18
書いたコードがおかしいと、
(1/2) テストケースが想定と異なる
2015/1/31 2015 MVP ComCamp 名古屋会場 19
テストケース テスト結果
• FizzBuzzの外部設計
• ← "Fizz Buzz" になるケー
ス...
書いたコードがおかしいと、
(2/2) カバレッジが不足する
2015/1/31 2015 MVP ComCamp 名古屋会場 20
• コードをレビューすると
実行されないパスが見つか
る!
VS 2015 CTP 5 では、カバレッジ ツー...
Pex - ここまでのポイント
• 後付けのユニット テストを自動生成してくれる
便利!!
• 結果の評価には、
ユニット テストを作れるスキルが必要!
2015/1/31 2015 MVP ComCamp 名古屋会場 21
Pex
自動生成され
たユニット
テストを活用
する
生成されたテストを、保存
して再利用。改造も可能。
2015 MVP ComCamp 名古屋会場 22
自動生成されたユニットテストを
保存する
2015/1/31 2015 MVP ComCamp 名古屋会場 23
➊ 保存したいテストを選択↓
➋ [Save] ボタン→
• ➊ 保存したいテストケース
を選択
全部なら Ctrl+A
• ➋ ...
保存されたユニットテスト:
テスト プロジェクトが生成される
2015/1/31 2015 MVP ComCamp 名古屋会場 24
• ユニット テストのプロジェ
クトが自動生成される
参照設定もされている
• テストケースは .g.cs フ...
保存されたユニットテスト:
テスト エクスプローラーで実行可
2015/1/31 2015 MVP ComCamp 名古屋会場 25
• 通常のユニットテストと同様に、テスト エク
スプローラーからテストを実行できる
• 回帰テストとして使える...
Pex - ここまでのポイント
• 自動生成されたユニット テストは保存しておける
• 保存したテストは、通常のユニット テストと同様
に実行可能 = 回帰テスト
• リファクタリングが捗る!
Refactoring = 外的な振る舞いは同じま...
Pex
例外の扱い
例外が出るのが正常、とい
うケースの扱い方
2015 MVP ComCamp 名古屋会場 27
コードから明示的に出す例外
2015/1/31 2015 MVP ComCamp 名古屋会場 28
• 明示的に例外を throw して
いる場合
- 単純に throw
- catch して、別の例外を
作って throw
コードから明示的に出す例外
⇒ 正常と判定される
2015/1/31 2015 MVP ComCamp 名古屋会場 29
• 明示的に例外を throw して
いる場合は、
テスト結果はグリーンに!
コードでハンドリングしていない例外
2015/1/31 2015 MVP ComCamp 名古屋会場 30
• catch していない例外
• catch していても、
単純にリスローしている場
合
コードでハンドリングしていない例外
⇒ 異常と判定される
2015/1/31 2015 MVP ComCamp 名古屋会場 31
• ハンドリングしていな
い例外が出た場合(リス
ローを含む)は、
テスト結果はレッドに!
レッド判定をグリーン判定に変える
2015/1/31 2015 MVP ComCamp 名古屋会場 32
• 例外が出るのが正常、
というときには、その
ケースをグリーンに変
えることができる
右クリックして
[Allow]
[Allow]すると起きること
⇒テストコードに属性が付く
2015/1/31 2015 MVP ComCamp 名古屋会場 33
• [Allow] すると、その
例外は許容するという
属性が、テストコード
に追加される
※ テストを保存して...
Pex - ここまでのポイント
• コードから明示的に出している例外 ⇒ グリーン
• コードでハンドリングしてない例外 ⇒ レッド
• レッドのテストケースは [Allow] することで、グ
リーンとみなすように指示できる
2015/1/31...
Pex
苦手なもの
Pexで上手く扱えないコー
ドの例
2015 MVP ComCamp 名古屋会場 35
返値のないメソッド
2015/1/31 2015 MVP ComCamp 名古屋会場 36
• 分岐を全部通すテスト
を生成してはくれる
⇒ でも、そのテストが
正しいかどうか
判定できない
• 参照渡しの引数でテス
ト可能な場合もある
テスト...
返値のないメソッド
⇒ テストは生成/実行される
2015/1/31 2015 MVP ComCamp 名古屋会場 37
• このテスト結果でよい
のか、判断できない
• 下は、参照渡しの引数
で処理結果が判断でき
る例
入力
出力入力
出力が...
メンバー変数に依存するメソッド
2015/1/31 2015 MVP ComCamp 名古屋会場 38
• メンバー変数(=オブ
ジェクトの状態)に依存
するメソッドは、状態
を変化させるために複
数回(または別のメソッ
ド)の呼び出しが必要
...
メンバー変数に依存するメソッド
⇒ 適切なテストケースにならない
2015/1/31 2015 MVP ComCamp 名古屋会場 39
• メソッドを複数回呼び
出すようなテストケー
スは自動生成されない
この例だと、0を与えた
だけで終わっ...
yield return
2015/1/31 2015 MVP ComCamp 名古屋会場 40
• IEnumerable<T>を
そのまま評価しようと
する
⇒ テストにならない
※ IEnumerable<T>
から値を取り出すメ
ソッド...
非同期メソッド
2015/1/31 2015 MVP ComCamp 名古屋会場 41
• Task<T>をそのまま
評価しようとする
⇒ テストにならない
※ Task<T>から値を
取り出すメソッド(=ブ
ロックする)ならテス
ト可能
(結...
外部に依存するメソッド
2015/1/31 2015 MVP ComCamp 名古屋会場 42
• テストは生成されるが、
外部の応答が変わって
も対処できない
⇒ 回帰テストには
ならない
(結果画面は省略)
非線形なメソッド
(分岐によらない非線形性)
2015/1/31 2015 MVP ComCamp 名古屋会場 43
• 例えば2次関数なら、3
点を計測しないといけ
ないが、そこまで賢く
はない (1点しかテス
トケースを生成してく
れない)...
Windows ランタイム アプリ
2015/1/31 2015 MVP ComCamp 名古屋会場 44
• Windows ランタイム
アプリ (ストア アプ
リ) では、メニューに
いない! orz
※ PCL/WinMD は OK♪
•...
Pex - ここまでのポイント
• 苦手なものがけっこうある
• 状態に依存するメソッドなど、テスタビリティの悪
いメソッドは当然ダメ!
• yield return や async/await や非線形や
Windows ランタイム アプリな...
Pex
試そう!
Visual Studio 2015の環境
がなくたって!
2015 MVP ComCamp 名古屋会場 46
Pex for fun
http://pex4fun.com/
これはVS2015の
Smart Unit Tests
とは異なるところ
があります
2015/1/31 2015 MVP ComCamp 名古屋会場 47
Pex for fun
ゲーム形式でPexを楽しむ
2015/1/31 2015 MVP ComCamp 名古屋会場 48
❹ 仕様を満たすようにコードを修正して、
またPexを走らせる
➊ Pexを走らせる
❸ この問題の仕様が、ここに表示さ...
Pex
まとめ
2015 MVP ComCamp 名古屋会場 49
Pex すごい❢
• VS2015 Ultimate に搭載される Pex (正式名
「Smart Unit Tests」) は、後付けのユニットテス
トを自動生成
• 回帰テスト、リファクタリングが捗る!
• テスタビリティの高いコードを書く...
Smart Unit Tests (Pex)のドキュメント
• MSDN: 「コードのためにスマート単体テストを生成する」
https://msdn.microsoft.com/library/dn823749.aspx
• MSDN マガジン...
Visual Studio
2015
Pex は
ユニットテス
トの福音とな
るか!?
2015/1/31
BluewaterSoft @biac
2015 MVP ComCamp 名古屋会場 52ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?

9,681 views

Published on

2015 MVP ComCamp 名古屋会場 (2015/1/31)

PowerPoint のファイルは、OneDrive にあります。
http://1drv.ms/1yhJxpC

Published in: Technology

Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?

  1. 1. Visual Studio 2015 Pex は ユニットテス トの福音とな るか!? 2015/1/31 BluewaterSoft @biac 2015 MVP ComCamp 名古屋会場 1
  2. 2. スピーカー紹介 • BluewaterSoft 山本 康彦 a.k.a @biac まだ人工衛星が飛んでない時代に生まれ、HONDAでクルマの設計やってました • Microsoft MVP for Windows Platform Development (2014/10-2015/9) • Windows ランタイム アプリ開発 / 記事や書籍の執筆 やってます 2015/1/31 2015 MVP ComCamp 名古屋会場 2
  3. 3. コミュニティ紹介 2015/1/31 2015 MVP ComCamp 名古屋会場 3 • わんくま同盟は、コミュニティで活動している者たちの集団です • 縦の繋がりはなく、横の繋がりで成り立っています 東京 / 名古屋 / 大阪 / 福岡 / 横浜 / コミケ… • ノンジャンルです。開発者が多いです • 各自のスタイルで情報提供などをしています • あなたも一緒に情報発信しませんか?
  4. 4. わんくま同盟: 主な活動内容 2015/1/31 2015 MVP ComCamp 名古屋会場 4 • 勉強会 http://wankuma.com/seminar/ 東京・大阪・名古屋・福岡・横浜・マニラ… ほぼ毎週どこかで勉強会 • ブログ http://blogs.wankuma.com/ 主に開発系だけど、ノンジャンル • 掲示板 http://bbs.wankuma.com/ C#とVB.NETの掲示板
  5. 5. わんくま同盟: 名古屋勉強会の活動 2015/1/31 2015 MVP ComCamp 名古屋会場 5 • 2007年12月から名古屋でも勉強会を年4回開催しています。 • 開催内容としては以下の内容となっています。 1. セッション(50分枠) x N名 2. LightningTalks x 3名 3. TDD道場(30分枠) by @biacさん • スピーカー登壇希望者募集しています – ノンジャンルな勉強会ですので、趣味な話でもおk – スピーカーが集まらなかった時は、名古屋勉強会独自でTDDや DDDのワークショップなどを開催しています。
  6. 6. わんくま同盟: 次回の名古屋勉強会は 2015/1/31 2015 MVP ComCamp 名古屋会場 6 • わんくま同盟 名古屋勉強会 #34 http://www.wankuma.com/seminar/20150214nagoya34/ • 日時:2015年 2月14日(土) 12:30~17:00 • 場所:名古屋市港生涯学習センター(築地口) • 参加費:無料 • スピーカー登壇希望者は随時募集中です!
  7. 7. Visual Studio 2015 次期 Visual Studio の プレビュー版が利用可能です 2015 MVP ComCamp 名古屋会場 7
  8. 8. Visual Studio 2015、 数々の新機能とともに年内リリース 2015/1/31 2015 MVP ComCamp 名古屋会場 8 • 次期Visual Studio 2015 年内、たぶんWindows 10に 合わせて正式リリース • たくさんの新機能 ←@IT「Visual Studio 2015 の新機能をプレビュー版で見 てみよう」に書きました http://www.atmarkit.co.jp/ait/articles/1 412/08/news126.html
  9. 9. Visual Studio 2015、 現在はCTP5を試せる♪ 2015/1/31 2015 MVP ComCamp 名古屋会場 9 • プレビュー版は誰でも! Visual Studioのサイトからダ ウンロード可能 http://www.visualstudio.com/ • まだ「go-live」ではない 開発したアプリをまだ実運用 には使ってはいけない • Windows 10 対応も、まだ
  10. 10. Visual Studio 2015 の新機能の1つ、 Smart Unit Tests = 元 Pex 2015/1/31 2015 MVP ComCamp 名古屋会場 10 • Microsoft Research で開発 http://research.microsoft.com/e n-us/projects/pex/ 2008年ごろから! • ちなみに「Moles」は 進化形が Fakes Framework となって VS 2012 に搭載さ れた⇒CodeZine「Visual Studio 11 betaの単体テスト機能を使ってみよ う!」に書きました
  11. 11. Visual Studio 2015 Program EXploration for .NET Smart Unit Tests !? ざっくり言うと、どんなもの? 2015 MVP ComCamp 名古屋会場 11
  12. 12. Pexの使い方: STEP1 コードを書きます… 2015/1/31 2015 MVP ComCamp 名古屋会場 12
  13. 13. Pexの使い方: STEP2 メニューを選びます… 2015/1/31 2015 MVP ComCamp 名古屋会場 13
  14. 14. Pexの使い方: STEP3 ユニット テストが走ります。以上! 2015/1/31 2015 MVP ComCamp 名古屋会場 14 テストケース テスト結果
  15. 15. え…? なんだって~っ!? 2015/1/31 2015 MVP ComCamp 名古屋会場 15
  16. 16. DEMO PexSample01.sln テスト自動実行~テスト保存まで 2015 MVP ComCamp 名古屋会場 16
  17. 17. 結果の見方: 想定したテストケースが走ったか? 2015/1/31 2015 MVP ComCamp 名古屋会場 17 テストケース テスト結果 • FizzBuzzの外部設計 • 自動生成されたテストケー スは、外部設計と一致して いるか? nは3の倍数? nは5の倍数? 出力 TRUE TRUE "Fizz Buzz" TRUE FALSE "Fizz" FALSE TRUE "Buzz" FALSE FALSE 数字
  18. 18. 書いたコードがおかしいと… 2015/1/31 2015 MVP ComCamp 名古屋会場 18
  19. 19. 書いたコードがおかしいと、 (1/2) テストケースが想定と異なる 2015/1/31 2015 MVP ComCamp 名古屋会場 19 テストケース テスト結果 • FizzBuzzの外部設計 • ← "Fizz Buzz" になるケー スが無い!! nは3の倍数? nは5の倍数? 出力 TRUE TRUE "Fizz Buzz" TRUE FALSE "Fizz" FALSE TRUE "Buzz" FALSE FALSE 数字
  20. 20. 書いたコードがおかしいと、 (2/2) カバレッジが不足する 2015/1/31 2015 MVP ComCamp 名古屋会場 20 • コードをレビューすると 実行されないパスが見つか る! VS 2015 CTP 5 では、カバレッジ ツールとは 連動していないらしい (将来に期待)
  21. 21. Pex - ここまでのポイント • 後付けのユニット テストを自動生成してくれる 便利!! • 結果の評価には、 ユニット テストを作れるスキルが必要! 2015/1/31 2015 MVP ComCamp 名古屋会場 21
  22. 22. Pex 自動生成され たユニット テストを活用 する 生成されたテストを、保存 して再利用。改造も可能。 2015 MVP ComCamp 名古屋会場 22
  23. 23. 自動生成されたユニットテストを 保存する 2015/1/31 2015 MVP ComCamp 名古屋会場 23 ➊ 保存したいテストを選択↓ ➋ [Save] ボタン→ • ➊ 保存したいテストケース を選択 全部なら Ctrl+A • ➋ [Save] ボタンをクリッ ク または、右クリックから [Save] メニューを選択
  24. 24. 保存されたユニットテスト: テスト プロジェクトが生成される 2015/1/31 2015 MVP ComCamp 名古屋会場 24 • ユニット テストのプロジェ クトが自動生成される 参照設定もされている • テストケースは .g.cs ファ イルに記述されている テストのプロジェクト テストケース
  25. 25. 保存されたユニットテスト: テスト エクスプローラーで実行可 2015/1/31 2015 MVP ComCamp 名古屋会場 25 • 通常のユニットテストと同様に、テスト エク スプローラーからテストを実行できる • 回帰テストとして使える! • 注意: 保存したテストを書き換えてもよい が、[Smart Unit Tests] を再実行すると上書 きされてしまう
  26. 26. Pex - ここまでのポイント • 自動生成されたユニット テストは保存しておける • 保存したテストは、通常のユニット テストと同様 に実行可能 = 回帰テスト • リファクタリングが捗る! Refactoring = 外的な振る舞いは同じままでコードを改善する ※ 外的な振る舞いの不変を保証するにはユニット テスト! 2015/1/31 2015 MVP ComCamp 名古屋会場 26
  27. 27. Pex 例外の扱い 例外が出るのが正常、とい うケースの扱い方 2015 MVP ComCamp 名古屋会場 27
  28. 28. コードから明示的に出す例外 2015/1/31 2015 MVP ComCamp 名古屋会場 28 • 明示的に例外を throw して いる場合 - 単純に throw - catch して、別の例外を 作って throw
  29. 29. コードから明示的に出す例外 ⇒ 正常と判定される 2015/1/31 2015 MVP ComCamp 名古屋会場 29 • 明示的に例外を throw して いる場合は、 テスト結果はグリーンに!
  30. 30. コードでハンドリングしていない例外 2015/1/31 2015 MVP ComCamp 名古屋会場 30 • catch していない例外 • catch していても、 単純にリスローしている場 合
  31. 31. コードでハンドリングしていない例外 ⇒ 異常と判定される 2015/1/31 2015 MVP ComCamp 名古屋会場 31 • ハンドリングしていな い例外が出た場合(リス ローを含む)は、 テスト結果はレッドに!
  32. 32. レッド判定をグリーン判定に変える 2015/1/31 2015 MVP ComCamp 名古屋会場 32 • 例外が出るのが正常、 というときには、その ケースをグリーンに変 えることができる 右クリックして [Allow]
  33. 33. [Allow]すると起きること ⇒テストコードに属性が付く 2015/1/31 2015 MVP ComCamp 名古屋会場 33 • [Allow] すると、その 例外は許容するという 属性が、テストコード に追加される ※ テストを保存してい ないときは、自動的に テストプロジェクトが 生成される 通常の属性: レッドになる [Allow]した場合の属性: グリーンになる
  34. 34. Pex - ここまでのポイント • コードから明示的に出している例外 ⇒ グリーン • コードでハンドリングしてない例外 ⇒ レッド • レッドのテストケースは [Allow] することで、グ リーンとみなすように指示できる 2015/1/31 2015 MVP ComCamp 名古屋会場 34
  35. 35. Pex 苦手なもの Pexで上手く扱えないコー ドの例 2015 MVP ComCamp 名古屋会場 35
  36. 36. 返値のないメソッド 2015/1/31 2015 MVP ComCamp 名古屋会場 36 • 分岐を全部通すテスト を生成してはくれる ⇒ でも、そのテストが 正しいかどうか 判定できない • 参照渡しの引数でテス ト可能な場合もある テストファーストなら 複数のメソッドを 組み合わせてテストを 作る場面
  37. 37. 返値のないメソッド ⇒ テストは生成/実行される 2015/1/31 2015 MVP ComCamp 名古屋会場 37 • このテスト結果でよい のか、判断できない • 下は、参照渡しの引数 で処理結果が判断でき る例 入力 出力入力 出力がないので判断不能
  38. 38. メンバー変数に依存するメソッド 2015/1/31 2015 MVP ComCamp 名古屋会場 38 • メンバー変数(=オブ ジェクトの状態)に依存 するメソッドは、状態 を変化させるために複 数回(または別のメソッ ド)の呼び出しが必要 この例だと、2回呼び出 してみないと判定でき ない
  39. 39. メンバー変数に依存するメソッド ⇒ 適切なテストケースにならない 2015/1/31 2015 MVP ComCamp 名古屋会場 39 • メソッドを複数回呼び 出すようなテストケー スは自動生成されない この例だと、0を与えた だけで終わっているが、 その後に別の値を与え て先ほどの0が返ってく ることを評価しないと いけない
  40. 40. yield return 2015/1/31 2015 MVP ComCamp 名古屋会場 40 • IEnumerable<T>を そのまま評価しようと する ⇒ テストにならない ※ IEnumerable<T> から値を取り出すメ ソッドならテスト可能 (結果画面は省略)
  41. 41. 非同期メソッド 2015/1/31 2015 MVP ComCamp 名古屋会場 41 • Task<T>をそのまま 評価しようとする ⇒ テストにならない ※ Task<T>から値を 取り出すメソッド(=ブ ロックする)ならテス ト可能 (結果画面は省略)
  42. 42. 外部に依存するメソッド 2015/1/31 2015 MVP ComCamp 名古屋会場 42 • テストは生成されるが、 外部の応答が変わって も対処できない ⇒ 回帰テストには ならない (結果画面は省略)
  43. 43. 非線形なメソッド (分岐によらない非線形性) 2015/1/31 2015 MVP ComCamp 名古屋会場 43 • 例えば2次関数なら、3 点を計測しないといけ ないが、そこまで賢く はない (1点しかテス トケースを生成してく れない) (結果画面は省略)
  44. 44. Windows ランタイム アプリ 2015/1/31 2015 MVP ComCamp 名古屋会場 44 • Windows ランタイム アプリ (ストア アプ リ) では、メニューに いない! orz ※ PCL/WinMD は OK♪ • C/C++もダメ まぁ、"Program EXploration for .NET" で すし この辺に いたはず!
  45. 45. Pex - ここまでのポイント • 苦手なものがけっこうある • 状態に依存するメソッドなど、テスタビリティの悪 いメソッドは当然ダメ! • yield return や async/await や非線形や Windows ランタイム アプリなどは、将来に期待 2015/1/31 2015 MVP ComCamp 名古屋会場 45
  46. 46. Pex 試そう! Visual Studio 2015の環境 がなくたって! 2015 MVP ComCamp 名古屋会場 46
  47. 47. Pex for fun http://pex4fun.com/ これはVS2015の Smart Unit Tests とは異なるところ があります 2015/1/31 2015 MVP ComCamp 名古屋会場 47
  48. 48. Pex for fun ゲーム形式でPexを楽しむ 2015/1/31 2015 MVP ComCamp 名古屋会場 48 ❹ 仕様を満たすようにコードを修正して、 またPexを走らせる ➊ Pexを走らせる ❸ この問題の仕様が、ここに表示される (このあたりがホンモノと違う) ➋ Pexの出力
  49. 49. Pex まとめ 2015 MVP ComCamp 名古屋会場 49
  50. 50. Pex すごい❢ • VS2015 Ultimate に搭載される Pex (正式名 「Smart Unit Tests」) は、後付けのユニットテス トを自動生成 • 回帰テスト、リファクタリングが捗る! • テスタビリティの高いコードを書くようになる (…かも)
  51. 51. Smart Unit Tests (Pex)のドキュメント • MSDN: 「コードのためにスマート単体テストを生成する」 https://msdn.microsoft.com/library/dn823749.aspx • MSDN マガジン 2009年12月号: 「Pex によるレガシ コード の自動単体テスト」 https://msdn.microsoft.com/ja-jp/magazine/ee819140.aspx かなり古く、現状と異なる部分も多いが、考え方の参考に。 なお、スタブ(PexMock)は廃止されました。 • MSDN blogs (英語): 「Introducing Smart Unit Tests」 http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/19/introducing-smart-unit-tests.aspx 「Smart Unit Tests - a mental model」 http://blogs.msdn.com/b/visualstudioalm/archive/2014/12/11/smart-unit-tests-a-mental-model.aspx
  52. 52. Visual Studio 2015 Pex は ユニットテス トの福音とな るか!? 2015/1/31 BluewaterSoft @biac 2015 MVP ComCamp 名古屋会場 52ご清聴ありがとうございました

×