画面の説明
顧客検索画面
顧客検索画面は、顧客に関する一部の情報から、該当する顧客を検索する機能になります。以下に画面項目と、ボタン・リンクを押した時の動きの説明を載せます。
画面項目
▼検索条件
- 顧客ID
- 氏名
- 氏名(カナ)
- メールアドレス
- 郵便番号
- 電話番号
▼一覧表示項目
- 顧客ID
- メールドレス
- 氏名
- 郵便番号
- 住所
- 電話番号
- 作成者
- 作成日
- 更新者
- 更新日
ボタン・リンク押下時のアクション
▼検索ボタン
入力された条件によって顧客テーブルを検索して、結果を一覧で表示します(※改ページ、入力チェックなし)。
▼変更リンク
顧客更新画面に遷移します。
実際のテストケース作成時には、検索条件のリクエストパラメータを再現するためにMockitoでHttpServletRequestのモックを作ってテストケースを作成していくことになります。Mockitoがなかったときは、画面を一々叩いてテストをしていたので、Mockitoに感謝です。
顧客登録・更新画面
顧客登録・更新画面は、顧客の情報を登録・更新する機能です。この機能については、登録機能と更新機能を1つのModelとViewで作っています。一覧画面の[登録]リンクから遷移すると登録モードに、検索結果の[変更]リンクから遷移すると更新モードになります。
Webアプリケーションでは、リクエストパラメータをしっかりチェックすることが重要です。DBに不正なデータを登録させないようにすること、SQLインジェクションなどの脅威からアプリケーションを守ること、許容する文字を制限することなどが重要になってくるからです。こちらについてもMockitoを使って、HttpServletRequestのモックを作り、いかに網羅されたパターンをテストするかがポイントになってきます。
以下に画面項目と、ボタン・リンクなどを押した時の動きの説明を載せます。
画面項目
▼入力内容
(更新モードの場合は)顧客IDがラベルで表示される。
- 氏名
- 氏名(カナ)
- メールアドレス
- 郵便番号
- 都道府県
- 住所1(市区郡町村)
- 住所2(番地号・建物名)
- 電話番号
ボタン・リンク押下時のアクション
入力内容をチェックして、内容に問題があればエラーメッセージを表示し、問題がなければ、入力内容を顧客テーブルに登録・更新します。
データベースの説明
データベースはJDK 7に付属しているJava DBを使用します。
Java DBとは、オープンソースのApache Derbyデータベースをオラクルがサポートしたディストリビューションになります。Java DBを使った理由は、JDKさえあればインストールが不要だからです。
顧客テーブル
顧客テーブルは名前のとおり、顧客の情報を管理するテーブルです。サンプルアプリケーションでは、この1テーブルのみを使用します。実際のテーブルについては、アプリケーション起動時にhibernateの設定で自動で作られるようにしていますので、テーブルの作成は不要です。テストデータについても、com.oisix.sample.base. InitializationListenerがアプリケーションの起動時に作成されるようにしてあります。
次に以下がテーブル仕様書になります。
見て分かるとおり、通常では考えられない型、サイズなどになっていると思います。これには、ソースをシンプルにしてテスト以外の説明を極力減らしたいという理由があり、このような形にしています。
型の定義、サイズはアノテーションで指定しておりませんので、varchar(255)など適当に作られます。
| カラム名 | カラム名(英語) | 型 | 制約 |
|---|---|---|---|
| 顧客ID | customerId | varchar(255) | primary key, not null |
| メールアドレス | mailAddress | varchar(255) | |
| 名前 | fullname | varchar(255) | |
| 名前(カナ) | fullnameKana | varchar(255) | |
| 郵便番号 | zipCode | varchar(255) | |
| 都道府県 | todofuken | varchar(255) | |
| 住所1(市区郡町村) | address1 | varchar(255) | |
| 住所2(番地名・建物名) | address2 | varchar(255) | |
| 電話番号 | tel | varchar(255) | |
| 作成者 | createId | varchar(255) | |
| 作成時間 | createTime | timestamp | |
| 更新者 | updateId | varchar(255) | |
| 更新時間 | updateTime | timestamp |
