単体テストとJUNIT5

プログラミング開発において、テストフェーズは下記に大きく分けられます。


1.単体テスト 2.結合テスト 3.機能テスト 4.システムテスト 5.ユーザ受け入れテスト


テストの目的とはなんでしょうか。

バグを発見すること 品質を保証すること 品質を改善すること

バグを防ぐのはいつでもエンジニアの課題でしょう。

今回は、Seleniumの検証中でもあり、単体テストについて触れてみたいと思います。

単体テストとは

・クラスや関数などのプログラム単体でのテスト ・設計通りに動くかを検証 ・テスティングフレームワークを使ったテストプログラムで、メソッドなどの小さな単位で行うテスト ・個々の機能を正しく果たしているかどうかを検証するテスト

実装中段階の早期段階で、機能が仕様通りに実装されているかを確認することにより、開発の後工程で行われるテストに比べて早い段階でバグをつぶすことができます。

必要な理由


・問題の原因の特定や修正が容易。 ・開発全体のバグ修正コストを下げる ・コードの内容をよく理解している開発者によって、コード作成と同時か直後にテストケースが作成できる


単体テストの課題は


・開発者への負担 ・ある程度のスキルが必要 ・スケジュール的に厳しい


テストプログラムには、JUNITが利用されます。

JUNITとは


Java開発では多くのプロジェクトでオープンソースの「JUnit」が使われています。 JUnitJavaプログラム単体テスト用のフレームワークです。

共通のテストフレームワークをもつことで、他人のテストプログラムの修正を容易にします。

また、テストプログラムを記述するために、たくさんの知識を習得する必要はありません。数個の規則を学べばよいのです


JUNITの現状


単体テストの重要性は誰もが把握していますが、テストプログラミングに時間が取れない。 ・ユニットテストを行うのは原則としてプログラマです。専門の知識は必要ありませんが、 基礎的な知識やスキルはが必要となります。 ・HTMLやCSSについても、最低限の知識やスキルが必要。


問題点


JUnitを使った単体テストは、テストコードを書く必要があり。 ・テスト対象と同じくらい、またはそれ以上のコード量が必要 ・意図した通りにテストが動くかを確認するためにはデバッグが不可欠 ・単体テストにも慣れが必要


推奨される理由


・一度作成すればすばやくテスト可能 ・テストコードを標本とすることでバグ訂正が容易 ・IDEを使うことで、テストコードの再作成によって生じる手間を軽減または高速化 ・テストコードを見れば仕様がわかる


JUNIT4 から5へ

2017年にはJUnit5 がリリースされました。


・サポートされるJavaのバージョンは8です。今後は9にも対応します。 ・最初のハードルが高いため、直感的な仕様となっている。 ・JUnit 4とは互換性がない。 ・既存のテストを書き換えないほうがよい。 ・インストールは、Maven Centralにデプロイされています。


今後は


seleniumやselenideなどで自動化する動きがありますので、需要はますます上がるでしょう。