SlideShare une entreprise Scribd logo
1  sur  25
ユニットテスト  - 1日目 - 渋川よしき
まずは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page  ※ 六本木ヒルズでやっている   NLP セミナー の手法を参考にしてます
チェックイン ※ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page  ※ 僕が勝手に 師匠と呼んでいる方の  スライド を参考にしました ※ 「言語技術」が日本のサッカーを変える
アジェンダ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
テストの分類 ~ディレクティブなテスト~
2種類のテスト ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
この分類の発想の種 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page  +ほりうち!師匠のスライド
テスト駆動開発 (TDD) とユニットテスト ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Here comes your footer     Page
まとめ ~ユニットテストとは?~ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Here comes your footer     Page
ユニットテストをテスト駆動で書く unittest.py
例題:ダーツのクリケット ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Here comes your footer     Page  引用元: Wikipedia
まずは準備 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page  # -*- coding: utf-8 -*- import unittest #  スタートアップコード if __name__ == “__main__”: unittest.runTests()
例題:ダーツのクリケット ( 今回のワークで扱う範囲 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
テスト駆動開発の基本ルール ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
最初のメソッドを実装するまで テストケースを書く ,[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page  class TestCricket(unittest.TestCase): def test_throw_1(self): game = Cricket() game.throw(18, 1)          self.assertEqual(game.get_count(18), 1)
最初のメソッドを実装するまで Failure を見る->仮実装で OK を見る ,[object Object],[object Object],[object Object],ユニットテスト1日目  Page  class Cricket(object): def throw(self, area, count): pass def get_count(self, area): return 1 # 仮実装
最初のメソッドを実装するまで 三角測量でメソッドを完成させる ,[object Object],[object Object],[object Object],ユニットテスト1日目  Page  def test_throw_2(self): game = Cricket() game.throw(18, 1) game.throw(18, 2) self.assertEqual(game.get_count(18), 3)
それでは手を動かしてみて下さい 残りの仕様を実装してみてください ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
ユニットテストのその後 今回はここまではできません m(_ _)m ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],きれい 汚い ( すぐに ) 動かない ※ 角谷さんのスライド より GREEN 動く Refactoring RED ユニットテスト1日目  Page
doctest を使ってみよう ユニットテスト1日目     Page
doctest ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page     import doctest    def pow(x, y):     """calc power.    >>> pow(1, 2)    1    >>> pow(10, 2)    100    """    result = 1    for i in xrange(y):    result *= x    return result    if __name__ == '__main__':    doctest.testmod()
doctest を書いてみよう ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
doctest に関する渋川の所感 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page
宿題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],※ MindMap のセミナー の宿題を   参考にしました ユニットテスト1日目  Page
参考資料 これからユニットテストを深めていくために ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ユニットテスト1日目  Page

Contenu connexe

Tendances

Unit Test
Unit TestUnit Test
Unit Test
ykhr
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
Tetsuya Morimoto
 
気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会
Yu Shibatsuji
 

Tendances (20)

Unit Test
Unit TestUnit Test
Unit Test
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
20180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol120180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol1
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linux
 
気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
 
簡単!Groovy入門
簡単!Groovy入門簡単!Groovy入門
簡単!Groovy入門
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
 
Groovy indy 20120222
Groovy indy 20120222Groovy indy 20120222
Groovy indy 20120222
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたMTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカー
 
初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ初心者が Python で戸惑ったところ
初心者が Python で戸惑ったところ
 

En vedette (9)

コンカツ女子のためのIT技術者の落とし方
コンカツ女子のためのIT技術者の落とし方コンカツ女子のためのIT技術者の落とし方
コンカツ女子のためのIT技術者の落とし方
 
Jissa 光が丘カップ2008
Jissa 光が丘カップ2008Jissa 光が丘カップ2008
Jissa 光が丘カップ2008
 
Erlang and I and Sphinx.
Erlang and I and Sphinx.Erlang and I and Sphinx.
Erlang and I and Sphinx.
 
Django_and_GTD
Django_and_GTDDjango_and_GTD
Django_and_GTD
 
Pomodoro technique
Pomodoro techniquePomodoro technique
Pomodoro technique
 
つまみぐい勉強法。その後。
つまみぐい勉強法。その後。つまみぐい勉強法。その後。
つまみぐい勉強法。その後。
 
Who is the person whom the IT engineers should learn next to Alexander?
Who is the person whom the IT engineers should learn next to Alexander?Who is the person whom the IT engineers should learn next to Alexander?
Who is the person whom the IT engineers should learn next to Alexander?
 
JavaScriptゲーム制作勉強会
JavaScriptゲーム制作勉強会JavaScriptゲーム制作勉強会
JavaScriptゲーム制作勉強会
 
1日~1週間でOSSに貢献する方法
1日~1週間でOSSに貢献する方法1日~1週間でOSSに貢献する方法
1日~1週間でOSSに貢献する方法
 

Similaire à ユニットテスト 1日目

SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
Takuto Wada
 
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
kyon mm
 

Similaire à ユニットテスト 1日目 (20)

C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
テストコードの定型化
テストコードの定型化テストコードの定型化
テストコードの定型化
 
Tdd
TddTdd
Tdd
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
TDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファーストTDDの原理 ~ スペック・ファースト
TDDの原理 ~ スペック・ファースト
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
強化学習勉強会_No1@産総研
強化学習勉強会_No1@産総研強化学習勉強会_No1@産総研
強化学習勉強会_No1@産総研
 
エクストリームエンジニア4
エクストリームエンジニア4エクストリームエンジニア4
エクストリームエンジニア4
 
Nds#24 単体テスト
Nds#24 単体テストNds#24 単体テスト
Nds#24 単体テスト
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選
 
DS Exercise Course 2
DS Exercise Course 2DS Exercise Course 2
DS Exercise Course 2
 
FriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみたFriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみた
 
TDD を自分の道具にしよう
TDD を自分の道具にしようTDD を自分の道具にしよう
TDD を自分の道具にしよう
 

Plus de Yoshiki Shibukawa

Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014
Yoshiki Shibukawa
 
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
Yoshiki Shibukawa
 

Plus de Yoshiki Shibukawa (20)

技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
 
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
 
Golang tokyo #7 qtpm
Golang tokyo #7 qtpmGolang tokyo #7 qtpm
Golang tokyo #7 qtpm
 
Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察
 
Mithril
MithrilMithril
Mithril
 
Go & multi platform GUI Trials and Errors
Go & multi platform GUI Trials and ErrorsGo & multi platform GUI Trials and Errors
Go & multi platform GUI Trials and Errors
 
Excelの話
Excelの話Excelの話
Excelの話
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
アンラーニング
アンラーニングアンラーニング
アンラーニング
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
 
Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014
 
大規模JavaScript開発
大規模JavaScript開発大規模JavaScript開発
大規模JavaScript開発
 
Xpjug基調lt2011
Xpjug基調lt2011Xpjug基調lt2011
Xpjug基調lt2011
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript Programming
 
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
 
Bitbucket&mercurial
Bitbucket&mercurialBitbucket&mercurial
Bitbucket&mercurial
 
Sphinx Tutorial at BPStudy#30
Sphinx Tutorial at BPStudy#30Sphinx Tutorial at BPStudy#30
Sphinx Tutorial at BPStudy#30
 
儲かるドキュメント
儲かるドキュメント儲かるドキュメント
儲かるドキュメント
 
Chashitsu And Pattern
Chashitsu And PatternChashitsu And Pattern
Chashitsu And Pattern
 

Dernier

Dernier (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

ユニットテスト 1日目