Please enable JavaScript.
Coggle requires JavaScript to display documents.
5/14~5/21 (テスト技法 (実施工程 (受入テスト (ユーザの本運用と同等の環境で実施, システム全体の機能や性能に問題が無いか,…
5/14~5/21
テスト技法
テストの目的
品質の保証
ユーザーの為の保証
動作確認の合意
プログラマを守るための保証
実施工程
Vモデル
各設計とテストがそれぞれ対応している
単体テスト
機能の最小単位で実施
機能要件を満たしていることを保証
結合テスト
機能を組み合わせた状態でのテスト
プログラムを結合して動作しているか
主に基本設計単位で実施
受入テスト
ユーザの本運用と同等の環境で実施
システム全体の機能や性能に問題が無いか
プロジェクト単位で実施
テスト技法
ホワイトボックステスト
プロジェクトの内部構造に着目
ロジックが正しく動作しているか
制御パステスト
プログラムを網羅的に実行
網羅基準(カバレッジ)
命令網羅(C0)
全ての命令を実行
条件分岐に着目せずに、命令がすべて網羅されていれば良い
分岐網羅(C1)
全ての分岐の方向を網羅
条件分岐に着目し、全ての条件分岐を網羅
条件網羅(C2)
分岐する条件を網羅
ブラックボックステスト
プログラムの使い方に着目
動作検証
同値分割
入力するデータをグルーピング化し、代表値を用いてテスト
有効同値と無効同値
テスト項目を減らすための手法
境界値分析
グループの境界値に注目し、境目となる値を用いる
条件式において、不等号に潜むバグを見つける
<と<=など
テスト項目の漏れを防ぐ手法
テストの仕様書
テストを実施するために作成する
作業内容、作業手順、想定される結果などが記されている
テスターにプログラムとテスト仕様書を渡し、テストを行う
一般的に、テストを行うのは実装した人と異なる
テストを実施する時の心構え
プログラムは正しく動かないものである
テストはプログラムの品質を高める作業
可能な限り実装者がテストを行わない
テストの自動化
JUnitテスト
javaにおいて、ユニットテストをある程度自動化
ORマッパー
https://thinkit.co.jp/free/article/0606/13/1/
http://www.dcom-web.co.jp/technology/jpa1/
http://unageanu.hatenablog.com/entry/20071025/1193304757
http://npnl.hatenablog.jp/entry/2012/04/29/014121
アノテーションでカラム名を設定
アノテーションからカラム名を受け取る
アノテーションはコンパイルすると消える
アノテーションのインタフェースに
Retention(RetentionPolicy.RUNTIME)
をつけると実行時にも消えない
アノテーションは@Interface
で自作できる
getter/setterをPropertyDescriptorで取得
PropertyDescriptor pd =
new PropatyDescriptor(<フィールド名> , <クラス>)
Method <変数名> = pd.getReadMethod();
getterを取得
Method <変数名> = pd.getWriteMethod();
setterを取得
JavaDB
JDBC
Java Data Base Connection
データベース連携のための機能を持った
クラス・インタフェースの総称
主にjava.sqlパッケージに含まれる
よく使われるクラス
DriverManagerクラス
ドライバの管理
Connectionインタフェース
DBの接続
PreparedStatementインタフェース
DBへSQLを発行
ResultSetインタフェース
結果を管理
JDBCドライバ
javaパッケージ内のインタフェース実装したクラスなどを
コンパイルしてJARファイル化
各DBベンダーが提供
DBMS製品やバージョンに合わせたJDBCドライバが必要
DAOパターン
Data Access Objectパターン
DBアクセスを伴うシステムに頻繁に適応される構成パターン
構成要素
エンティティクラス
データベースの1レコードに対応する情報を保持
複数のレコードを扱う場合、各エンティティをリストに格納し返却
各列に対応するフィールドと
それぞれに対応するsetter/getterを持つ
クラス名はテーブル名と同じに
DAOクラス
データアクセス処理を行うメソッドの提供
CRUD
1テーブル1DAOクラス
2種類のSQL
参照系SQL
SELECT
preparedStatementオブジェクトのexecuteQuery()メソッド
引数なし、戻り値ResultSet型
更新系SQL
UPDATE DELETE INSERT
preparedStatementオブジェクトのexecuteUpdate()メソッド
引数なし、戻り値int型
呼び出し元クラス
メリット
呼び出し元クラスには、DBアクセスの詳細なコードが含まれなくなる
DBにアクセスする情報が変更になった場合でも、DAOクラスの変更のみで済む
ResultSetからのデータの取り出し
ResultSet.next()でカーソルを1つ下へ
戻り値:boolean
レコードが存在すればtrue
ResultSet.getXXX(<列名>)で現在カーソルが指定しているレコードの列を取り出す
getInt() getString()など
取り出す値の型でgetter が変わる
クローズ
PreparedStatementオブジェクト及びConnectionオブジェクトの破棄
必ずやること
Connectionの取得は負荷が大きいため、何度も利用する場合は再利用することがある
finally節でのクローズ
if文で各オブジェクトが存在しているか確認してから
ぬるぽの原因
<変数名>.close
try-with-resourcesによる例外処理
try-catch文を抜ける際にクローズ処理が自動で行われる
但し、AutoCloseableインターフェイスを実装したクラスのみ
try(<closeしたい処理>)[
}catch( ){
}
バインド変数
あらかじめDBにSQL文を渡して置き、あとから値を指定
SQL文中に?て記述
例) SELECT * FROM emp WHERE empno = ?
複数記述可
割り振られた順に番号が振られている
setterメソッド
set+型名のメソッド
引数:①パラメータ番号 ②実際の値
例) pstmt.setInt(1 , 101)
Javaリフレクション
https://qiita.com/KeithYokoma/items/9e692808095acf560bc9
Field[] <変数名> = <インスタンス>.getDeclaredFields();
インスタンス内のフィールドを取得し、配列に格納
https://qiita.com/ohke/items/b096c5cb9d2932764f22