Contenu connexe
Similaire à Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!? (20)
Plus de Yasuhiko Yamamoto (20)
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
- 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. コミュニティ紹介
2015/1/31 2015 MVP ComCamp 名古屋会場 3
• わんくま同盟は、コミュニティで活動している者たちの集団です
• 縦の繋がりはなく、横の繋がりで成り立っています
東京 / 名古屋 / 大阪 / 福岡 / 横浜 / コミケ…
• ノンジャンルです。開発者が多いです
• 各自のスタイルで情報提供などをしています
• あなたも一緒に情報発信しませんか?
- 4. わんくま同盟: 主な活動内容
2015/1/31 2015 MVP ComCamp 名古屋会場 4
• 勉強会 http://wankuma.com/seminar/
東京・大阪・名古屋・福岡・横浜・マニラ…
ほぼ毎週どこかで勉強会
• ブログ http://blogs.wankuma.com/
主に開発系だけど、ノンジャンル
• 掲示板 http://bbs.wankuma.com/
C#とVB.NETの掲示板
- 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. わんくま同盟: 次回の名古屋勉強会は
2015/1/31 2015 MVP ComCamp 名古屋会場 6
• わんくま同盟 名古屋勉強会 #34
http://www.wankuma.com/seminar/20150214nagoya34/
• 日時:2015年 2月14日(土) 12:30~17:00
• 場所:名古屋市港生涯学習センター(築地口)
• 参加費:無料
• スピーカー登壇希望者は随時募集中です!
- 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
- 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の単体テスト機能を使ってみよ
う!」に書きました
- 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 数字
- 21. Pex - ここまでのポイント
• 後付けのユニット テストを自動生成してくれる
便利!!
• 結果の評価には、
ユニット テストを作れるスキルが必要!
2015/1/31 2015 MVP ComCamp 名古屋会場 21
- 26. Pex - ここまでのポイント
• 自動生成されたユニット テストは保存しておける
• 保存したテストは、通常のユニット テストと同様
に実行可能 = 回帰テスト
• リファクタリングが捗る!
Refactoring = 外的な振る舞いは同じままでコードを改善する
※ 外的な振る舞いの不変を保証するにはユニット テスト!
2015/1/31 2015 MVP ComCamp 名古屋会場 26
- 34. Pex - ここまでのポイント
• コードから明示的に出している例外 ⇒ グリーン
• コードでハンドリングしてない例外 ⇒ レッド
• レッドのテストケースは [Allow] することで、グ
リーンとみなすように指示できる
2015/1/31 2015 MVP ComCamp 名古屋会場 34
- 36. 返値のないメソッド
2015/1/31 2015 MVP ComCamp 名古屋会場 36
• 分岐を全部通すテスト
を生成してはくれる
⇒ でも、そのテストが
正しいかどうか
判定できない
• 参照渡しの引数でテス
ト可能な場合もある
テストファーストなら
複数のメソッドを
組み合わせてテストを
作る場面
- 40. yield return
2015/1/31 2015 MVP ComCamp 名古屋会場 40
• IEnumerable<T>を
そのまま評価しようと
する
⇒ テストにならない
※ IEnumerable<T>
から値を取り出すメ
ソッドならテスト可能
(結果画面は省略)
- 41. 非同期メソッド
2015/1/31 2015 MVP ComCamp 名古屋会場 41
• Task<T>をそのまま
評価しようとする
⇒ テストにならない
※ Task<T>から値を
取り出すメソッド(=ブ
ロックする)ならテス
ト可能
(結果画面は省略)
- 44. Windows ランタイム アプリ
2015/1/31 2015 MVP ComCamp 名古屋会場 44
• Windows ランタイム
アプリ (ストア アプ
リ) では、メニューに
いない! orz
※ PCL/WinMD は OK♪
• C/C++もダメ
まぁ、"Program
EXploration for .NET" で
すし
この辺に
いたはず!
- 45. Pex - ここまでのポイント
• 苦手なものがけっこうある
• 状態に依存するメソッドなど、テスタビリティの悪
いメソッドは当然ダメ!
• yield return や async/await や非線形や
Windows ランタイム アプリなどは、将来に期待
2015/1/31 2015 MVP ComCamp 名古屋会場 45
- 50. Pex すごい❢
• VS2015 Ultimate に搭載される Pex (正式名
「Smart Unit Tests」) は、後付けのユニットテス
トを自動生成
• 回帰テスト、リファクタリングが捗る!
• テスタビリティの高いコードを書くようになる
(…かも)
- 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