新しくブログを開設しました。

Webエンジニアがデザイナーになってみる。


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

新しくブログを開設しました。

Webエンジニアがデザイナーになってみる。


・テストファースト
テストファーストとはコードを書く前に、まずテスト(JUnit等)を先に行う方法である。
昔は開発を行い、成果物が完成してからそれの整合性安全性を確認するためのテストを行ってきた。
現在でもテストは後に行う機関も少なくないはずだ。
なぜならば、成果物がないのにテストを作成するなんて通常の開発者にはなかなか受け入れ難いからだ。

しかし、通常のテストはバグを見つけるためにあるが、これは書いたコードが仕様どおりに動くかどうかを確認するためにある。
それでも、この斬新なアイデアに大きな衝撃をうけ、短期開発における有効性も認められ、JUnitなどのテストツールが普及した今では、開発者に広く受け入れられるようになった。

JUnitを作成するのはまったく問題ない。
単なるテストを作成して実施するよりも機械的にテストコードを作成して、修正時に既存機能が正常に動作するか調べるのにとても便利だからだ。

しかし、気になるのは今回のタイトルにある

「テストファースト」

テストファーストは世間的に認められているのだがどこにメリットがあるんだろうか。

まずテストファーストのデメリットについてまとめてみた。

■計画性のないテストである場合、品質の低下につながる
入念な計画によるテストケースの作成を行っていない場合、品質が低下してしまう。
計画を立てずにテストケースを作成した場合、多くは簡単なテストケースを先に作成してしまう。
大事なのはリスクの高いものから順にテストを行うことである(これをリスク・ベース・テストという)


■単体テストが行われずにバグが残る。
従来はコーディングの後にテストケースの作成をしていたため、問題がなかった。
しかし、テストファーストの場合コーディングはテストケースを全てバスしたものを作成している。
そのため、実際にはバグを見つけるためのテストが失われてしまう。
テストファーストの考えは、仕様にそって作成される。用は確認のためのテストである。
つまり、テストファーストでは実施できるテストが限られてしまい高品質とは言えないものになる可能性がある。


■無駄なテストにかかる工数
テストファーストでは、テストケースをコードで書くため工数が増えてしまう。
また、完全なテストケースを作成するために大量のテストを作成する開発者も少なくない。
テストケースの作成が一番初めの工程となるためどの程度の規模のテストを作成すればいいのか判断しにくい。
また、はじめは先ほど記述したように簡単なケースから先に作成してしまいやすいので工数だけかかり、効果は薄い。


次にテストファーストのメリットについて
■影響箇所の把握
このコードを修正した場合、どこに影響がでるのかを理解しやすい。
そのため、以前よりも安心してコードの修正に取り組むことができるのだ。
また、テストコードがあることで問題点があった場合以前のようにデバッグを動かして何度も確認しなくてもテストコードを動かすだけで発見することができる。

■無駄なコードの削減
以前の方法ではこのクラスにはこの機能を付加したほうが、品質が良いだろう、これも・・・などと考えがつですが、テストファーストの場合は必要なメソッドしか実装しません。
なので無駄なコードを削減でき、仕様変更時も問題を起こしにくくなります。


とテストファーストのメリットやデメリットをまとめてみた。
しかし、やはりテストをはじめに行う利点があまりみつからない。
おそらく、開発者としてまだまだ未熟すぎることが原因であると思います。
なので、次回からもう少し深くテストファーストについて調査したいと思います。
スポンサーサイト

テーマ:JUnit - ジャンル:コンピュータ

<<httpとhttpsの違い | ホーム | Twitterはじめました>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://kanamehackday.blog17.fc2.com/tb.php/226-1c71cb8f
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。