はじめ
こんにちは ◤●ㅅ●◥ノ
今回は品質を意識しながら効率的に開発を行う手法、機能、ツールについて学びました!
第11章 単体テストとアサーション
1.不具合に対するアプローチ
開発の進み具合のこと 進捗
開発すべき機能の範囲 _スコープ
「完成」の基準
期待される「スコープ」と「品質」の両方を満たして、初めて完成
期待される「時間」内に完成して、初めて成功
品質のおおまかな段階
1.起動不能
2.強制終了
3.仕様非準拠
4.完成
何で品質を確認するか
→テストを行う
テストの種類
単体テスト
ある1つの部品について詳細なテストを行い、その部品単体では完成していることを検証する
1つのクラスのメソッドを呼び出し動作が正常であることを確認する
クラスの開発者が担当することも多く、ほとんどの不具合はこの段階で修正される
結合テスト
単体テストが完了している完成部品をいくつかつないで動作させ、
うまく連携して動作するかを確認する
総合テスト(システムテスト)
すべての部品を結合して行う最後のテスト
最終成果物がプログラムではなく、ハードウェアやネットワークも含めたシステム一式の場合
本番で使う機材上でテストを行うことが一般的
総合テストと同時あるいは別に受け入れテストや検収といった手続きもある
2.単体テストのやり方
単体テスト用にクラスを作り検証する
テストしたい対象のクラスを動かすためだけに作るクラス
→テストクラス(テストドライバ)
なぜテストクラスを使うのか
→クラスを作らずにmainメソッド内に書くことはできないのか?
1.1文字でも少ない稼働コードが理想
本番稼働に不要なものは本番稼働用のクラスの中に含めるべきではない
2.1文字でも修正したら再検証
mainに追加した後に消した場合でも再度検証する必要が出てくる
良いテストケースについて
少ないパターンでより多くの範囲のテストができるようにテストを考える
多様なテストケースを効率よく作っていく
作る時に便利なもの
正常系、異常系
正常系...正常に動作することを確認する
異常系...想定される異常時に、きちんとエラー処理がされるかを確認する
3.JUnitを用いたテスト
テスト作りのルールをある程度統一しておくと楽になる
→ テスティングフレームワーク と総称されるツールがよく利用される
代表的なものとして「JUnit」が挙げられる
JUnitはオープンソースとして無償でダウンロードし、利用できる
4.アサーション
Javaには簡易なテストケースを稼働コードの中に直接記述できる アサーション
という仕組みがある
アサーションの使い方
構文1:assert 評価式;
構文2:assert 評価式 : エラーメッセージ;
アサーションの注意点
1.アサーションのOFF時に問題となるコードを書かない
本来の動作ロジックに影響を与える指揮をassert文で利用すべきではない
2.単体テストに代わるものではない
まとめ
開発期間の期限内に、スコープと品質の両方を満たさないといけない
大きなプログラムの場合
単体テスト
結合テスト
総合テスト
へと段階を踏んでテストを行なっていく
Javaでクラスの単体テストを行う場合、
JUnitをはじめとするテスティングフレームを利用するのが一般的
アサーションを用いるとソースコード中に簡易なテストを記述できる
今回もありがとうございました!
ではまた〜 ◤●ㅅ●◥ノ"