SlideShare une entreprise Scribd logo
1  sur  15
C#でユニットテストを使う
2017/08/08 社内勉強会
注意事項
• 今回は細かい話は、省いています。
•もう少し詳細な内容を知りたい場合には、
@t_wadaさんのスライド等をみて勉強してくださ
い
目的とゴール
• ユニットテストの目的と動きを理解してもらう
•Visual Studioを使ったユニットテストのやり
方を知ってもらう
• プロダクトで活用してもらう
今日話さないこと
• UIテスト
•設計に関すること
ユニットテストをやるということ
• 自分の作ったプロダクト(ライブラリ)を他の人に
引き継ぐ際の足掛かりの1つになる。
• 小さなステップで確実に進めていく
• テストが通る意味では、質(全てではないが)が担
保されているとも言えるのでは…
ユニットテストの誤解
• テストを書くことで工数がかかる
→サイクルの長いプロダクトであればリソースによる恩
恵が上がり、むしろ手動によるテスト工数は減るはず
• 動いているものをわざわざリファクタリングする
必要があるの?
→見読性を上げることでバグの混入を未然に防ぐことが
できる。また、リファクタリングにより今までの必要
なリソースを短縮できる可能性もある。
ユニットテストの誤解
• 動かなくなったらどうすんの?
→そのためにもVCS(Git等)による管理は必要で、これ
があれば破壊的な処理をしてもロールバックは可能
• テストのテストはどうすんの?
→テスト駆動による開発により相互に確認をしながら進
めていくものなので動かないものは、動かないと確認
しながら進めていくわけで…結果的にテストコードも
テストしてることになる
ユニットテストの誤解
• 肥大化しない?
→します。ただ、すでに改修して不要となったmethod
やテストは、削除すれば良いわけで履歴については、
VCSで管理を行うことが望ましい。常にクリーンな状
態(テストが通る状態)であるべき。(機能的に肥大化
するのであればそれはそもそも、設計に問題がある可
能性が高い)
テストリソースをコード記録として残し、使いまわすこと
で、常にクリーンなコードを保っていくことができる。
そういった意味でもユニットテストは、やったほうがいい。
大事なこと
• ユニットテストによりプロダクトの品質が上がるわ
けではない。
(最低限の保証はされるはず…)
• クリーンなコードを心がける
• 同じ処理はなるべく書かない
入力値に対して期待値を想定できる部分として担保
できる状態を保つことが大切
使い所
• 新規作成していく際に仕様等が決まりきっていない
場合など作っていく過程で、挙動の確認をしながら
行うような場合
• レガシーなコードを改修する際にも小さなステップ
で進めていくことで少しずつ直していくような場合
うまく使えばレガシーコードを少しずつ回収し、新しい
機能回収時のコストが削減される
実際にやってみる
FizzBuzzを使ってユニットテストを実施します。
FizzBuzz is 何?
FizzBuzzは、言葉を使ったゲームでルールを簡単に
説明すると
ルール
• 1から順番に数字を答える
• 3の倍数のときはFizzと答える
• 5の倍数のときはBuzzと答える
• 3の倍数でかつ5の倍数のときはFizzBuzzと答える
では、ユニットテストを用いながら作成していきま
す。
DEMO
まとめ
• ユニットテストは品質を担保するものではない
•VCSと組み合わせて威力を発揮する
• 不安に思うことをすぐにテストを書くことで解消で
きる
組み合わせによりうまく活用することで見えなかった
問題が見えてくることもあるので進んで使って見るのも
手ではないかと思います。
ご清聴ありがとうございました。

Contenu connexe

Tendances

CEDEC2014「ユーザテストはリーンに行こう!」
CEDEC2014「ユーザテストはリーンに行こう!」CEDEC2014「ユーザテストはリーンに行こう!」
CEDEC2014「ユーザテストはリーンに行こう!」Tarumoto Tetsuya
 
Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!Yasui Tsutomu
 
プランニングポーカーのすすめ
プランニングポーカーのすすめプランニングポーカーのすすめ
プランニングポーカーのすすめsugimoto1022
 
みんなどんな書式でテストケース書いているの
みんなどんな書式でテストケース書いているのみんなどんな書式でテストケース書いているの
みんなどんな書式でテストケース書いているのkauji0522
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニアSHIFT Inc.
 
ユーザテストを1ヶ月で立ち上げた話
ユーザテストを1ヶ月で立ち上げた話ユーザテストを1ヶ月で立ち上げた話
ユーザテストを1ヶ月で立ち上げた話Tetsuo Endo
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門H Iseri
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法Tatsuya Saito
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方Wataru Terada
 
Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325Seiichi Sugahara
 
