テストの流れと、対応するフレームワークを調べた(PlayFramework編)
テストコードを書く、そしてプロジェクトに導入を、と決心してコードを書き始めました。今後の自社のプロジェクト、プロセスに適用するにあたりテストフレームワークの紐付け、自動化の範囲のイメージが整理できていなかったのでまとめてみました。オススメ、または間違ってるぞゴラ、があればご指摘頂けると幸いです(汗
用語確認
このエントリで利用する用語は以下と定義します。
(一般的定義ではなくうちの会社での用語に「近く」しているのでご注意ください)
- 画面
- 1画面の事を指す。
- 機能
- ユーザから見て複数画面を利用してアウトプットが終わる単位。在庫登録機能なら、在庫一覧→在庫新規作成→在庫確認画面→在庫登録完了。
- シナリオ
- 複数の機能を利用して実現されるユーザの業務の単位。
- 外部仕様
- ユーザと調整する必要があるシステムの仕様。ユーザストーリ(複数機能を利用した画面出力内容、永続化内容、画面イベントなど。
シナリオもここで定義されます。
背景
勉強のためPlayFrameworkでアプリ作ろうとしてます。その中でテストコードをちゃんと書くという目標を立てました。システム作るためにテストコードのどんなテストの種類を学べばいいか計画を立てようとして調べました。使おうとしてしているだけなので、各フレームワークが良いかを検証した訳ではありません。
テストコードの書き方について
プロジェクトでテストコードを書いた事ないのですが、テストはテスト設計の上でテストするべき。なので、テストコードも書く前にテスト仕様書をレビューする。そして、テストコードを書くという流れの上で、テストコードの実装かと思ってます。
テストコードのレビューについてはd:kent4989 さんのを参考にさせて頂く予定。
【参考】単体テストのレビューについて - 勘と経験と読経
テストの流れとテストフレームワーク
コーディング中=TDD
- 業務パターン、判定パターンのテスト
- Spockを使ってみたい。コーディングする時に見やすそうなので。うちはSIerなのでExcelじゃないと読めない人が多そうなのでそこをカバーするマクロを作らないとだめかな。なお、PlayFrameworkで利用できるかは未検証。
- DB登録系テスト
- PlayFramework標準のJUnitを利用。
- 画面表示、ルーティング、Controller部分のテスト
- PlayFrameworkの標準のテストの方法があるのでこれを利用する。Documentation: JavaFunctionalTest — Playframework
- 画面内イベント(JavaScriptロジック、JavaScriptイベントについて)
- sinon.js、Backboon.js、Jasmine.js
受入テスト
-
- Seleniumを利用。
未調査のこと
- 負荷テスト
- セキュリティテスト
まとめてみて
アジャイルテストの4象限の頭に入れながらまとめてみましたが、そもそもテストの勉強が不足している事を痛感。
実際にアプリを作成してみての使用感はまたエントリを書く予定です。
最初にも書きましたがツッコミ所は、ご指摘頂けると幸いですm(__)m