SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オイシックスの事例から学ぶ、JavaのWebアプリに自動テストを導入する方法

オイシックスの独自フレームワークをモデルにしたサンプルWebアプリケーション

オイシックスの事例から学ぶ、JavaのWebアプリに自動テストを導入する方法 第2回

画面の説明

顧客検索画面

 顧客検索画面は、顧客に関する一部の情報から、該当する顧客を検索する機能になります。以下に画面項目と、ボタン・リンクを押した時の動きの説明を載せます。

画面項目

 ▼検索条件

  • 顧客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がアプリケーションの起動時に作成されるようにしてあります。

 次に以下がテーブル仕様書になります。

 見て分かるとおり、通常では考えられない型、サイズなどになっていると思います。これには、ソースをシンプルにしてテスト以外の説明を極力減らしたいという理由があり、このような形にしています。

※2

 型の定義、サイズはアノテーションで指定しておりませんので、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  

次のページ
アプリケーションアーキテクチャの説明

この記事は参考になりましたか?

オイシックスの事例から学ぶ、JavaのWebアプリに自動テストを導入する方法連載記事一覧

もっと読む

この記事の著者

山田 昌平(オイシックス株式会社)(ヤマダ ショウヘイ)

オイシックスでは 運用→開発→開発推進を担当してきました。あと、ITイベントの協賛も担当しております。イベントは、技術的な面、エンジニアとしての考え方など、本当に学ぶことが多いのでおすすめです。お会いすることもあると思いますので気軽に声をお掛けください。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7569 2014/01/27 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー