SlideShare a Scribd company logo
Submit Search
Upload
JavaScript Unit Test Why? What? How?
Report
Teppei Sato
Software Engineer at Cybozu
Follow
•
79 likes
•
33,192 views
1
of
43
JavaScript Unit Test Why? What? How?
•
79 likes
•
33,192 views
Download Now
Download to read offline
Report
Technology
第38回HTML5とか勉強会「Webアプリ×テスト最新事情」の発表資料です。 https://html5j.cloudfoundry.com/event/sd38
Read more
Teppei Sato
Software Engineer at Cybozu
Follow
Recommended
Automation test.ssf alpha
ryuji koyama
23K views
•
25 slides
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
24.5K views
•
94 slides
#STAC2014 システムテスト自動化ハンズオン
kyon mm
21.8K views
•
61 slides
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
12.3K views
•
15 slides
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
Kinji Akemine
41.8K views
•
48 slides
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
6.2K views
•
36 slides
More Related Content
What's hot
【STAC2017】テスト自動化システム 成長記
友隆 浅黄
19.4K views
•
38 slides
Stac2013 開会挨拶
Shinsuke Matsuki
25.5K views
•
8 slides
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
9K views
•
54 slides
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
Yahoo!デベロッパーネットワーク
7.3K views
•
52 slides
20161218 selenium study4
Naoya Kojima
2.8K views
•
69 slides
手動テストからの移行大作戦
Satsuki Urayama
26.7K views
•
25 slides
What's hot
(20)
【STAC2017】テスト自動化システム 成長記
友隆 浅黄
•
19.4K views
Stac2013 開会挨拶
Shinsuke Matsuki
•
25.5K views
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
•
9K views
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
Yahoo!デベロッパーネットワーク
•
7.3K views
20161218 selenium study4
Naoya Kojima
•
2.8K views
手動テストからの移行大作戦
Satsuki Urayama
•
26.7K views
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
•
48.3K views
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
•
39.9K views
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
•
8.9K views
異業種でのテスト自動化の実際
Satsuki Urayama
•
2.8K views
1時間で分かるSTA (Software Test Automation) #stac2014
Kazuhiro Suzuki
•
175.6K views
STAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャ
Noriyuki Mizuno
•
41.2K views
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
Yahoo!デベロッパーネットワーク
•
16.2K views
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
H Iseri
•
34.7K views
20150418 システムテスト自動化 第二章
atsushi ishiji
•
2.1K views
事例から見るテスト自動化のポイント
Hiroshi Maekawa
•
33.3K views
詳解!自動結合テスト #jasst
kyon mm
•
8.9K views
20150418 システムテスト自動化 第一章
Yuki Fujisawa
•
6.1K views
テストの自動化を考える前に
bleis tift
•
14K views
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
•
40.1K views
Similar to JavaScript Unit Test Why? What? How?
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
7.1K views
•
51 slides
失敗から学ぶテスト自動化導入で大切なこと
sono susumu
5.5K views
•
33 slides
テストとの上手な付き合い方
Akira Suenami
1.1K views
•
25 slides
アジャイル×テスト開発を考える
yasuohosotani
10.1K views
•
40 slides
テストコードのリファクタリング
Shuji Watanabe
8.3K views
•
61 slides
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
5.3K views
•
37 slides
Similar to JavaScript Unit Test Why? What? How?
(20)
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
•
7.1K views
失敗から学ぶテスト自動化導入で大切なこと
sono susumu
•
5.5K views
テストとの上手な付き合い方
Akira Suenami
•
1.1K views
アジャイル×テスト開発を考える
yasuohosotani
•
10.1K views
テストコードのリファクタリング
Shuji Watanabe
•
8.3K views
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
•
5.3K views
Javaの資格試験(OCJ-P)を取って何を学んだか
Hiroki Uchida
•
2.6K views
SGT2013 技術トークス「アジャイルテスティング」
yasuohosotani
•
1.4K views
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
•
12.9K views
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
•
5.7K views
テストを分類してみよう!
Kenji Okumura
•
29K views
QA improvement
Sadaaki Emura
•
239 views
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」
Touyou Horikawa
•
239 views
TDDはじめる前に
Yasui Tsutomu
•
4.2K views
java-ja TDD 2nd
Takuto Wada
•
2.9K views
Node塾 講義その6 テスト駆動java script 読書会 1回目
Nomo Kiyoshi
•
3.3K views
【SQiP2016】楽天のアジャイル開発とメトリクス事例
Kotaro Ogino
•
3K views
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
•
4.4K views
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
•
3.4K views
20170710 hifive-test-meetup
Naoya Kojima
•
1.3K views
More from Teppei Sato
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
21.4K views
•
30 slides
サイボウズの給与交渉戦 - Boss Side -
Teppei Sato
9.5K views
•
29 slides
Recent compat-table issues
Teppei Sato
1.2K views
•
34 slides
kintoneがAWSで目指すDevOpsQAな開発
Teppei Sato
22.9K views
•
38 slides
Automated Dependency Updates with Renovate
Teppei Sato
19.3K views
•
47 slides
君はyarn.lockをコミットしているか?
Teppei Sato
30.4K views
•
25 slides
More from Teppei Sato
(20)
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
•
21.4K views
サイボウズの給与交渉戦 - Boss Side -
Teppei Sato
•
9.5K views
Recent compat-table issues
Teppei Sato
•
1.2K views
kintoneがAWSで目指すDevOpsQAな開発
Teppei Sato
•
22.9K views
Automated Dependency Updates with Renovate
Teppei Sato
•
19.3K views
君はyarn.lockをコミットしているか?
Teppei Sato
•
30.4K views
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
•
20.6K views
サイボウズの現在と未来
Teppei Sato
•
3.7K views
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
Teppei Sato
•
20.7K views
サイボウズの開発を支えるKAIZEN文化
Teppei Sato
•
33.8K views
SPAと覚悟
Teppei Sato
•
67.4K views
JavaScript Language Update 2016 (LLoT)
Teppei Sato
•
10.2K views
You Don't Know ES Modules
Teppei Sato
•
11.2K views
Closure Compiler Updates for ES6
Teppei Sato
•
3.2K views
ES6 in Practice
Teppei Sato
•
27.3K views
Our wish to Flowtype
Teppei Sato
•
20.7K views
Effective ES6
Teppei Sato
•
52.2K views
Flowtype Introduction
Teppei Sato
•
17.1K views
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Teppei Sato
•
18.4K views
本当のClosure Compilerをお見せしますよ。
Teppei Sato
•
19.4K views
Recently uploaded
JJUG CCC.pptx
Kanta Sasaki
6 views
•
14 slides
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
119 views
•
63 slides
テストコードってすごい.pptx
cistb220msudou
71 views
•
16 slides
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
197 views
•
33 slides
01Booster Studio ご紹介資料
ssusere7a2172
186 views
•
19 slides
概念モデリングワークショップ 基礎編
Knowledge & Experience
18 views
•
71 slides
Recently uploaded
(10)
JJUG CCC.pptx
Kanta Sasaki
•
6 views
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
119 views
テストコードってすごい.pptx
cistb220msudou
•
71 views
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
197 views
01Booster Studio ご紹介資料
ssusere7a2172
•
186 views
概念モデリングワークショップ 基礎編
Knowledge & Experience
•
18 views
さくらのひやおろし2023
法林浩之
•
24 views
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
harmonylab
•
38 views
概念モデリングワークショップ 設計編
Knowledge & Experience
•
10 views
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
Knowledge & Experience
•
6 views
JavaScript Unit Test Why? What? How?
1.
JavaScript Unit Test Why?
What? How? 佐藤鉄平@teppeis 2013/04/26 第38回HTML5とか勉強会
2.
自己紹介 •佐藤鉄平 •@teppeis •サイボウズでkintoneっていう B2Bサービスを作っています。 •フロントからバックエンドまで •宗派: Vim, JS,
Google Closure
3.
JS連載2年目に突入!
4.
一人目なので、 JSテストの全体像を お話します。 まだJSでテストを書いてない 人向けです。
5.
コードはでてきません!
6.
http://www.flickr.com/photos/freakygoldie/5044175060 Why?
7.
どうしてJavaScriptで ユニットテストを書くのか?
8.
そもそもテストって何だろう?
9.
実践アジャイルテスト
10.
アジャイルテストの4象限 ビジネス面 技術面 チームを 支援する 製品を 批評する 結合テスト 機能テスト ユニットテスト ユーザビリティテスト 探索的テスト 性能テスト 脆弱性テスト
11.
ビジネス面 技術面 チームを 支援する 製品を 批評する 結合テスト 機能テスト ユニットテスト ユーザビリティテスト 探索的テスト 性能テスト 脆弱性テスト 結合テスト
12.
結合テスト •ビジネスを支援する技術面のテスト •エンドツーエンド •「何を作るのか?」 •どんなサービスでも必須 •自動化推奨 (Seleniumなど)
13.
ビジネス面 技術面 チームを 支援する 製品を 批評する 結合テスト 機能テスト ユニットテスト ユーザビリティテスト 探索的テスト 性能テスト 脆弱性テスト ユニットテスト
14.
ユニットテスト •チームを支援する技術面のテスト •開発者による開発者のためのテスト •「どう作るのか?」 •設計とコードの質が向上 •大規模ではほぼ必須 •自動化が必須
15.
TDDと黄金の回転 ©t-wada きれい 汚い (すぐには)動かない 動作する Red Green Refactoring TDDと黄金の回転 http://www.slideshare.net/t_wada/javaja-tdd-2nd
16.
実践テスト駆動開発
17.
二重のフィードバックループ 失敗する 受入テスト を書く 失敗する ユニットテスト を書く テスト成功! リファクタリング
18.
CI
20.
JSをとりまく状況 •コードとチームの大規模化 •フロントエンド領域の増大 •高速で高品質な開発の要求
21.
ユニットテストの 必要性が高まってる!
22.
テスト環境の向上 •Node.jsの隆盛 •テスト関連ツールの盛り上がり •MV*フレームワークや モジュール化の仕組みが成熟
23.
ユニットテストが やりやすくなった!
24.
http://www.flickr.com/photos/beorn_ours/5675267679/ What?
25.
どこから手をつけたら。。
26.
JSのユニットテストって 難しいんでしょ?
27.
JSテストの難しい点 •コードがビューと結びつきがち •実行環境=ブラウザが扱いづらい => MV*な設計で解決 => ツールで解決
28.
MV* •いろいろ宗派はあるけど、 やりたいことはビューとロジックの分離。 •それさえできれば、 ロジック(Model)のテストは 普通にできるはず。
29.
例) メール一覧画面 •Model •全部のリスト •宛先で絞り込み •タグで絞り込み •View •受け取ったら表示するだけ
30.
Modelのテストをしよう! •純粋なロジック •不確実性が低い •リファクタリングで疎結合に分解
31.
Viewのテストは •DOMのテストは書きにくい •ユーザビリティはテストできない •画面を見ながらの試行錯誤が必要 •書きたくなったらチャレンジしよう!
32.
http://www.flickr.com/photos/dunechaser/270552745/ How?
33.
テストツールの分類 PhanotmJS jsdom envjs 実ブラウザ Testem Karma Jasmine QUnit Mocha JsTestDriver Buster.JS Chai expect.js Sinon.JS 実行環境 リモート テストランナー テスティング フレームワーク モック ライブラリ
34.
テスティングフレームワーク •テストの記述と実行を担当 •どれを選んでも間違いはないレベル •詳細は今日の他の方の発表を お聞きくださいw
35.
実行環境が重要 •実ブラウザ •本物だけど面倒、遅い •ヘッドレスブラウザ (PhantomJS) •だいたい本物でそこそこ速い •でもWebKitだけ •シミュレータ(jsdom, envjs) •偽物だけど速い
36.
リモートテストランナー •ブラウザをキャプチャリングして リモートでテストを実行するツール •実ブラウザの欠点を補う •同時に複数のブラウザでTDDが可能 •Testem, Karma(Testacular), JsTestDeriver, Buster.JS
37.
どれを選ぶ? PhanotmJS jsdom envjs 実ブラウザ Testem Karma Jasmine QUnit Mocha JsTestDriver Buster.JS Chai expect.js Sinon.JS 実行環境 リモート テストランナー テスティング フレームワーク モック ライブラリ
38.
Demo •おすすめ簡単構成 •Jasmine + Testem
+ 実ブラウザ •FizzBuzz with TDD •CI with PhantomJS
39.
ユニットテスト以外にも •カバレッジ測定 •静的解析 •Lint (JSHint, JSLint,
Closure) •型チェック (Closure, TypeScript) •それらを支えるgruntなどなど
40.
まとめ •JSでもユニットテストは大事! •モデルのテストから始めよう! •テスト関連ツールの進化がやばい! •TDDで楽しい開発!
41.
http://www.flickr.com/photos/mlpeixoto/5351547427/ When?
42.
Just Now!
43.
ありがとうございました!