20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考えるtomohiro odan
 
WARAI テスト技法ワークショップ vol.2
WARAI テスト技法ワークショップ vol.2WARAI テスト技法ワークショップ vol.2
WARAI テスト技法ワークショップ vol.2Touyou Horikawa
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightkyon mm
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮するWataru Terada
 
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)seichi23
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編Yusuke Ito
 
UX/ユーザビリティ評価法
UX/ユーザビリティ評価法UX/ユーザビリティ評価法
UX/ユーザビリティ評価法Tarumoto Tetsuya
 

Tendances (19)

CEDEC2014「ユーザテストはリーンに行こう!」
CEDEC2014「ユーザテストはリーンに行こう!」CEDEC2014「ユーザテストはリーンに行こう!」
CEDEC2014「ユーザテストはリーンに行こう!」
 
Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!
 
プランニングポーカーのすすめ
プランニングポーカーのすすめプランニングポーカーのすすめ
プランニングポーカーのすすめ
 
みんなどんな書式でテストケース書いているの
みんなどんな書式でテストケース書いているのみんなどんな書式でテストケース書いているの
みんなどんな書式でテストケース書いているの
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
 
ユーザテストを1ヶ月で立ち上げた話
ユーザテストを1ヶ月で立ち上げた話ユーザテストを1ヶ月で立ち上げた話
ユーザテストを1ヶ月で立ち上げた話
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門
 
アジャイルUX物語
アジャイルUX物語アジャイルUX物語
アジャイルUX物語
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
 
Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325Dev love関西 レガシーコードへの取り組み 20140325
Dev love関西 レガシーコードへの取り組み 20140325
 
20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える
 
WARAI テスト技法ワークショップ vol.2
WARAI テスト技法ワークショップ vol.2WARAI テスト技法ワークショップ vol.2
WARAI テスト技法ワークショップ vol.2
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
 
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
 
UX/UCDビデオ講座
UX/UCDビデオ講座UX/UCDビデオ講座
UX/UCDビデオ講座
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
UX/ユーザビリティ評価法
UX/ユーザビリティ評価法UX/ユーザビリティ評価法
UX/ユーザビリティ評価法
 

Similaire à C#でユニットテストを使う

CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料Yasui Tsutomu
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カットRakuten Group, Inc.
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかったMakoto Iguchi
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めDai FUJIHARA
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めRakuten Group, Inc.
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考えるyasuohosotani
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションKaoru NAKAMURA
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションVisual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションKaoru NAKAMURA
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門Satoshi Watanabe
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにTakafumi Ikeda
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩Satsuki Urayama
 
UX/ユーザビリティ評価法
UX/ユーザビリティ評価法UX/ユーザビリティ評価法
UX/ユーザビリティ評価法利用品質ラボ
 
Product Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組み
Product Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組みProduct Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組み
Product Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組みshibao800
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!Funato Takashi
 
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理You&I
 
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編Hiroyuki Ito
 
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践慎一 古賀
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 

Similaire à C#でユニットテストを使う (20)

CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションVisual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするために
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
 
UX/ユーザビリティ評価法
UX/ユーザビリティ評価法UX/ユーザビリティ評価法
UX/ユーザビリティ評価法
 
Product Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組み
Product Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組みProduct Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組み
Product Ownership~NTTデータと楽天それぞれの文脈でのサービスづくり、人づくり、チームづくりの取り組み
 
Modeling Workshop
Modeling WorkshopModeling Workshop
Modeling Workshop
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
 
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
 
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
 
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 

Plus de 株式会社 システムヨシイ (8)

会社で実践している事例紹介
会社で実践している事例紹介会社で実践している事例紹介
会社で実践している事例紹介
 
Ipythonを使ってみよう
Ipythonを使ってみようIpythonを使ってみよう
Ipythonを使ってみよう
 
Pythonでpdfをいじってみる
PythonでpdfをいじってみるPythonでpdfをいじってみる
Pythonでpdfをいじってみる
 
Pythonでexcel
PythonでexcelPythonでexcel
Pythonでexcel
 
Pythonでwebdriver
PythonでwebdriverPythonでwebdriver
Pythonでwebdriver
 
Pythonのユニットテスト
PythonのユニットテストPythonのユニットテスト
Pythonのユニットテスト
 
使ってみようPTSV
使ってみようPTSV使ってみようPTSV
使ってみようPTSV
 
Sphinxはじめの一歩
Sphinxはじめの一歩Sphinxはじめの一歩
Sphinxはじめの一歩
 

C#でユニットテストを使う