ソフトウェア開発にテストは必要か?テストの代わりになるものは無いのか?
@Rayerd 例えば int add( int a, int b ) in { } body { int ret = a + b; return ret; } out { assert( ret == a + b ); } のとき、事後条件は ret == a + b で、
2010-08-12 16:20:52@Rayerd ここにテストを unittest { assert( add( 1, 2 ) == 3 ); } って書くのって、冗長な感じしないのかなぁって。契約で十分明示されてるやん、みたいな気分にならないのかなーと思うのですが。
2010-08-12 16:22:31@PG_kura pure関数限定なら部分的に同意.メンバ関数やnon-pure関数は状態に依存するかも.int g_v; int g_add(int a,int b)out(r){assert(r==a+b+g_v)}body{return a+b+g_v;}だと契約では不足か
2010-08-12 16:42:47@PG_kura 本当はすべての値で検査したいという前提がある気がします.でもできないので値空間全体を検査対象にする契約と,いくつかの例示を検査対象にするunittestと,というイメージがあります,僕は.
2010-08-12 16:44:33@Rayerd なるほどなるほど。あとこれはぶれいず卿にも聞いたのですが、もしお時間あれば http://twitter.com/PG_kura/status/20951148167 についてどう思うか感想を post してくれると嬉しいです。
2010-08-12 16:48:02事実上は必要なんだろうけど、テストってブルートフォースみたいな感じがして結構大変そうなので、誰かもっといい方法開発して下さい。先人が素晴らしい方法を切り開いてくれれば自分はその道を悠々と歩くので。
2010-08-12 17:04:53あ、CoqCoq言ってますけど全然Coqとか知らないですはい [CIについて話します http://bit.ly/dtXLqV ]
2010-08-12 17:07:46@Rayerd りょーかいです!(テストに限らず、テストと目的を共にするものなら何でもいいのですが。) 何か思いついたらリプ下され。> Togetter 見てくださった方も。
2010-08-12 17:10:56add(a,b)みたいにトリビアルな関数なら,複数人に独立に実装させて,コンパイラの最適化出力が一致すれば妥当とみなすとか….複数人が同じバグを作る確率は小さいという前提のもと.
2010-08-12 17:27:32R f(T t)out(r){assert(r>=0);};かつ R g(T t)in{assert(0<t&&t<1);};のとき g(f(...))と書いたらコンパイルエラーにできるか?0を返す可能性があるfの結果をgに渡すと危険なことを証明できるかな?どうすればできるかな?
2010-08-13 08:37:14なんというか、そのおかげでテストに対する認識変わったとです。『ソフトウェア開発にテストは必要か?テストの代わりになるものは無いのか?』 http://togetter.com/li/41604 で @bleis センセが即レスくれたのも、そういうことだったんだなぁ。
2010-10-30 11:42:23なんかこれテスト=モジュールテストとしか思ってないように見えるんだけど。。。『ソフトウェア開発にテストは必要か?テストの代わりになるものは無いのか?』 http://togetter.com/li/41604
2010-10-30 11:48:47@showyou いやー、そういう節があったのですよ。そのときの僕には。なので、実は認識のズレが話のズレになってるです。今になって思えば根本的に間違ってたなぁと。
2010-10-30 11:50:45