Java

プログラミング入門者向け書籍、講義ではソフトウェアの自動テストも説明しよう

一行でまとめ: プログラミング(Java)の基本だけでなく、自動テスト(Junit)も説明する書籍を著しました。今後、プログラミングの入門書籍を書く方や講義を設計する方も、自動テストまでカバーする内容にしませんか?

自動テストの有無

世の中のソフトウェア開発プロジェクトは、自動テストを行っているものと、行っていないものに二分されます。

自動テストを行っているプロジェクトでは、機能追加・保守、ライブラリやプラットフォームのバージョンアップを比較的容易に行えます。(もちろん、必ずしも全ての検証を自動化できるわけではないので、ある程度人間や外部システムとの調整を含めて検証をする必要はありますが)

自動テストを行っていないプロジェクトでは、どのような機能追加・保守・バージョンアップでも多大なコストを払って人海戦術でテストを行うか、影響範囲を推測してテストする範囲を絞ることになります。
そして人間が推測する影響範囲というものは誤ることが頻繁にあり、思わぬところで障害が発生します。

ついてはビジネスは刻一刻と変化するのに、それに追随させてソフトウェアの変更を行うことが困難であったり、消極的になってしまったりします。

自動テストをなぜ行わないか

自動テストを一度実践すると、

  • 自動テストなしにソフトウェアを開発することは考えられない
  • 自動テストがあるとソフトウェア開発が楽しくなる
  • 自動テストがあれば中長期的な開発工数を低減できる

と考える人は多いです。

自動テストを行っていない人はこう考えているのではないでしょうか。

  1. 自動テストを書く工数がない
  2. 自動テストを書く分、ソフトウェア開発が遅くなる(納期に間に合わない)
  3. 自動テストを書ける人材がいない

1.や2.についてはテストの網羅度や、自動化する範囲・対象にもよります。ごくごく短期的な目線ではテストがない方が早い場合もありますが、損益分岐点はかなり手前にあります。自動テストを書いた方が工数削減になり、納期に間に合うことの方が多いのではないでしょうか。

物理的なものを作らなくても試行錯誤を行えるのはソフトウェアの良い点の一つですが、自動テストが出来ていないとその良い点をなかなか発揮することが出来ません。

このエントリで言いたいのが3.です。

自動テストが出来ないプログラミング入門者

「最低限のプログラミングに入門済み」のレベルというのはこれまで

  • 条件分岐、繰り返しなどの基本構文を知っている
  • プログラムを実行する方法を知っている

といったところでしょうか。

そして「プログラミングを覚えたので現場でたくさん経験を積むぞ!」と意気揚々と就職したら手動でテストを行い、一生懸命Excelにテスト結果を記入したりスクリーンショットを張ったりでプログラミングをさせて貰えない、と嘆いているのを頻繁に目にします。

プログラミング入門者に早い段階で自動テストを教える

プログラミングが出来る最低限のレベルに「自動テストを行える」を含めると、どうでしょうか?
プログラミングを覚える早い段階で自動テストを知ることが出来れば、様々な試行錯誤を素早く的確に行うことが出来るようになります。これはプログラムの基本を学んでいく過程でも、実プロジェクトでも一緒です。

当たり前に自動テストを行える人材が増えればそれだけソフトウェア開発現場は良くなっていきます。

『プロになるJava』における自動テスト

というわけで、私が主にツール回りの執筆を担当している『プロになるJava』ではプログラミング・Javaの基本はもちろんのこと、JUnitによるテストについてもカバーしています。

JUnitはそれだけで一冊の本になりますが、『プロになるJava』では実際の開発で必要十分な内容をカバーするようにしました。

第18章 JUnitとテストの自動化
18.1 テストの自動化とは
18.1.1 JUnitのセットアップと実行
18.1.2 テストケースの実行、実装コードの修正
18.1.3 その他のアサーションメソッド
18.2 テスト自動化のヒント
18.2.1 効果的にテストケースを書く
18.2.2 テスト駆動開発
18.2.3 GUIアプリケーションやWebアプリケーションのテスト
COLUMN 時間がないからテストを書かない?
18.3 オリンピック催年を判別するコードをテスト

プログラミング入門者向け書籍、講義ではソフトウェアの自動テストも説明しよう

プログラミング入門の書籍・講義に関わる方々も、自動テストを含めることで、ソフトウェア開発現場に自動テストが当たり前に行える人材を送り出していきませんか?

書籍で、動画でJUnitを学ぼう

Javaにこれから入門する方、Java開発を行っているがなかなか自動テストが行えていない方は是非『プロになるJava』をご覧頂き、JUnitによるソフトウェア自動テストを実践して頂ければ幸いです。

Amazon: プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書

JUnitについては過去に動画も作りましたのでこちらも併せてご参照ください。
YouTube – JUnit(再)入門