内容紹介
JavaScriptコードテストの理論から実践までを知る!
最重要テーマは「テストに適したコードの作成と保守」。本書は複数のアプローチで、テストに適したコードに迫ります。まず複雑さについて考察し、続いて複雑さや結合を軽減できるようなアーキテクチャを検討します。これを基盤として、機能レベルとアプリケーションレベルでのテストについての解説に進みます。カバレッジやデバッグについて十分な知識を得て、最後に自動化に関する解説で本書は締めくくられます。最後まで読めば、テストに適したJavaScriptの本質と実践について漏れのない理解を得られるでしょう。著者がYahoo!やGoogleで培ったテストや品質管理についてのノウハウをJavaScriptに適用したWeb開発者必携の一冊。
このような方におすすめ
JavaScriptプログラマー、Webアプリ開発者、Webサイト制作者、スマートフォンアプリ開発者
目次
詳細目次
まえがき
1章 テストに適した JavaScript
1.1 今までの手法
1.1.1 アジャイル開発
1.1.2 テスト駆動型開発
1.1.3 ビヘイビア駆動型開発
1.1.4 最善のアプローチとは
1.2 コードは人のため
1.2.1 「なぜ」
1.2.2 「何を」
1.2.3 「どのように」
1.3 コードを書いた後に必要なこと
1.3.1 テスト
1.3.2 デバッグ
1.4 まとめ
2章 複雑さ
2.1 コードの量
2.2 JSLint
2.3 循環的複雑度
2.4 再利用
2.5 ファンアウト
2.6 ファンイン
2.7 結合
2.7.1 内容結合
2.7.2 共通結合
2.7.3 制御結合
2.7.4 スタンプ結合
2.7.5 データ結合
2.7.6 無結合
2.7.7 インスタンス化
2.8 結合度の指標
2.9 結合の実際
2.9.1 密結合のコードのテスト
2.10依存関係のインジェクション
2.11コメント
2.11.1 YUIDoc
2.11.2 JSDoc
2.11.3 Doccoと Rocco
2.12 人によるテスト
2.13 まとめ
3章 イベントベースのアーキテクチャ
3.1 イベントベースのプログラミングによるメリット
3.2 イベントハブ
3.2.1 イベントハブの利用法
3.2.2 発生したイベントへの応答
3.2.3 イベントベースのアーキテクチャと MVCのアプローチ
3.2.4 イベントベースのアーキテクチャとオブジェクト指向プログラミング
3.2.5 イベントベースのアーキテクチャと SaaS
3.3 Webベースのアプリケーション
3.4 イベントベースのアーキテクチャに対するテスト
3.5 イベントベースのアーキテクチャでの注意点
3.5.1 スケーラビリティ
3.5.2 一斉通知
3.5.3 実行時のチェック
3.5.4 セキュリティ
3.5.5 内部状態の管理
3.6 より高度なハブ(イベントスイッチ)
3.6.1 デプロイ
3.6.2 実装例
3.6.3 セッション
3.6.4 拡張性
3.7 まとめ
4章 ユニットテスト
4.1 ユニットテストフレームワーク
4.2 クリーンなコード
4.3 良いテストとは
4.3.1 隔離
4.3.2 有効範囲
4.3.3 関数の定義
4.3.4 ポジティブテスト
4.3.5 ネガティブテスト
4.3.6 カバレッジ
4.4 テストの実際
4.4.1 依存関係
4.4.2 テストの非同期実行
4.5 テストの実行(クライアント側の場合)
4.5.1 PhantomJS
4.5.2 Selenium
4.6 テストの実行(サーバ側の場合)
4.6.1 Jasmine
4.7 まとめ
5章 カバレッジ
5.1 カバレッジの基本
5.2 カバレッジのデータ
5.3 例題
5.3.1 ファイルの変換
5.3.2 変換後のファイル
5.4 テストのデプロイと実行
5.4.1 クライアント側の JavaScript
5.4.2 サーバ側の JavaScript
5.5 カバレッジの情報の保存
5.5.1 ユニットテスト
5.5.2 結合テスト
5.6 出力の生成
5.7 データの結合
5.8 隠れたファイル
5.9 カバレッジの目標値
5.10まとめ
6章 結合テスト、パフォーマンステスト、負荷テスト
6.1 結合テスト
6.1.1 Selenium
6.1.2 CasperJS
6.2 パフォーマンステスト
6.2.1 HARファイルの生成
6.2.2 プロキシの利用
6.2.3 HARファイルの表示
6.2.4 ブラウザに対するパフォーマンステスト
6.3 負荷テスト
6.3.1 負荷テストの実際
6.4 リソース使用量の監視
6.4.1 クライアント側での監視
6.4.2 サーバ側での監視
6.5 まとめ
7章 デバッグ
7.1 ブラウザ内でのデバッグ
7.1.1 Firefox
7.1.2 Chrome
7.1.3 Safari
7.1.4 Internet Explorer
7.2 Node.jsのデバッグ
7.3 リモートデバッグ
7.3.1 Chrome
7.3.2 PhantomJS
7.3.3 Firefox
7.4 モバイルデバッグ
7.4.1 Android 4
7.4.2 iOS 6
7.4.3 Adobe Edge Inspect
7.4.4 その他の方法
7.5 実運用環境のデバッグ
7.5.1 最小化されたコード
7.5.2 ソースマップ
7.6 まとめ
8章 自動化
8.1 何を自動化するか
8.2 いつ自動化するか
8.3 どう自動化するか
8.3.1 自動化と継続的インテグレーション
8.3.2 開発環境の自動化
8.3.3 ビルド環境の自動化
8.3.4 デプロイ
8.4 まとめ
付録 A クライアント JavaScriptのテスト事例
A.1 題材のゲーム「スイングバイ」
A.2 JSLint
A.3 QUnit
A.3.1 ユニットテストの準備
A.3.2 非同期実行のテスト
A.3.3 ユニットテストの実行
A.4 JSCover
索引
続きを見る