Index: [Article Count Order] [Thread]

Date:  Wed, 23 Apr 2003 22:24:09 +0900
From:  ゆうじ <yuuji@....net>
Subject:  [XP-jp:04308] Re: bshUnit
To:  <extremeprogramming-jp@....jp>
Message-Id:  <001201c3099b$9ff106e0$2000a8c0@zelda>
References:  <003001c2e982$405b70f0$1c00a8c0@zelda> <20030415.022814.105972891.yyamano@....jp>
X-Mail-Count: 04308

> なるほどねぇ、こういう事できるよなぁと思いながらコードをながめていたの
> ですが、僕は実際には使わないだろうなとも思いました。

ウッ。ちょっぴりショック。(^^;

> なぜかというと、僕が bourne shellのスクリプトを書く時には、あんまり 
> function を作らないんですよね。わりとベタに書いちゃうというか、function 
> なしでも十分なものしか書かかなかったって事なんですけど。

実は僕自身もそうなんですよね。
作っておいて言うのもアレですが、結局shell scriptでそれほど複雑な処理を
行うケースが少ないので、テストを書く→テストしやすく書き直すコストの方が
高くて、次第にメンドくさくなってやめてしまうという罠…。
(最初は頑張っていたんですが続きませんでした)

最近は、shell scriptのテストよりコマンド等の自動テストに使う方が便利なの
かなと思っていて、自分でもそういう用途で使うことが殆どです。
仕事上、コマンドのステータスがどうだとか、画面とかログとかに何が出たとか、
そういう確認を山ほどやらないといけないのですが、この手のテストには結構
役立っています。

そんなこんなで、あまり当初の目的を果たせていないという気はするのですが、
それでも以前よりは、shell scriptを書くときにテストを意識した書き方をするよう
になったと思うので、それはそれで良しと思うことにしてます。

> 少し書いてはテストのくり返しですね。で、完成したら色々なパターンで
> テストしてました。あとは、-x で実行結果を見たりとか、そんな感じで
> しょうか。

ここで言うテストというのはshell script全体の挙動というか、ある一つのパスを
通してみて、最終的に何か期待する動作をするかという意味合いですよね。

自分でも同じようにテストを行い、わざわざTestCaseにおこす気になれない
のですが、それが何故なのか結構不思議でした。
で、何でなんだろうと考えてみたんですが、もしかするとこんな理由なのかなと
思った節があるのでちょっと書きます。何かというと、

shell scriptを書く
  = 何かしら「ちょっとした事をまとめて」やらせたいから書く
  = 他の言語でいう「関数とかクラスとか」に相当する部分を書く

という関係があって、shell scriptの内部をいちいちテストするのは、他の言語
では、関数内部の実装についてこの代入が実行されたかとか、あるエラー
ケースでこの行を通っているか、とかいう事をいちいちテストしているのに当る
のかなということです。
(この辺の話も結局はshell script自体の規模にもよるのだと思います。
当たり前の話だったらすみません)

そう考えると、shell scriptをコマンドとして実行した結果何を期待するかという
事が、丁度関数の結果に何を期待するかに相当するもので、これがshell
 scriptでのTestCaseと考えるのが自然な気がします。

これならbshUnitも役に立つかも。
でもそれ以前に需要が無かったりして。(^^;

# 駄文でごめんなさい。
--
/*
 * ゆうじ@すーぱあねっと
 * yuuji@....net
 */