「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>テスト]] * 目次 [#q80d3d7f] #contents *概要 [#v89ca099] テスティング・フレームワークは -UIテスト自動化 -レグレッション・テスト(リグレッション・テスト) -[[TDD(テスト駆動開発)>http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA]] などで使用される。 各ツールの説明と適合するシナリオについて分析する。 *xUnit系ツール [#n093985e] .NET開発のJUnitに対応するテスティング・フレームワークには、~ [[NUnit]]やVisual Studio の単体テスト機能がある。~ ただし、DJunit、DBunit相当のフレームワークは存在しない。 なお、これらの機能は、 >Visual Studio 2005では、Team Developer、Team Tester以上 のEditionでしか利用できなかったが、 -Visual Studio 2010では、Professional以上 -Visual Studio 2012では、Premium以上 で利用可能になっている。 **画面系 [#c0a25b26] 以下のUIテスト自動化が可能なxUnit系ツールも存在するが、~ 画面からテストする分、使い方が複雑になり、使い難くなっていると思われる。 -NUnitAsp - ASP.NET unit testing~ http://nunitasp.sourceforge.net/ -NUnitForms An NUnit extension for testing Windows Forms applications.~ http://nunitforms.sourceforge.net/ -なお、ASP.NET MVCでは、~ コントローラのアクションを実行するための~ テストコードを書けば良いため単体テストが容易になった。~ なお、使用するツールとしては、以下のデファクトのツールを使用できる。 --[[NUnit]] --Visual Studio単体テスト機能 **機能の変遷 [#v3bb2e76] ***VS2008 [#n6fcb3a8] -特集:Visual Studio 2008単体テスト機能徹底活用(前編)~ Visual Studio 2008単体テスト機能のすべて - @IT~ http://www.atmarkit.co.jp/ait/articles/0811/14/news137.html --Visual Studio 2008では、Professional Editionでも使用できる。 ***VS2010 [#ka63dbca] -Visual Studioで作る単体テスト、~ 基本のき(VS2010向け改訂版):CodeZine~ http://codezine.jp/article/detail/5826 --Visual Studio 2010では、Professional Editionでも使用できる。 ***VS2012 [#md0a84c3] -第 1 回 Visual Studio 2012 による~ 単体テスト Visual Studio 2012 自習書シリーズ~ http://msdn.microsoft.com/ja-jp/vstudio/dn223359.aspx -Visual Studio 2012で「単体テストの作成」機能が無くなったけど良い感じ~ http://d.hatena.ne.jp/aoki1210/20120915/p1 -単体テストの作り方がVisualStudio 2012から変わった~ http://pgnote.net/?p=1680 --機能が変わって、Visual Studio 2012では、~ Premium Edition以上で使用できる。 --「単体テストの作成」機能が無くなったのは、~ テストファーストで無い為と言われている。 *その他のツール [#b2c4bbff] **自動UIテスト [#heba49ce] ***UI Automation [#q0e525f9] UIオートメーションは、UIテスト自動化~ (UIに対するイベントの起動を自動化)~ するためのフレームワークであり、~ .NET Framework 3.0(移行)のWPFに含まれている。~ このUIオートメーションを利用することで、~ 以下のアプリケーションのUIを操作できる。 -Windowsアプリケーション(Win32) -Windowsフォーム・アプリケーション(.NET) -WPFアプリケーション(.NET) ・・・ -参考 --UIオートメーションによる自動UIテストの実践 - @IT~ http://www.atmarkit.co.jp/fdotnet/special/uiautomation/uiautomation_01.html ***Coded UI Test [#q320311e] また、Visual Studio 同梱の機能に >コード化された UI テスト(Coded UI Test) がある。 -wpf - Microsoft UI Automation Library Vs Coded UI Test - Stack Overflow~ http://stackoverflow.com/questions/4909206/microsoft-ui-automation-library-vs-coded-ui-test こちらを参照すると、コード化された UI テスト(Coded UI Test)は、~ UI Automation Libraryをランタイムとして使用する機能であることが解る。 エントリ系の自動化に特化した用途であれば、有用である可能性がある。~ #UIテスト自動化の導入方針の「使い捨て前提で適用シーンを絞り込んで利用」に合致。 -コード化された UI テストと操作の記録でサポートされている構成とプラットフォーム~ http://msdn.microsoft.com/ja-jp/library/vstudio/dd380742.aspx --要件:Visual Studio Ultimate, Visual Studio Premium **OpenCover [#d54cdee1] カバレージ率を収集するツール。 **ReportGenerator [#e90ff3d9] 上記(テスト結果、カバレージ率)のレポート生成ツール。 *適合するシナリオ [#e9b48eb4] UP開発に対して、テスティング・フレームワークを使用した~ -[[TDD(テスト駆動開発)>http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA]] -レグレッション・テスト のシナリオが適用困難である事実をサンプリングして説明する。 **xUnit系ツール [#fb093ba8] ***レグレッション・テスト [#na3cf8d5] UP開発では(UIテスト自動化と同様に)、~ >テスティング・フレームワークを使用したレグレッション・テストで ペイするプランを立案し難い。 ***TDD(テスト駆動開発) [#y730fc75] どのような開発においても、 -テスト・ファーストでない場合と -テスト・ファーストである場合とで、 定量的な効果にどれぐらいの違いがあるのか解らない。 ただし、テスティング・フレームワークを使用した~ レグレッション・テストの自動化が前提となっている場合は、~ テスト・ファーストを試してみても問題ないと思われる。 -参考 --テスト駆動開発 - Wikipedia~ http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA --TDDを真面目にやってみて気付いたこと - Masatomo Nakano Blog~ http://blog.madoro.org/mn/70 --TDDという名の幻想... - Qiita~ http://qiita.com/asip2k25/items/a580417c8aeedd248094 **UI Automation [#i427a940] ***Coded UI Test [#h8bcce88] テスト対象にUIを含める場合は、 -UIテスト自動化ツールではなく、 -前述の「[[Coded UI Test>#q320311e]]」等 を使用することになると思われる。 *効果的シナリオ [#wba8c8d3] テスティング・フレームワークは、 やはり、UP開発ではなく、 -製品開発 -OSSのAS IS的なライセンス -アジャイル的なプロセス と親和性が高いものと考える。 従って、 -OSSのAS IS的なライセンス -バックログ消化型 & チーム開発 #影響範囲なども把握し難い状況を想定。 で、デグレード等の早期検出という用途に最も適合しているものと考える。 #所謂OSSコミュニティ的な開発運用。 これはコードの進化のスピードに大きな影響を与えるため、~ OSS文化隆盛の要因の一つにもになっているものと考える。 **事例 [#s1613296] ***某開発支援ツール [#mbde017c] 某開発支援ツールがテスティング・フレームワークを使用して、~ かなりの所までレグレッション・テストの自動化ができている。~ ちなみにこの、テスティング・フレームワークを使用したテスト自動化基盤、~ 通常CL消化1人月程度の所を、9人月ぐらいの工数をかけて整備しているとのこと。~ また、上記のテスト対象にUIを含めることは難しいため、B層・D層をテスト対象としている。 ---- Tags: [[:テスト]], [[:デバッグ]], [[.NET開発]], [[:CI]]