ビルド・テスト・WAR の確認

ビルドとテスト

Maven

mvn clean test
mvn clean package

Gradle

./gradlew clean test
./gradlew clean build
  • BUILD SUCCESS(Gradle は BUILD SUCCESSFUL)だけでなく、テストの件数・失敗・スキップを更新前(作業前の準備で記録したもの)と比べる
  • 成果物(target\ または build\libs\ の WAR・JAR)ができ、更新日時と大きさが妥当である

WAR に入った JAR を確かめる

jar tf target\<成果物>.war | Out-File -Encoding utf8 war-contents.txt
Select-String -Path war-contents.txt -Pattern "<artifactId>" -SimpleMatch

Gradle では build\libs\<成果物>.war です。jar が見つからないと出た場合は、JDK の bin フォルダーにパスが通っているかを確かめます。

  • 更新先のバージョンの JAR だけが入っている
  • 古いバージョンの JAR が残っていない
  • 同じ成果物の別のバージョンが入っていない
  • 座標が変わった場合、古い座標の JAR が入っていない
  • サーバーが提供する API(provided・compileOnly)が入っていない

テストの観点

ライブラリの更新だけを理由に、すべてのテストを新しく書く必要はありません。既存のテストで確かめられるものは再実行します。バージョンページのカードの「確かめ方」に、その変更に固有の観点があります。

観点 既存のテストがある場合 無い場合
ライブラリを使う主要な機能 再実行する 業務上重要なものについて代表的な正常系を足す
書き換えた箇所(消えた API・名前空間・設定) 再実行する 書き換えた処理の正常系・異常系を足す
例外の扱い エラー応答のテストを再実行する HTTP ステータスなど、外から見える結果と、機密情報が出ないことを確かめるテストを足す
解消するはずの脆弱性に関わる機能 異常系のテストを再実行する その機能を使っている場合に、代表的な攻撃入力が拒否されることを確かめる
境界値 再実行する 上限ちょうど・空・省略を確かめる

正常系:更新前と同じ入力で、同じ業務結果になる。異常系:不正な入力・上限超過・存在しない対象が、制御されたエラーになる。

Eclipse での最終確認

  • 「Problems」ビューで Java のエラーが0件、依存関係のエラーが無い
  • 更新前より意図しない警告が増えていない(増えた警告は理由を記録する)
  • 「Maven Dependencies」(Gradle は「Project and External Dependencies」)で、対象が更新先のバージョンにそろっている

共通手順書の章

  1. 作業の全体像
  2. 開発環境と前提
  3. 作業前の準備
  4. 更新前の記録
  5. 利用箇所の調べ方
  6. 依存定義の更新
  7. IDE への反映
  8. 解決されたバージョンの確認
  9. コンパイルエラーの切り分け
  10. import の一括置き換え(javax → jakarta)
  11. 非推奨の警告の扱い
  12. 概算工数の出し方
  13. リソースの解放と入力の安全性
  14. ビルド・テスト・WAR の確認
  15. 他の JAR に同梱された複製
  16. 再スキャン
  17. 変更差分の確認と完了条件
  18. ロールバックと作業記録
  19. 検証環境等への配備