スライド 1

Similar documents
メソッドの外部設計とテストファースト

著作権 このドキュメントに記載されている情報は このドキュメントの発行時点におけるマクロソフトの見解を反映したものです マクロソフトは市場の変化に対応する必要があるため このドキュメントの内容に関する責任を問われないものとします また 発行日以降に発表される情報の正確性を保証できません このホワトペ


Visual Studio 2013 による単体テスト 2014 Microsoft Corporation. All rights reserved. 1

スライド 1

C#の基本

~ ユーザーインターフェイスの自動テスト ~

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1

CodeRecorderでカバレッジ

わんくま同盟 東京勉強会 #27

Microsoft PowerPoint - prog09.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog09.ppt

TestDesign for Web

MISAO with WPF

メソッドのまとめ

Microsoft Visual Studio 2010 Professional Data Sheet

PowerPoint プレゼンテーション

プログラミング基礎I(再)

GEC-Java

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

プログラミング入門1

Development Baseline Archway Inc. Consulting Service Copyright 2006 Archway Inc. Page 1

Visual Studio Do-It-Yourself シリーズ 第 1 回 Windows ゕプリケーション開発の概要 -1-

An introduction and future of Ruby coverage library

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

Microsoft PowerPoint - Wmodel( ) - 配布用.pptx


スライド 1

+ 本セッションでお伝えしたいこと ビジネス価値にフォーカスした継続的デリバリーを支えるテスト環境がすでに実践フェーズに Visual Studio ALM* による先進的な開発 テスト環境 テスト専用ツールの登場によるチーム生産性の向上 開発とテストのコラボレーション 手動テストを自動化 開発 テ

Microsoft PowerPoint - prog03.ppt

Actual4Test Actual4test - actual test exam dumps-pass for IT exams

PowerPoint プレゼンテーション

MVP for VB が語る C# 入門

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

無料で多機能な OSS の ETL ツール Kettle を使ってみよう! 情報政策課技術職員金森浩治 1. はじめにデータ処理を行うにあたって非常に便利なツール ETL 本稿では OSS の ETL Kettle の機能とその使用方法を紹介します 2. 用語説明 2.1 OSS とは? OSS と

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

PowerPoint Presentation

なぜバグ曲線は収束するのか

Prog2_9th

テスト駆動開発入門

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

XAML の勉強上要! WPF アプリケーションは作れます

V8.1新規機能紹介記事

デバッグの工夫

28th Embarcadero Developer Camp

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Prog2_12th

Microsoft Word - Android_SQLite講座_画面800×1280

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

DumpKiller Latest IT Exam Questions & Answers No help, Full refund!

システム操作インターフェイス最適化によるテスト自動化ROI向上

NEXCESS基礎コース01 組込みソフトウェア開発技術の基礎 ソフトウェア開発プロセス編

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

年計グラフ作成システム

スライド 1

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

テスト駆動開発入門 ネクストステップ

Microsoft Visual Studio 2010 機能概要 (2011 月 5 月 13 日版) マイクロソフト ビジュアル スタジオ 2010 機能概要 Visual Studio 2010 とは アプリケーション ライフサイクルにおけるすべてをカバー 多様なアプリケーションの開発において

プログラミングA

Java知識テスト問題

デベロッパーテスティング ソフトウエア開発者の基礎体力

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Boost.Preprocessor でプログラミングしましょう DigitalGhost

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

PowerPoint プレゼンテーション

Excelfl—‘ãŁª’Í-flO“Z

智美塾 ゆもつよメソッドのアーキテクチャ

著作権 このドキュメントに記載されている情報は このドキュメントの発行時点におけるマクロソフトの見解を反映したものです マクロソフトは市場の変化に対応する必要があるため このドキュメントの内容に関する責任を問われないものとします また 発行日以降に発表される情報の正確性を保証できません このホワトペ

2007 Microsoft Corporation. All rights reserved. 本書に記載した情報は 本書各項目に関する発行日現在の Microsoft の見解を表明するものです Microsoft は絶えず変化する市場に対応しなければならないため ここに記載した情報に対していかな

Using VectorCAST/C++ with Test Driven Development

自己紹介 2 上田 和樹 JaSST 北海道実行委員 TEF 道 札幌で活躍するアマチュアミュージシャン兼ソフトウェアエンジニア

PowerPoint プレゼンテーション

プログラミングA

PowerPoint プレゼンテーション

Prog1_10th

Seasar.NET入門

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

NetworkVantage 9

Javaプログラムの実行手順

デジタル表現論・第4回

メソッドのまとめ

エンジニアリング・サービスから見たMBD導入の成功・失敗

