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 の草稿が完成した。まったく部分的な実行をせずに、全体のプ
ログラムを書いてしまった」
とのことですが、このいわゆるビッグバン方式のテストは凡人は真
似してはいけません。:)