Open Source WEB

こんにちは!

うっちーです。

前回は、「ベルトコンベアっていいよねぇ!」について書きました。 改善がなければ、進歩もないという考え方に、ソフトウェア開発のより多くの人に、気づいてほしいものです。

この業界に8年もいるもんだから、いろいろなテストをやってきました。 まあ、今振り返ってみると、 別の議論で、ますくさんに「それはテストじゃなくてデバッグだよ」と言われるようなものばかりですが。 少し今までのやってきたXPのユニットテスト以外のテストについて書いてみたいと思います。

1.ログを吐き出す方法。

  • マクロを使用して、処理が入った関数名、出た関数名、渡された引数の中身、途中の変数の中身をログに書き出して、 確認する方法です。
  • これは最初、いいなあと思いました。 今までのブラックボックスの開発ではないように見えました。
  • しかし、ソースがログを吐き出すマクロに埋もれてしまい、インデントが完全に見えなくなり、 一体どういう構造になっているのか、さっぱり分からなくなって、 読み返すときは、大変でした。
  • 肝心のログは山ほどたまって、見るというより解析そのものでした。 何回か読み返して、やっと意味が少しずつ分かってくる感じでした。
  • 懸命に解析して、やっと問題ないことを確認できたりして、正直開発の泣き笑いのようなものでした。 時間がかかった割りに、手に入れるものが少ないので、 従って、相当な異常がない限り、見なくなってしまいました。

2.バッチ自動テスト

  • テストを作って、それをテスト用のバッチのフレームワークで流して、 結果を確認するものでした。
  • これも自動化できていいなあとは思いました。 テストが楽になると思いました。
  • 全体で、テストを掛けようとしているから、 大きすぎるために、組み合わせのパターンが多すぎてしまい、 そのため、テストケースの漏れが非常に多くなってしまいます。
  • ブラックボックステストのため、内部がわからないために、 当然、全パスを通すことは不可能でありました。
  • テストは、プログラマとは、別の人でやるべきという考え方にたっているため、 プログラマと、テスターの意識のずれで、不必要なテスト、 仕様が正常でも、テスターには、異常に見えるため、問い合わせが繰り返され、 多くの時間が浪費されてしまいます。 個々のソースの単体テストがおろそかになっているため、 最後の自動テストで多くの問題が発生してしまい、その解析でさらに時間がかかってしまいます。
  • 設定ファイルのパラメタを検査する場合など、 膨大な設定ファイルを作成する必要がありました。 正直、楽なように見えるが、ちょっとしか違わない設定ファイルを作り続けるのは、退屈でした。

3.自作モジュールを作ってテストする方法。

  • 自分で実行モジュールを作って、テストするものです。
  • テストするための仕組みを作るのはつらかったように思います。 毎回毎回状況に合わせて、考えて作らないといけませんでした。 変数によっては、直値でテストをしていました。
  • 今から考えると、まんざらだめな方法でもなかったように思います。 テストがつらかったのは、 毎回毎回状況に合わせて、考えて作らないといけなかったことと、 テストするのに、テストできるコードを書かなければならないことを 見抜けなかったためだと思います。

あなたももこんな経験はないかな? 改善したいと思わないかな?

私は、行き詰ることを感じ、苦しんでいたものでした。


フィードバック下さい!

Name:
Comment:
ますく: (Mon Jul 11 10:19:07 2005 )
確かに「テスト」と「デバッグ」を間違えている方は多いですね...

余談ですが、単体テストでやたらと工数を積んでいる開発見積もりとか
見るたびに「相変わらず根性でテストか...」とがっくりくることが
あります(-_-u...

さて、2.のバッチ自動テストですが、割と受入テスト(機能テスト)に
近いコンセプトかなって思いました。

ユニットテストがプログラマが書くのに対して、この「バッチ自動テスト」
はテスター(もしくはお客さん)が書く類のテストですよね?

ただ、プログラマとテスターとのテストの作り方や方針に意識のずれが
あって、うまくいかなかった...そんな感じでしょうか。

ここら辺は、仕様(ストーリー)に対しての受入テストを明確にする
ことで回避できる領域だと思いました。

そもそもの問題は、仕様自体が大きすぎたり、あいまいだったりで、
「テスト可能な状態」でなかったことではないでしょうか?

p.s.XP的なユニットテストも本質はブラックボックステストですよ〜。
ただ、この「ブラックボックステスト」という単語も、人によって大きく
解釈が異なる、危険なキーワードかも知れませんね...
ばたっち: (Wed Jul 13 23:41:53 2005 )
たしかに2.のバッチは受入テストにすることもできますね。
私もバッチ的にテストを流せるツールを作って、メンバにシナリオ
作らせて、受入テストっぽいことをしていましたよ。(^^;

XP以外のテストでもうひとつ。
C/C++でgdbを使ってごりごりルートを通す単体テスト。。。

こんなん意味あんのかなぁって思いながらやってました A^^;
ますく: (Fri Jul 15 13:10:29 2005 )
そりゃ完璧にデバッグですな(^_^)
人によっては、ホワイトボックステストと勘違いするかも知れませんが...
結局、実践テクニックが体系的に身に付いてないから、そういうことやっちゃうんですよね...

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

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