第38回HTML5とか勉強会いってきた

「Webアプリ×テスト最新事情」と聞いて参加してきました。
https://html5j.cloudfoundry.com/event/sd38

そのメモ。

概要

Webアプリの本格化・大規模化に伴い、テストの受容は高まるばかりです。そんな中、様々なテストフレームワークが公開されており、これらのツールを使うことで、効率的にWebアプリのテストを行うことができます。
今回の勉強会では、これら様々なテストフレームワークについて講演をいただきます。

内容

  1. JavaScriptテスト最新事情 Why? What? How?」佐藤鉄平(@teppeis)さん 20min
  2. 「jasmine」斎藤ゆうやさん 20min
  3. 「SinonJS」外村和仁さん(ピクセルグリッド) 20min
  4. 「JSテストフレームワークの比較(QUnit、Mocha、Jasmine...)」佐伯さん 20min
  5. 「講演者による座談会」20 min


1. 「JavaScriptテスト最新事情 Why? What? How?」佐藤鉄平(@teppeis)さん 20min

@teppeisさん

JSテストをしたことない人向けに
JSテストの全体像についてお話。

Why?
なんでJavaScriptのテストをするのか。

…の前に、そもそもテストって何?

実線アジャイルテストのテストの分類
アジャイルテストの4象限のうち、チーム支援にフォーカスしてみる
即ち、結合テスト/機能テスト・ユニットテスト

結合テスト:ビジネスを支援する技術面のテスト

・エンドツーエンドでテストを行い、顧客に何を提供するか
・「何を作るのか?」という話になり、どんなサービスでも必須
・自動化推奨(Seleniumなど

ユニットテスト

・チーム支援する技術面のテスト
・開発者により開発者のためのテストと考えると良い
・「何を作るか?」に対して「どう作るのか?」
・内側の内部的な品質や設計や構造の品質が向上
・大規模ではこれが必須になり、自動化があると良い

TDDと黄金の回転

Red=>Green=>Refactoring
汚く動かないコード=>動作するが汚いコード=>綺麗で動作するコード
以上のループ。

二重のフィードバックループ

while(){失敗する受け入れテストを書く
while(){失敗するユニットテストを書く
テスト成功
リファクタリング}}

JSを取り巻く状況

・コードとリームの大規模化
・フロントエンド領域の増大
・拘束で高品質な開発の要求

=>ユニットテストしなきゃ!

テスト環境の向上

・Node.js盛り上がってる
・テスト関連ツールの盛り上ってる
・MV*盛り上がってる


What?どうやってやる?
難しいんでしょ?

難しい点

・ビューとコードが結びつきがち
=>MV*設計で解決!
・実行環境=ブラウザが扱いづらい
=>ツールで解決!

MV*
・いろいろ宗派はあるけど、やりたいことはビューとロジックの分離
それさえできれば、ロジックのテストは普通にできるはず

例: メール一覧画面
Model: [全部、宛先で絞込み、タグで絞込み]
View: [受け取ったら表示するだけ]
Modelのテスト: 純粋なロジック、不確実性低い
Viewのテスト難しい: DOM, ユーザービリティ、目グレップ…

How?

メモ途中