Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: (patch) MaxHit, MaxMatch



masao@xxxxxxxxxx (Masao Takaku) wrote:

>> 問題ないと思います。できれば tests/namazu-rcfile を作って
>> namazurc 用のテストプログラムを作ってもらえると助かります。:)
>
>とりあえずコードだけ commit しておきました。

確認しました。conf/namazurc-sample に MaxHit, MaxMatch の説
明を追加してもらえます?


># テストプログラムの方は、
># 今ちょっと作っている時間がないので、GWあけにでも…。

ううむ、後回しにすると忘れてしまうものですけどね。

  * テストのことを考えながらプログラムする
  * プログラムを書きながらテストする
  * テストはテストプログラムを作って自動化する
  * テストプログラムによってテストは将来に渡って繰り返される

という形が理想的です。人間の目で確かめないとテストできないよ
うな場合も少なくないので、自動化はなかなか難しいのだけど。

kakasi-dev 向けに書いたテストについてのコメントをメイル末尾
に添付しておきます。


>ちょっと考えてみたら、
>(nmz_)set_xxxx() な関数が用意されているものの大半については、
>namazurc で設定できるとうれしいのでは(?) と思いました。

なるほど、そうかもしれません。libnmz の整備をふまえてよく考
えてみます。

# 現在 src にある rcfile.c, result.c は nmz に移すべきかな。
# output.c は [n-d-j 00435] で提案した方法で書き直す。 最近
# の趣味だと Scheme による拡張言語という夢も…。simple but
# extensible and customizable という方針がいいな。


>欠点としては設定ファイルがふとってしまう点がありますけど…。

その点は気にする必要はないと思います。

-- Satoru Takabayashi

KAKASI の場合、test case (テスト用のデータと、本来あるべき出
力を並べたもの) を作るのは簡単だと思います。また test
program (テストのためのプログラム) は shell script で簡単に
作れるはず。

# で、それらをまとまめたものを test suites と呼ぶようです。
# diff, cmpなどを使って簡単に test program を書けるのは UNIX 
# の長所の 1つですね。GUIのプログラムではそうはいきませんが。

バグを直したときは、それを保証するテストプログラムを用意する
と効果的です。この辺のコツは

  * The Practice of Programming 
    <http://cm.bell-labs.com/cm/cs/tpop/>

  * CODE COMPLETE
    <http://www.construx.com/stevemcc/cc.htm>

に詳しいです。AWK には 1,000個ものテストが存在したとか。

また、 Knuth いわく

	* 文芸的プログラミング (p.346): 「1960年以来、きわめて幸運にも私は
	もっと広く知られてもよいテスト方法を用いてきた。すなわち通常の、大
	きな応用プログラムでソフトウェアのテストをする代わりに、普通の正気
	のユーザは書こうと考えそうにもないテストプログラムを用いることで、
	よい結果を得てきた。私のテストプログラムはシステムを破壊する目的で
	書き、システムプログラマが意識的に予期しなかったように、システムを
	その極端な限界まで押しやり、複雑さに複雑さを重ねるものである。その
	ようなテストデータを準備するために、私はできる限り卑怯で汚い考えを
	思い浮かべて、考えつく限り冷酷なコードを書く。そしてほとんど目をそ
	むけたくなるような、汚い構文に埋め込んでやる。こうして作ったテスト
	プログラムは気違いじみているため、それが何をするかを他の人に説明す
	ることはほとんど不可能に近い。また誰も知りたいとは思わない。しかし
	このようなプログラムを使ってみると、ソフトウェアからバグを検出する
	にはすばらしい方法だということがわかる」

だそうです。これは見習わなければ。また、

	* 文芸的プログラミング (p.332): 「前に述べたように、1982年6月29日
	に TeX82 の草稿が完成した。まったく部分的な実行をせずに、全体のプ
	ログラムを書いてしまった」

とのことですが、このいわゆるビッグバン方式のテストは凡人は真
似してはいけません。:)