狠狠撸

狠狠撸Share a Scribd company logo
罢顿顿道场                                        TDD
                                          やってみよう!




                              わんくま同盟         biac
                             名古屋勉強会 #25
                      名古屋市
2012年12月1日   名古屋ソフトウェアセンター



             わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13          1/15
? 著書
        自己紹介                        著作
                                             – 「速攻入門 C#」 (2012/3)
                                               技術評論社、共著
                                             – 「ソフトな彼女とハードな彼
                                               氏。」(2012/3) アジャイルマイ
                                               ンドvol.1 掲載
                                            ? 記事
        biac (山本 康彦)                         – 連載 「C#でTDD入門」
                                               CodeZine
          BluewaterSoft                      –   週刊連載「WinRT/Metro Tips」
                                                 @IT - .NET開発者中心
    http://www.bluewatersoft.jp/                 …etc.

                                            Windows 8 Metro Style App.
?   名古屋大学工学部(修士)
                                            Windows Phone 8
?   HONDA R&Dで自動車設計                ソフトウェア   …Windows系の最新技術
?   1994~ ソフトウェア業界                   開発
?   2012~ BluewaterSoft                     TDD(コーディング技法)の普及

                   わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13                         2/15
Test
    Driven
    Development
     テスト駆動開発
わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13   3/15
TDD – テスト駆動開発

?「テスト」と言ってるけど、
 TDDは品質保証テストじゃない。
?「開発」と言ってるけど、
 TDDは開発プロセスじゃない。

   わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13   4/15
罢顿顿の考案者
               Kent Beck の説明
        “Test Driven Development: By Example” (2002) より。


 「
We drive development with automated tests,
 a style of development called Test-Driven
             Development (TDD).
                                                       」
        わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13                      5/15
具体的には?
           “Test Driven Development: By Example” (2002) より。



In Test-Driven Development, we
?Write new code only if an automated test has failed
?Eliminate duplication
These are two simple rules.


           わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13                      6/15
Test
      Driven
      Development
= 自動化されたテストを使って
  開発を駆動するスタイル
 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13   7/15
大事なことなのでもう1度
「自動化されたテスト」
…を作ってからコードを書くのだ。


 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13   8/15
本日の
    テーマ
?Metroスタイル
 アプリをテスト
 ファーストする
(Windows 8)

                   Metro スタイル アプリ (と、かつて呼ばれていたナ
                   ニカ) をテストファーストで作る時のポイントは?

          わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13       9/15
テストツール

?VS2012 Express
 ?MSTest 標準
?VS2012 有償版       Visual Studio 2012 有償版の「拡張機能と更新プログラム」ダイアログ



 ?NUnit 等も        ?上の画像では「NUnit Test Adapter」がインストー
                  ルされている。Test Adapterがあれば、任意のユニッ

 組み込み可能           トテスト フレームワークをIDEから実行できる。
                  ?ExpressにもMSTestが組み込まれた。他のユニット
                  テスト フレームワークは、IDE外で実行する。

        わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13                    10/15
テスト
プロジェクト
?Metroアプリを
 対象にするには、
 専用のテスト
 プロジェクト
              ?[上] Metroアプリ用の単体テストプロジェクト
              ?[下] 一般のクラス ライブラリ用

     わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13         11/15
Metro用テスト
プロジェクト                                   Metro用.NET


?appxmanifest
 などが含まれる
                                         マニフェスト



                                           証明書
※ テスト対象と同じケイ
パビリティ設定が必要
※ テスト対象がCOMを
使っているとテスト不可
                Metroアプリ用の単体テストプロジェクト (Express)

       わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13            12/15
.xaml.cs/.vb
   のテスト
?ユニットテスト
 では画面をイン
 スタンス化する
 のは困難
?staticメソッド
 はテスト可能         画面をインスタンス化しようとすると、スレ違いで
                怒られる。

       わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13   13/15
async/await
                                       void → async Task




   のテスト
? 普通に書くと
  「すっぽ抜ける」
? テストメソッドの           テストメソッド中の await で制御が一旦テストラン
  型を async Task      ナーに戻ると、そこでテスト失敗の監視は終了して
                     しまう。
  にする。               テストメソッドの型を void から Task に変える。
  (MSTest, NUnit)    するとテストランナーは await してくれるので、テ
                     ストメソッドの完了までテスト失敗を監視できる。
        ※ 未対応のテストランナーでは、await せずに Task.Wait() して対応する。
         わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13                     14/15
