単体テスト、結合テスト、総合テスト/システムテスト
種類 | 略称 | テスト実施単位 |
---|---|---|
単体テスト | UT,PT,CT | クラス単位 |
結合テスト | IT,CT,JT,LT | 画面単位 |
総合テスト/システムテスト | ST,PT | 本番想定でシステム単位 |
フレームワーク
メリット:自分で全ての機能を作成する必要はない
=開発にかかる時間とコストを削減可能
例)Struts,Struts2,Spring,SpringBoot
MVCモデルアーキテクチャ
種類 | 説明 |
---|---|
Model | 「ビジネスロジック」「業務処理」(DBと接続)=システムの中で提供するサービス処理 |
View | 「見た目」=主に画面を相当(表示部分) |
Controller | サービス処理を行う「Model」と画面表示を行う「View」をコントロールする役割を持つ |
⇒この3つの役割を分離して実装、それらが連携して処理を進める方式
Webサーバとアプリケーションサーバ
Webサーバ:Apacheなど
アプリケーションサーバ:Tomcatなど
=ローカルに仮想サーバを起動、そこからソースコードを展開してWebアプリケーションを走らせる
JSPとサーブレット
JSP:Webページに埋め込まれたJavaプログラム(「%」で囲まれたソースコード)をサーバ上で実行して結果を反映したページを動的に生成できる技術
サーブレット:Javaを使ってサーバサイドプログラム(=Webアプリケーション)を作るための技術
サーブレットのスコープ
1.requestスコープ:次の画面まで保持
2.sessionスコープ:主に時間で切れる
3.applicationスコープ:(クライアントではない)サーバが立ち上がっている間保持
Struts
struts-config.xmlファイル=Strutsの動作を定義するファイル
・アクションフォームBeanのクラス定義
・リクエストURLとそれに対応するアクションクラスの定義
・HTML入力フォームに対応するアクションフォームBeanの定義
・アクション終了時の遷移先情報の定義
・メッセージリリースファイル名の定義
⇒要素名:Action/属性:path が必須
forward,type,includeのうち1つは書く必要がある
・forward:このActionへのリクエストを実行するServletかjspファイルへのContextにおける相対パス
・include:typeで指定されたActionをインスタンス化して呼ぶ代わりに実行するServletかjspファイルへのContextにおける相対パス
・type:このActionを処理するActionクラスの完全修飾名、forwardかincludeがないとき必要
・input:入力チェックでエラーが発生したときに遷移するjspのパスを指定する(nameが必要)
・name:アクションフォームのBeanにアクセスする際のリクエスト属性
・scope:アクションフォームを取り出すスコープを"session","request"で指定する(省略時は"session")
・validation:Actionを呼び出す前に入力チェックをONなら"true",OFFなら"false"にする
Strutsの追い方
1.URLの終わりが「~.do」の場合、StrutsのActionが実行されている
2.Strutsの設定ファイルである「struts-config.xml」を開く
3.「path="/~"」(1.から.doを除去した記述)を探すと実行されているActionが特定できる
4.特定したaction要素のtype属性の値(FQCN)を確認し、Actionクラスを特定
5.特定したActionクラスの中身(基本はexecuteメソッド)を見る
6.executeメソッドの中でreturn文を探す
return mapping.findForward("(遷移先を文字列で指定)");
7.struts-config.xmlに戻りaction要素の子要素forwardを確認
8.forward子要素のname属性が6.の文字列と一致するものが今回のforward先だと特定できる
9.特定したforwardのpath属性が遷移先のjspファイルである
validation.xmlの見方
<field property = ~ depends = "required,maxlength,mask">
required:必須チェック(入力しないと(空だと)エラー)
maxlength:最大の長さ(桁数)
mask:正規表現に合致するかどうか
※maxlengthとmaskはタグで囲む
<msg name = "required" key = "errors.required">
<arg position = "0" key = "ユーザID" ……>
1行目のkeyは、application.propertiesに記述されている
2行目でエラーメッセージの変数を定義する
依存性の注入(Dependency Injection)
・依存とは:あるクラスが別のクラスをフィールドで持ったりメソッドで利用したりすること
・注入とは:変数にインスタンスを代入すること(newする際に発生)
バージョン管理ツール
・Subversion(SVN)
・CVS
・Git など
コミット:ローカルで作ったソースコードを(テストした上で)サーバにアップロードすること
更新:チェックアウトとも
サーバに上げられたソースコードをダウンロードすること
関連するソースコードはまとめてコミットする
(不十分だとエラーが出る)
SVNの操作事項
・最上位のプロジェクトで右クリック
→チーム→リポジトリーと同期化
・ローカルからクラスを削除したときも、
リポジトリーと同期化→コミットでサーバからも削除
・他人にソースを変えられたくない場合は
ソースを右クリック→チーム→ロック
・競合が発生した場合はローカルのものをデスクトップなどに保存してから競合した最新ファイルを更新。差分を確認しマージしたらコミット
SI Object Browser
データベース開発ツール=A5-M2の仲間
対応データベース
・Oracle Database
・PostgreSQL
・SQL Server
・MySQL など
Excelでデータ出力も可能
JUnit
単体テストツール
JUnitを拡張したものがDJUnitであり、カバレッジレポートを出力することもできる
アノテーションの種類
JUnit4 | JUnit5 | 解説 |
---|---|---|
@BeforeClass | @BeforeAll | テストクラスの最初に必ず実行するセットアップメソッド |
@AfterClass | @AfterAll | テストクラスの最後に必ず実行するティアダウンメソッド |
@Before | @BeforeEach | 各テストメソッドの前に必ず実行するセットアップメソッド |
@After | @AfterEach | 各テストメソッドの後に必ず実行するティアダウンメソッド |
@Test | @Test | 実際のテストロジックを書くメソッド |
@DisplayName | @DisplayName | JUnitテストクラスメソッドの表示名 |
・assertEqualsなどで期待値と実行値を比較し問題なければ緑、エラーがあれば赤で表示
・コンストラクタは@BeforeEachの前に実行
log4j
ログ出力のフレームワーク
ログレベル | 情報量 |
---|---|
FATAL | 少ない(重要度が高い) |
ERROR | ↑ |
WARN | |
INFO | |
DEBUG | ↓ |
TRACE | 多い(重要度が低い) |