Open Source WEB

9月は休みが多くて、世間並みは良いのですが、 派遣の人にとっては、時間数が減って、残業代を稼げられなくて、つらいところです。。。 ソフトウェア業界でも、休められない人が多くて、大変じゃないだろうか。。。

私は、XPの実践後、ユニットテストは開発に絶対不可欠なものと感じていますが、 ユニットテストから離れてコーディングしたことがないわけではありません。 2度ほど、ユニットテストから離れて、コーディングした経験があります。 そして、今でもユニットテストで開発できるように模索しています。

1.機能テスト、毎回毎回同じことを

  • ユニットテストの代わりに必ず、作成する関数に対して機能テストを 実施するようにしました。 総合テストと同様に、 アプリケーションを実行した際、その関数を通るように環境設定して、 その機能を実施してテストすることです。 これでも、代用は利くと自分は考えていました。 毎回毎回実施すれば、同等なテストが可能だと思っていました。
  • しかし、実際行なってみると、とにかく、面倒でした。 毎回、毎回、テストする前に、環境設定しなければならないのです。 前準備に時間がかかります。 その上、蓄積された自動テストではないので、 ちょっとした修正でも、全パターンを一つ一つ手動で実施することが必要です。 同じ関数を開発している間はいいが、 他の関数の開発へ切り替わるとき、とにかく時間がかかります。 いきなり変更、修正を言われたとき、じたばたしてしまうのです。
  • 時間がかかるです。これが人の神経を磨り減らすのです。 そして、テストしたがなくなるのです。 いろいろのテストケースが漏れていくのです。

2.ケアレスミスは、慎重に

  • ちょっとしたケアレスミスにも、慎重でなければならないです。 地雷を気をつけるあまりに、開発スピードが落ちるのです。
  • あるとき、AAAという定数と比較して、エラーとする箇所で、 私はxxx_AAAと書いてしまいました。本当にどうかしてたと思います。 あまりにも、その処理が多すぎたせいかもしれません。 タイミングが悪いことに、xxx_AAAの方は、既存で存在していたので、 エラーにはならず、問題として発覚されなかったのです。 それがお客さんに渡って、障害として挙がってきたのです。 それが解析で分かったときは、あまりにものイージーミスで、 唖然としてしまいました。 本当にアプリケーションというのは、動かしてみないとわからないんだねと思いました。 同じパスが多すぎるので、問題ないだろうとたかをくくり、 手動のテストの面倒さに負けて、テストを怠りました。 そんなつまらないミスで、お客さんの信用を失うなんて、 本当に情けなくなりました。 テストもしていないコードは、動かなくてもおかしくということを身をもって知らされました。

3.ユニットテストの経験を生かして

  • ユニットテストをした経験で、 どんなコードが分かり易いか、シンプルなコードの意味など、 いくつかのことが分かるようになりましたので、 局面に絞ってコーディングするようになり、考えすぎなくなりました。 コードは小さくなり、技巧的に走らなくなりました。
  • C言語でdefineを切る場合も、二つのバージョンの共通箇所で切るのではなく、 塊を持って切るようになりました。 その方が、コーディングの意図が読み易く、メンテナンスがし易いのです。 ところところで、虫食い算のように切られるdefineは読みにくく、 バグが発生し易いのです。

ユニットテスト抜きの開発は、騎兵が歩兵に変わって戦うような感じです。 とにかく動きが遅くなってしまうのです。 細心の注意を払って、前へ進むので、スピードがダウンしてしまうのです。 注意力が磨り減らされて、開発の楽しさがかき消されてしまうのです。


フィードバック下さい!

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us