Microsoft PowerPoint - Session4古賀様.ppt

プログラミング入門1

Program Design (プログラム設計)

JAVA入門

著作権 このドキュメントに記載されている情報は このドキュメントの発行時点におけるマクロソフトの見解を反映したものです マクロソフトは市場の変化に対応する必要があるため このドキュメントの内容に関する責任を問われないものとします また 発行日以降に発表される情報の正確性を保証できません このホワトペ

PowerPoint プレゼンテーション

MxLogonサーバサイドツールキット用UI

Java講座

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

Exam : 日本語 (JPN) Title : Implementing Advanced Cisco Unified Wireless Security (IAUWS) v2.0 Vendor : Cisco Version : DEMO 1 / 5 Get Latest & V

Microsoft認定資格問題集DEMO(70-513)

Transcription:

Test Driven Development Visual Studio 2008 でやる テスト駆動開発 2008/04/26 biac http://bluewatersoft.cocolog-nifty.com/ 機材協力 : 日本ンフォメーション

自己紹介 山本康彦 ( biac ) いまだにプログラムを書きたがる 50 歳 http://bluewatersoft.cocolog-nifty.com/blog/cat8051143/ 名古屋のとある ISV 勤務 現在 WPF を使った業務ゕプリケーションの開発プロジェクトで品質保証を担当中 http://www.nicnet.co.jp/page/d_system/d03_12_jisseki.html MSF Agile を部分的に実施中 もとは機械の設計屋さん ものごとの見方 考え方が きっとズレてる

テスト駆動開発 ( TDD ) Test Driven Development 1. 単体テストを書くテストは失敗する (RED) 2. 製品コードを書くテストを成功させる (GREEN) 3. リフゔクタリング (REFACTOR) コードを綺麗に 1. に戻る RED GREEN REFACTOR のリズムに乗って さくさく開発

Visual Studio 2008 Professional Edition 単体テスト機能はゕリ http://msdn2.microsoft.com/ja-jp/library/bb385902.aspx Team System Development Edition さらに テストカバレッジ コード分析などの機能 http://msdn2.microsoft.com/ja-jp/library/47f7hz7y.aspx Express / Std は? オープンソースのツールを利用しよう! NUnit, NCover, FxCop

どんなもの? こんなものを作ってみよう 誕生日までの日数を答えてくれる どんな構造? WPF の画面 画面を抽象化したモデル 返答を作るロジック 単体テストできるのは? ロジック部分のみ UI は まだ難しい UI とロジックを分離すべし UI のコード量は減らすべし

DEMO 0 DEMO 画面 / UIModel / Logic の スケルトンまで作っておく

最初の一歩 1. [ 製品 ] スケルトンを書く メソッドのシグネチャと 仮の return 文を書く TDD の本来の流儀からは 外れている 2. 単体テストを生成する 単体テストウゖザード を使って 単体テストコードを自動生成する 3. [ テスト ] テストコードを書く 4. テストをする ( 失敗するはず ) 5. [ 製品 ] テストを通るだけのコードを書く 6. テストをする ( 成功するまで )

DEMO 1 DEMO 最初のテストと コードカバレッジや コード分析

以下は Team System の機能 コードの品質保証 テストカバレッジ 単体テストのときに 実行されたコード行をカウント ソースを色分けして表示 ( C0 カバレッジ ) http://msdn2.microsoft.com/ja-jp/library/y8hcsad3.aspx カバーされていないコード == 不要なコード (?) オープンソース : NCover & NCoverExplorer コード分析 Microsoft の基準に沿ったコーデゖングをしているか チェック http://msdn2.microsoft.com/ja-jp/library/y8hcsad3.aspx 無視することもできるけど 後で泣くのは誰? MS の無償ツール : FxCop コードメトリックス コードの複雑さや保守性を測定する http://msdn2.microsoft.com/ja-jp/library/bb385910.aspx 点数が悪すぎるところは リフゔクタリング候補

なぜ単体テストコード? 単体テスト == メソッドレベルの外部設計書 メソッドのシグネチャと戻り値の定義 ( 外部設計 ) は 昔は書いていた ( らしい ) 厳密に書くのは 自然言語ではムリ コードを書けない SE の書いた設計書では たいがい作れない テストに通る == ゴール 自分のリズムに合ったゴールを設定し さくさく開発 テストコードを書いた時点で わかりにくい仕様書のことは とりあえず忘れて OK! 自動実行できる == リフゔクタリングできる いつでもすぐに単体テストを実行して コードを壊していないことを証明できる 時間さえ許すなら 気が済むまでコードを改良できる

