TEFに燃料投げたら秋山さんが答えてくれた

TEFの自己紹介メールに対してTwitter上お返事をくださいました。 近いうちにそれぞれ(4つの論点)について自分からMLに投稿するつもりです。 ちなみに4つの論点は次の通り。 「単体テスト/結合テストなんて存在しない」 「テストなんてないほうがいい」 続きを読む
4
Kenichiro Ota @oota_ken

まあ、定理証明は正直難しくてよくわかんないんだけどなw

2011-12-04 22:49:57
あきやま🍠 @akiyama924

@kyon_mm それは「テスト戦略,テスト分析でカテゴライズ」が前提になっていますよね。私が言っているのはテスト対象ソフトウェアのできあがってくる過程が先にあって、ある程度それを意識して活動する方がベターと思うのでカテゴライズが先なのです。色々なやり方があってよいと思いますが。

2011-12-04 22:51:19
あきやま🍠 @akiyama924

@oota_ken はい。命題と関数の対応(証明)は取れると思います。でも、命題(=形式仕様)が間違っている場合と、実時間に証明が終わるのかという話がありますよね。

2011-12-04 22:53:31
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@akiyama924 なるほど。その場合だと単体/結合というカテゴライズがやはりやりやすいのでしょうか?先の主張の根底にあるのは「単体テストとかってテンプレートをつくっちゃうとそれに合わせたテストになっちゃうのが問題で、毎回適切なカテゴライズしよう」っていう意識があります。

2011-12-04 22:55:16
Kenichiro Ota @oota_ken

@akiyama924 僕はまだ定理証明のことをほんのちょっとしかわかってないのですが、命題自体があやまっていることつまり仕様自体が誤っていることたとえば仕様間に矛盾があることなどを定理証明機は発見してくれます。ここが面白いところです。

2011-12-04 22:56:31
Kenichiro Ota @oota_ken

@akiyama924 で、実時間の問題はもちろんあると思います。デスので、現状は限られた命題して無理でしょう。が、実時間の問題はテストの方がむしろ課題を抱えているわけで。

2011-12-04 22:57:41
Kenichiro Ota @oota_ken

が、定理証明ツールで実時間内に解けないような問題はそもそも実装してもそれに対するテストは実時間内に終わらない気がする。NP完全とかそこらへんの話からすると。

2011-12-04 22:59:20
あきやま🍠 @akiyama924

@kyon_mm にしさんも同じようなことを仰っていますね。私は、「ソフトウェア開発(コーディング)のフェーズに合わせて考えるべき」と書いた通り、それが単体を出しにくいものであったら違うフェーズにしたほうが良いです。開発の切りがよいところってありますよね?それに合わせるわけです。

2011-12-04 23:00:24
あきやま🍠 @akiyama924

@oota_ken はい。定理証明機を否定するつもりは全くありません。使いどころではどんどん使って欲しいです(だから、SQiP研究会でも形式手法分科会始めました!)。実時間の問題はテストの方かなぁ??そんなことはないと思うけれど。

2011-12-04 23:03:23
Kenichiro Ota @oota_ken

@akiyama924 集合を集合のまま扱えることでサンプリングによる発散を避けるというのが定理証明機の1つの目標だったようです。自然数の集合とかをそのまま扱えれば、少なくともテストよりは組み合わせ爆発を防げるはずと。でも、それも命題によるのかもしれません。

2011-12-04 23:05:42
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@akiyama924 コードがある程度統合された段階でないとテストが出来ないものが出る(単体レベルだとモックテストになる)から、それらを結合テストと名付けてやるって言う感じですか?

2011-12-04 23:05:57
あきやま🍠 @akiyama924

@kyon_mm コードを書く前にTDDでテストコードを書く、一つのクラスの関数が一通りそろったらクラスに対するテストコードを書く、全てのコードはそろっていないんだけど、機能を確認できるようになってきたら単体テストを行う。開発済みコードが増えるにしたがってテスト範囲を広げていく。

2011-12-04 23:11:13
あきやま🍠 @akiyama924

@kyon_mm もちろん、今ツイートしたのは、たとえばの例です。

2011-12-04 23:11:32
あきやま🍠 @akiyama924

@oota_ken うーん。それは、関数レベルの証明なんじゃないですかね? 詳しくないのでよく分かっていないのですが。

2011-12-04 23:13:57
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@akiyama924 なるほど。となると、コードの成長に合わせてテストをすべきというのが根底にあって、それらは言語やフレームワークによっても変わってくるからそのたびに考える。って感じでしょうか?どちらかというとシステムアーキテクチャによってテストレベルが変わるイメージ?

2011-12-04 23:14:49
かわにし @tosikawa

@oota_ken なので、ある意味、感みたいなものによる絞り込みが必要になりますよね。もしくは近似解を求めるようなヒューリスティックな手法ですかね。

2011-12-04 23:15:18
あきやま🍠 @akiyama924

@kyon_mm はい。前半はそんなイメージです。言語やフレームワークによって変わってきますが、言語やフレームワークはそうそう(一つのプロダクトでは)変わらないので毎回考えることはないです。システムアーキテクチャより前の、開発戦略+テスト戦略で考えるイメージです。

2011-12-04 23:22:04
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@akiyama924 なるほどー。なんとなく理解できました。ありがとうございます!

2011-12-04 23:29:31
かわにし @tosikawa

きょんさんのTEFの自己紹介から始まった一連のTwitterでの話がまとまっていないのが悔やまれる。

2011-12-05 00:05:57