Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
テストを書くのが嫌いな君へ #m3dev
Search
Kazuhiro Sera
August 30, 2013
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テストを書くのが嫌いな君へ #m3dev
テストコード自動生成ツールの紹介です。
Kazuhiro Sera
August 30, 2013
More Decks by Kazuhiro Sera
See All by Kazuhiro Sera
5 tips to build long-lasting Scala OSS (cont’d)
seratch
0
160
5 tips to build long-lasting Scala OSS
seratch
1
240
ScalikeJDBC / Skinny ORM Beginners' Guide
seratch
5
140k
All I learned while working on a Scala OSS project for over six years #ScalaMatsuri
seratch
1
950
What I learned by creating 'Scala on Rails' #trbmeetup
seratch
0
250
Scala on Rails @ Scalae by the Bay 2016 #scalae
seratch
1
1.1k
Contributing to Scala OSS from East Asia #ScalaMatsuri
seratch
0
1.2k
Skinny 2 Update
seratch
0
170
Future on Servlet #scala_ks
seratch
0
580
Other Decks in Programming
See All in Programming
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
0
150
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
260
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.7k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
170
5分で問診!Composer セキュリティ健康診断
codmoninc
0
680
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
130
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
110
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
250
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.5k
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
110
Claude Team Plan導入・ガイド
tk3fftk
0
240
メールのエイリアス機能を履き違えない
isshinfunada
0
110
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
190
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
230
Prompt Engineering for Job Search
mfonobong
0
380
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
Navigating Weather and Climate Data
rabernat
0
410
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
220
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Bash Introduction
62gerente
615
220k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
Transcript
テストを書くのが 嫌いな君へ #m3dev Kazuhiro Sera @seratch
- テスタビリティが考慮されていないものをメンテ している(例:SerlvetFilter、生 jsp、生 PHP、 CGI・・) - ユニットテスト≠ QA、全体の工数が増えるだけ (という近視眼的な考え方)
- 書き捨てのスクリプトまで書くの? - この辺の話題は今日はスコープ外 なぜテストを書かないのか?
それだけじゃない - 心理的障壁(ぶっちゃけ面倒)、〆切 - コーディング量は、開発するコードよりテスト コードの方が多くなる - 普段からテストコードを書いていないと、いざと いうとき、テストを効率的に書けない -
だから書かない?
◯◯書くの面倒・・ - 「Java 書くの面倒・・」 “Java は半分以上 IDE に書かせる言語 です(キリッ” -
「テストコード書くの面倒・・」 “テストコードは・・・”
“テストコードも ツールに書かせればいい” (ある程度までは) FA
- 全てを書かせることはできない、あくまでひな 形レベルまで - 「何をテストしたいか」は「何をやりたいか」に よって決まる、人間にしかわからない - とはいえ、テストコードはボイラープレートの 嵐、自動生成に向いている 自動化はできない
Eclipse プラグイン、Maven プラグイン、sh、bat スクリプト http://junithelper.org/ JUnit Helper (Java)
Eclipse プラグイン、Maven プラグインを使った デモをします Demo
- getter/setter 無視、型毎に引数宣言・パターン 網羅をカスタマイズ可能 - モックを使ったひな形(Mockito、JMock、 EasyMock、JMockit) - テストを一つも書いてないメソッドを自動検出し てテストを書くことを強制する
- テストが足りなかったら追記してくれる 良いところ
- メソッドに対してテストを書いている →API 設計が適切ならそれ自体は有効、もちろ んこれだけで十分ではない - typeという無益なテストメソッド →テスト 0 件のクラスを
JUnit が許容しないこ とへの対応だが、選択可能にしたい - テストメソッドの名前が独特すぎる →細かくカスタマイズできる - IntelliJ IDEA のプラグインがない →そのうち作りたい・・ 悪いところ
rspec-kickstarter (Ruby)
- gem install rspec-kickstarter - rspec-kickstarter というスクリプトにパスが通 ります - rspec-kickstarter
-h 参照 スクリプトつきの RubyGem です
実際に社内のプロジェクトに rspec-kickstarter を実行してみる・・・ Demo
- public なメソッドに対して一つ以上のテストを 書かせる - Rails モードで実行すると Rails の事情に合わ せたテストコードが生成される(現状は
controller、helper のみ) - ERB のテンプレートを差し替え可能 良いところ
- ERB カスタマイズの仕方が微妙 →もう少しよい形を提供したいとは思っていま す、プラグイン機構とか - Rails 連携が弱い →プラグイン機構ができれば、もっとリッチな対 応を
3rd party でつくれるはず 悪いところ
- 自動生成で労力が減らせます - TODO つきのテストコードを目の前にすると ちゃんと書き換えたい衝動が湧いてきて「テスト 書くモード」に切り替えやすいです - 使ってみてフィードバックがあればお気軽にど うぞ
Happy Testing!