TDD は今や常識 開発プロセスの一部 たとえば MSF Agile Ver.4 開発タスク に TDD が取り入れられている そのほかの Agile プロセスも TDD を推奨 TDD を排斥しているプロセスは無い 品質向上のコストパフォーマンスが高い 開発プロセス全体では 実装工程 の工数が少し増えるだけで コードの品質は飛躍的に向上する ( 同じ品質にするなら 結合テスト 2 段分 ) 潜在バグ数 : 100 70 49 単体テストを書くために 仕様書をきっちり読む = レビュー効果でバグ 30% 減 単体テストを実施する効果でバグ 30% 減 検査 1 段で 30% は 1990 年代米国の数字日本では もっと良いような感触 結合テストで発見されるバグ 15 個 TDD していなければ 30 個

テストの起承転結 テストメソッドの基本 (1) [TestMethod] public void FooMethodTest() { // テストの準備 ( 不要なこともある ) // 共通部分は TestInitialize, ClassInitialize へ // テスト実行 --- 製品コードの呼び出し string answer = BarClass.FooMethod(); // 結果判定 Assert.AreEqual( Hello, TDD!, answer); 簡単な場合は 実行と判定を同一行にまとめてもよい } // テストの後始末 ( 不要なこともある ) // 共通部分は TestCleanup, ClassCleanup へ

テストメソッドの基本 (2) テストケースごとにテストメソッド [TestMethod] public void FooMethodTestcase1Test(){ } [TestMethod] public void FooMethodTestcase2Test(){ } 一連のテストケースでひとつのテストメソッド [TestMethod] public void FooMethodTest(){ // Testcase1 { } } // Testcase2 { } プロジェクト内でどちらかに統一されていれば良いと思う

テストメソッドの基本 (3) 例外を期待するテスト : ExpectedException 属性 [TestMethod] [ExpectedException(typeof(System.DivideByZeroException))] public void FooMethodTest(){ int n = BarClass.FooMethod(0); // 0 除算例外が期待される } 例外を期待するテスト : try ~ catch [TestMethod] public void FooMethodTest(){ try { int n = BarClass.FooMethod(0); // 0 除算例外が期待される Assert.Fail( 例外が出て ここには来ないはずです "); } catch (System.DivideByZeroException){ } } // ( success! ) テストコードで catch するのは このパターンだけ リソース解放が必要なら finally 句で

VS 便利機能 (1) private メソッドのテスト NUnit では private メソッドはテストできない public メソッド経由でテストされているはず 複雑な private メソッドなので どうしてもそこだけテストしたいときは public にしてしまったり #if DEBUG してみたり プラベートゕクセッサ 単体テストウゖザードで private メソッドを指定して単体テストを作ると 自動的にプラベートゕクセッサが生成される http://msdn2.microsoft.com/ja-jp/library/ms184807.aspx InternalsVisibleTo 属性 単体テストウゖザードで [InternalsVisibleTo 属性を追加する ] と internal メソッドが見えるようになる http://msdn2.microsoft.com/ja-jp/library/bb385840.aspx

DEMO 2 DEMO private メソッドの テスト

VS 便利機能 (2) データドリブン単体テスト 条件を変えて同じテストをする 引数や予想される結果が違うだけで 同じテストロジックを何度も書くことはめんどくさい データドリブン単体テスト DataSource 属性を付けることで データソースから 1 行読み込むごとにテストメソッドが 1 回呼び出されるようになる http://msdn2.microsoft.com/ja-jp/library/ms182528.aspx 読み込まれたレコードには TestContext.DataRow[ { 列名 } ] でゕクセス データソースには データベース CSV フゔル XML フゔルが利用可能 ODBC データソースが使える == Excel フゔルも OK

DEMO 4 DEMO Excel を使った データドリブンテスト

TDD を始めよう TDD は楽しい コードを書く時間が増える ( あいまいな仕様書のことで悩んでいる時間が減る テストが書けないなら 仕様書がおかしい! ) リフゔクタリングできる!! 参考書 Microsoft.NET でのテスト駆動開発 ( ジェームス ニューカーク著 ) ISBN-13: 978-4891004422 http://www.amazon.co.jp/exec/obidos/asin/4891004428/bluewatersoft-22 リフゔクタリング プログラムの体質改善テクニック ( マーチンフゔウラー著 ) ISBN-13: 978-4894712287 http://www.amazon.co.jp/exec/obidos/asin/4894712288/bluewatersoft-22 Guidelines for Test-Driven Development http://msdn2.microsoft.com/en-us/library/aa730844.aspx このスラドとサンプルコード 次の場所に置いてあります http://bluewatersoft.cocolog-nifty.com/blog/cat8051143/

ありがとうございました