おしまい


まとめ
?Metro画面には、専用の
 テストプロジェクト
?asyncメソッドでは、非
 同期の完了を待機させる


        わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13   15/15

More Related Content

わんくま名古屋#25(20121201) 罢顿顿道场#13 ~ Metroアプリをテストファーストするときのポイント

  • 1. 罢顿顿道场 TDD やってみよう! わんくま同盟 biac 名古屋勉強会 #25 名古屋市 2012年12月1日 名古屋ソフトウェアセンター わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 1/15
  • 2. ? 著書 自己紹介 著作 – 「速攻入門 C#」 (2012/3) 技術評論社、共著 – 「ソフトな彼女とハードな彼 氏。」(2012/3) アジャイルマイ ンドvol.1 掲載 ? 記事 biac (山本 康彦) – 連載 「C#でTDD入門」 CodeZine BluewaterSoft – 週刊連載「WinRT/Metro Tips」 @IT - .NET開発者中心 http://www.bluewatersoft.jp/ …etc. Windows 8 Metro Style App. ? 名古屋大学工学部(修士) Windows Phone 8 ? HONDA R&Dで自動車設計 ソフトウェア …Windows系の最新技術 ? 1994~ ソフトウェア業界 開発 ? 2012~ BluewaterSoft TDD(コーディング技法)の普及 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 2/15
  • 3. Test Driven Development テスト駆動開発 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 3/15
  • 4. TDD – テスト駆動開発 ?「テスト」と言ってるけど、 TDDは品質保証テストじゃない。 ?「開発」と言ってるけど、 TDDは開発プロセスじゃない。 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 4/15
  • 5. 罢顿顿の考案者 Kent Beck の説明 “Test Driven Development: By Example” (2002) より。 「 We drive development with automated tests, a style of development called Test-Driven Development (TDD). 」 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 5/15
  • 6. 具体的には? “Test Driven Development: By Example” (2002) より。 In Test-Driven Development, we ?Write new code only if an automated test has failed ?Eliminate duplication These are two simple rules. わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 6/15
  • 7. Test Driven Development = 自動化されたテストを使って 開発を駆動するスタイル わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 7/15
  • 9. 本日の テーマ ?Metroスタイル アプリをテスト ファーストする (Windows 8) Metro スタイル アプリ (と、かつて呼ばれていたナ ニカ) をテストファーストで作る時のポイントは? わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 9/15
  • 10. テストツール ?VS2012 Express ?MSTest 標準 ?VS2012 有償版 Visual Studio 2012 有償版の「拡張機能と更新プログラム」ダイアログ ?NUnit 等も ?上の画像では「NUnit Test Adapter」がインストー ルされている。Test Adapterがあれば、任意のユニッ 組み込み可能 トテスト フレームワークをIDEから実行できる。 ?ExpressにもMSTestが組み込まれた。他のユニット テスト フレームワークは、IDE外で実行する。 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 10/15
  • 11. テスト プロジェクト ?Metroアプリを 対象にするには、 専用のテスト プロジェクト ?[上] Metroアプリ用の単体テストプロジェクト ?[下] 一般のクラス ライブラリ用 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 11/15
  • 12. Metro用テスト プロジェクト Metro用.NET ?appxmanifest などが含まれる マニフェスト 証明書 ※ テスト対象と同じケイ パビリティ設定が必要 ※ テスト対象がCOMを 使っているとテスト不可 Metroアプリ用の単体テストプロジェクト (Express) わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 12/15
  • 13. .xaml.cs/.vb のテスト ?ユニットテスト では画面をイン スタンス化する のは困難 ?staticメソッド はテスト可能 画面をインスタンス化しようとすると、スレ違いで 怒られる。 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 13/15
  • 14. async/await void → async Task のテスト ? 普通に書くと 「すっぽ抜ける」 ? テストメソッドの テストメソッド中の await で制御が一旦テストラン 型を async Task ナーに戻ると、そこでテスト失敗の監視は終了して しまう。 にする。 テストメソッドの型を void から Task に変える。 (MSTest, NUnit) するとテストランナーは await してくれるので、テ ストメソッドの完了までテスト失敗を監視できる。 ※ 未対応のテストランナーでは、await せずに Task.Wait() して対応する。 わんくま同盟 名古屋勉強会 #25 – 罢顿顿道场 #13 14/15