テストの流れと、対応するフレームワークを調べた(PlayFramework編)

テストコードを書く、そしてプロジェクトに導入を、と決心してコードを書き始めました。今後の自社のプロジェクト、プロセスに適用するにあたりテストフレームワークの紐付け、自動化の範囲のイメージが整理できていなかったのでまとめてみました。オススメ、または間違ってるぞゴラ、があればご指摘頂けると幸いです(汗

用語確認

このエントリで利用する用語は以下と定義します。
(一般的定義ではなくうちの会社での用語に「近く」しているのでご注意ください)

  • 画面
    • 1画面の事を指す。
  • 機能
    • ユーザから見て複数画面を利用してアウトプットが終わる単位。在庫登録機能なら、在庫一覧→在庫新規作成→在庫確認画面→在庫登録完了。
  • シナリオ
    • 複数の機能を利用して実現されるユーザの業務の単位。
  • 外部仕様
    • ユーザと調整する必要があるシステムの仕様。ユーザストーリ(複数機能を利用した画面出力内容、永続化内容、画面イベントなど。

シナリオもここで定義されます。

  • 内部仕様
    • ユーザと調整する必要のないシステムの内側の仕様。クラス設計、クラス内処理など。
  • TestDrivenDesign(TDD)
    • プロダクトコードを書く前にテストコードを書いて、レッド確認。プロダクトコードを書いてグリーンになる事を確認し、リファクタリングをする。綺麗なソースコードを書くための設計技法。
  • 単体テスト
    • 各機能について、外部仕様、内部仕様を確認するための検証するテスト。画面間遷移についてもこれに含めます。
  • 結合テスト
    • 機能間をまたがって実現しなくては行けないシナリオが仕様通りか検証します。
  • 受入テスト
    • ユーザが外部仕様を検証するテスト。

背景

勉強のためPlayFrameworkでアプリ作ろうとしてます。その中でテストコードをちゃんと書くという目標を立てました。システム作るためにテストコードのどんなテストの種類を学べばいいか計画を立てようとして調べました。使おうとしてしているだけなので、各フレームワークが良いかを検証した訳ではありません。

テストコードの書き方について

プロジェクトでテストコードを書いた事ないのですが、テストはテスト設計の上でテストするべき。なので、テストコードも書く前にテスト仕様書をレビューする。そして、テストコードを書くという流れの上で、テストコードの実装かと思ってます。
テストコードのレビューについてはd:kent4989 さんのを参考にさせて頂く予定。
【参考】単体テストのレビューについて - 勘と経験と読経

テストの流れとテストフレームワーク

コーディング中=TDD
  • 業務パターン、判定パターンのテスト
    • Spockを使ってみたい。コーディングする時に見やすそうなので。うちはSIerなのでExcelじゃないと読めない人が多そうなのでそこをカバーするマクロを作らないとだめかな。なお、PlayFrameworkで利用できるかは未検証。
  • DB登録系テスト
    • PlayFramework標準のJUnitを利用。
  • 画面表示、ルーティング、Controller部分のテスト
  • 画面内イベント(JavaScriptロジック、JavaScriptイベントについて)
    • sinon.js、Backboon.js、Jasmine.js

単体テスト

  • テスト戦略に基づいた規定の網羅性を満たすテスト
    • TDDで記述したテストコードに追記する。
  • 画面間遷移

結合テスト

  • シナリオテスト

受入テスト

未調査のこと

  • 負荷テスト
  • セキュリティテスト

まとめてみて

アジャイルテストの4象限の頭に入れながらまとめてみましたが、そもそもテストの勉強が不足している事を痛感。
実際にアプリを作成してみての使用感はまたエントリを書く予定です。
最初にも書きましたがツッコミ所は、ご指摘頂けると幸いですm(__)m