Togetter - 「TDD について」
Twitterのつぶやきマッシュアップメディア!
アプリ
モバイル
ホーム
作成
確認
ログイン
注目のまとめ
今週人気のまとめ
新着のまとめ
更新済まとめ
お気に入り
TDD について
tdd
【編集】
「深夜のテスト TL -
http://togetter.com/li/5878
」
「TDD はテスト手法か否か -
http://togetter.com/li/6759
」
の後も続いている議論を、皆でまとめませんか?
誰でも編集可能にしているので、どんどん発言を足したり、問題があったら削除したりしちゃってください。
t_wada
67 fav
2853 view
2/24 13:51
twitter
livedoor
delicious
hatena
関連まとめ
アイテム
コメント
お気に入りしたユーザ
まとめられたつぶやき
返信する
RTする
ふぁぼる
これはいい議論。喉の小骨がとれた感じ。 RT
@wyukawa
: TDDはテスト手法か否か
http://togetter.com/li/6759
mitim
2010-02-23 23:09:05
返信する
RTする
ふぁぼる
テスト一個書く->RED->実装一個書く->GREEN->テスト一個追加->RED->実装変更->GREEN->テスト一個追加->GREEN->異常テスト追加->RED->実装変更->GREEN->異常テスト追加->GREEN そして反復 自分のやり方はこのリズムの繰り返しかなー
mitim
2010-02-23 23:16:18
返信する
RTする
ふぁぼる
途中、GREENである事が確実になるテストを検証するために入れることはあるけど、基本最初はREDで始めるし、新しいことやってREDにならなかったらまず慌てふためく
mitim
2010-02-23 23:17:35
返信する
RTする
ふぁぼる
愚直といえば愚直なんだけど、最初にREDである事を確認するのは安心のための儀式になるんだよね
mitim
2010-02-23 23:18:48
返信する
RTする
ふぁぼる
最近は、開発手法としてのTDDではなくて品質保証としての自動テストに悩みを持っていたりする。むー。
hikaruworld
2010-02-23 23:19:05
返信する
RTする
ふぁぼる
ユニットテストを出力するもTDDの目標化もしれんけど、主な目標じゃない。TDDの主な目標は細かく継続的に実装作業のフィードバックを得ること
goyoki
2010-02-23 23:31:39
返信する
RTする
ふぁぼる
IDEとTDDとの関係は、IDEの「お助け度」によって色々と調整が入って当然じゃないかと思ってるかな
mitim
2010-02-23 23:32:38
返信する
RTする
ふぁぼる
そこらへんテストエンジニアの方にはイメージしにくいのかもしれんね。だけど協調とか対立は駄目とか主張するなら、相手の視点に立って考える必要もあると思うんだけどな
goyoki
2010-02-23 23:33:31
返信する
RTする
ふぁぼる
勢いで今から考えをまとめてブログに書いてみる
goyoki
2010-02-23 23:34:28
返信する
RTする
ふぁぼる
たとえばメソッドの名称を変更したとして、IDE無しだったら一々コンパイルを通してエラー吐かなくなるまで頑張るけど、IDE有りだったら今ならリファクタリング機能で一発だし
mitim
2010-02-23 23:35:07
返信する
RTする
ふぁぼる
TDDのテストがテストじゃないとか、品質保証(の一部)じゃないとか、意味分かんない。
quicy
2010-02-23 23:38:42
返信する
RTする
ふぁぼる
作っているシステムが品質に非常に敏感立ったりする(飛行機や自動車の制御システムとか)場合、まずTDDで開発、そしてカバレッジ等も考慮してUnitTestを後から拡充、というやり方もあると思う。もちろん、それをやるための工数が確保できること前提
mitim
2010-02-23 23:42:18
返信する
RTする
ふぁぼる
UnitTestとそれを使った自動反復テストは十分に品質の担保になりえるからね
mitim
2010-02-23 23:42:48
返信する
RTする
ふぁぼる
あ、コードの仕様的な領域においての品質ね
mitim
2010-02-23 23:43:26
返信する
RTする
ふぁぼる
TDDやっておまけでついてくる美味しい部分に感動して、そこをアピールしたくなるのは分かるけど、肝心のテストがまずかったら、結局TDDうまくいかないでしょ。
quicy
2010-02-23 23:46:48
返信する
RTする
ふぁぼる
ひとつ言えるのは、UnitTest出現以前の「単体テスト」は、TDDの品質の足元にも及ばない悪い品質しか「保証」できなかったってことかな。最終的なガワの品質がなんとかなってたのは、それ以降のテストの厚みと最終的にはベテランのカバーだった
mitim
2010-02-23 23:50:23
返信する
RTする
ふぁぼる
テストとTDDが違うのはTDDはモチベーションが必要でかつモチベーションでぐるぐる回せるということじゃないかと思ってる。テストは単純にテストによる動作の保証の担保の確認。
keisuke_n
2010-02-23 23:51:31
返信する
RTする
ふぁぼる
まさに。TDDは開発者頭、テストはテスタ頭になる。帽子をかぶりなおすともいうらしい。 RT
@sunaot
: テストコード書くときと TDD するときの視点てまったく違うよね。それはクラス設計しているときとテスト設計してるときで視点が違うのとまったく一緒で。
bash0C7
2010-02-23 23:51:38
返信する
RTする
ふぁぼる
TDDについて、これだけ日本の技術者が持論を語り合うという場が成立していること自体が素晴らしいなぁ
nobeans
2010-02-24 00:04:11
返信する
RTする
ふぁぼる
いろんな人の意見はよく理解できる。けど、もし自分の下につく新人が、「TDDのテストはテストじゃねーんですよ」とか言ったら、はり倒す。
quicy
2010-02-24 00:06:06
返信する
RTする
ふぁぼる
まずリファクタリングに耐えうるテスト書いてから言えやコラ。そのレベルを既に超えてる人が何を言っても、その人なりの理解でOKだと思う。
quicy
2010-02-24 00:08:09
返信する
RTする
ふぁぼる
TDDを推進してる人がなぜ「テスト」「品質保証」という用語に敏感になっているのか、という背景には、テスタや品質保証の専門家が関わるような、組織・プロジェクト全体をまたがる品質保証プロセスの存在も無視できないと思う。
nobeans
2010-02-24 00:32:39
返信する
RTする
ふぁぼる
総合的な品質保証プロセスの中で、有効性を保ったままTDDをどのように位置づけて取り込んでいくか、というのはすごく難しい問題。単にそういう規模の開発プロジェクトは対象外と切り捨る方法もあるかもしれないけど、そうなると、TDDのフィールドがすごくせまくなってしまう。
nobeans
2010-02-24 00:33:02
返信する
RTする
ふぁぼる
品質保証というのは高いスキルや専門性を必要とする分野なので、TDD推進活動の初期段階でそこに踏み込むには時期尚早というかおそらく推進者自身の経験も不足しているから、あえてそこは触れないようにした、というTDDを普及させるための戦略だった可能性も考えた方が良いんじゃないだろうか。
nobeans
2010-02-24 00:35:07
返信する
RTする
ふぁぼる
.
@t_wada
をはじめとする2周目以前の人々のおかげで、自分も含めた3周目のTDD実践者がずいぶんと増えたので、今こそそこに取り組む段階に来たのかなーと思う。なので「テストっていわないのはおかしい」じゃなくて「品質保証プロセスとの適合性」についての意見が聞きたいですね。
nobeans
2010-02-24 00:41:18
返信する
RTする
ふぁぼる
私は実用主義タイプなので,当初どういう意味だったかとかわりとどうでもよくて,今の時代のTDDとはなんなのか,TDDを実践する上での障壁はなにで,どう回避して,どう開発に役立てられるのか,のほうに興味があり, *P3
t_yano
2010-02-24 00:44:02
返信する
RTする
ふぁぼる
名前は後付けでもなんでも,名前に興味がある人が決めてくれ,それ使うから,くらいの認識。名前が同じでも違ってても,やってることが同じなら同じだものん。 *P3
t_yano
2010-02-24 00:44:30
返信する
RTする
ふぁぼる
TDDとQAの関係に関する疑問自体がよくわからない (T_T)
quicy
2010-02-24 00:45:04
返信する
RTする
ふぁぼる
まあ一方で,名は体を表すので,実体を表すより適切な名前が提唱されるのならば,今後はそれを使いたいね。なので,それこそが重要だ!という人が名前決めて。 *P3
t_yano
2010-02-24 00:46:07
返信する
RTする
ふぁぼる
自分の例で言えば、TDDと品質保証との適合性は割と実用的な身近な悩みですね。ただ、SIerの受託開発とかじゃないとあんまり関係ない世界なのかも。どうなんだろう。
nobeans
2010-02-24 00:46:39
返信する
RTする
ふぁぼる
BDDはいまいち,ピンとこない名前なんだよね。。。 *P3
t_yano
2010-02-24 00:46:46
返信する
RTする
ふぁぼる
どのフェーズのテストまでTDDを回せるのかって言う話なのかしら。QAテストまでTDDのサイクルに入れようという壮大な計画だったり。自分はユニットと機能くらいで閉じてるけど。
quicy
2010-02-24 00:51:34
返信する
RTする
ふぁぼる
ブログ書いた。勢いで書いてろくに推敲していないので、色々おかしい:TDD談義への反応に対する雑感
http://d.hatena.ne.jp/goyoki/20100223/1266939139
goyoki
2010-02-24 00:56:45
返信する
RTする
ふぁぼる
おかしいところがあったら指摘ください。恥をかく前に修正してしまいます
goyoki
2010-02-24 00:57:22
返信する
RTする
ふぁぼる
そうかー。自分は、TDDでやるべきでないレベルのテストをやってたのかー。だから話が噛み合なかったんだなー。へー。でも実際やってて、やるべきでないとは感じなかったな。
quicy
2010-02-24 01:01:52
返信する
RTする
ふぁぼる
TDDのテストは、一般的に言われる単体テストほどの網羅性は持たないということなのかな。乱暴に言えば「コードの実装が終わったら要らなくなる」感じか。コードの修正に対する退行テストは"単体テスト"レベルでやらないと信頼性がないだろうし。
findup
2010-02-24 01:08:35
返信する
RTする
ふぁぼる
TDDが品質保証をするものじゃない、という指摘って誰かしてたっけ?(少なくとも私はしてないが)
keisuke_n
2010-02-24 01:12:09
返信する
RTする
ふぁぼる
テストが含まれてるんだから、当然動作の保証はされる。TDDがすすめばある程度以上は改善される。
keisuke_n
2010-02-24 01:13:06
返信する
RTする
ふぁぼる
#article
読んでる: 「TDDはテスト手法か否か」<
http://togetter.com/li/6759
> : 先日の議論を振り返りつつ。
nsiena
2010-02-24 01:13:08
返信する
RTする
ふぁぼる
TDDって開発をするエンジニアのものなんだなと素直に思っている。で、例の議論は正直僕は頭が悪いのでよくわからない。結局頭の悪い僕らはどうすればいいのだ?!
yamashiro
2010-02-24 01:17:16
返信する
RTする
ふぁぼる
@quicy
いや、実際自分もやります。テストファーストしたり、後付けで単体テスト(と自分は思っている)レベルのテストメソッドを追加したり。そういうのもTDDでOKですよ、とのことでした。ただ「ベーシックなTDD」だとはいえないようです。実装の駆動目的には、ちょっと豪華すぎますね
nobeans
2010-02-24 01:17:34
返信する
RTする
ふぁぼる
ほとんど既出の意見の繰り返しになるけれど。ひとことで言うと、「ともみなせる」と「とみなすべきものである」は違うかな、と。
#tdd
nsiena
2010-02-24 01:17:59
返信する
RTする
ふぁぼる
件の主張は。TDD は、基本的なテスト手法の一部を利用した設計・開発手法であって。主目的はテストをすることにあるのではなく、(仕様・実装の検証をしつつ) 開発を進めることにある、ということだよね。
#tdd
nsiena
2010-02-24 01:18:14
返信する
RTする
ふぁぼる
目的からして異なるので。手法の包含関係でテスト手法か否かを論じるのは違和感。<<include>> とか <<is-a>> とかではなく、<<use>> な関係。テスト手法ではない、と断定していいと思うのだけれど。だめ?
#tdd
nsiena
2010-02-24 01:19:01
返信する
RTする
ふぁぼる
エンジニアってかプログラマのためのTDDがあって、そのときに、あんまり単体テストかくのはよくないのってのはあるんだよね。かつ、別途単体テストを書くフェーズは必要だよねって思う。もっというとTDDレベルで不安がないなら、自動でできる結合レベルのテストでもいいと思うけど
yamashiro
2010-02-24 01:19:08
返信する
RTする
ふぁぼる
テスト手法として不十分か否か、ということ自体がスコープ外なのではないかしらん。仕様の詳細化と、それとコードとの同一らしさの検証に役立つか否か、という観点しか持ってないと思ってる。
#tdd
nsiena
2010-02-24 01:19:46
返信する
RTする
ふぁぼる
単にコストと利益の問題なんじゃねーのとか思うんだけど、違うのかな。
yamashiro
2010-02-24 01:20:08
返信する
RTする
ふぁぼる
しかも、TDD→テストケース補充で品質保証をしてるんだ、という流れで、最終的な品質保証をしようとすると、組織的には異端なので理論武装を自前でやらないといけないのがつらいところ。しかも、専門的に問い詰められたら、相手を納得させられるかどうか自信はない。
nobeans
2010-02-24 01:20:13
返信する
RTする
ふぁぼる
「詳細化された仕様が適切で、かつ、コードがそれと同一と判定できる」という度合が高くなるので、結果的に成果物の品質が高くなるであろう、というだけで。
#tdd
nsiena
2010-02-24 01:20:46
返信する
RTする
ふぁぼる
だから、実装フェーズでTDDをしつつも、極端にいえばむしろTDDのテストは捨ててしまって、単体テスト・結合テストなどを普通に実施するというプロセスに落ち着くんだよなー。すくなくとも文書化されるようなプロセスとしては。
nobeans
2010-02-24 01:24:49
返信する
RTする
ふぁぼる
「TDD→単体テスト・結合テスト」あたりで、なんかうまいつなぎ方というかショートカットがないものか。できれば属人的ではなくプロセス的に確立した方法で。一応SIerなので。
nobeans
2010-02-24 01:25:51
返信する
RTする
ふぁぼる
例えば。仮に開発を滞らせるようなテストケースがあったとしたら。(条件にもよるけど) テストから省くことも有力な選択肢になりえるはず。後で検証すべき項目に加えておく、とかして。テストに引きずられてしまうのであれば、本末転倒。
#tdd
nsiena
2010-02-24 01:25:51
返信する
RTする
ふぁぼる
素晴らしすぎます QT
@goyoki
: ブログ書いた。勢いで書いてろくに推敲していないので、色々おかしい:TDD談義への反応に対する雑感
http://d.hatena.ne.jp/goyoki/20100223/1266939139
t_wada
2010-02-24 01:25:57
返信する
RTする
ふぁぼる
これは、テスト手法ではないからこそ認められる選択肢なのではなかろか。テスト手法であるならば、それが必要なテストケースならば必ず検証しなければならない、となるのでないかしら。/ ここでは、工数とかの実務上の制約は措いとく。
#tdd
nsiena
2010-02-24 01:26:32
返信する
RTする
ふぁぼる
今宵は皆スタンドアローンで TDD に対する自分の考えをつぶやくモード?
t_wada
2010-02-24 01:27:17
返信する
RTする
ふぁぼる
TDD で作られたテストケースが品質保証のテストとして *も* 有用ならば再利用すればいいし、そうでなければ捨てればいい。
#tdd
nsiena
2010-02-24 01:28:29
返信する
RTする
ふぁぼる
で、品質保証でいうところのどのテストをカバーできるの。もしくは、テストケースがどこをカバーできるのかどうやって判定するの。判定できたとして、どう再利用するの。もしくは、不足しているものが何か、どうやって特定するの。
#tdd
nsiena
2010-02-24 01:29:14
返信する
RTする
ふぁぼる
自分は、ほとんど全部のコードを赤緑で書いて、それ以降特にユニットテストの工程を必要としないようにやる方向に落ち着いてる。捨てるのはむしろテストなしで書いた仮実装コードで、テストは捨てない流。
quicy
2010-02-24 01:31:54
返信する
RTする
ふぁぼる
あえて、独白にすることで各自が注目する軸に沿った、各自の持論を垂れ流すメソッド。別に意図した訳じゃないけど。こういう多軸なトピックで一々@つけてると、お互いのポジションを確かめ合うだけで時間とパワーを使ってしまうような気がする。
nobeans
2010-02-24 01:32:21
返信する
RTする
ふぁぼる
昨夜以降の TDD 議論を
@yojik_
に少し追記していただきました。感謝。
http://togetter.com/li/6759
t_wada
2010-02-24 01:32:24
返信する
RTする
ふぁぼる
自分も実践上はほぼ同じ感じです。RT
@quicy
: 自分は、ほとんど全部のコードを赤緑で書いて、それ以降特にユニットテストの工程を必要としないようにやる方向に落ち着いてる。捨てるのはむしろテストなしで書いた仮実装コードで、テストは捨てない流。
nobeans
2010-02-24 01:34:31
返信する
RTする
ふぁぼる
この流れなら言える。 第10回 xUnit Test Patterns 読書会 03/27 13:00 から川崎市産業振興会館にて。 TDD やテストの議論に興味ある方はぜひ参加ください。
http://atnd.org/events/3331
t_wada
2010-02-24 01:44:10
返信する
RTする
ふぁぼる
テストに関してもっとつっこんで考えたいから、実践アジャイルテストって本は早く読まないとだな…
yamashiro
2010-02-24 01:46:11
返信する
RTする
ふぁぼる
でもいったん書いちゃったテストは(他のコード同様)独り立ちして、勝手に育っていくので、読みやすく書きたい。TDDではどっちのコードもきれいになる。テストが読みやすいコードは、レビューによる品質の評価もしやすい。メンテや、不要テストの除去もたぶんラク。
yattom
2010-02-24 01:50:24
返信する
RTする
ふぁぼる
今の僕がかかわってるプロジェクトの開発の半分ぐらいの人はTDDで開発してる。で、品質は異常に高いと主観的に思う。で、個人的に課題は、結合テスト?機能テスト?が自動化できてないなと。ようは、正常系をSeleniumでテスト化しないといけないだろうと思ってる
yamashiro
2010-02-24 01:52:05
返信する
RTする
ふぁぼる
「TDDはテスト手法か否か」<
http://togetter.com/li/6759
> を読んでいて。恥ずかしなら画、「反証テスト」に変な引っ掛かり方をして、誤解釈してしまっていたとかいう。先の一連のそれは、その辺を見直してメモしてたついでに出てきたものだったりする。
#tdd
nsiena
2010-02-24 02:39:23
返信する
RTする
ふぁぼる
某先生語録「テストで品質があがるわけではない。確認できるだけ」
bohnen
2010-02-24 02:51:06
返信する
RTする
ふぁぼる
TDD議論を読みふけってしまったけど、やらなきゃいけない仕事から逃避するのに丁度いい逃げ口上になってしまった。仕事やらねば。TDDってのは個人に属して、テストってのは組織に属するというところが論点がかみ合わないところじゃないだろうか。
bohnen
2010-02-24 03:00:58
返信する
RTする
ふぁぼる
@bohnen
TDD は個人に属するものなの? チームで共有されるものではないのかしらん。
nsiena
2010-02-24 03:02:11
返信する
RTする
ふぁぼる
@
nsiena
メンバーの能力と価値観が揃っていればそう考えてもいいと思います。現実はそれを狙って構成するのは結構難しいですね。僕のチームでは無理。
bohnen
2010-02-24 03:05:30
返信する
RTする
ふぁぼる
@bohnen
揃ってないなら揃えればいいじゃない、っと。つ[ペアプロ+ペア交代] / 言うは易し ^^;
nsiena
2010-02-24 03:10:39
返信する
RTする
ふぁぼる
個人か、組織かというより開発者か、QCか、というふうに考えてもいいかも
bohnen
2010-02-24 03:10:49
返信する
RTする
ふぁぼる
@
nsiena
その難しさを端的にわかってもらうには、研究室(D5もM1もB4も混在)の開発レベルを揃えることを想像してもらうといいと思います :-)
bohnen
2010-02-24 03:12:43
返信する
RTする
ふぁぼる
仕事から逃避したいのか、また読みふけってしまった。なるほど、僕はあえてTDDはテスト技法でないと言いたい派だな。テスト技法と言ったときの弊害が大きいので、むしろテストとTDDとを混ぜるなと主張したい。
bohnen
2010-02-24 03:30:42
返信する
RTする
ふぁぼる
ブログ更新: TDDは品質担保のためでは無い?
http://bit.ly/ccQ4cB
findup
2010-02-24 03:57:40
返信する
RTする
ふぁぼる
@goyoki
何を言いたかったのかが良く分かりました。信頼性や性能のテストのことだったんですね。ただ、コンテキストの問題と言うより、品質保証担当者がやるテストって言う「役割」の話と、品質保証そのものの「目的」「活動」を混同してる問題だと思います。
yumotsuyo
2010-02-24 06:20:53
返信する
RTする
ふぁぼる
開発者が自分でコードをかいたものをシステムテストと同じように基準を設けたりするのは確かに無理があると思うし、テストを完璧に準備してからコードを書かないといけないっていうのも無理があると思います。なので、後で見やすく、追加しやすくしておけば良いのでしょう。それも同意。
yumotsuyo
2010-02-24 06:24:49
返信する
RTする
ふぁぼる
けど、それ以前の問題も多い。
yumotsuyo
2010-02-24 06:25:05
返信する
RTする
ふぁぼる
デベロッパーテスト、カスタマーテスト、QAテストって切り口は、要はテスト戦略の1パターンです。この布陣で、開発者は、設計レベルの機能性や保守性、顧客は製品としての機能、QAは信頼性や性能をテストして、全体的に品質を保証するってことじゃない?
yumotsuyo
2010-02-24 06:31:19
返信する
RTする
ふぁぼる
最終的にいいものができるよう、バランスをとってコーディネイト出来てれば良い話で、それぞれにはそれぞれのやり方があって当然だと思います。
yumotsuyo
2010-02-24 06:33:29
返信する
RTする
ふぁぼる
TDDはテスト手法なのか? 議論。(
http://togetter.com/li/6759)
ポパーの反証主義でいうところの「反証」って言葉をそのまま使うのは不用意な気がした。ポパーあれは科学と疑似科学の線引きにかかわる話で、コードの検証との類似はあるが別の話、だと思う。
skoji
2010-02-24 06:35:24
返信する
RTする
ふぁぼる
@goyoki
読みました。よくまとまっていますねー。大勢の人に読まれると思うので今のうちに「などと読んでいるテストの定義は」は「などと呼んでいるテストの定義は」に直しておきましょう。
akiyama924
2010-02-24 06:40:12
返信する
RTする
ふぁぼる
goyokiさんも品質保証を知らないっぽい。保証=基準を満たしていると証明する。TDDでは計測しない=保証できない
#tddnet
QT @
nsiena
:TDD談義への反応に対する雑感
http://d.hatena.ne.jp/goyoki/20100223/1266939139
biac
2010-02-24 06:43:15
返信する
RTする
ふぁぼる
TDDはコードがtestableになって安心して開発を進めることのできる開発手法であってテスト技法そのものではないけど、testableで安心感を得るためにはある程度テストコードに網羅性が必要で、そういう意味で品質にも寄与するよ、って言えばいいんじゃないのかなぁ。
wtnabe
2010-02-24 06:44:56
返信する
RTする
ふぁぼる
@goyoki
読んでいる→呼んでいる。という誤字は置いておきます。TDDでやりたいことや、目指しているものは、分かります。では、品質保証の人達が求めていることは、どのように実現するのでしょうか? それが書かれていれば、良いと思います。
mkoszk
2010-02-24 06:48:26
返信する
RTする
ふぁぼる
「最初から網羅してなくても始められるよ、大丈夫」と言ってあげられるか否か、という問題のような気がする。ただ実際最初は苦労するけどw 自分も「ちゃんと実践できてる」とは言わないし。「以前よりテストしやすくてメンテしやすいコードが書けるようになった」とありのままを言う。
wtnabe
2010-02-24 06:51:47
返信する
RTする
ふぁぼる
"TDDは割に合う具体的な実装手法" "ロールを跨ぐ議論では他への敬意必要"RT
@goyoki
: TDD談義への反応に対する雑感
http://d.hatena.ne.jp/goyoki/20100223/1266939139
hiranabe
2010-02-24 06:52:58
返信する
RTする
ふぁぼる
@goyoki
一部の優秀な技術者が実施しているTDDではなく、よく無い人達が実施しているTDDを対象にしています。日本において、TDDをやったというプログラムには、多くのバグが残っています。従来の単体テストに比べて、多いケースもあります。この課題に対する見解を聞きたいのです。
mkoszk
2010-02-24 06:56:37
返信する
RTする
ふぁぼる
品質に寄与しない技法ってなにかなあ。
m_seki
2010-02-24 06:57:52
返信する
RTする
ふぁぼる
「品質保証」は、品質を上げることではない。品質を計測して、一定の品質を持っていることを、顧客に対して証明すること。
#tddnet
biac
2010-02-24 06:58:59
返信する
RTする
ふぁぼる
@mkoszk
それはもうひとつのテストファーストって書いてあるような気がするのですが。
akiyama924
2010-02-24 06:59:24
返信する
RTする
ふぁぼる
@goyoki
TDDはテストでないとするならば、バグを取るために、何をやっているのかを示たら、誤解はなくなります。TDDを批判しているのではありません。TDD以外のどんな方法を採用して、バグを取るのかを知りたいのです。
mkoszk
2010-02-24 07:00:07
返信する
RTする
ふぁぼる
個人的にはTDDとバージョン管理は意識を変える必要があるという意味で同じだと感じてる。最初はやっぱ面倒。でも慣れるとないとやってられない。TwitterやiPhoneと一緒。「何が面白いの?」「やってみりゃ分かるって!」「やるのがメンドイんだって。」
wtnabe
2010-02-24 07:03:12
返信する
RTする
ふぁぼる
書こうとしたものが書けたかどうかが知りたいのか、役に立つもの(あの人が欲しかったもの)が書けたかどうか知りたいのか‥
m_seki
2010-02-24 07:05:54
返信する
RTする
ふぁぼる
TDDがダメだとは誰も思ってなくて、TDDでやるとバグがないんです、みたいな宣伝を心配してるんじゃないすかねえ。もうそんなこと言ってる人はいなくなったかもしれませんが、大昔はそれっぽいタイトルの本や宣伝が流行ってましたから。
m_seki
2010-02-24 07:09:06
返信する
RTする
ふぁぼる
TDD の話はマーケティングと論理性を分けるのがいい。Kent Beck は業界切ってのマーケターでありアーティキュレーション上手。
hiranabe
2010-02-24 07:10:52
返信する
RTする
ふぁぼる
テストコードが使い捨てじゃなくて再利用可能になった点がすごくでかかったのを思い出した。
wtnabe
2010-02-24 07:13:24
返信する
RTする
ふぁぼる
結局似たようなことは以前からやってたな、という人にとってはメリットもデメリットも限界も想像できる範囲を超えない。当たり前の話だけど。
wtnabe
2010-02-24 07:18:37
返信する
RTする
ふぁぼる
「TDDはテストとして意味ないんでしょ」とか「TDDで全部解決するんだって?」とか思われるのが心配っていうのは分からなくもない。そういう短絡的な思考する人はたぶんコード書いてなくて決裁権のある人だから。
wtnabe
2010-02-24 07:29:50
返信する
RTする
ふぁぼる
そういう人を内部的に騙すためにわざとそう言っちゃうのはアリな気がする。外部から騙すのはNGだけど。
wtnabe
2010-02-24 07:32:23
返信する
RTする
ふぁぼる
いや、ソフトウェアテストとしては意味ないよ?
m_seki
2010-02-24 07:32:49
返信する
RTする
ふぁぼる
TDDってxUnitで自分が書こうとするもののゴールを書いて進む行為だよね?また違うの?xUnitのこと?それともxUnitで書かれたテストケース?
m_seki
2010-02-24 07:37:28
返信する
RTする
ふぁぼる
あるいはもっと広くて、テストによって駆動された開発全て、だとしたら、それはテストによって駆動された開発だもんなー。うちのチームはそうだ。それはテストじゃない。チームの活動。きっと品質と関係ある。
m_seki
2010-02-24 07:40:19
返信する
RTする
ふぁぼる
TDDって、コンパイルする言語でいうところの、コンパイルは通りました!みたいな感じじゃない?もうちょっと品が良いかもしれないけど。プロトタイプ宣言すると品質あがるんですよね、みたいな。
m_seki
2010-02-24 07:44:17
返信する
RTする
ふぁぼる
そういうわけで、コンパイルする言語を使ってたので、Cucumberみたいな粒度のテストケースにしてた。TDD的な正義はわからないけど、そうしないと旨味がなかったから。
m_seki
2010-02-24 07:46:23
返信する
RTする
ふぁぼる
@m_seki
TDDの説明とするならば、そこに進化的設計の要素が欲しい気がします。つまりテストを足場にして設計を改善する
kkd
2010-02-24 07:56:30
返信する
RTする
ふぁぼる
型にはいり、そして破り、離れるという守・破・離という段階が重要な分野はいろいろあって、たぶんソフトウェア開発もそう。なんだけど、肝心の守るべき型が、それほど安定していないのが困りものなんだよな。
skoji
2010-02-24 07:59:53
返信する
RTする
ふぁぼる
この感覚はすごくある RT
@m_seki
: TDDって、コンパイルする言語でいうところの、コンパイルは通りました!みたいな感じじゃない?もうちょっと品が良いかもしれないけど。プロトタイプ宣言すると品質あがるんですよね、みたいな。
yattom
2010-02-24 08:38:55
返信する
RTする
ふぁぼる
@mkoszk
TDDをやった結果バグが多くなるという状況は考えていませんでした。TDDそのものを上手にできないとか、誤解しているというのでなければ、どうしてそうなってしまうんでしょうか。
yattom
2010-02-24 08:46:46
返信する
RTする
ふぁぼる
@yattom
TDDそのものの問題ではなく、TDDはここまでって境界をひいてしまうことで、誰も関与しないグレーゾーンが出来てしまい、最後のテストでバグが出続ける現象が 起きてしまうのだと思います(実話)。
yumotsuyo
2010-02-24 09:04:58
返信する
RTする
ふぁぼる
@goyoki
具体的なイメージで話をすると伝わるかもしれません。まずは品質管理の立場の人になってみます。品質管理の人の多くは、バグ密度(規模あたりのバグ数)を気にします。単体テストにおけるバグ密度は、1000ステップあたりいくら、みたいなものです。
mkoszk
2010-02-24 09:14:47
返信する
RTする
ふぁぼる
@goyoki
TDDはバグ密度は測れません。そのため、品質管理の人達は、納品されたソフトウェアの品質がよいものかどうかを定量的に測れないので困ります。そして、受け入れテストをすると、彼らの常識では考えられないぐらいバグがでることがあります。
mkoszk
2010-02-24 09:17:14
返信する
RTする
ふぁぼる
@goyoki
納品物を差し戻しても、TDDをやったと言っている人達は、新たなバグを取れないのです。品質管理の人達が指摘をしたバグを修正することはできますが、品質管理の人達が求めている品質にすることができないのです。
mkoszk
2010-02-24 09:19:09
返信する
RTする
ふぁぼる
@goyoki
彼らは、TDDの価値、良さ、目的を否定しているわけではありません。ただ、TDDをやったと言う人達の作った納品物の中には、受け入れられないレベルのものがあり、その説明を求めて答えてくれない(開発者が品質管理の文脈で説明できない)ので、問題だと言っているのです。
mkoszk
2010-02-24 09:22:49
返信する
RTする
ふぁぼる
@goyoki
誤解をしてほしくないのですが、TDDを否定しているわけではありません。ただ、ブログを読む限り、TDDの目的、価値について書かれているのですが、品質管理の面でどうするのかが書かれていないのが気になっているのです。
mkoszk
2010-02-24 09:24:29
返信する
RTする
ふぁぼる
@yattom
TDDをやったからバグが多くなったと言っているのではありません。「TDDを実施したので、品質指標値(バグ密度)を提出できません。」と言う開発者のプログラムに多数のバグが入っているケースがかなり見受けられます。その原因はTDDをちゃんとやれていないのかもしれません。
mkoszk
2010-02-24 09:28:58
返信する
RTする
ふぁぼる
なるほど。RT
@mkoszk
:
@goyoki
TDDはバグ密度は測れません。そのため、品質管理の人達は、納品されたソフトウェアの品質がよいものかどうかを定量的に測れないので困ります。そして、受け入れテストをすると、彼らの常識では考えられないぐらいバグがでることがあります。
skoji
2010-02-24 09:29:55
返信する
RTする
ふぁぼる
@yattom
僕の仕事は品質管理ではありませんが、彼らの立場からすると、TDDを否定しているわけではなく、もしTDDのやり方が良くないのであれば、何を見れば良くないことが分かるのかを知りたいのだと思います。
mkoszk
2010-02-24 09:30:59
返信する
RTする
ふぁぼる
@yattom
従来、彼らが使っている品質指標値(バグ密度など)以外で測定できるのであれば、それを指標値にすれば良いだけなので、品質管理からの問題提起は少なくなると思います。
mkoszk
2010-02-24 09:33:55
返信する
RTする
ふぁぼる
@skoji
.
@mkoszk
さんのいわれるような、TDDやってるけどものすごく品質がひくいケースは、品質管理の文脈理解以前に、おそらくTDDとして致命的にまちがってます。それを解決するのが本質ではないかとおもいます。
skoji
2010-02-24 09:36:22
返信する
RTする
ふぁぼる
とはいえ開発者も、品質管理の文脈で会話できなくてはいけないですね。
skoji
2010-02-24 09:37:31
返信する
RTする
ふぁぼる
そこで、JUnit Max ですよ。RT:
@yattom
: この感覚はすごくある RT
@m_seki
: TDDって、コンパイルする言語でいうところの、コンパイルは通りました!みたいな感じじゃない?もうちょっと品が良いかもしれないけど。プロトタイプ宣言すると品質あがるん
holic
2010-02-24 09:38:32
返信する
RTする
ふぁぼる
@mkoszk
さん経由で「TDD談義への反応に対する雑感(テスト駆動開発を取り巻く誤解等)」を読んだ。「開発、品質、テストが協調しあうのはとても大事なことだけれど、それだけにこういったロールをまたがる話題では相手の世界を尊重する視点が欠けてはならないと思う。」は良い言葉だね。
YasuharuNishi
2010-02-24 09:39:46
返信する
RTする
ふぁぼる
でもね、こんな経験を思い出したんだ。
YasuharuNishi
2010-02-24 09:40:12
返信する
RTする
ふぁぼる
知り合いに、小さい頃お家があまり裕福でなかった方がいた。僕が知り合ったときはとても金持ちだったのだけれど。
YasuharuNishi
2010-02-24 09:40:49
返信する
RTする
ふぁぼる
TDDで欠陥密度はかれ、っていわれても本質的に無理というか無意味ってのもあるなあ。
skoji
2010-02-24 09:40:53
返信する
RTする
ふぁぼる
彼女は小さい頃、バターをほとんど食べられなかったんだそうな。安価に手に入るマーガリンばかり。だからマーガリンをバターと呼んでいたそうだ。そしてバターを「本バター」と呼んでいたとのこと。
YasuharuNishi
2010-02-24 09:42:16
返信する
RTする
ふぁぼる
マーガリンをバターと呼び、バターを本バターと呼ぶ。彼女の中では整合性が取れており、全く混乱が無い。しかし聞いている僕は、マーガリンはバターではないよ、と思っていた。バターにはバターの良いところがあり、マーガリンにはマーガリンの良いところがあるからだ。僕は、彼女を可哀想だと感じた。
YasuharuNishi
2010-02-24 09:44:22
返信する
RTする
ふぁぼる
TDDのテストにはTDDのテストの良いところがある。一般的な単体テストには一般的な単体テストの良いところがある。TDDのテストが一般的なテストで無いならば、テストという用語を使うべきではない。マーガリンをバターと呼ぶべきではないように。
YasuharuNishi
2010-02-24 09:49:11
返信する
RTする
ふぁぼる
@mkoszk
なるほど、わかりました。品質保証のための指標(のひとつ)が使えなくなるという形で、開発者と品質保証担当のあいだにギャップができてしまうんですね。「TDDというプロセスの実施品質」を測りたい、という気持ちでしょうか。
yattom
2010-02-24 09:50:21
返信する
RTする
ふぁぼる
TDDのテストが「TDDはコーディングを進めるための手段であり、テスト設計を主要な目的としていない」のであれば、TDDのテストは単に「コーディング促進技術」的な名前を付ければよいと思う。なぜわざわざ、目的の違う技術の名前をつけるのだろうか。そうすれば両者とも幸せだろうに。
YasuharuNishi
2010-02-24 09:51:11
返信する
RTする
ふぁぼる
最近の TDD の話題は、そもそも TDD のとらえ方が人によってずれているから発散しちゃってるのか。僕も開発者と単純に TDD と云っちゃうときはただのテストファースト開発について使ってるからなぁ…。TDD ムズかしい…。
hotchpotch
2010-02-24 09:52:00
返信する
RTする
ふぁぼる
いつも思うが、アジャイルの人達は素晴らしい思想を持っていて、それを高いレベルで具現化しているのに、なぜテストとかトヨタとか、他のドメインの用語を使って自分達を表現したがるのだろうか。もっと自分達の誇りを持って、適切な名前付けをすればよいのになぁ、と思う。
YasuharuNishi
2010-02-24 09:53:01
返信する
RTする
ふぁぼる
とはいえ、かくいう僕も、もしかしたらバターとマーガリンの違いを理解していないのかもしれない。可哀想なのは、僕の方かもしれない。
YasuharuNishi
2010-02-24 09:53:46
返信する
RTする
ふぁぼる
@yumotsuyo
どこまでがTDDの領域で、どこからがテストの領域、という認識が合ってないということでしょうか。。。これもまた「TDDは品質保証の手段ではない」という考え方をすれば、そもそもテストはテストで(TDDじゃないとき同様)やるよね、となるように思います。
yattom
2010-02-24 09:54:11
返信する
RTする
ふぁぼる
大事なことは、みんな書いているが、TDDのテストでどこまでできて、どこからができないのか、単体テストとの包含関係や相違点、共存の方法、切り分けのタイミングをどうすればよいのか、を議論することだと思う。そうすれば、みな幸せだし、何より議論していて楽しい。
YasuharuNishi
2010-02-24 09:55:55
返信する
RTする
ふぁぼる
TDDの良いところは、よく分かっているつもりです。2000年頃(もう十年前か)、TEFの勉強会【21世紀のテストシリーズ】で、XPとTDDを知って、すぐに使ってみました。うちの会社でも早い方だと思います。今までのコーディングとは異なり、気持ち良さというか、心地よさを感じました。
mkoszk
2010-02-24 09:58:09
返信する
RTする
ふぁぼる
マーガリンを普及するために「バターには3種類ある。マーガリンを理解するためには、バターという言葉のイメージを変えよう」と叫ぶのは自由だ。マーガリン屋さんも、バター屋さんも、そう理解できるのであれば、特に問題は生じないだろう。バター屋さんだって、マーガリンを排斥したいわけではない。
YasuharuNishi
2010-02-24 09:58:29
返信する
RTする
ふぁぼる
@mkoszk
私もよく、TDDで品質がどれだけ上がるのか、上がったのかと聞かれて、基本的には答えに窮しています。コードカバレッジ、コートとテストの量の比率、レビュー回数や結果ぐらいで、相手も困った顔になります。
yattom
2010-02-24 10:00:17
返信する
RTする
ふぁぼる
僕の指摘事項は、プログラム経験に焦点を当てているのではなく、契約というか、受け入れテストというか、そういう類のことに焦点を当てています。別の言い方をすると、TDDを理由にやるべきことをやらない人達に対して、どうすればよいのかを考えたいのです。
mkoszk
2010-02-24 10:00:32
返信する
RTする
ふぁぼる
しかし考えておくべきなのは、マーガリン屋でもバター屋でもない、お客さんがどう認識するかだ。バターと書いてある商品を買ってマーガリンが入っており、注意書きをよく読むと「うちのマーガリンはバターと呼んでいます」と書いてあったら、怒るだろう。トランス脂肪酸を避けたい人には迷惑だ。
YasuharuNishi
2010-02-24 10:02:00
返信する
RTする
ふぁぼる
TDDで「テスト完了」と聞いた人は、上位層に行けば行くほど、何かしらの(一般的な)テストが完了したと感じると思う。アジャイルの人達がテストの定義を変えるのは自由だが、アジャイルのテストは一般的なテストを意味していないということを、上位層にもきちんと説明すべきだ。
YasuharuNishi
2010-02-24 10:05:04
返信する
RTする
ふぁぼる
でも私が付き合いのある組織のアジャイルな人達(割とジュニアな人達)は、TDDをするために「単体テストをきちんとやるわけですから品質が上がりますよ」という説得をしている。シニアなアジャイルの人達は、口をつぐんでいることが多い。エキスパートなアジャイルの人達は、きちんと説明するね。
YasuharuNishi
2010-02-24 10:06:45
返信する
RTする
ふぁぼる
アジャイルの人も、テストの人も、上位層も、みんな誤解しないような棲み分けのマップができるといいよね。どちらの強みも弱みもきちんと書いてあるような。世界を前向きにしよう。それが僕たち技術者のミッションだ。
YasuharuNishi
2010-02-24 10:08:02
返信する
RTする
ふぁぼる
@mkoszk
この文脈で、実施されていない「やるべきこと」とはなんでしょうか?
skoji
2010-02-24 10:08:45
返信する
RTする
ふぁぼる
というわけで、長くなりましたが、
@goyoki
さんのブログの感想でした。
YasuharuNishi
2010-02-24 10:11:43
返信する
RTする
ふぁぼる
品質やテストの人たちが、TDDを基本的に価値があるものと捉えて、そのうえでソフトウェア開発全体を良くするためにどうすべきか考えていることがわかった。今日の嬉しい驚き。驚いてたら失礼ですね。
yattom
2010-02-24 10:13:10
返信する
RTする
ふぁぼる
昨夜からはあまり追えていないですけど、 TDD の話はどこまで伝播したのだろう。 togetter で皆で共有できるといいなと思います。
t_wada
2010-02-24 10:18:23
返信する
RTする
ふぁぼる
おお西さんだ! 鈴木さんも! すごいな。
t_wada
2010-02-24 10:21:04
返信する
RTする
ふぁぼる
結局TDDの話は参戦するタイミングを逸してしまったが、こうして各分野のエキスパートが前向きに議論を行う様は横から見ていてとてもエキサイティングだ。以前から思っているのだが大きな意味で顧客に満足を提供するためにある技術なのだから、変に壁を作らなくとも良いはずだよね。
ikedon
2010-02-24 10:25:35
返信する
RTする
ふぁぼる
対立の構造を作るのは技術ではない、どちらかというと人の問題だ。
ikedon
2010-02-24 10:28:14
返信する
RTする
ふぁぼる
TDDは開発者視点の仕様&検証で、単体テストはユーザ視点の仕様&検証。だから、両者は完全に一致しないが補い合う部分も多い。結果、ユーザから見た品質は向上されるのは自然。…とかどうですか?
#tdd
katzchang
2010-02-24 10:29:52
返信する
RTする
ふぁぼる
ユーザが明示的に要求していること、暗示的に要求していること。開発者が明示的に実現していること、暗示的に実現していること。主に4つの要素がある。とか論じてる人はいないですか?
katzchang
2010-02-24 10:33:44
返信する
RTする
ふぁぼる
そろそろ、TDDBCホクリクの合宿のテーマなんかも考え始めたいところ。
katzchang
2010-02-24 10:34:54
返信する
RTする
ふぁぼる
TDD はあの TDD の本に書いてある事以外の何かがあるんだろうか。だとしたら学ばねば。
higepon
2010-02-24 10:44:09
返信する
RTする
ふぁぼる
@babie
そのあたり理解生半可なんで違ってたら指摘下さると 嬉しいです。プログラミングは科学理論ではないのだから、反証主義をそのまま適用するのはなんかちがうぞ? というのが言いたかったことです。
skoji
2010-02-24 11:03:57
返信する
RTする
ふぁぼる
.
@babie
あ、ちょっと間違えた。プログラムは科学的な仮説ではないのだから、そもそも反証主義的検証の対象ではないのでは? です。
skoji
2010-02-24 11:06:53
返信する
RTする
ふぁぼる
InfoQっぽい。「さらっと」!! RT
@ryuzee
: ガンガレ! RT
@kawaguti
: TDDの議論をさらっと英語に直してブログとかに書けると、日本からの情報発信ということになるのだろうか
katzchang
2010-02-24 11:16:39
返信する
RTする
ふぁぼる
@babie
なるほど。納得しました。「テスト対象コード」が問題を解決する方法の仮説とみなせるのか、というところがちょっともやもやしますが、自分で考えてみます。
skoji
2010-02-24 11:18:44
返信する
RTする
ふぁぼる
TDDもそうだけど、複数の目的があるプラクティスを説明するのが難し過ぎる...
nawoto
2010-02-24 11:38:13
返信する
RTする
ふぁぼる
@akiyama924
ご指摘ありがとうございます!
goyoki
2010-02-24 11:46:00
返信する
RTする
ふぁぼる
@yumotsuyo
すみません。その点は理解不足で読解ができていなかったかもしれません。見直してみると結構根が深そうなこちらの勘違いのようですので、少々考えさせてください >品質保証担当者がやるテストって言う「役割」の話と、品質保証そのものの「目的」「活動」を混同
goyoki
2010-02-24 11:46:28
返信する
RTする
ふぁぼる
@biac
エントリをもう少し読み込んでみてください。その品質保証の定義はエントリで言う「一般的な品質保証」に含まれるもので、Kent Beckや和田さんがTDDの文脈で使用していた品質保証のテストと定義が異なります。
goyoki
2010-02-24 11:47:05
返信する
RTする
ふぁぼる
@biac
エントリでは品質保証をKent Beckや和田さんの定義で使用していますが、その一般的な品質保証と定義が違いすぎて混乱の元となっているため、最初の用語の定義づけ部分とTDDに対する開発者のコメント引用以外では使用していません。
goyoki
2010-02-24 11:47:14
返信する
RTする
ふぁぼる
@biac
また「開発者のいう品質保証の定義」の項目で重ねて一般的な品質保証の定義と意味が大きく異なると明記しているので、間違った印象は与えないと思います。
goyoki
2010-02-24 11:47:30
返信する
RTする
ふぁぼる
@mkoszk
(見識不足のため誤認識もあると思いますが)TDDでは「自分の手元の作業で欠陥が混入したか」という視点で欠陥を洗い出すため、現実としてテスト担当の方が行うような詳細なバグ出しのテストを、TDDで補間できると保証できないように感じます >何をやっているのか
goyoki
2010-02-24 11:49:10
返信する
RTする
ふぁぼる
@mkoszk
例えばテストコードと上流仕様のトレーサビリティは通常考慮されませんし、網羅的な欠陥検出を行うようにテストコードを再設計するという視点も、TDDの説明ではあまり語られていないように感じます。
goyoki
2010-02-24 11:52:05
返信する
RTする
ふぁぼる
@mkoszk
そのためTDDをバグだしのテストとして運用してしまうと、その通り欠陥密度が増えるような事態になるリスクは十分に考えられると思います。「TDDを理由にやるべきことをやらない」状態もかなりリスクを伴っていると感じます
goyoki
2010-02-24 11:52:14
返信する
RTする
ふぁぼる
@mkoszk
TDDで品質向上というのは、手元のミスの検出が品質に寄与することに依存するように感じます。とても曖昧なので、例えば和田卓人さん等は、TDDで具体的に品質が向上すると説明する代わりに、「感覚的に」「副作用的に」品質が向上するといった表現を使われることがあります
goyoki
2010-02-24 11:54:18
返信する
RTする
ふぁぼる
@mkoszk
永田敦さんや森崎さんからも同じ指摘を受けましたが、その視点でみれば、TDDはリスクを持っていると思います。なので話が逸れるかもしれませんが、(レビューやテストコードの共有といった形による)一般的なソフトウェアテストとの協調や相互補間はとても重要な課題だと思います
goyoki
2010-02-24 11:55:08
返信する
RTする
ふぁぼる
TDDは失敗するようなテストを書くというテストの記述方針が明確なのが良いかも。ぼんと製品コードがあって、そりゃあ仕様からブラックボックステスト書けば良いのだろうけど、何からはじめていいのかわからなかったり。TDDは次なにすれば良いか迷うことが無い。
exKAZUu
2010-02-24 12:00:01
返信する
RTする
ふぁぼる
@babie
なるほどなるほど。そうだとすると、その方法論はTDDとは直交するかもしれませんね。
skoji
2010-02-24 12:00:40
返信する
RTする
ふぁぼる
反証テストという言葉を持ち込むのが適切なのか分からないのと、それを正しく理解しているか分かってないので。気になったことを書き出しておく。適当な推測なので、真偽は知らぬい。(^^;
#tdd
nsiena
2010-02-24 12:08:43
返信する
RTする
ふぁぼる
@yattom
品質管理者とプログラム開発者の価値観が違うというのは置いておいて、TDDで作られたプログラムの狭義の品質(バグが少ない/ない)をどのように評価するかが論点の一つです。
mkoszk
2010-02-24 12:08:54
返信する
RTする
ふぁぼる
反証テストは、「命題はX → Xと矛盾するYを仮定 → Yは起こりえない → ゆえに、Xは正しいはず」ということの検証。有り得ない状況を想定して、それを否定することで、少なくともその点において命題が偽でないことを検証する。
#tdd
nsiena
2010-02-24 12:09:29
返信する
RTする
ふぁぼる
@yattom
バグ密度が有効な指標値かどうかは議論のあるところですが、組織の中で使われているものを無くしたとき(TDDでバグ密度と言われても困りますよね)、それに変わる基準または指標が欲しいのだと思います。
mkoszk
2010-02-24 12:10:33
返信する
RTする
ふぁぼる
ソフトウェアテストでの対応していそうな検証は。(A)「Fの仕様はX → Fが失敗するはずの条件Yを検証条件として設定 → y∈Yは実際にエラーになる → ゆえに、Xは正しいはず」。
#tdd
nsiena
2010-02-24 12:11:45
返信する
RTする
ふぁぼる
(B)「Fは仕様Xを実装している → Fが成功するはずの条件x∈Xをテストケースとして設定 → xが失敗する → ゆえに、Fは仕様Xを実装していない → 即ち、FないしXは間違い」。
#tdd
nsiena
2010-02-24 12:11:56
返信する
RTする
ふぁぼる
(A) と (B) は検証していることが違う。反証テストは (B) の方なのだろな。
#tdd
nsiena
2010-02-24 12:12:12
返信する
RTする
ふぁぼる
TDDは、品質保証に似た振る舞いをするけど、品質保証ではありません。で良いのかな…教典読み直してみるか。
niku_name
2010-02-24 12:12:21
返信する
RTする
ふぁぼる
@yattom
「TDDを実施したのでバグが少ない」という組織/個人もあると思いますが、TDDをやってもバグが減っていない、逆に増えるという組織/個人もあります。このとき、品質管理者の立場で考えると、どのように対応したらよいのか分からなくなってしまいます。
mkoszk
2010-02-24 12:13:16
返信する
RTする
ふぁぼる
@yattom
ですので、TDDを推し進めている方々に、品質管理者を納得させられる、何かを示唆してもらいたいと思っています。
mkoszk
2010-02-24 12:15:01
返信する
RTする
ふぁぼる
(A) が対応するテストは。そのコードを利用する際には起こり得ない状況を想定して、*正しく* 失敗することを確認することで、「それを受け入れないという仕様」が正しいことを検証する。
#tdd
nsiena
2010-02-24 12:15:36
返信する
RTする
ふぁぼる
(B) に対応するテストは。これ <
http://twitter.com/babie/status/9481804700
> みたいな、途中段階のコードの正しさの検証ばかりかしら。最終的なコードに対する反証テストは、TDD で扱われるべきものだろか。
#tdd
nsiena
2010-02-24 12:15:41
返信する
RTする
ふぁぼる
@goyoki
TDDの品質面での寄与として、入出力に目を向けさせるというものがあります。初心者プログラマは、ロジックの実行順序に目を向けやすく、データの加工、つまり、入力と出力の対応関係を考慮外にしてしまい、仕様の実装漏れが起きやすくなります。そういうミスを未然に防いでいます。
mkoszk
2010-02-24 12:21:50
返信する
RTする
ふぁぼる
ところで。(A) は反証テストではない、という理解が正しいとしたら。境界条件のテストの多くは、実証テストと反証テストの組合せではなく、実証テストのみでされるのでないかしら。
#tdd
nsiena
2010-02-24 12:22:18
返信する
RTする
ふぁぼる
@YasuharuNishi
コメント大変恐縮します。その通り用語の定義や命名にも問題はあると思います。TDDでもテストという命名は問題があり、混乱回避のためTDDをBDDと言い換えようといった議論があります
http://bit.ly/YW1lL
goyoki
2010-02-24 12:22:27
返信する
RTする
ふぁぼる
受理可能な入力範囲の内部にある境界のテストは、実証テストの組で境界の両側を検証。入力範囲の端点という境界のテストは、内側の実証テストのみ。反証テストは範囲外の値でのテストということになるけれど、当然仕様外の未定義動作だから無意味なのでやらない。ということでいいのかしら。
#tdd
nsiena
2010-02-24 12:22:37
返信する
RTする
ふぁぼる
@goyoki
だからTDDの良い面、すばらしい面を踏まえつつ、他の技術/アプローチを取り入れられる余地を残していただけると、よいと思っています。
mkoszk
2010-02-24 12:23:19
返信する
RTする
ふぁぼる
受理可能ではないのでエラー/例外送出にするというコードになっていて、それを検証するのだとすれば。そういう動作をするという仕様のテストになるので。やはり実証テスト、と。
#tdd
nsiena
2010-02-24 12:23:51
返信する
RTする
ふぁぼる
すみません。数が多いため、残りの返信等は夜頃行おうと思います
goyoki
2010-02-24 12:24:41
返信する
RTする
ふぁぼる
QAの人たちの主張はわかるんだけど、顧客「に対して」機能の質を保証するって考え方は*契約的*で、そこはAgileの顧客「と一緒に」サービスの質を考えていくって*ビジネス・パートナ*スタンスとは相容れない気がするんだよな
mitim
2010-02-24 12:26:52
返信する
RTする
ふぁぼる
@skoji
質問の意図に正しく答えているかどうか不安なのですが、「TDDで作成されたプログラムおよびプログラム群の品質情報を提供する」が、実施されていない「やるべきこと」だと思っています。この場合の品質情報は狭義の品質、つまりバグの有り無しの情報で、まずは十分だと思います。
mkoszk
2010-02-24 12:29:01
返信する
RTする
ふぁぼる
@goyoki
う~ん、読みが浅かったかな… 「軽快にテストコードを書かないとTDDのメリットを殺してしまう」から「TDDは品質保証を目的としない」という結論に至ることを認めている、と読んだんだけど。メリットを殺してもTDDであることに変わりはなく、目的にできちゃうよね。
biac
2010-02-24 12:29:37
返信する
RTする
ふぁぼる
@mkoszk
ありがとうございます。うーむ「バグありなしの情報」をTDDで開発したコードで提供するのは不可能、ですよね? 何か誤解してる気がするのですが、いかがでしょう。
skoji
2010-02-24 12:30:40
返信する
RTする
ふぁぼる
WF界隈でもUnitTestが定着しつつあって、「だったらTDDで」とやりだす開発者が増えてきたことで、やっぱりある*違い*の部分でこういった談義が発生してきてるんだと認識してる
mitim
2010-02-24 12:31:10
返信する
RTする
ふぁぼる
@mkoszk
補足です。誤解してるのは私のほうだと思ってます。
skoji
2010-02-24 12:32:13
返信する
RTする
ふぁぼる
@goyoki
TDDやってる側が「目的としない」・「考えない」・「扱いたくない」と思ってるだけでは弱くて。QA部隊に言い返すべきは「TDDでは品質管理項目の計測をしないから、品質保証はできない。必要なら何を計測すべきか言ってくれ、TDDとは別作業になるけど。」
#tddnet
biac
2010-02-24 12:34:34
返信する
RTする
ふぁぼる
TDDは、場を作りたいのだと思う。ばをつくるために、一見矛盾した説明しにくいプラクティスを導入するのは、常套手段。意図された、ダブルバインド。
holic
2010-02-24 12:38:45
返信する
RTする
ふぁぼる
TDD議論で思うのは、品質の属性のどこを重要視するかだと思うのさ。 結局xDDに始まる駆動開発は、品質の特定の属性を担保するものとして考えられるんではないかなと。
hikaruworld
2010-02-24 12:39:41
返信する
RTする
ふぁぼる
TDDでは、たくさんテストするけどバグは0件なんだよね。レッドが残ってたらチェックインできんのだから。でも、「バグ検出率 0%」だからといって、潜在バグ数(未発見のバグの推定値)がゼロということにはならない。品質保証に使えない。
#tddnet
biac
2010-02-24 12:41:43
返信する
RTする
ふぁぼる
@mitim
プロとして負うべき品質保障の範囲と、協働によって達成すべき品質保障の範囲を顧客と話し合わなければならないのだと思う。「情報公開をもとめるが、全てを許すわけではない」via "ヒューマンエラーは裁けるか?"
holic
2010-02-24 12:43:06
返信する
RTする
ふぁぼる
@skoji
品質管理の方々の立場では、統計的にいうとプログラムにはある程度バグが混入していて、レビューやテストで除去するという考え方があります。そのため、いわゆるテストを実施したとき、そのバグ検出率を知りたくなります。
mkoszk
2010-02-24 12:45:31
返信する
RTする
ふぁぼる
TDDやると品質は上がる。その後の工程で品質保証するためのコストは下がる。だから、品質保証活動の一環としてTDDを推奨することは、大いにありえると思う。 「TDDは品質保証に掛かるコストを下げる」 (その意味で「TDDは品質保証に寄与する」)
#tddnet
biac
2010-02-24 12:46:51
返信する
RTする
ふぁぼる
気をつけなきゃいけないのは、潜在バグ数を出してしまうと現在あるどんなテスト手法も品質保証できない、ということになってしまいます。 RT:
@biac
: (略)…潜在バグ数(未発見のバグの推定値)がゼロということにはならない。品質保証に使えない。
mitim
2010-02-24 12:47:37
返信する
RTする
ふぁぼる
@skoji
ところが、TDDで行った「テスト」の場合、バグ検出率という概念そのものがナンセンスなので、品質管理者に提供できる情報が一つ少なくなります。TDDというプロセスを採用することによってバグが少なくなるという傾向が見えれば、問題は少ないはずです。
mkoszk
2010-02-24 12:47:47
返信する
RTする
ふぁぼる
100% 品質というものが達成不可能な領域だからこそ、QA界隈でも*計測*が手法の主流になっている側面があるわけで
mitim
2010-02-24 12:49:15
返信する
RTする
ふぁぼる
@skoji
しかし、現実には「TDDを実施しました。だからバグ密度は出しません。」という組織/個人が納品したプログラムには、バグが多かったりするケースがあります。そういうとき、何を見れば品質をコントロールできるのかを見たいのです。
mkoszk
2010-02-24 12:50:53
返信する
RTする
ふぁぼる
@skoji
一つのアプローチとしてテストケースの質を計るというものがあります。別の言葉を使うと、テスト設計のレビューという言い方になるかもしれません。ただ、このアプローチもTDDをやっている方々には受けが良くないので、何か別の情報が欲しいと思っています。
mkoszk
2010-02-24 12:52:32
返信する
RTする
ふぁぼる
ごめん、わからない。潜在バグ数=0 じゃないと品質保証したことにならない? QT
@mitim
: 気をつけなきゃいけないのは、潜在バグ数を出してしまうと現在あるどんなテスト手法も品質保証できない、ということになってしまいます。 RT:
@biac
: (略)…
biac
2010-02-24 12:56:06
返信する
RTする
ふぁぼる
文脈からそうとれるように感じたので。潜在バグをどれだけ抑えるかは、テスト手法だけでなくあらゆる手法の課題ですよね;-) RT:
@biac
: ごめん、わからない。潜在バグ数=0 じゃないと品質保証したことにならない?
mitim
2010-02-24 13:00:17
返信する
RTする
ふぁぼる
@mkoszk
丁寧にありがとうございます! 問題の在処を理解しました。特に品質がわるいときは、簡単な話じゃないですね。
skoji
2010-02-24 13:00:59
返信する
RTする
ふぁぼる
あらゆる手法の「果たそうとしている」課題、かorz
mitim
2010-02-24 13:01:26
返信する
RTする
ふぁぼる
あー、待って待って。ごめん。私はQAとQCをゴッチャにしてるかもしれない。宿題… (汗;
biac
2010-02-24 13:01:48
返信する
RTする
ふぁぼる
今のところ、(A)「テストケース数」と(B)「質(観点の網羅性や確認手段)」あたりが品質面でのメトリクスに使えて、かつ、現実的かなぁ。(B)は大変に思えるけど、サンプリング方式、かつ、ソースコードレビューの一環でテストケースも合わせてチェックすれば、それほどでもないような。
nobeans
2010-02-24 13:02:31
返信する
RTする
ふぁぼる
潜在バグと顕在化について、量子力学をアナロジーにしたくなる症候群orz
mitim
2010-02-24 13:03:52
返信する
RTする
ふぁぼる
.
@mkoszk
さんの一連のツイートが非常にわかりやすくて、かつ、SIerという組織における自分の関心事に近くて、非常にためになります。
nobeans
2010-02-24 13:05:37
返信する
RTする
ふぁぼる
品質管理者を納得させるためには、品質管理者の考え方がわからんとだめだね。
skoji
2010-02-24 13:08:30
返信する
RTする
ふぁぼる
TDD TLで品質保証ってワードが散見されるが、人によって「品質」のさしている領域がかなり異なる感じがする。ここがぶれたままでよいのかね
orangesignal
2010-02-24 13:11:25
返信する
RTする
ふぁぼる
ああそうか、TDDやっぱり品質"保証"を考慮に入れるのはおかしいな。要件をハッキリ確定するとか、シンプルな設計にするとかと同じく、作っていく過程での品質作りこみなのよな。
bash0C7
2010-02-24 13:16:53
返信する
RTする
ふぁぼる
テスト=試験工程=品質保証って考えがちだったが短絡的だったね
bash0C7
2010-02-24 13:20:31
返信する
RTする
ふぁぼる
TDDの議論から、「開発者が開発し、品質保証担当者が品質を保証する」という役割分担の問題点と、その次の段階が見えてくるといいんじゃないかと思った。
yattom
2010-02-24 13:28:36
返信する
RTする
ふぁぼる
品質という言葉の定義がなんであれ、「(TDDとかで)品質を上げよう」とする開発者と、「(必要なだけ)高い品質にしよう」という品質保証の人、これだけ近い目標を持っている人たちのやってることが大きく違うというのはおかしい。
yattom
2010-02-24 13:31:50
返信する
RTする
ふぁぼる
ここ二日くらいの TDD に関する議論を togetter する場合はこの前の議論の後ろにつなげるんじゃなくて新たに立てた方が良いですかね?
http://togetter.com/li/6759
t_wada
2010-02-24 13:34:39
返信する
RTする
ふぁぼる
@t_wada
新たに立てて欲しい派です。
Qooh0
2010-02-24 13:35:47
返信する
RTする
ふぁぼる
まだ読んでない方はぜひ読んでみてください「TDD談義への反応に対する雑感(テスト駆動開発を取り巻く誤解等)」by
@goyoki
さん
http://bit.ly/aJ2uLq
t_wada
2010-02-24 13:38:37
返信する
RTする
ふぁぼる
@t_wada
別の方がうれしい派です。トピック自体も違う気がします。
nobeans
2010-02-24 13:39:48
返信する
RTする
ふぁぼる
了解、 togetter する場合はこの前のにつなぐんじゃなくて新たに立てた方が良さそうですね。
t_wada
2010-02-24 13:42:02
返信する
RTする
ふぁぼる
ソフトウェアとしての品質ではなく、プログラミングとしての品質ってなんだろう?コーディング規約の遵守度とか複雑度とか静的解析した結果とかになるのかな? *Tw*
cactusman
2010-02-24 13:44:43
返信する
RTする
ふぁぼる
@t_wada
ひと段落してたと思うので、分けて、相互にリンクするのが嬉しそう。前のまとめを読んだ人が、差分がどこからか探さなくてもすむと思うし。
nsiena
2010-02-24 13:45:52
返信する
RTする
ふぁぼる
とかいって、
@t_wada
さんのTLからピックアップすると相当大変だと思うので、無理せずに「あとは各自よろしく方式」で良いと思います
nobeans
2010-02-24 13:46:28
返信する
RTする
ふぁぼる
TDD談議をみると人によってテストと言ってる内容が違うように見える。TDDのテストってプログラマがソースを書くためのテストやプログラムの振る舞いを確認するテストであってユーザーオペレーションに基づくテストではないとおもうんだけどなぁ
regtan
2010-02-24 13:48:01
返信する
RTする
ふぁぼる
@cactusman
定義によると思うけど、ソフトウェアとしての品質は「きっちり動いている、パフォーマンスやリソースもバランスがいい」こと、プログラミングとしての品質は「コードの巧みさ、見やすさ、よりよい方法の選択(アルゴリズムなど)」かなーという漠然としたイメージ。
keisuke_n
2010-02-24 13:48:03
返信する
RTする
ふぁぼる
@regtan
「テスト」には確認対象による違いが一杯あるからきっちり限定しないと範囲が広すぎるね
koizuka
2010-02-24 13:49:32
返信する
RTする
ふぁぼる
@keisuke_n
その辺の定義がしっかりしてないと議論が変になるのかな、と。TDD(CIも)自体、プログラミングの品質がメインの話じゃないかと。 *Tw*
cactusman
2010-02-24 13:51:37
返信する
RTする
ふぁぼる
TDDで書かれたソースが結果として、お客さんの求める品質に合致しているのであれば、TDDで品質保証が出来たといえる。けど、TDDのゴールって動く綺麗なソースを作るってことなんだから、必ずしもお客の求める品質を保証するわけではない
regtan
2010-02-24 13:52:25
返信する
RTする
ふぁぼる
まだまだ続いている TDD に関する議論は本当に貴重です。皆でまとめませんか? 全員編集可にしてありますので、お気軽にどんどん追加しちゃってください
http://togetter.com/li/6923
t_wada
2010-02-24 13:54:59
返信する
RTする
ふぁぼる
@cactusman
TDDの本質と現場での目的が必ずしも一致していないのもTL上で議論されているところなんでしょう。現場では「負の資産を残さない」ことと「品質を上げる」ことがメインでしょうね。
keisuke_n
2010-02-24 13:56:03
返信する
RTする
ふぁぼる
@KKI
おお、それは面白い視点。 > 「バグ曲線が嘘をつかないこと」を目指す *Tw*
cactusman
2010-02-24 13:56:43
返信する
RTする
ふぁぼる
@koizuka
@t
-wadaさんの言葉を借りるならばDeveloperTesting CustomerTesting QATestingという分類が出来てTDDでいうところのテストはDeveloperTestingを指すそうです
regtan
2010-02-24 13:56:43
返信する
RTする
ふぁぼる
@cactusman
プログラミングの品質は感覚的にはメンテナンス性とほぼ同義かなぁ メンテナンス性が複雑度や規約遵守度と繋がる感覚
decoymaker
2010-02-24 13:59:53
返信する
RTする
ふぁぼる
自分としてはCIでチェックできるものが興味対象で、それって何?というところ。 *Tw*
cactusman
2010-02-24 14:00:05
返信する
RTする
ふぁぼる
@cactusman
ウチは特にそれなりの規模のプログラムをチームで開発してるので、メンテナンス性をかなり高く見てるかも 俺が今担当してるのも約10年メンテしてる(かつこれからも拡張される)ものだし
decoymaker
2010-02-24 14:04:28
返信する
RTする
ふぁぼる
TDDで品質保証までしようとするととても苦しい場面がある。マルチスレッドプログラムでデッドロックしないことの保証なんてTDDでやろうとしたらしんどすぎる。TDDのテストでたまたまデッドロックするのを見つけたりはするけど、それはデッドロックしないことの保証にはならない。
ledsun
2010-02-24 14:10:57
返信する
RTする
ふぁぼる
http://d.hatena.ne.jp/goyoki/20100223/1266939139
自分はTDDは身についてなくて、まだ単に不安をなくすために自動テストを使っているだけに過ぎないなあ。
piro_or
2010-02-24 14:15:42
返信する
RTする
ふぁぼる
@goyoki
そうですね。
@goyoki
さんの仰るように、TDDが本質的にテストでないのであれば、設計の語彙を使った方がよいと思います。
YasuharuNishi
2010-02-24 14:21:09
返信する
RTする
ふぁぼる
でも僕がTDDに期待しているのは、単体テストを先に設計することで、詳細設計/コーディングで考慮すべき事項をすべてあらかじめ思いつくことができて、一発完動のコードを書けるような、開発者が自らを賢くすることのサポートなんですよね。
YasuharuNishi
2010-02-24 14:23:50
返信する
RTする
ふぁぼる
要するに、TDDで賢くなる、ってことなんです。リズムももちろん重要なんですが、賢くなる方がもっと重要だと思います。単にビヘイビアを考えるだけでは、そのコード部分で考慮すべき事項をすべて挙げられるとは限らないような気がしてなりません。
YasuharuNishi
2010-02-24 14:25:34
返信する
RTする
ふぁぼる
その意味では、すなわち考慮すべき事項をすべて考慮できていればバグなんて入り込まないわけですから、パス網羅なんてどうでもいいんですよね。
YasuharuNishi
2010-02-24 14:27:16
返信する
RTする
ふぁぼる
@YasuharuNishi
狭義のTDDでは、先に単体テストを設計しません。狭義のTDDは、コードの前にテストケースを書きますが、そのテストケースは不安を解消させるために記述するもので、テスト設計はやらないという選択をしていると聞いています。リズムが崩れるのでやらないと。
mkoszk
2010-02-24 14:32:03
返信する
RTする
ふぁぼる
仕様書に書いてないことたくさんテストしてるけどなぁ。
akiyama924
2010-02-24 15:21:25
返信する
RTする
ふぁぼる
@mitim
なるほど、たしかに。これでどうかな f(^^; ⇒ 「TDDでは潜在バグ数の推定は出来ない。すなわち、品質保証でよくある潜在バグ数の保証は、TDDの範疇では不可能」
biac
2010-02-24 17:36:40
返信する
RTする
ふぁぼる
@biac
「TDDは品質保証を目的としない」は開発者のコメント引用であって、和田さん定義の品質保証です。biacさんのいう品質保証の定義ではありません。引用外ではその部分は「最初から一般的な単体テストを書くべきではない」として「品質保証」の用語をあえて使っていません
goyoki
2010-02-24 17:45:51
返信する
RTする
ふぁぼる
@biac
品質保証の用語については、仕事でテストを手がけますし、テスターのコミュニティやJSTQB等で学ぶ身ですので、重々知っているつもりです。ちょっと心外なところもあるので、後でエントリに追記したいと思います
goyoki
2010-02-24 17:48:12
返信する
RTする
ふぁぼる
@biac
あと
@biac
さんは品質保証の意味を取り違えているように感じます。(JSTQBやIEEE等で定義される)一般的な「品質保証」は品質要件を基準以上に満たしていることを保証することを意味するのであって、どれぐらいバグが許容されるかは品質要件と基準によって変わります
goyoki
2010-02-24 17:49:09
返信する
RTする
ふぁぼる
@biac
例えば品質要件と基準をISO認証パスとするならば、そのQAでは認証に対する妥当性検証をパスすることに焦点が置かれます。そこでは認証に全く無影響なバグは潜在的・顕在的を問わず別に見逃しても品質保証に影響を与えません
goyoki
2010-02-24 17:49:46
返信する
RTする
ふぁぼる
@biac
なので品質要件によってはTDDのテストコードのみでも品質保証が可能です(テストコードが品質要件を内包しているかが基準)。そうした背景があるので、エントリでは「TDDでは品質保証としない」という表現はさけ、「目的としない」「考えない」といった曖昧な表現を使っています
goyoki
2010-02-24 17:51:23
返信する
RTする
ふぁぼる
TDDで書くテストと品質保証のテストをベン図使って書いたら解決しそうなのだけれど。
bobbyjam99
2010-02-24 18:14:22
返信する
RTする
ふぁぼる
「TDDはテスト手法ではない」がやはり正しいと確信した。というのはプログラミングにデバッグはつきものではあるが、プログラミングがデバッグではないように、isとhasの差がそこにある。
nagise
2010-02-24 18:52:42
返信する
RTする
ふぁぼる
TDD議論がいつまでたっても進んでない気がするのは、実例がないからだろうか
showyou
2010-02-24 19:08:52
返信する
RTする
ふぁぼる
自分がプログラマだと思ってる人も、テストエンジニアだと思ってる人も、自分の分野じゃないと信じたい辺りのプラクティスをやってみたらいいのに。
m_seki
2010-02-24 19:11:09
返信する
RTする
ふぁぼる
そういうわけで、id:goyokiに無責任な応援コメントを送った。
m_seki
2010-02-24 19:21:55
返信する
RTする
ふぁぼる
ここは了解。私の誤読でした > QT
@goyoki
:
@biac
…引用外では…「品質保証」の用語をあえて使っていません
biac
2010-02-24 19:38:44
返信する
RTする
ふぁぼる
どういった品質要件が計測できると考えていますか? > QT
@goyoki
:
@biac
なので品質要件によってはTDDのテストコードのみでも品質保証が可能です(テストコードが品質要件を内包しているかが基準)。…
biac
2010-02-24 19:41:20
返信する
RTする
ふぁぼる
TODO:帰ったらTDDのビックウェーブ乗る
kenchan
2010-02-24 20:25:59
返信する
RTする
ふぁぼる
経営者がビジョンやサービスを示し、顧客が機能を示し、開発組織がソフトウェアの仕様を示し、開発者が実装を示し、エンドユーザーはそれらのディティールによって価値をみいだす。と乱暴に定義すれば、皆さんの行っている品質保証とはどこの品質を確認する為の行為だろうか?
orangesignal
2010-02-24 20:54:39
返信する
RTする
ふぁぼる
しかし、これだけTDDに関して、各者各様、様々な立場の人達の発言がデータベース化できたという事実だけですごいと思う。色々意見はあるとおもうけど、これだけの量がまとまって眺められるってだけですごい。
nobeans
2010-02-24 20:55:12
返信する
RTする
ふぁぼる
キャッチアップしたい! QT
@biac
: ありがとうございます♪ 追加33人! 読み応え沢山 f(^^; > QT
@t_wada
: TDD TL の議論をひとまず 33 人分ほど足しました。「TDD について」
http://togetter.com/li/6923
tomohn
2010-02-24 20:56:20
返信する
RTする
ふぁぼる
「エンドユーザーはそれらのディティールによって価値をみいだす。」⇐これの品質保証はリリース前に100%網羅することは不可能なはずだが、現状やれていると感じている方も多いのかな?僕はTDDがこの辺の品質担保できないのではなく他の現状プロセスでも実は全く担保できていないと思う
orangesignal
2010-02-24 21:00:51
返信する
RTする
ふぁぼる
xUnitなアーキテクチャで品質保証可能なものとプロセスとして品質保証の対応が必要なものとがごっちゃになっている気がする
orangesignal
2010-02-24 21:02:20
返信する
RTする
ふぁぼる
コードや機能、サービスなどの「示されたもの」については「テスト」することで品質保証できると私は感じる。
orangesignal
2010-02-24 21:03:59
返信する
RTする
ふぁぼる
TDDについていろんな意見があるが、ひとつだけ強く言っておきたいこと。書いたテスト「実装終わったら捨て」ちゃダメ! ぜったい! メンテナンスするときどうするんだよ!
skoji
2010-02-24 21:05:02
返信する
RTする
ふぁぼる
RT
@t_wada
: 「TDD について」ひとまず編集終わり。まだ漏れがありますが、これから移動なのでしばらく触りません。興味のある方はどんどん編集してください。貴重な記録になると思います。
http://togetter.com/li/6923
tomohn
2010-02-24 21:05:09
返信する
RTする
ふぁぼる
エンドユーザーは僕らの想像を超えた使い方をするものだし、それを担保するのを普通の品質保証と一緒にしてはいけないと思う
orangesignal
2010-02-24 21:07:41
返信する
RTする
ふぁぼる
TDDの話題とあまり関係なくなっちゃてる気もするが、まあ続けます。
orangesignal
2010-02-24 21:09:06
返信する
RTする
ふぁぼる
@skoji
単体テストをxUnitで書いてれば、単体テストのテストケースを使う事ができるかと。テストが自動化されてないなら、確かに消しちゃダメ。
nobeans
2010-02-24 21:10:41
返信する
RTする
ふぁぼる
TDDで品質保証できるという人は、ファイル読み込みとかDB接続とかもxUnitでテスト書いて保証するの?テストコードが環境依存になり易いし、ならないように書くのにExcelをDB代わりにするとか面倒くさい。なら今まで通りの単体試験する方が好み。
ledsun
2010-02-24 21:13:20
返信する
RTする
ふぁぼる
品質保証って語が非常に曖昧で混乱の元凶なのか。僕的頭の中のイメージは、コード品質保証(xUnit)、機能品質保証(xUnit or 結合テスト)、サービス品質保証(xUnit or 結合テスト)、ディティールの一部品質保証(QA or βリリース)
orangesignal
2010-02-24 21:13:55
返信する
RTする
ふぁぼる
@nobeans
ん? 伝わってない気がします。わたしがいいたかったのは、TDDの過程で、xUnit使って書いたテストを捨てちゃダメ、ってことです。
skoji
2010-02-24 21:16:13
返信する
RTする
ふぁぼる
あとプログラマ側のひとには、品質「保証」って言葉を「バグがない証明」みたいなナイーブな意味にとらえちゃってるひともいるような。そんなことはほぼ不可能ナリよ。
skoji
2010-02-24 21:17:24
返信する
RTする
ふぁぼる
@skoji
はい。伝わってます。捨てる派の場合はその後の単体テストで別途品質保証用のテストケースをJUnitで書くと思うのです。なので、TDDで書いたやつは捨ててもかまわない、という判断があるのかと思います。後々に残る自動テストが全くないのに、TDDのテスト捨てちゃだめですよね
nobeans
2010-02-24 21:18:38
返信する
RTする
ふぁぼる
@nobeans
あ、なるほど。そういう派のことを想定してたんですね、理解しました。
skoji
2010-02-24 21:19:59
返信する
RTする
ふぁぼる
恐らく、アクターが特定されないまま単語だけが独り歩きしてるからじゃないかと思いますねぇ RT
@skoji
: あとプログラマ側のひとには、品質「保証」って言葉を「バグがない証明」みたいなナイーブな意味にとらえちゃってるひともいるような。そんなことはほぼ不可能ナリよ。
mitim
2010-02-24 21:22:33
返信する
RTする
ふぁぼる
最近は他人のコードをリファクタリングする時か、クラスを別プロジェクトで使いまわす時くらいしかTDDしてない。品質保証のためには使ってない。
ledsun
2010-02-24 21:23:25
返信する
RTする
ふぁぼる
でも、TDDのテストはそれまでの実装を駆動したんだから、やっぱりその後もきちんと有効活用したいなーという気持ちはあるんですよね・・・
nobeans
2010-02-24 21:23:57
返信する
RTする
ふぁぼる
「TDDでは品質保証できない」と、QA側から開発者に言うべきなんでしょう >
@mkoszk
: TDDを理由にやるべきことをやらない人達に対して、どうすればよいのかを考えたいのです。
biac
2010-02-24 21:25:21
返信する
RTする
ふぁぼる
先にも書いたが、「示されたもの」については「テスト」することで「示された範囲の品質保証は」できると私は思う。
orangesignal
2010-02-24 21:26:42
返信する
RTする
ふぁぼる
正常系にしろ異常系にしろ「示されなければ」「テスト」は行えないし、偶然の産物で見つかるのは課題や問題であって、テスト項目的な何かではない
orangesignal
2010-02-24 21:28:23
返信する
RTする
ふぁぼる
私も言ってます。「(現在単体テストをやってない組織では)品質が上がりますよ。」(でも、前提を上手く伝えられなかったり、言い忘れることすら… 反省) >
@YasuharuNishi
: TDDをするために「単体テストをきちんとやるわけですから品質が上がりますよ」
biac
2010-02-24 21:30:22
返信する
RTする
ふぁぼる
経験上設計してIF意識してTDDでリファクタリングしてくより、とりあえず機能を実現してからリファクタリングした方が良い設計になる。だったら最初からTDDでやるより、えぐいリファクタリングをするときだけTDDした方がテストコードが足かせにならない。
ledsun
2010-02-24 21:31:22
返信する
RTする
ふぁぼる
定義や明確化がされていないものをテストすることができないのは、コードでも機能でも、サービス、ディティールどのレベルでも一緒と思う。
orangesignal
2010-02-24 21:33:25
返信する
RTする
ふぁぼる
最近の TDD 議論についてちゃんと僕の気持ちを書いてみる
http://d.hatena.ne.jp/Yoshiori/20100224/1267015034
yoshiori
2010-02-24 21:37:13
返信する
RTする
ふぁぼる
TDDで品質を上げるテストコードを書くのは結構難しい。テストコードとソースコードを見て漏れているテストコードを思いつくには単体試験の項目出すのと同じ能力が必要。試験項目書がない分コードレビューやペアプロが重要になる。
ledsun
2010-02-24 21:39:02
返信する
RTする
ふぁぼる
示された個々の機能やサービスが正しく機能していても設計にミスがあれば不具合は発生する。最近アメリカで物議をかもしだしている某日本車のように
orangesignal
2010-02-24 21:42:35
返信する
RTする
ふぁぼる
品質保証のテストにはxUnitを使ってますか? RT
@yoshiori
: 最近の TDD 議論についてちゃんと僕の気持ちを書いてみる
http://bit.ly/bsEIvq
nobeans
2010-02-24 21:42:39
返信する
RTする
ふぁぼる
設計の漏れ、抜け、重複といった部分については、、、xUnitな話ではなくプロセスで解決する問題な気がする
orangesignal
2010-02-24 21:44:40
返信する
RTする
ふぁぼる
リリース後も継続的に開発/メンテがつづく場合、品質保証の網羅的なテストだとスローテストになるというときにはどうしたらいいんだろう。TDDの軽量テスト群をその目的のためにとっておいて使い回せばいいのかな。
nobeans
2010-02-24 21:44:59
返信する
RTする
ふぁぼる
賛成。テストケースって、外部設計(external design)の具体例だしね。 >
@YasuharuNishi
でも僕がTDDに期待しているのは、単体テストを先に設計することで、詳細設計/コーディングで考慮すべき事項をすべてあらかじめ思いつくことができ…
biac
2010-02-24 21:45:36
返信する
RTする
ふぁぼる
TDDはアーキテクチャとしての側面とプロセスとしての側面を両方とも持っているけど、TDDのみで完成されるものでもない気がする。
orangesignal
2010-02-24 21:45:56
返信する
RTする
ふぁぼる
TDDのテストは品質を完全に保証するテストではないと思う。というか、完全に保証するとテストがガチガチになって仕様変更に対応するためにコードをけずるはめになる。
a_hisame
2010-02-24 21:46:21
返信する
RTする
ふぁぼる
しかしながら、ということは品質保証のテストは「ある時間的に定まった一点」をターゲットとして記述する必要があるのではないだろうか? それも変更があった場合使い捨てられるテストにならないだろうか?
a_hisame
2010-02-24 21:47:49
返信する
RTする
ふぁぼる
@nobeans
いま、そこを自動化出来てないのがウチのプロジェクトの問題だと思ってます。
http://bit.ly/9leXeP
yoshiori
2010-02-24 21:48:28
返信する
RTする
ふぁぼる
テストはユニットテストとインスペクションで担保すべきというのはイエスでもありノーでもあるな。インスペクションで担保し続けているコードを何処でユニットテストに切り替えるべきか...
hikaruworld
2010-02-24 21:48:40
返信する
RTする
ふぁぼる
自分が知ってる品質管理は、プロセスから出てきた動くソフトウェアの出来ばえとプロセスの具合をみて、もっかいプロセスを微調整していくこと。それを何度も何度も繰り返すこと。決まった手順が守られているかとか、バグ数が妥当かなんてことはどうでもよい。
sakata_akinori
2010-02-24 21:49:56
返信する
RTする
ふぁぼる
それは一部は再利用できるかもしれないけれど、大きな変更があった場合は品質保証のテストケースを全て作り直した方が早い気がする。 (コードを対象とするテストを対象としていることに注意)
a_hisame
2010-02-24 21:50:32
返信する
RTする
ふぁぼる
@yoshiori
なるほど。そうするとTDDでできたテストだけですでにスローテストが発生してるんですね。
nobeans
2010-02-24 21:50:39
返信する
RTする
ふぁぼる
でも、まぁテスタブルなコードを書くかデバッカブルなコードを書くか、というと後者の方が比較的簡単なのは事実。むーん。
hikaruworld
2010-02-24 21:50:40
返信する
RTする
ふぁぼる
普通はメンテが続くので、その通りだと思います。RT
@nobeans
: リリース後も継続的に開発/メンテがつづく場合、品質保証の網羅的なテストだとスローテストになるというときにはどうしたらいいんだろう。TDDの軽量テスト群をその目的のためにとっておいて使い回せばいいのかな。
skoji
2010-02-24 21:51:00
返信する
RTする
ふぁぼる
自分が知ってる品質保証は、客の好むものをだすために何をつくるか?何がつくれてるか?それが客の好みか?を繰り返すこと。潜んでるバグがどれだけあるかなんてことはどうでもよい。
sakata_akinori
2010-02-24 21:51:58
返信する
RTする
ふぁぼる
個人的なスタンス表明。TDDが「テストコードを書くから」品質保証行為だ、には大反対。TDDの祖先はTry&Errorの書き方論だととらえてるから。ただし、TDDを行った結果生産されたUnitTestコードが、QAテストの礎になるんだという話なら、大いに賛成。
mitim
2010-02-24 21:52:53
返信する
RTする
ふぁぼる
なんかちょっとずつ何かがみえてきてる、そんな気がする
nobeans
2010-02-24 21:53:15
返信する
RTする
ふぁぼる
当たり前と思えるところからおさらいしてみると何か見えるのかな?
orangesignal
2010-02-24 21:53:22
返信する
RTする
ふぁぼる
「TDDはテスト手法」の人も「TDDは開発手法」の人も、プロジェクト全体としてみた場合に、どういう流れで開発してるのだろうか?全体の流れの中でTDDを見た場合にどんな位置にあるのか知りたいなぁ。僕はTDDを実践できてないので、イメージができないのです。
kaorun55
2010-02-24 21:53:43
返信する
RTする
ふぁぼる
いや完全どころか、まったく保証できんでしょう。仕様書⇒テストケースのトレーサビリティを保証する仕組みがTDDには入ってないから。 QT
@a_hisame
: TDDのテストは品質を完全に保証するテストではない…
biac
2010-02-24 21:54:15
返信する
RTする
ふぁぼる
開発者の*危ないぞ*ノウハウやシグナルは、QAの質を底上げすると思ってる。
mitim
2010-02-24 21:54:32
返信する
RTする
ふぁぼる
@nobeans
そうですね。特にDBまわりのモック化が出来なくてそこで発生しています。発表の時も言ったのですが、cayenne を使用していて Entity が結構DBと密結合になってしまっていて発生しています。モック化まで手がまわってないのも個人的には残念な点ですね。
yoshiori
2010-02-24 21:54:55
返信する
RTする
ふぁぼる
両方の考えの人で、TDDのほかのテストをどのようにやっているのか気になる。特にTDDを開発手法と考えている人がほかにどんなテストをしているのか。
kaorun55
2010-02-24 21:55:42
返信する
RTする
ふぁぼる
逆に考えてみる。。。例えばTDD適用しない状況で「品質保証」できてると本当に言えるのか?できてると思ってるだけの状況も多いはず
orangesignal
2010-02-24 21:56:34
返信する
RTする
ふぁぼる
なので、品質保証のテストコードでありつつ、コードの変更にジャマにならないという2つの要件を満たすテストがTDDで書かれるべきテストの目安なんじゃないかな? 品質保証はある意味、TDDのテストが足りない部分を補うためのパターンをとことん試す場所、としても良いのではないか?
a_hisame
2010-02-24 21:56:51
返信する
RTする
ふぁぼる
@kaorun55
うちの会社は基本WFモドキ(全工程オーバーラップでw、メソッドレベルの単体テスト抜きw)なので、TDDやってもやらなくても、次は結合テストですw
biac
2010-02-24 21:57:39
返信する
RTする
ふぁぼる
@biac
個人的には仕様で「0以上の整数を取る、取らない場合は例外を投げる」といった関数があった場合、この辺りをTDDでテストを加えると思うのですが、このテストが正しいとすれば、品質(のほんの一部ですが)を保証することになりませんかね?
a_hisame
2010-02-24 21:59:30
返信する
RTする
ふぁぼる
TDDという開発手法の先にはDDDという問題解決方法につながると信じているんで、誰か一緒にDDDの勉強しないかと言ってみたり。
hikaruworld
2010-02-24 21:59:38
返信する
RTする
ふぁぼる
ソフトウェアに求められる*品質*ってやつは、けして一定ではなくて分野によって大きく動く変数なのだから、その分野と顧客の要望とを係数に入れないで*品質*をどう保証するかっていうのは、議論がすれ違う気がするなぁ
mitim
2010-02-24 22:00:52
返信する
RTする
ふぁぼる
工程でぶったぎると、TDDは製造工程のアクティビティかつ進捗の基準にしてました
bash0C7
2010-02-24 22:01:46
返信する
RTする
ふぁぼる
.
@makotan
割とそれに近い結論かも。TDDがどうでもいいわけではなくて、品質保証は別途という点で。ただ、TDDが入ったことで品質保証のための今までのメトリクスデータからずれてしまう点をどうやって説明づけるかという課題が残る。勢いで説明したおすというのは無しの方向で。
nobeans
2010-02-24 22:02:18
返信する
RTする
ふぁぼる
あと自分的TDDとして「予測」的手法を用いて設計向上するという使い方もできると思っているんだが、あまり同じ意見の人に出会わないなぁ。
a_hisame
2010-02-24 22:03:00
返信する
RTする
ふぁぼる
同意。くどいようだけど品質の属性は意識して議論したいところ。 RT
@mitim
: ソフトウェアに求められる*品質*ってやつは、けして一定ではなくて分野によって大きく動く変数なのだから、その分野と顧客の要望とを係数に入れないで*品質*をどう保証するかっていうのは、議論がすれ違う
hikaruworld
2010-02-24 22:03:04
返信する
RTする
ふぁぼる
そこまで詳細な仕様書が書かれてれば、テストケースへのトレーサビリティを示すのもまだ楽だろうなぁ QT
@a_hisame
:
@biac
個人的には仕様で「0以上の整数を取る、取らない場合は例外を投げる」といった関数があった場合…
biac
2010-02-24 22:03:48
返信する
RTする
ふぁぼる
ケースの網羅性でいうとTDDだけだと穴だらけですわな。作った物が思った通り動くかの確認だから、思ってもみないことが無いことの確認ではない。
bash0C7
2010-02-24 22:04:10
返信する
RTする
ふぁぼる
(A)新しいメトリクスをみつける、(B)TDDを含むプロセスに対する既存メトリクスデータを溜めて補正する、(C)顧客と調整して納得してもらう、(D)その他
nobeans
2010-02-24 22:05:13
返信する
RTする
ふぁぼる
品質保証とは思ってもみないことが無いといえるかの確認ととらえてます。
bash0C7
2010-02-24 22:05:23
返信する
RTする
ふぁぼる
保証するには、まさにその「このテストが正しい」ということが言えないといけないわけですよ > QT
@a_hisame
:
@biac
…このテストが正しいとすれば、品質(のほんの一部ですが)を保証することになりませんかね?
biac
2010-02-24 22:05:52
返信する
RTする
ふぁぼる
TDDしなかったら、作ったものが思った通りにうごくかわからんがらくたしかできあがらない。
bash0C7
2010-02-24 22:06:07
返信する
RTする
ふぁぼる
@biac
しかしそれをいうと、テストそのもののテストが必要になり・・・(以下無限再帰) となりません? 故に仮定を置いたのですが。
a_hisame
2010-02-24 22:07:13
返信する
RTする
ふぁぼる
だから、「仕様書のxxは、テストケースyyに書いてあります。それはレビューして確かにそうなってると確認しました。」といったトレーサビリティで保証するわけ > QT
@a_hisame
:
@biac
しかしそれをいうと、テストそのもののテストが必要になり・・・(以下無限再帰)…
biac
2010-02-24 22:11:36
返信する
RTする
ふぁぼる
@a_hisame
ちなみに、手動の単体テストも結合テストも、もとの仕様書から正しく導かれていることをレビューしたりして確認してる (…ことになってますw)
biac
2010-02-24 22:14:16
返信する
RTする
ふぁぼる
ただ、一連のTLを読んで思ったことは、TDDのテストは確かに一部の品質保証を含む。しかしながら、実行程でいうテストのフェーズにおいてTDDのテストを使おうとしても、おそらくそのテストの粒度が人によってバラバラ(少なくとも現状では)。
a_hisame
2010-02-24 22:16:28
返信する
RTする
ふぁぼる
おー、最悪はビッグバンアタックですね! RT:
@biac
:
@kaorun55
うちの会社は基本WFモドキ(全工程オーバーラップでw、メソッドレベルの単体テスト抜きw)なので、TDDやってもやらなくても、次は結合テストですw
kaorun55
2010-02-24 22:16:56
返信する
RTする
ふぁぼる
そうなんですね。 変わらないのはバグの発生数ということでしょうか。RT:
@bash0C7
:
@kaorun55
私の場合はいわゆる試験工程はTDDしようがすまいが変わりなかったですね。
kaorun55
2010-02-24 22:17:42
返信する
RTする
ふぁぼる
これら2つを結合する方向に持って行っても良いけれど、いっそ現場のテスト工程のテスト(単体テストなど)とTDDのテストは完全に切り離して考えた方が、他の人に受け入れられやすいかもしれない
a_hisame
2010-02-24 22:17:49
返信する
RTする
ふぁぼる
そういう意味ではTDDという開発手法も柔軟性や保守性といった品質の属性を保証する一面もあると思うのさ。
hikaruworld
2010-02-24 22:19:54
返信する
RTする
ふぁぼる
@biac
いっそTDDで作られたテストと仕様書で作られたテストとで完全に切り離してしまうのもありかなと思うんですよね。 手間は増えるかも知れないけれど、品質保障者は好き勝手やれるでしょうし。
a_hisame
2010-02-24 22:20:33
返信する
RTする
ふぁぼる
製造業的視点で言うと、設計とテストを同じ人がやるなんてありえません! f(^^; > QT
@a_hisame
: …現場のテスト工程のテスト(単体テストなど)とTDDのテストは完全に切り離して考えた方が、他の人に受け入れられやすいかもしれない
biac
2010-02-24 22:21:24
返信する
RTする
ふぁぼる
@biac
同じ人がやったあと(自分の仕事がある程度正しいかを確かめた後)で、別の人がもう一度チェックする(こっちが本番のチェック)をしてもいいですよね? 先に出した自分の意見は、前者がTDDのテスト、後者が品質保証のテストです。
a_hisame
2010-02-24 22:23:54
返信する
RTする
ふぁぼる
アジャイル開発の中のTDDは、きっと「居心地」が良いんでしょうね。 >
@mitim
: 顧客に対して機能の質を保証するって考え方は契約的で、そこはAgileの顧客と一緒にサービスの質を考えていくってビジネス・パートナスタンスとは相容れない気がするんだよな
biac
2010-02-24 22:24:40
返信する
RTする
ふぁぼる
前者・後者が違う人なら、いいです。 QT
@a_hisame
:
@biac
…前者がTDDのテスト、後者が品質保証のテストです。
biac
2010-02-24 22:27:35
返信する
RTする
ふぁぼる
@nobeans
それだとテストが十分か、バグを十分に出したかという答えが難しいので、過去実績からあらかじめテスト密度やバグ密度を予想したりしています。
bohnen
2010-02-24 22:32:19
返信する
RTする
ふぁぼる
@yattom
はい、認識が合っていないです。TDDがテストじゃないって文脈だと、欠陥を見つけるためにいじわるなテストをシステムテストでやってバグがどんどこでるのは当然なのかもしれませんが、もっと早く見つけた方が効率よいんじゃないかと思うバグも多いわけです。
yumotsuyo
2010-02-24 22:32:34
返信する
RTする
ふぁぼる
@babie
有難うございます。BDD については混乱を名前を変える事で解決しようとしてる(そしてそれは似た様な事を表す別の言葉が出来て逆に混乱の元なのでは?)としかとらえていなかったのてちゃんと学んでみようと思います。
yoshiori
2010-02-24 22:33:10
返信する
RTする
ふぁぼる
ただ統計はデータの条件が異なるので困難です。web系の案件とc/sの案件を同列にする訳にもいかないですし。定量的とはいっても、目安程度で少なかったり多かったときの言い訳は定性的です(笑)
bohnen
2010-02-24 22:35:41
返信する
RTする
ふぁぼる
品質保証を目的としてTDDを行うかは戦略(意思)の問題で、少なくともテストのないコードと比較して品質は向上しているという結果は得られると思う。
exKAZUu
2010-02-24 22:35:42
返信する
RTする
ふぁぼる
@bohnen
はい。定量的に進めるにはその通りですね。ただ、例えばTDDなり自動生成なりで、実際のバグ密度が低かったときに、じゃあバグ数がたりなかったのでテスト追加します、というのが妥当とは思えなくて。バグ密度が低い理由が考えられるならそれを理由に低い数字の妥当性を説明してます
nobeans
2010-02-24 22:37:33
返信する
RTする
ふぁぼる
同意。TDDは自分だけでも行う価値はあるスキルだと思う。(もちろん協力発展が出来ないとはいっていないので注意) QT
@exKAZUu
: 品質保証を目的としてTDDを行うかは戦略(意思)の問題で、少なくともテストのないコードと比較して品質は向上しているという結果は得られると思う。
a_hisame
2010-02-24 22:37:43
返信する
RTする
ふぁぼる
少なくとも自分が使う分にはTDDは有用な技法であると感じるのでもっと学んでみたい。一方で、TDDによって引き起こされる問題もあるので、どうやってそれを解決して、どうすればより多くの人にとって有用な技法になるのかってことに興味を感じるなぁ。
exKAZUu
2010-02-24 22:40:22
返信する
RTする
ふぁぼる
"アメリカでのコンセンサスは、TDDのテストはテストとしては二義的であり、一義的には、「設計ツール」だ"
http://tumblr.com/xap6rjkxb
babie
2010-02-24 22:40:29
返信する
RTする
ふぁぼる
そう、少なくともスキルとして価値を感じるんですよね。 RT
@a_hisame
: 同意。TDDは自分だけでも行う価値はあるスキルだと思う。(もちろん協力発展が出来ないとはいっていないので注意) QT
@exKAZUu
: 品質保証を目的としてTDDを行うかは戦略(意思)の問題で、
exKAZUu
2010-02-24 22:42:14
返信する
RTする
ふぁぼる
TDDの副作用って何かある? 品質保証どうしよう?という話以外になんかデメリットはあるんだっけ。
nobeans
2010-02-24 22:42:59
返信する
RTする
ふぁぼる
いえいえ。そんなことないです。 QT
@quicy
そうかー。自分は、TDDでやるべきでないレベルのテストをやってたのかー。
yumotsuyo
2010-02-24 22:43:33
返信する
RTする
ふぁぼる
TDDをやっていて、かつ単体テストに置ける障害検出数が過去より少なかった場合、TDDによって品質があがった為と考えるか、TDDをやっているからと単体テストがおざなりになったからなのか、どうやって区別すれば良いんやろう?
uokumura
2010-02-24 22:43:34
返信する
RTする
ふぁぼる
さっき「スローテスト」が問題という話はあったけど、これはTDDに限った話ではなく、自動テスト一般の話だし
nobeans
2010-02-24 22:43:44
返信する
RTする
ふぁぼる
「TDDはテストではない」から単体テスト工程を品質保証の一環として行った場合の話。
uokumura
2010-02-24 22:44:33
返信する
RTする
ふぁぼる
@uokumura
単体テストの試験密度が過去のメトリクスデータと遜色ないのであれば、「TDDによって品質が上がった」でいいんじゃないでしょうか。試験密度があきらかに低ければ単体テストの手抜きってことで。
nobeans
2010-02-24 22:44:46
返信する
RTする
ふぁぼる
例えばね、テスト分析や設計の話でも、「そんなに早く出来ません」とか「全部の仕様を理解している時間がありません」って言う話が出るわけですよ。時間が無いとかそういう問題ですか?と言いたい。
yumotsuyo
2010-02-24 22:45:33
返信する
RTする
ふぁぼる
TLがTDDの流れなので、乗ってみる。私はテストを書く事によってプログラマの工数が減るならユニットテストは書くべきだと思う。顧客からすれば、マトモに動くシステムが納品されるのは当たり前で、それを"当たり前"にするために確認(=テスト)している。
sinsoku_listy
2010-02-24 22:45:59
返信する
RTする
ふぁぼる
「仕様を理解する時間がありません」って言っている人がテストしてたら心配になりませんか?
yumotsuyo
2010-02-24 22:46:22
返信する
RTする
ふぁぼる
全部理解出来ていないかもしれない。けど、出来ませんって人はそこで終わりますから。
yumotsuyo
2010-02-24 22:46:55
返信する
RTする
ふぁぼる
書いてから気づいた。これTDDじゃなくて、テストの自動化の話だ。
sinsoku_listy
2010-02-24 22:47:57
返信する
RTする
ふぁぼる
.
@orangesignal
@a_hisame
これは自分一人で考えたネタではないのですが。TDDにおいて記述されたテストに冗長性があると思います。(片方のテストケースがもう片方を包含している等)。その積み重ねがテストの(時間)効率性や保守性を下げる可能性があるかなと。
exKAZUu
2010-02-24 22:48:25
返信する
RTする
ふぁぼる
確認項目多くて大変だから自動化する訳で・・・みたいな事書こうとしてたのに。
sinsoku_listy
2010-02-24 22:48:46
返信する
RTする
ふぁぼる
@nobeans
カバレッジ取ったとして、例えば真面目にTDDしてたら常に100%で、ただし実装はfake itが残っちゃってる、とかですよね?で、中途なのに赤くするテストを思いついていなかった場合、おざなりな単体テストではおそらくバグを出せないかも、とか考えると…><
uokumura
2010-02-24 22:50:17
返信する
RTする
ふぁぼる
@exKAZUu
自分としての意見は「2度チェックできる分信頼性上がる」とも考えられませんか? ですね。 自分の中ではTDDのテスト=ファストテストなので、時間効率が下がるとしたらそれはTDDのテストではないと思っていますし。
a_hisame
2010-02-24 22:52:13
返信する
RTする
ふぁぼる
メソッドレベルの外部設計書や単体テスト仕様書を書けなくなるw 半分はマジで、いまの若い人たちって書いた経験がまったく無いってのが珍しくない。そんなんで、設計書からテストケースを考えられるハズもなく… (;; > QT
@nobeans
: TDDの副作用って何かある?
biac
2010-02-24 22:52:39
返信する
RTする
ふぁぼる
@yoshiori
TDDには一義的に設計・開発手法であり、二義的にテスト手法(しかし不十分)である。BDDは不完全な二義的な意味を剥ぎとって、一義的な設計・開発手法に的を絞った。というのが私の認識です。
babie
2010-02-24 22:53:21
返信する
RTする
ふぁぼる
帰宅。見事に今宵も TDD TL の模様?
t_wada
2010-02-24 22:53:42
返信する
RTする
ふぁぼる
@biac
? それはTDDを実践した結果現われる副作用ですか?
a_hisame
2010-02-24 22:54:07
返信する
RTする
ふぁぼる
周りから見たらどう映ってるのかわからないけど、自分で損してると思うくらいならTDDやらないからなー。むずかしい。
quicy
2010-02-24 22:54:33
返信する
RTする
ふぁぼる
@uokumura
カバレッジではなくて、僕が書いたのは試験密度ですね。コード1000行あたりN件の試験項目があります、というやつ。だいたい組織ごとに過去のPJの統計データがあったりして、それより多いか少ないかで試験の量が十分かどうか判断できます。
nobeans
2010-02-24 22:54:41
返信する
RTする
ふぁぼる
もちろんいい加減なテストをたくさん用意して試験密度を上げることもできるので、基本的には参考値だったりします。あ、試験項目レビューでそういうのはつぶすのかな。
nobeans
2010-02-24 22:55:17
返信する
RTする
ふぁぼる
@babie
僕も同じ認識なのですが、言葉を変える事によって二義的な意味を剥ぎとろうとした。けどそこまで普及しなく、逆に似た様な事を表す別の言葉になってしまっているのではないかなぁという認識です。
yoshiori
2010-02-24 22:57:58
返信する
RTする
ふぁぼる
なんかTDDの定義で盛り上がってるな-。TDDは「Driven」が指すように「テスト→開発」という時間軸が重要だと思う。「テスト手法」って言われているのはいわゆる時間軸を無視して期待通り動くかどうかを確認する論理的なところだと思う。着目するところが違うのだから一緒ではないだろう。
k_yanase
2010-02-24 22:58:17
返信する
RTする
ふぁぼる
.
@a_hisame
完全に重複(包含)したテストコードはあり得ますよね。テストを完全に設計してコード化するのではなく、TDDがインクリメンタルなプロセスである故、比較して品質向上に貢献しないコードが出やすいと思います。それは改善可能な性質ですから別の技術で解決したいと思います
exKAZUu
2010-02-24 22:58:29
返信する
RTする
ふぁぼる
@makotan
?? 確かに俺はまったくデバッガ使わないけど (一部では有名だよね) そんな話したの?
t_wada
2010-02-24 22:58:36
返信する
RTする
ふぁぼる
TDDやるひとは、TDDistじゃなくてTDDerなのね。てぃーでぃーでぃあー?てぃーでぃーだー?
quicy
2010-02-24 22:59:06
返信する
RTする
ふぁぼる
メソッドレベルの外部設計書を書かせている組織は、書けないヤツを教育してる。TDDが上手くいって、その設計書を書かなくなれば、教育もしなくなる。組織としては、そのスキルを失うことになる。 QT
@a_hisame
:
@biac
? それはTDDを実践した結果現われる副作用ですか?
biac
2010-02-24 22:59:13
返信する
RTする
ふぁぼる
ただ、重複したテストがどの程度問題を引き起こすのかというのはあまり実感できていないかも。でも、重複しないにこしたことはないかなーと。
exKAZUu
2010-02-24 22:59:48
返信する
RTする
ふぁぼる
@babie
僕が BDD の説明を読んだ時には常に「TDD ではこのような誤解が……」のような説明ばかりだったので、「TDD ありきじゃないと BDD は語れないんじゃない?」と感じたので偏見が入っているかもしれませんが><
yoshiori
2010-02-24 23:00:07
返信する
RTする
ふぁぼる
TDDにこだわる必要はなくて、作る機能を確認するための方法を先に用意しておくと色々メリットあるのかーぐらいに考えている。
sinsoku_listy
2010-02-24 23:00:59
返信する
RTする
ふぁぼる
網羅性とかなんとかは、どう開発するかという時間軸が含まれていないからTDDの本質とは違うと思う。そして、「いいテスト手法」を用いてTDD使えば最終品質は良くなるだろう。これは当たり前。「悪いテスト手法」を用いてTDDを使っても最終品質が良くなるわけがない。これも当たり前。
k_yanase
2010-02-24 23:01:12
返信する
RTする
ふぁぼる
@nobeans
あ、なるほど。…むむ。やっぱり、テストとともに実コードも成長するので、おそらくテスト数と実コード行数の比率ってそんなに変わんないですよね?タスクに取り掛かった最初とC/I直前でテストコードと実コードと触る比率はあんま変わんないと思いますし。
uokumura
2010-02-24 23:01:19
返信する
RTする
ふぁぼる
@yoshiori
なるほど。周知・普及が充分でないという認識ですね。BDDは日本のRuby界隈(特にRails界隈)ではmoroさんやyuguiさんの尽力により割と普及していると思うのですが、Javaなどではそうでもないですか?
babie
2010-02-24 23:03:07
返信する
RTする
ふぁぼる
@biac
別にTDDのテスト=メソッドレベルの外部設計書と思わなければ問題がないのでは?
a_hisame
2010-02-24 23:03:09
返信する
RTする
ふぁぼる
和田さんのTLをまとめたやつの中に、顧客に機能の質を保証するって考え方は契約的でパートナー的じゃないよーって話が正直嫌な気分になりました。私が言いたいのは、ソフトウェアは使ってもらってなんぼだってこと。楽しい、仲間だぜって感じでやる話じゃないってこと。
yumotsuyo
2010-02-24 23:03:50
返信する
RTする
ふぁぼる
TDD は Takuto Dame Dame とか Takuto Deeply Drunken の略だとか言ってるのは誰だッ!!
t_wada
2010-02-24 23:04:18
返信する
RTする
ふぁぼる
@exKAZUu
個人的には重複したテストも「対象領域」が違うので、狭義の重複には当らないのではないかと「考えています」。 まあ、実践or識者の意見を聞きたいところです。
a_hisame
2010-02-24 23:04:32
返信する
RTする
ふぁぼる
テストレビュワーとしてはそれはちょっと。まず有効でないテストケースが多いのではないかと疑います。RT
@nobeans
:
@uokumura
単体テストの試験密度が過去のメトリクスデータと遜色ないのであれば、「TDDによって品質が上がった」でいいんじゃないでしょうか。
bohnen
2010-02-24 23:04:34
返信する
RTする
ふぁぼる
う~ん、そうかなぁ? メソッドレベルの外部設計書をまともに書けない人にTDDやらせると、テストケースがボロボロだよ? QT
@a_hisame
:
@biac
別にTDDのテスト=メソッドレベルの外部設計書と思わなければ問題がないのでは?
biac
2010-02-24 23:05:19
返信する
RTする
ふぁぼる
TDDと品質保証の話のポイントは、詰まるところ開発者責任はどこまでかという問いに収束するように思う。で、私は「仕様書に書いてあることは全てその通りに動くことまで」が開発者の責任だと思っている。
akiyama924
2010-02-24 23:05:55
返信する
RTする
ふぁぼる
DRY原則に~という論調で片付けていたけど、具体的に不味い事例とかは欲しいな
exKAZUu
2010-02-24 23:06:12
返信する
RTする
ふぁぼる
@babie
残念ながら TDD すら周知・普及がまだまだだと思います。また、BDD の話しになっても rSpec ウラヤマシス とはなっても、Jbehave マンセー にはなっていないと思います。
yoshiori
2010-02-24 23:06:23
返信する
RTする
ふぁぼる
@yumotsuyo
そう。にしさんらしい、いい話なので騙されそうになっちゃうんだけど私は違うと思う。
akiyama924
2010-02-24 23:06:41
返信する
RTする
ふぁぼる
@biac
逆です。自分が言いたいのはTDDが適切に出来るのであればメソッドレベルの外部設計書は書けませんか? ってことを主張したい。
a_hisame
2010-02-24 23:07:39
返信する
RTする
ふぁぼる
@akiyama924
賛成 QT 私は「仕様書に書いてあることは全てその通りに動くことまで」が開発者の責任だと思っている。
yumotsuyo
2010-02-24 23:07:54
返信する
RTする
ふぁぼる
@a_hisame
ええ、そうですね~。そもそも重複の定義とはなにか、そしてその重複は本当に問題であるのかっていうのは議論の余地があると思います。ただ、テストコード削除しないとやべーよっていう状況もあるそうなんで、そういう状況に拍車をかけやすいのかなーぐらいに思ってますー。
exKAZUu
2010-02-24 23:08:08
返信する
RTする
ふぁぼる
なるほど、それは正しいと思う QT
@a_hisame
:
@biac
逆です。自分が言いたいのはTDDが適切に出来るのであればメソッドレベルの外部設計書は書けませんか? ってことを主張したい。
biac
2010-02-24 23:09:05
返信する
RTする
ふぁぼる
なんとなく BDD と TDD って言語論争とかエディタ論争とかと似ている気がしてきた
yoshiori
2010-02-24 23:09:11
返信する
RTする
ふぁぼる
@exKAZUu
そのテストコードってどっちのテストです? > TDDのテスト or 作業工程内のテスト / 自分には削除理由が思いつかない...
a_hisame
2010-02-24 23:09:33
返信する
RTする
ふぁぼる
何故、違うと思うかというと、TDDは今はマーガリンかもしれないけど、本来はバターにならなければならないと思うから。だから、「あなたはバターなんだよ」と皆が声をそろえて言うことが大切。
akiyama924
2010-02-24 23:09:38
返信する
RTする
ふぁぼる
TDD/BDD は設計/開発手法ということで FA だと思ってたんだけど、世の中的にはあまりコンセンサス取れてないのかね?
fkmn
2010-02-24 23:09:38
返信する
RTする
ふぁぼる
後、TDDはチームのスキルに依存する。仮に先輩から「TDDは現場で今から使えるか?」と聞かれても「既存コードがレガシーすぎて無理。後、圧倒的にスキルが足りない」としか回答出来ない。
sinsoku_listy
2010-02-24 23:09:39
返信する
RTする
ふぁぼる
@exKAZUu
どの様な重複が問題で、どの様な重複が問題ないのかの線引きを研究にすればいい。
a_hisame
2010-02-24 23:10:24
返信する
RTする
ふぁぼる
いろいろなところで議論されてますが、開発規模とか組織とか契約形態とかが多様で、前提や経験の共有が難しいですね。予想されたことですが…
t_wada
2010-02-24 23:10:41
返信する
RTする
ふぁぼる
俺の中でBDDは語彙や振舞いに注目してるってだけで、TDDと本質的にはなんら変わらないものだと思ってたんだけど。TDDのテストは振舞いをテストしてるんだから、TじゃなくてBだろ!的な。
ukstudio
2010-02-24 23:10:43
返信する
RTする
ふぁぼる
ただ、そうなってもらうには、なにをどう教えればいいか…? QT
@a_hisame
:
@biac
…TDDが適切に出来るのであれば…
biac
2010-02-24 23:10:50
返信する
RTする
ふぁぼる
というのは、mkoszkさんも言っていたけどTDDを使ってもバグがあまり取れないケースがあるから。そして、TDDを使って品質をかなり高めている組織もあるという事実があること。
akiyama924
2010-02-24 23:11:33
返信する
RTする
ふぁぼる
TDDって、設計技法なわけなんだけど、それは熟練者がやるからこそ大きな意味がでてくる。だから「TDDしなくてもそこそこのクラス設計ができる人」がやんないとあんまし大きな効果は得られないと思うんだなあ。もともと設計がヘタクソな人がTDDやっても、結局だめクラスが生産されちまうんだ。
zecl
2010-02-24 23:11:49
返信する
RTする
ふぁぼる
TDDはテスト手法なのか?ってあたりで盛り上がってるみたいですが、開発手法でもありテスト手法でもあるって感じかなぁ。そもそも開発したらテストしないといけないっていうのも考え直さないとだめかもね。
kuresato
2010-02-24 23:12:26
返信する
RTする
ふぁぼる
素直な考え方は、前者のやり方に問題があって、後者のやり方がベターだということでしょう。
akiyama924
2010-02-24 23:13:05
返信する
RTする
ふぁぼる
確かに難しいですが、各人のベースを明確にした上で語るのであれば全く問題ないと思いました。色々興味深すぎる。 RT
@t_wada
: いろいろなところで議論されてますが、開発規模とか組織とか契約形態とかが多様で、前提や経験の共有が難しいですね。予想されたことですが…
nobeans
2010-02-24 23:13:38
返信する
RTする
ふぁぼる
開発したものが問題ないって証明できる・担保できるものがあるなら、テストしなくてもいいかも(それが出来るかどうかは別として)
kuresato
2010-02-24 23:14:00
返信する
RTする
ふぁぼる
@zecl
個人的にはテスト可用性を満たす(=テストし易い)ようにコードを書いてくと、比較的まともになるのではないかと思っているのですが。 設計が下手>上手へのステップアップのためにも仕えませんかね?>TDD
a_hisame
2010-02-24 23:14:06
返信する
RTする
ふぁぼる
@yoshiori
TDDすらですか。であるとすれば、yoshioriさんのスライドは、正確性はともかく、最初のステップとして、意義があったと思います。私の実感はちょっと大勢と剥離していたようですね。
babie
2010-02-24 23:14:14
返信する
RTする
ふぁぼる
TDDやってUTのバグが少なかったら・でなかったらどうするのか=>どうもしない。なぜ少ないか、でなかったかを定性分析として試験報告書を出すだけです。
bash0C7
2010-02-24 23:14:17
返信する
RTする
ふぁぼる
@a_hisame
例えば、テストフレームワークにてテストコードの実行に2時間もかかっていたら問題ですよね。そういう状況を仮定した場合、重複という基準を設けて、重複を検出するという技術は役に立ちます。僕が呼ぶ重複はカバレッジを基準に判定しますが、その妥当性はまだ分かりません。
exKAZUu
2010-02-24 23:14:19
返信する
RTする
ふぁぼる
@akiyama924
もうBDDの範疇に入ってしまうかしれないですけど、TDDの場合、ユーザーストリーやざっくりユースケースと画面をベースにユニットテストや受け入れテストを仕様を洗練させる手段としても使っているのでちょっとその認識は違うのではないでしょうか?
oota_ken
2010-02-24 23:14:52
返信する
RTする
ふぁぼる
@akiyama924
そうですね。そのとおりだと思います。ただ、にしさんはそう思っているんだけどちょっと皮肉っぽく書いたのではないかと思います。
yumotsuyo
2010-02-24 23:15:49
返信する
RTする
ふぁぼる
でも大丈夫。TDDやっても単体試験工程でいくらかのバグはでます。さっきもつぶやいたけど、TDDでは作った物が思った通り動くかの確認レベルなので、たっぷり試験工程で叩き上げる余地があります。
bash0C7
2010-02-24 23:16:24
返信する
RTする
ふぁぼる
そして、私が前者の人のTest用のコードを読んだところテストの知識が不足していると感じ、後者の人の方はテストの知識があったと感じたこと。
akiyama924
2010-02-24 23:16:36
返信する
RTする
ふぁぼる
@a_hisame
テストコードは常に多ければ良いというわけではありません。そうであれば、自動生成の技術はもっと脚光浴びていい。時間効率と品質保証のトレードオフはあるのですから、同様に削除する理由も存在すると考えています。
exKAZUu
2010-02-24 23:16:59
返信する
RTする
ふぁぼる
@exKAZUu
テストフレームワークの領域次第なのでは? 例えばデイリーテストであれば、2時間程度ならばみんながいない時間帯に自動実行させることもできます。
a_hisame
2010-02-24 23:17:06
返信する
RTする
ふぁぼる
BDDは、テスト実行時に1クッション入るのと、テストコードと製品コードの間で文法脳wを切り替えなきゃならんので、今のとこ好きじゃない。 f(^^;
biac
2010-02-24 23:17:07
返信する
RTする
ふぁぼる
TDDの議論を見るとどうも品質系の人たちは今の開発から離れてしまっているからか、そもそも開発者ではないからか、仕様は実装前にきっちり決めるべきという前提の下、TDDの徐々に実装も仕様も洗練するという抜きにTDDというものを話している感があります。
oota_ken
2010-02-24 23:17:17
返信する
RTする
ふぁぼる
@nobeans
そうですね、私も諦めベースで言ったのではなくて、本当にいろんな人が TL にいるという感嘆でもあります。
t_wada
2010-02-24 23:17:24
返信する
RTする
ふぁぼる
太田さんきたー
t_wada
2010-02-24 23:18:01
返信する
RTする
ふぁぼる
なので、TDDで品質が向上するとしても、いくつかのプロジェクトを経て定量的に傾向が見えないと、定量的な基準の元で、単発のプロジェクトでは「TDDのおかげで品質が向上し、バグが少なくなっているため」という理由はなかなか難しいのではないかと。
bohnen
2010-02-24 23:18:11
返信する
RTする
ふぁぼる
@a_hisame
そうですね。設計を学ぶステップアップに利用できますね。ただ経験不足の人がやると独りよがりになってしまいがちですから、おっしゃるとおり、やはりペアプロなり識者によるレビューなりも併用する必要がありますね。
zecl
2010-02-24 23:18:33
返信する
RTする
ふぁぼる
なんか中途半端な自分はどっちもありだとは思うのですが、現実路線としてはなんとなく全体性は頭に浮かべながらも(かくたにメソッド)、徐々に足場を固めながらというアプローチの方がしっくり来ます
oota_ken
2010-02-24 23:18:42
返信する
RTする
ふぁぼる
TDDやったらUTでのバグ発生数が少なくなるので品質が担保できない。だからTDDは使えない、というのは手段と目的が逆転してるよね。
bash0C7
2010-02-24 23:18:45
返信する
RTする
ふぁぼる
そうかんがえると、TDDは生産性、モチベーションの向上でプロジェクトに寄与しているのでいいじゃない、テストは従来通りやれば。切り離して考えれば、というのが僕の考えです。
bohnen
2010-02-24 23:19:04
返信する
RTする
ふぁぼる
TDDに書くべきテストはファストテスト=一個0.1秒もかからずに終わる程度のものなので、「TDDのテストと品質保証のテスト間の重複」に限れば、重複の検出がそれほど効果的だとは思えないんですよね・・・ / 無論再利用可能だと思うが、再利用しない前提だと。
a_hisame
2010-02-24 23:19:35
返信する
RTする
ふぁぼる
@oota_ken
その場合でもテストの考え方を知っておいた方がよいでしょ? ざっくりとかリズム良くとか言うけど、私はそんなにリズムが落ちるとは思えないんだ。
akiyama924
2010-02-24 23:20:03
返信する
RTする
ふぁぼる
@nobeans
@bohnen
テストレビューは有効そう。テストの品質はレビューで担保した上で、テストの質量に対して問題の発見率を見る事で、ある程度製品のの品質も読めそうですね。
uokumura
2010-02-24 23:21:16
返信する
RTする
ふぁぼる
@a_hisame
リファクタリングを行った際にテストって実施しますよね。テストは人間が予期せぬ変更を見つけるために実施します。でもリファクタリングの1ステップ毎に2時間のテストを実施するわけにはいかない。かといって、*人手*で実施テストを限定するのもおかしい。とかもありえるかな
exKAZUu
2010-02-24 23:21:23
返信する
RTする
ふぁぼる
@akiyama924
TDDにさらに通常の意味での単体テストの観点を加えて、各種のテスト技法を用い、両方を実践している開発者から構成されるチームは強いです。
oota_ken
2010-02-24 23:22:18
返信する
RTする
ふぁぼる
必要ないとまでは言わないですが、ユニットテストがあるのでデバッガを行う頻度が非常に少ないです。私はほとんど使いません(嫌っているのではないですよ)。 QT @*****:
@t_wada
そんなことより、TDDで作ると何故デバッガが必要無くなるのか書いてよ
t_wada
2010-02-24 23:22:18
返信する
RTする
ふぁぼる
製造工程の完了基準として”単にコンパイル完”か”TDDの結果オールグリーンを維持”か、どちらが製造工程成果物として価値を見出せるかな
bash0C7
2010-02-24 23:22:34
返信する
RTする
ふぁぼる
テストはまた開発手法と兼ねる必要はないですし。自動テストもxUnit以外にQuickTestとかあり、QC専任としての人員調達もやりやすい。開発手法と混ぜると、開発者をテスト兼務とすることになり、これが本当に開発者幸せ?という気がする。
bohnen
2010-02-24 23:22:58
返信する
RTする
ふぁぼる
@akiyama924
でもさ、マーガリンはバターになりたくないんだよ。どうやら。バターになるべきだというのはバターの論理で、マーガリンの論理じゃないみたい。
YasuharuNishi
2010-02-24 23:23:05
返信する
RTする
ふぁぼる
@exKAZUu
リファクタリング単位で「TDDのテスト」は実行しますが、それ以外のテストは実行しないと思います。(多分...^^;)
a_hisame
2010-02-24 23:23:37
返信する
RTする
ふぁぼる
@oota_ken
最初から完璧になんて思ってないですよ。最初はざっくりでも、わかってきたらテストも足していけば良いのではないでしょうか?それにテスト設計することで仕様の曖昧さが見つかるってこともあるし。そう言うやり方はTDDじゃないのでしょうか?
yumotsuyo
2010-02-24 23:23:53
返信する
RTする
ふぁぼる
@a_hisame
ええ、そういう意識には同意です。テストコードの量が多すぎても保守できないという問題があるかなと。僕は、本当に消しても良いテストコードであることに納得できれば、消せるものは消すべきだと思ってます。テストコードのリファクタリング(再構成)もありえないでしょうか。
exKAZUu
2010-02-24 23:24:16
返信する
RTする
ふぁぼる
おそらくかくたにさんが悟りを開いたというwholenessを感じながらしかしボトムアップにTDDを実践するというのが、アレグザンダーの言うところのパタンランゲージの実践なのだろうとかなんとか
oota_ken
2010-02-24 23:24:21
返信する
RTする
ふぁぼる
まあもっと言うと、マーガリンのままの方がいいマーガリンがあってもいいし、バターになりたいマーガリンがあってもいいと思う。その違いを、マーガリン自身がきちんと表現し選択できて、バターはその弱みをカバーしてあげるのがいいかな。
YasuharuNishi
2010-02-24 23:24:24
返信する
RTする
ふぁぼる
@babie
私の観測範囲では”JUnitのテストコードすらない”は決して珍しい話じゃなかったです…。
bash0C7
2010-02-24 23:24:43
返信する
RTする
ふぁぼる
そういうマーガリンとバターの役割分担のマップを作りたいね、と書きましたが、もっと進めて、役割分担のパターンをいくつか提示してもいいかもしれませんね。成功例はたくさんあるわけでしょうし。
YasuharuNishi
2010-02-24 23:25:12
返信する
RTする
ふぁぼる
代用品(BDD?)でやったふりするんじゃなくってさ、本物(TDD?)を身につける方法を模索した方が良いと思います。
akiyama924
2010-02-24 23:25:22
返信する
RTする
ふぁぼる
@yumotsuyo
そうですね。僕もTDD急進派ってわけじゃないので、開発者は両方の視点を合わせて補完するというのがよいと思います。僕はスピード感より安心感を重視するというところもあるからそのアプローチは同意です。
oota_ken
2010-02-24 23:26:00
返信する
RTする
ふぁぼる
TDDって、オブジェクト指向設計やプログラミングのためのGood Practiceだと思うんですけど。TDDやってバグだししたり、単体テストの代わりにして品質あげるとか、それって違うような気がします(それが目的なら、別のことしたほうが効率ってことで)
yujispw
2010-02-24 23:26:09
返信する
RTする
ふぁぼる
@akiyama924
テストの知識も必要だけど、形式検証の知識があればもっと良いと思っています。TDDの人たちがassertを入れていく過程はダイクストラの最弱事前条件を決めていく過程とオーバーラップして私には見えているので
tfujikura
2010-02-24 23:26:25
返信する
RTする
ふぁぼる
@a_hisame
僕もしませんが(ぉ、例えば、リファクタリングの際に結合テストは不要であるというのはテストを削除しろという主張と同じぐらい乱暴かなぁと。
exKAZUu
2010-02-24 23:26:38
返信する
RTする
ふぁぼる
@exKAZUu
ありえますありえます。ただ、自分が言いたいのは「開発+TDDの行程(+ここで生産されるTDDのテスト)」と「品質保証のためのテスト」間でのお話で。これらの「」内でのくくりの重複は消すべきだと思います。
a_hisame
2010-02-24 23:26:54
返信する
RTする
ふぁぼる
@YasuharuNishi
「マーガリンのままの方がいいマーガリンがあってもいい」という理由が分かりません。
akiyama924
2010-02-24 23:27:28
返信する
RTする
ふぁぼる
@exKAZUu
しかし、別の「」間の重複は消さなくてもよいのではないかと思うのです。 無論、うまく利用できるなら別なのですが・・・・・・
a_hisame
2010-02-24 23:27:51
返信する
RTする
ふぁぼる
しかし思うのだが、コーディングと品質保証が対立概念で語られている時点で、お客様のことなんか考えてないのではないかと邪推してしまう。だって理想的には、開発者がきちんと作れれば品質保証部なんかいらないわけで。
YasuharuNishi
2010-02-24 23:28:11
返信する
RTする
ふぁぼる
あんまりTDDの話やテストの会話ってする機会すくないのよな
bash0C7
2010-02-24 23:28:20
返信する
RTする
ふぁぼる
@akiyama924
ただ、その場合もまあ分野にはよいと思いますが、今の仕様と実装を分離する(実装をカプセル化する)のが主流なオブジェクト指向言語を使った開発の場合、ブラックボックステストの技法を使うのがよいと思います。
oota_ken
2010-02-24 23:28:31
返信する
RTする
ふぁぼる
@akiyama924
代用品じゃないんだよ。味よりダイエットなんだよ。(マーガリンのままでいいと言っている)マーガリンは、あえてマーガリンでいることを選択しているんだよ。
YasuharuNishi
2010-02-24 23:29:06
返信する
RTする
ふぁぼる
TDDの問題はTDD、Test Driven Development、テスト駆動開発という名前がどれも求心力があり過ぎること。TDDのテストと品質保証のテストがなんか違うなと思っても今更名前を変えられない位のパワーがある。
ledsun
2010-02-24 23:29:11
返信する
RTする
ふぁぼる
@a_hisame
なるほどー。そういう視点で考えたことはなかったです。ちなみに、目的意識の異なるテストコード間の重複を削除しないで良い理由、というよりも削除したくない理由ってなんでしょうー?
exKAZUu
2010-02-24 23:29:45
返信する
RTする
ふぁぼる
ホワイトボックステストで実装の中身に強く依存するテストは実装の変化にもろいってらへんは
@t_wada
さんがどっかで説明していたはず
oota_ken
2010-02-24 23:29:48
返信する
RTする
ふぁぼる
TDD慣れてくるとふとデバッガ使ってない事に気付いて、それはそれで物足りないんですよね(笑) RT
@t_wada
: 必要ないとまでは言わないですが、ユニットテストがあるのでデバッガを行う頻度が非常に少ないです。私はほとんど使いません(嫌っているのではないですよ)。
skoji
2010-02-24 23:30:05
返信する
RTする
ふぁぼる
私は最近の流れをきっかけにテスト技法に興味を持つプログラマが増えればいいなと考えていますし、そういう若手が気軽に参加できる勉強会がもっと知られればいいなと考えています。壁を作るなんてもったいない。
t_wada
2010-02-24 23:30:14
返信する
RTする
ふぁぼる
そもそも、品質保証って、何だろうね。みんな、ちゃんと分かってるのかな?品質って、何だろうね。みんな、ちゃんと分かってるのかな?
YasuharuNishi
2010-02-24 23:30:15
返信する
RTする
ふぁぼる
@uokumura
理屈では!しかし、重厚プロセスをいくつかこなした上では、同じ定量値を持つプロジェクトでも、少数のできるエンジニアのプロジェクトと、人海戦術プロジェクトでは、あきらかにリリース後の障害の量に差が出ます
bohnen
2010-02-24 23:30:19
返信する
RTする
ふぁぼる
@exKAZUu
1.重複の意思伝達および検出が難しいのではないかと思う。 2.順序的にTDD>品質保証だから、保証するならば1度ではなく2度チェックしても問題ないよね? 的な考えからです。
a_hisame
2010-02-24 23:31:09
返信する
RTする
ふぁぼる
@t_wada
定期的に、もっと初心者向けな「テスト同好会」が必要
lchin
2010-02-24 23:31:14
返信する
RTする
ふぁぼる
TL 追い切れていませんが、激しく同意です!! QT
@t_wada
: 私は最近の流れをきっかけにテスト技法に興味を持つプログラマが増えればいいなと考えていますし、そういう若手が気軽に参加できる勉強会がもっと知られればいいなと考えています。壁を作るなんてもったいない。
tomohn
2010-02-24 23:31:27
返信する
RTする
ふぁぼる
あの方からコメント頂けて非常にうれしい。あのセッションは今の自分のテスト観の原点になってる
goyoki
2010-02-24 23:31:45
返信する
RTする
ふぁぼる
結局障害は論理的なコードからでるだけでなく、インフラ・フレームワーク・アーキテクチャなどコーディングのスコープ外からも発生するので、それを仕様という論理から作ったテストで見つけきることができないということかと思っている。
bohnen
2010-02-24 23:32:33
返信する
RTする
ふぁぼる
@t_wada
プログラマじゃない若手でもない人でもいいんですかね?
henrich
2010-02-24 23:32:55
返信する
RTする
ふぁぼる
YES! QT
@lchin
:
@t_wada
定期的に、もっと初心者向けな「テスト同好会」が必要
t_wada
2010-02-24 23:32:59
返信する
RTする
ふぁぼる
@YasuharuNishi
マーガリンは世代によって受け止め方が違うようなので、ストレートに書くと、BDDがあっても良いと思うけど、BDDを使った(ちょっと言葉が変ですが)人もその後でTDDでテストコードを残すべきだと思います。それは、人の手順のやり易さの問題だけだと思います。
akiyama924
2010-02-24 23:33:03
返信する
RTする
ふぁぼる
「品質保証」とかもそうなんですが、拡張性とか一貫性とか言うマジックワードも具体化しないで使うのやめて欲しい!
oota_ken
2010-02-24 23:33:16
返信する
RTする
ふぁぼる
もちろんです! プログラマとか言ってすみませんでした>< QT
@henrich
:
@t_wada
プログラマじゃない若手でもない人でもいいんですかね?
t_wada
2010-02-24 23:33:41
返信する
RTする
ふぁぼる
@akiyama924
ん~、それはBDDでリズム良く作り、単体テストをきちんとやる段階になったらxUnitで自動化せよって意味ですか?であれば賛成。
YasuharuNishi
2010-02-24 23:34:17
返信する
RTする
ふぁぼる
私は、日頃はあまりTDDで作らないが、TDDで作らないと、機能を実現するのが難しそうだと思うくらい複雑な箇所に出会うと、すぐTDDに切り替える。現実の開発においては、SQLを1個実行して、それをbeanに詰めて返して表示だけと言うレベルが多いので、TDDはオーバースペックだったり
YaSuYuKi
2010-02-24 23:34:18
返信する
RTする
ふぁぼる
@oota_ken
ソースコードのif文からMC/DCで絞り込んだテストケースはリファクタリングでif文の構造が変わると使えないけど、原因結果グラフからMCDMで絞り込んだテストケースはソースコードが変わってもつかえますよね、TDDの場合はどう考えるのだろう
tfujikura
2010-02-24 23:35:10
返信する
RTする
ふぁぼる
@a_hisame
なるほどなるほど。僕は、TDDと品質保証のテストコードって混じるもんだと思ってたので、そもそも切り分けるという発想がありませんでした。完全にテストの形態が異なる場合は、削除するためのコストが大きくなりそうですよね。あとは全部トレードオフの世界かなーって。
exKAZUu
2010-02-24 23:35:13
返信する
RTする
ふぁぼる
@YasuharuNishi
そういう意味です。
akiyama924
2010-02-24 23:35:36
返信する
RTする
ふぁぼる
開発者や経験をつんだテスターのsix senceが品質を左右するという信念がありますけど、定量的な指標ではあらわせない。なので、そういう信念は自分で貫くしかないと思って仕事してますね。
bohnen
2010-02-24 23:35:45
返信する
RTする
ふぁぼる
SQLも、簡単なものはほとんど機械生成だし、beanもSQLから生成しているし、むしろ、完全に自動化できるところまで進めるのが正しいんだろうなぁ
YaSuYuKi
2010-02-24 23:36:04
返信する
RTする
ふぁぼる
個人的には、品質管理上の視点から見たTDDと開発手法の視点から見たTDDの議論の切り分けがなされていないことも問題だと思う。品質管理の視点から考えればTDDの役割とQAテストの役割は異なることと、TDDが品質管理上メリットがあることは矛盾しないことがわかる
akasata
2010-02-24 23:36:12
返信する
RTする
ふぁぼる
@exKAZUu
前のTLまとめの議論もあったので>品質とTDDのテストを分けるかどうか。 共通する部分もあるから、最適解は重複無しなんだろうけれど、いっそ重複を含めたのが準最適解ではないかと自分では考えたので。
a_hisame
2010-02-24 23:37:07
返信する
RTする
ふぁぼる
@exKAZUu
あとは、切り分けることによって個人からの単位でTDDをスキルとして使用することができるというのも利点かなと。
a_hisame
2010-02-24 23:37:52
返信する
RTする
ふぁぼる
BDD→TDDのプロセスで、BDDで考慮漏れしたものをTDDで気付いた時に、開発者は何て思うんだろう。気付いてよかったって思うだけなのかな。それとも、なんで最初から気付けなかったんだろうって後悔するのかな。僕は後者が好き。
YasuharuNishi
2010-02-24 23:38:06
返信する
RTする
ふぁぼる
@tfujikura
もちろん、形式検証の知識も大切です。どうしたらリズム良く早い段階で品質のよいコードを生み出せるのかについて考えると良いと思います。
akiyama924
2010-02-24 23:38:26
返信する
RTする
ふぁぼる
そう考えると、私は、現実には、ほぼ完全にTDDでプロダクトコードを書いていると言えなくもないわけか
YaSuYuKi
2010-02-24 23:39:14
返信する
RTする
ふぁぼる
@sakata_akinori
グレードが違うことと(あまり広義でない)品質が違うことは区別すべきですよ。
YasuharuNishi
2010-02-24 23:39:25
返信する
RTする
ふぁぼる
TDDは品質保証じゃない。ふむ。で、ソフトウェアの品質保証は It's not my business ってことなのかな?
coji
2010-02-24 23:39:44
返信する
RTする
ふぁぼる
@YasuharuNishi
後者で、そのうち両方作るのかったるいから、BDDのフェーズでTDDやろう!ってことになると思う。
akiyama924
2010-02-24 23:40:36
返信する
RTする
ふぁぼる
私は去年 DevLOVE で
@mkoszk
さんと同じ日に登壇させていただいて、凄く刺激になりましたし、いろいろ教わりました。ああいう交流がもっと増えたら良いなと思います。
t_wada
2010-02-24 23:40:51
返信する
RTする
ふぁぼる
@coji
ソフトウェアの品質保証はソフトウェアの品質保証で別にちゃんと考えなくてはいけないという考えです。
yoshiori
2010-02-24 23:41:21
返信する
RTする
ふぁぼる
@sakata_akinori
いずれにせよ、品質保証とは何かを語る際に残存バグ数の話を主にする人は、品質保証についてほとんど分かっていません。そういう人はアホだと思って無視するに限ります。議論をしても、ほとんど前向きな議論にはなりませんよ、経験上。
YasuharuNishi
2010-02-24 23:41:37
返信する
RTする
ふぁぼる
@akiyama924
そうそう。そうやって、TDD→BDDに「考慮すべきこと」をシフトさせていくことで、開発者自身が賢くなっていくのがよいなぁ、と思っています。
YasuharuNishi
2010-02-24 23:43:15
返信する
RTする
ふぁぼる
@a_hisame
ええ、今のTDD熱はそれが発端ですものね。重複に関して議論してくださってありがとうございます! ―― 切り分けた方が個人で実施しやすいというのは同意です。ただ、もとの議論に関しては意見がない状態ですー。すいません。
exKAZUu
2010-02-24 23:43:35
返信する
RTする
ふぁぼる
@takai
ステイク☆ホルダー的にレイヤーが違うので、もちろん違う話ですよー。ただ見る度に毎回思うというだけです。
coji
2010-02-24 23:43:47
返信する
RTする
ふぁぼる
@yoshiori
@coji
TDDは品質保証のためじゃない -> TDDだけでは品質保証はできないけど、品質向上に貢献することはあると思う
lchin
2010-02-24 23:43:50
返信する
RTする
ふぁぼる
どちらかというとTDDよりQAの方が不案内なのでそっちの話が盛り上がらないかなー?
uokumura
2010-02-24 23:44:25
返信する
RTする
ふぁぼる
@fm021
そのとおりですね。一発勝負のワークショップと日常のギャップが大きすぎる。私はなるべくリアルなお題を出すようにしてますが、それでも日々の開発とはまだギャップがありますね。
t_wada
2010-02-24 23:44:54
返信する
RTする
ふぁぼる
開発者が以前の自分のTDDとBDDの振り分けを見て、「オレ昔はこれもこれも後にならないと気付かなかったのか」と苦笑する、みたいな。
YasuharuNishi
2010-02-24 23:44:58
返信する
RTする
ふぁぼる
TDDの話を今のチームでしたら、ある人が「俺…古い人間だからか…この発想は無理やわぁ」と言っていた。深く話ができなかったが…。
yohhatu
2010-02-24 23:45:18
返信する
RTする
ふぁぼる
TDDの効果はある意味禅みたいなもので、実際に
@t_wada
さんや
@kakutani
さんみたいに繰り返し実践してあるとき悟るっていうところで初めて分かるんじゃないかなあといんちきTDD実践者は思う
oota_ken
2010-02-24 23:45:46
返信する
RTする
ふぁぼる
でっかいテストができたらちっこいテスト消しちゃっていいんだぜっていう和田さんの動画が自分の根底にある気がする。
exKAZUu
2010-02-24 23:46:10
返信する
RTする
ふぁぼる
だからさ、開発する度に消耗したり疲弊するような仕事のやり方じゃなくて、開発する度に賢くなったりエネルギーが溜まっていく仕事のやり方にしたいんだよね。それが、本当のプロセス改善であり、本当の品質管理でしょ。
YasuharuNishi
2010-02-24 23:46:13
返信する
RTする
ふぁぼる
@YasuharuNishi
逆も真なりで、テスト技術者ももっと新しい開発言語とか、方法論とか勉強しないとマジでやばいと思います。テスト技術者もテストばっか勉強してちゃダメだ。
akiyama924
2010-02-24 23:46:27
返信する
RTする
ふぁぼる
オープンソースで、TDDで作られたソフトウェアって、MITなどのライセンスで公開している:"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND"ってあるよね
lchin
2010-02-24 23:47:07
返信する
RTする
ふぁぼる
@lchin
品質は向上すると思うよ。それはすごく実感する。
http://bit.ly/9leXeP
yoshiori
2010-02-24 23:47:19
返信する
RTする
ふぁぼる
@lchin
それは2週目の人の実感だから、3週目の人には、そこら辺うやむやにしといて、まずやらせて見れば?的なことを
@kakutani
に言われた。そうだと思った。fyi:
@coji
@yoshiori
babie
2010-02-24 23:47:44
返信する
RTする
ふぁぼる
邦訳:"ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。"
lchin
2010-02-24 23:49:34
返信する
RTする
ふぁぼる
@akiyama924
そーそー。自戒を込めて、心からそう思います。テストエンジニアは、開発技術とかソフトウェアエンジニアリングに関する勉強が足りない、と思う。その辺が足りないのでテストに逃げ込んでいる感じの人も結構いると思う。自戒を込めて。
YasuharuNishi
2010-02-24 23:50:05
返信する
RTする
ふぁぼる
@yamashiro
個人的には、仕様漏れにどう対応するかが重要だと思ってます。もちろん、仕様漏れを無くすのも大事だとは思うんですけど。
ukstudio
2010-02-24 23:51:10
返信する
RTする
ふぁぼる
QAとQCの違いとか。ロジスティックよりゴンペルツだよねとか、成長曲線なんて当てにならん倍ほどぶれるとか、そんな話。
uokumura
2010-02-24 23:51:20
返信する
RTする
ふぁぼる
仮にTDDのテストコードが他の工程に対して何か悪さを起こすのなら、実装が終わったあとでそのテストコード消せばいいじゃんぐらいに思ってる。それでもTDDのメリットは残る気がする。しかもデメリットないんじゃね?ひどい極論かなぁ。うーむ。
exKAZUu
2010-02-24 23:51:34
返信する
RTする
ふぁぼる
とりあえず、お勉強:
http://ja.wikipedia.org/wiki/
品質保証
lchin
2010-02-24 23:52:06
返信する
RTする
ふぁぼる
今は実装後のテストで見つかるような欠陥であっても、実装直前にテストが書きやすくなればTDDで開発可能。環境依存のテストなんかは実装直前に書きづらいのでTDDするのは本質的に難しそう。
k_yanase
2010-02-24 23:53:16
返信する
RTする
ふぁぼる
あると思います。コードを捨てるという事に抵抗がありすぎると思う。 RT
@exKAZUu
: 仮にTDDのテストコードが他の工程に対して何か悪さを起こすのなら、実装が終わったあとでそのテストコード消せばいいじゃんぐらいに思ってる。それでもTDDのメリットは残る気がする
hikaruworld
2010-02-24 23:53:25
返信する
RTする
ふぁぼる
スコープが完全に関数に閉じてるロジックでTDDだろうと単体試験だろうと見つけられるはずバグを仕込まれると「死ね」て思うことはある。でも、そういう人間が開発者に混ざることはあるし、フラフラになるまでコーディングしてるとそういう人間になることもある。
ledsun
2010-02-24 23:53:41
返信する
RTする
ふぁぼる
昔成長曲線をゴンペルツ曲線にあてはめて先読みしてみたら、あんまり当てはまりが良くて驚いた事がある。けど、収束が品質の安定というよりは発見能力の限界を表す事も気づいてたかも。
uokumura
2010-02-24 23:53:46
返信する
RTする
ふぁぼる
@exKAZUu
テストコードが悪さする他の工程ってどんなです?ちょっと興味あり。
htada
2010-02-24 23:55:30
返信する
RTする
ふぁぼる
@t_wada
いえいえ。テストは重要なんだろうな、とは思うもののパッケージ作成ぐらいしか知らないので、どんなものか知ってみたいと思っています。が、書籍とか見るとやたら分厚いかサラッとしたものしかない印象です(あくまでも印象ですが
henrich
2010-02-24 23:55:48
返信する
RTする
ふぁぼる
@htada
あごめんなさい、仮にです。僕はそうは思ってないですよ。単純にそういう反論があったとしても、TDDのメリットは残るんじゃないかなーと。
exKAZUu
2010-02-24 23:57:30
返信する
RTする
ふぁぼる
レガシーコード本読書会で
@goyoki
さんや
@tosikawa
さんに出会い、 DevLOVE でテストコミュニティに人に出会い、本当に視野が広がったと思う。もっとこういう場が増えたら良い。カジュアルな勉強会/同好会。
t_wada
2010-02-24 23:57:52
返信する
RTする
ふぁぼる
「テスト」って言葉が広すぎるのって割と議論の混乱をうむよね。単体テスト、受け入れテスト、パフォーマンステスト、セキュリティテスト etc 全部含むもんね
yamashiro
2010-02-24 23:59:24
返信する
RTする
ふぁぼる
TDD を実践してる人に質問。実装するメソッドのインターフェースって一発でバシッと決めてるの? 僕は書きながら考える性質なのかしっくりくるまで結構インターフェースを変えるんですよね。だからTDD が身につかない。
localdisk
2010-02-25 00:02:12
返信する
RTする
ふぁぼる
なんでだろうなぁと思った。最近TDDとかテストファーストに取り組んでいるせいか、疑問に思った。聞いてみようっと。
yohhatu
2010-02-25 00:02:15
返信する
RTする
ふぁぼる
言語問わずのテスト同好会。TDD、BDD、テストのパターン、タブル、スメル、リファクタ、継続ビルド、カバレージ、などなど、話題が多そう
lchin
2010-02-25 00:03:25
返信する
RTする
ふぁぼる
@henrich
そうですね、本に関しては初心者の方から良く聞く意見です。
t_wada
2010-02-25 00:05:15
返信する
RTする
ふぁぼる
@localdisk
私も一発で決まらないことあるので、テストコード書き直すことも。
babie
2010-02-25 00:05:28
返信する
RTする
ふぁぼる
@localdisk
私も一発で決まらないことあるので、テストコード書き直すことも。
babie
2010-02-25 00:05:28
返信する
RTする
ふぁぼる
@exKAZUu
そこに至るまでのメリットは残ると思いますけど、繰り返し実行できるデグレ確認テストハーネスを手放すのは惜しくなっちゃうかなと。そういう意味で「大きなテスト」が大事なんだろうなと思います。
htada
2010-02-25 00:06:07
返信する
RTする
ふぁぼる
@localdisk
僕はインタフェーフェースはガンガン変えます。変えてる時や簡単な機能にはTDDしません。機能が複雑すぎてリファクタリング後の検証がメンドイ時はTDD使います。あとライブラリとして提供する時はなるべくTDDします。あとで変える時に影響範囲を追いかけやすいので。
ledsun
2010-02-25 00:07:54
返信する
RTする
ふぁぼる
@localdisk
私も書きながら考えます。動かしながら考えたいから TDD をやってます。使用者の視点からも考えられる設計ツールとして TDD を使ってます。
t_wada
2010-02-25 00:08:04
返信する
RTする
ふぁぼる
@babie
やっぱり決まりませんよね。なるほどー。うーん、TDD の道は険しい。
localdisk
2010-02-25 00:08:19
返信する
RTする
ふぁぼる
@htada
ええ、もちろん、必要なテストを自ら手放すというのはもったいないと思います。ただ、意識としては「大きなテスト」があれば消せるものであるというのと、TDDはたとえテストコードという成果物がなくても十分有用な技法だな、と思いました。
exKAZUu
2010-02-25 00:08:32
返信する
RTする
ふぁぼる
@ledsun
なるほど。使いどきと使いどころがポイントっぽいですね。
localdisk
2010-02-25 00:09:37
返信する
RTする
ふぁぼる
もちろん、TDDのテストコードであっても自分は欲しいいいいい。テストのないコードいじるのはもう嫌じゃー。
exKAZUu
2010-02-25 00:09:53
返信する
RTする
ふぁぼる
@kompiro
さんへ QT
@yamkazu
: OSGiをTDDで進めたいんですがどうしたらいいでしょうか
t_wada
2010-02-25 00:11:51
返信する
RTする
ふぁぼる
@t_wada
「動かしながら考えたいからTDD」とありますが、まずテストを書くわけで動かすまでにラグがありますよね。そこをもどかしく感じることがありますか? 僕はそれがけっこうあって、インターフェースの問題とともに TDD が自分に定着しない理由のひとつなんですよね。
localdisk
2010-02-25 00:12:24
返信する
RTする
ふぁぼる
ブログを書きながら、書きたかったことの中心はTDDじゃないことを再認識したがこのままにしておこう
kenchan
2010-02-25 00:12:49
返信する
RTする
ふぁぼる
@yamkazu
OSGiといってもバンドル内は普通のクラスなので、普通にTDDすればいいんじゃないのかな。バンドル間の連携もTDDの一環でやりたい、という場合は未経験。
nobeans
2010-02-25 00:13:29
返信する
RTする
ふぁぼる
@localdisk
仮実装でまずインターフェイスから設計するとかの方法がありますね。クライアントコードとしてテストコードを書いて、それを自分への設計フィードバックとするイメージです。とはいえ、対象が大きくなってくるとタイムラグは出てきますし、もどかしく感じることはあります。
t_wada
2010-02-25 00:15:13
返信する
RTする
ふぁぼる
テスタビリティの低いコードってどんなのがあるのかな。アンチパターン的なものが欲しい。
exKAZUu
2010-02-25 00:17:11
返信する
RTする
ふぁぼる
@exKAZUu
おぉ。ちょっと誤解してました。同意です。TDDの考えというか姿勢というか、もたらしてくれるものは大きいと思います。(メンタル面とか)
htada
2010-02-25 00:17:48
返信する
RTする
ふぁぼる
@localdisk
TDD 自体は目的ではなく手段で、自分へのフィードバックや自信が大事なので、定着しないことに罪悪感を感じたりすることはないと思います。問題を小さく切り取り、例えば末端部の小さいクラスは TDD でやるとかだけでも良いと思います。それが自分に合うなら広げると。
t_wada
2010-02-25 00:17:51
返信する
RTする
ふぁぼる
@localdisk
前に最初に設計を細かくやってインタフェースを決めてそれからTDDってのをやったことがありますが、結局設計をかなり変えることになりました。テストコードによるフィードバックもたしかにあります。
ledsun
2010-02-25 00:18:29
返信する
RTする
ふぁぼる
ガチガチにTDDでやってた時はテストの実行回数が手でやる単体試験の100倍くらいに増えて、偶然シグナルハンドラの再入バグを捕まえたことがあった。その時はこりゃすげえ方法だなと思ったけど、よく考えると運が良かっただけだ・・・(汗。
ledsun
2010-02-25 00:21:28
返信する
RTする
ふぁぼる
@htada
すいません、分かりづらくて~。もちろん、TDDのテストコードも十分バグ発見に役立つと思っています!
exKAZUu
2010-02-25 00:21:46
返信する
RTする
ふぁぼる
@t_wada
なるほど。テストコードが自分へのフィードバックになると。確かにありますね。それを早期に見つけるために TDD は有効かも。結果実装が綺麗になりますね。
localdisk
2010-02-25 00:22:54
返信する
RTする
ふぁぼる
まわりくどく書いていましたが、僕の言いたいことは、これです。 RT
@akiyama924
そして、私が前者の人のTest用のコードを読んだところテストの知識が不足していると感じ、後者の人の方はテストの知識があったと感じたこと。
mkoszk
2010-02-25 00:24:06
返信する
RTする
ふぁぼる
バグ密度で品質がある程度測れるってことは、実際に有効な方法なんだな。
ledsun
2010-02-25 00:24:07
返信する
RTする
ふぁぼる
@ledsun
なるほど。自分へのフィードバック重要。テストコードを早期に書くことで結果振り返りが早くなる。
localdisk
2010-02-25 00:24:38
返信する
RTする
ふぁぼる
@oota_ken
その時の契約はどうするのか、という話があります。請負契約の場合はTDD使えないの?
mkoszk
2010-02-25 00:25:40
返信する
RTする
ふぁぼる
非難してるわけじゃないし、コードの品質高いのはありがたいとおもうけど、QAどないしよかいなという課題認識が前からずっとあって、いつもそこが引っかかるというわけです。
coji
2010-02-25 00:26:09
返信する
RTする
ふぁぼる
@exKAZUu
いえいえ〜。でもいわゆるTDDアプローチで見つけた「予期せぬ動き」って、「バグ」で良いのかな?「正しいコードへのフィードバックが得られた」くらいな気持ちかなと思います。「バグ」って単語は現場でとても敏感ですし。
htada
2010-02-25 00:28:41
返信する
RTする
ふぁぼる
TDDが「品質を保証しない」っていうのが一人歩きしてるのが今の状況? TDDはっていうかUnitTestは「メソッドの動作の保証」にはなると思うので、結局アプリケーションとしての品質保証をどうすっかって話なのかな?
localdisk
2010-02-25 00:31:52
返信する
RTする
ふぁぼる
いや~、TDD盛り上がってますね。色々見てたら「1.テスト書く(RED)、2.最低限のコードを実装する(グリーン)、リファクタリング」って普通じゃない?ってあったけどTDDでやってきてる人には普通なのかもね。
yanchi
2010-02-25 00:33:32
返信する
RTする
ふぁぼる
TDD に限らず開発手法でこれだけ盛り上がるってのは素晴らしいことだよなぁ。僕が今通ってる職場の人も見るといいのにな。職場では twitter と togetter はフィルタリングされてるけど!
localdisk
2010-02-25 00:34:25
返信する
RTする
ふぁぼる
java-ja くらいくだけたテスト技法勉強会があってもいいと思う。それが WACATE なのかな?
t_wada
2010-02-25 00:35:02
返信する
RTする
ふぁぼる
@htada
なるほどー。そういう意識もTDDが実装のための技法であるという所以なのでしょうか。すごく参考になります!ありがとうございます。
exKAZUu
2010-02-25 00:35:35
返信する
RTする
ふぁぼる
でも昔ながらウォータフォールでやってる人は設計書できたらテスト項目がなくてもコーディングってやり方でやるとこもあったし、そんな人達がTDDの勉強の機会にも出会えなかったら、そんな人にとってはテスト無しでコーディングは普通だと思う
yanchi
2010-02-25 00:35:46
返信する
RTする
ふぁぼる
自分は、TDDの「まずREDを見る」の一文で世界が変わった気がする。実装中じゃない、手動テストでも意識してる。
htada
2010-02-25 00:36:48
返信する
RTする
ふぁぼる
今はIDEのリファクタリング機能が充実してるのでTDDじゃなくても「名前の変更」や「メソッドの抽出」みたいに安全にできるリファクタリングが増えてる。
ledsun
2010-02-25 00:37:40
返信する
RTする
ふぁぼる
そもそも仕様を勘違いして実装した場合、TDDやろうがどんなエレガントなコードを書いてもバグなのでアプリケーションの品質保証は別で考えたほうがいいように思う。
localdisk
2010-02-25 00:38:05
返信する
RTする
ふぁぼる
だからTDDの話とかでまずRed出してgreenにしてリファクタリングするのが普通だよねって言われても普段TDDでやってる人たちには普通かもしれないけど俺みたいにアジャイルの知識が低いヤツにとっては全然普通じゃないんだよね。
yanchi
2010-02-25 00:41:51
返信する
RTする
ふぁぼる
TDDの"TD"は形容詞。"Test Driven Development"ではなく、"Test-driven Development"でつまり名詞「Development」、という話はみんながちゃんと理解しているのかな
lchin
2010-02-25 00:45:06
返信する
RTする
ふぁぼる
次、java-ja TDD勉強会やるとかって言ってた気がするな。早く会場と日程決めちゃいたいな。
yamashiro
2010-02-25 00:49:15
返信する
RTする
ふぁぼる
TDDが品質を向上するかどうかなんてどうでもいいんじゃないかな。品質向上は目的の1つ。なんかみんな勘違いしてないかい?
keisuke_n
2010-02-25 00:51:13
返信する
RTする
ふぁぼる
@t_wada
コードレビューはつまりコードのふりかえり、という気がする
lchin
2010-02-25 00:51:47
返信する
RTする
ふぁぼる
みんな言わないけど、テスト自体もリファクタリングされる。テストのリファクタリングは主に品質向上が主じゃない?
keisuke_n
2010-02-25 00:52:29
返信する
RTする
ふぁぼる
TDDは道具だから、どう使うかは使う人が自分の環境に合わせて決めたらいいと思う。いやッ!好きに使わせろーーッ!!!でも、いいやり方は教えてね♪
ledsun
2010-02-25 00:52:39
返信する
RTする
ふぁぼる
@lchin
まさしくそうですね。皆同じ課題に向かって一定時間実習をやって、同じ問題意識で他の人のコードを見るから効果が高いようです。アンケートをとっても満足度が特に高いのがコードレビュー。
t_wada
2010-02-25 00:54:40
返信する
RTする
ふぁぼる
TDDって主観的に俺ツエー感を味わいやすいので、精神的にクルのが結構でかいんだよね。でもそれって主観だから語りにくい気がするんだよね。俺ツエー感が持続すると生産性増すと思うんだよね。俺ツエー感を言い換えるとフロー状態が長く続く
yamashiro
2010-02-25 00:55:52
返信する
RTする
ふぁぼる
ちなみに、ペアプロ/ペア設計/ペアテスト etc は、俺ツエー感じゃなくて俺らツエー感が味わえて素晴らしくいいです
yamashiro
2010-02-25 00:56:51
返信する
RTする
ふぁぼる
TDDアンのリスト作った。思ったより人数少ない。
http://bit.ly/abx9NJ
ledsun
2010-02-25 01:00:07
返信する
RTする
ふぁぼる
@tsuyoshikawa
宗教っぽいっすが、俺のコードすげーより、俺らのコードすげーになると、喜びが増す気がします。
yamashiro
2010-02-25 01:00:47
返信する
RTする
ふぁぼる
アルアル、予想しなかった設計にたどり着くとアドレナリンちょー出る。 RT
@yamashiro
: TDDって主観的に俺ツエー感を味わいやすいので、精神的にクルのが結構でかいんだよね。でもそれって主観だから語りにくい気がするんだよね。俺ツエー感が持続すると生産性増すと思うんだよね。
ledsun
2010-02-25 01:01:35
返信する
RTする
ふぁぼる
これはいいまとめ 「TDD談義への反応に対する雑感」
http://d.hatena.ne.jp/goyoki/20100223/1266939139
さすが
#xutp
の常連さん
@goyoki
lchin
2010-02-25 01:05:07
返信する
RTする
ふぁぼる
なんかTLにTDDな人々が一気に増えたなー。C++でTDDな何かとかやろうかな。
tosikawa
2010-02-25 01:29:59
返信する
RTする
ふぁぼる
技術者的な「なるほど当然そうなるだろう」と,技術者じゃない人の「なるほどこれは当然そうあるべきだろう」にはものすごい乖離があり,技術者は前者を評価するが,世間に評価されるのは後者。かつてそれをやって失敗していま成功しているのがApple。かつて成功して失敗しているのがMS *P3
t_yano
2010-02-25 01:30:27
返信する
RTする
ふぁぼる
@mkoszk
すみません自分は見落としていましたが、その通り視点の変化による品質向上はあると感じます。特にTDDではテストファーストによりテストに合わせてコードが書かれるので、そういったテストの視点の導入は、優れた単体テスト容易性を確保したりと、色々メリットを作ると思います
goyoki
2010-02-25 01:31:05
返信する
RTする
ふぁぼる
いいですね! RT:
@tosikawa
: なんかTLにTDDな人々が一気に増えたなー。C++でTDDな何かとかやろうかな。
kaorun55
2010-02-25 01:31:38
返信する
RTする
ふぁぼる
BDDについてさらにコメントすると「名は体を表す」の点で,TDDに比べてBDDは,後から現れた割には一段落ちると思っているんだよね。TDDのTはテストであり,テストはすべからく実行されるという認識は多くの人にある。BDDのBはふるまいであり,実行とはそれほど連結してない *P3
t_yano
2010-02-25 01:35:26
返信する
RTする
ふぁぼる
テストコードと呼ばれる小プログラムを書いて,なおかつ実行することに意味があるのであり,名前から,実行することの必要性が抜け落ちて欲しくはない。Tには「品質の担保」という意味あいがくっついてくるって問題であったわけだが,そっちのほうがまだマシと思える。 *P3
t_yano
2010-02-25 01:36:47
返信する
RTする
ふぁぼる
なんだろうな,BDDがどう提唱されたのであれ,Behavior(ふるまい)という単語には動的な感じがなく,むしろ静的な印象がある。データ駆動開発,とかに近い印象がある。テスト駆動開発の方がまだ動的であり,TDDのほうが良い印象がある。 *P3
t_yano
2010-02-25 01:38:25
返信する
RTする
ふぁぼる
で,TDDって単語自体に誤解を生む要因があるのなら別の単語を使うことには別に問題はないけど,いまのところ私にとって,BDDがその代替になっていない。 *P3
t_yano
2010-02-25 01:39:20
返信する
RTする
ふぁぼる
@t_yano
プログラムはどうせ動かしてみねぇと振る舞い(仕様)がどうとかも言えたもんじゃないよね、だから動かすの当然だよね、という暗黙の合意がすでに転がってるんだと思っています>BDDのB
naka_aki_spl
2010-02-25 01:39:22
返信する
RTする
ふぁぼる
@t_yano
そう?「ふるまう」はどう見ても動きなような。「宣言駆動開発」とか言われたら俺も頭抱えるけども。
naka_aki_spl
2010-02-25 01:39:59
返信する
RTする
ふぁぼる
プログラミング初等教育とTDDの相性は最高
http://ff.im/-guj1T
kenchan
2010-02-25 01:41:55
返信する
RTする
ふぁぼる
@naka_aki_spl
「ふるまう」は動詞でしょうな。私はBehavior Drivenといったら,Behaviorをどう実装するか,という「実装」メインの言葉にみえる,という話。 *P3
t_yano
2010-02-25 01:42:07
返信する
RTする
ふぁぼる
これは,個々の提唱内容がどうこうじゃなくて,単に,名前から受ける印象の話で,私は名前は「より的確であればそっちがいいんじゃないの?」というスタンスなので,誤解のない用語があればそれを使いたい。主観で。 *P3
t_yano
2010-02-25 01:42:24
返信する
RTする
ふぁぼる
@t_yano
BはHOWなんですかねえ?(少なくとも考えた人らは)WHATを意味するものとして考えてたのかなあと。
naka_aki_spl
2010-02-25 01:43:42
返信する
RTする
ふぁぼる
ああ,「実装メイン」というのも変な表現だな。こう,「動かすことによって安心感とフィードバックを得ることが重要」ってとこがあると思っているんだよね。「どう実装するか」ではなく「実装するにあたっての態度」なんじゃないかと。 *P3
t_yano
2010-02-25 01:43:52
返信する
RTする
ふぁぼる
@naka_aki_spl
うん,考えてた人らの気持ちはまあ分かるのです。BDD自体を否定したいとかそんなんじゃなくて,意図が伝わりにくいんじゃないかな〜と思ってるって話で。 *P3
t_yano
2010-02-25 01:46:16
返信する
RTする
ふぁぼる
@t_wada
ありがとうございますー。自分は t_wadaファンだったので、お会いできて、かなり世界が広がりました。
tosikawa
2010-02-25 01:47:40
返信する
RTする
ふぁぼる
@niku_name
動かないとふるまうことはできないけど,「ふるまい」を定義することはできる。だって,それってまさしく「メソッド」だもの。 *P3
t_yano
2010-02-25 01:52:49
返信する
RTする
ふぁぼる
TDDのTがUnitTestにフォーカスされているように聞こえるから議論が起こってるのかな?
yuroyoro
2010-02-25 02:04:14
返信する
RTする
ふぁぼる
滝開発で、業務フローからシナリオテスト書いたりしてフローの漏れを洗い出したりしてるが、これもTDDといえなくもないのでは?
yuroyoro
2010-02-25 02:05:00
返信する
RTする
ふぁぼる
僕はJDD(女子駆動開発)に興味があります。
yuroyoro
2010-02-25 02:05:05
返信する
RTする
ふぁぼる
@biac
例えば自分の境界の場合、共有モジュールのモジュール仕様書があります。要件をテストコードレベルで表現できるため、TDDのテストコードがそれを内包すれば品質要件を満たすことができます
goyoki
2010-02-25 02:10:31
返信する
RTする
ふぁぼる
取りあえずゆっくり振り返ってみると、結構おかしなことも書いてしまっているのに、非常に有意義なフィードバックがごろごろ転がっているのに気づけた。また上の方々には格や見識の高さ、目線の高い建設的な姿勢も見せつけられている。自重して真摯に勉強しないといけないと自戒してる
goyoki
2010-02-25 02:46:04
返信する
RTする
ふぁぼる
@t_wada
こちらこそ散々変なこと言っている状態で
@t_wada
さんや
@tosikawa
さんから本当に色々なことを学んでいる身なので、大変恐縮します
goyoki
2010-02-25 02:58:06
返信する
RTする
ふぁぼる
@tosikawa
いえいえ、tosikawaさんがいなかったらTEFやWACATEは知りえなかったですし、同じ言語使いがいないということでWEwLCやxUTPも続かなかったと思います。自分からそれらを抜かしたら相当ひどい状態になっていたかと
goyoki
2010-02-25 03:08:34
返信する
RTする
ふぁぼる
@tosikawa
あと相当量勉強もさせていただいています。tosikawaさんのテストを俯瞰する話と、咳さんのテストでプロセスを回す話は、今の自分のテスト観の大きなきっかけなりました
goyoki
2010-02-25 03:09:44
返信する
RTする
ふぁぼる
ただ、TDDと品質保証とかTDDとBDDとかっていう、何々 vs 何々みたいな議論は、個人的にはあまり興味が沸かないなー。
tosikawa
2010-02-25 03:17:25
返信する
RTする
ふぁぼる
「TDDが品質を保証する」ことが証明されても、「TDDが品質を保証しない」ことが証明されても、ハッピーになる人はいないような気がするな。多分、それって言葉の定義とかでどうにでも言えたりするので、本質的な部分の議論にはならないと思う。
tosikawa
2010-02-25 03:17:53
返信する
RTする
ふぁぼる
ただ、例えば、初めて TDD を知る場合には、今までと違うということは強調しておかないと、誤解がはびこるので、「しない」とか「違う」とか言い切ることに多大な価値があるのだと思うし、そのような文脈では、まったく理論的に正しいと思う。
tosikawa
2010-02-25 03:18:13
返信する
RTする
ふぁぼる
でも、それって、二項対立的に世界を二分することが目的ではないんじゃないかな。あくまでTDDを理解すること/させることが目的であって、違いを強調する事自体が価値を生むのではないと思う。
tosikawa
2010-02-25 03:18:40
返信する
RTする
ふぁぼる
今後はその二項対立的な視点では語りきれないところがキモとなってくるのではいかなと何となく考え中。
tosikawa
2010-02-25 03:18:53
返信する
RTする
ふぁぼる
あと、関係ないけど、多分、今、日本で TDD に必要なのは、評論家ではなく実践者なのだと思う。だからこそ、TDD Boot Campのようなイベントに意味があるんじゃないかなー。今に限った事ではないかもしれないけれど。
tosikawa
2010-02-25 03:19:48
返信する
RTする
ふぁぼる
TDDと品質保証の関係について。
https://cacoo.com/diagrams/C1YxffZJT0r38ey6
今んとこはこんなイメージ。
katzchang
2010-02-25 03:32:54
返信する
RTする
ふぁぼる
TDDで作るテストコードは、開発者が意図している仕様となっていることを保証している、と言う部分は言い切っちゃっていいような気はする。問題は、その仕様が要件を満たすとは限らないということ。
katzchang
2010-02-25 03:39:31
返信する
RTする
ふぁぼる
最悪のシナリオは「仕様を保証するテストコードはきっちり出来たけど、ユーザが欲しいものは何も出来なかった」。
katzchang
2010-02-25 03:44:49
返信する
RTする
ふぁぼる
@masayang
そう。TDDか否かとは、直接関係ないんですよね。
katzchang
2010-02-25 03:48:07
返信する
RTする
ふぁぼる
要件を確認しながら「小さな一歩」を続けられるかってことなんだろうかなぁ。「目の前の問題に集中しろ!たまには周りを見渡せ!」ペアプロとの相性がいい理由かな。
katzchang
2010-02-25 03:51:37
返信する
RTする
ふぁぼる
最近の TDD 議論についてちゃんと僕の気持ちを書いてみる - YoshioriのBlog: 最初にちょっと最近,ドタバタしてて twitter だと腰を据えて話せないなと感じたので,ちょっと最近のTDD 議論についてちゃんと僕...
http://bit.ly/a1U4gk
carnation
2010-02-25 04:17:32
返信する
RTする
ふぁぼる
あー。
http://bit.ly/b3DVff
を読んで自分がなぜ去年TDD勉強会という言葉に違和感を覚えていたかを思い出した。今TDDって言っちゃうのはちょっとあぶないなって思ったんだった。すっげー後出しでしかも忘れてたけど><
wtnabe
2010-02-25 06:17:25
返信する
RTする
ふぁぼる
しかもそこでBDDと言い換えましょうよと積極的に言わなかった理由も一緒だ。自分がBDDをやってるかどうかが分からないんだ。
wtnabe
2010-02-25 06:19:01
返信する
RTする
ふぁぼる
@localdisk
自分もそうでした。だから最初は苦しかったです。明らかにペース落ちるし。でも今は逆に変えたことが分かるのがよいと感じますし、ある程度書きながら変えながら考えて、これでいけそうと思ってからテスト書いてもいいんじゃないですかね。
wtnabe
2010-02-25 06:26:07
返信する
RTする
ふぁぼる
うーん、どうも「TDDのおかげ計測値にブレが出ちゃったよ、どーすんだよ」と「TDD(おそらくUnitTest)やったって言ってたのにバグが出るってどーゆーこと?」の2つがごっちゃになってる感
mitim
2010-02-25 06:44:49
返信する
RTする
ふぁぼる
昨日
@t_wada
さんが夢に出て来た。多分ここ最近TDDが猛烈に熱くなってる件の影響だと思う、夢の内容はTDDとは無関係だった。
syama666
2010-02-25 06:45:23
返信する
RTする
ふぁぼる
後者はむろん論外で、TDDやってもバグは出る/出過ぎる場合はそもそもTDDやってない
mitim
2010-02-25 06:45:50
返信する
RTする
ふぁぼる
そういやぁ、自分ですぐ使いたいものを作って公開するときにはテスト付けてないことが多い>< これたぶん作り慣れてないものを作ろうとしてる(「ない」から作るんだし)のと、とにかく早く動くものが欲しいからだと思う。
wtnabe
2010-02-25 06:46:10
返信する
RTする
ふぁぼる
前者はこれ、今あるQA手法がそろそろ限界に来てない?というのが個人的な実感かな…かといって、「こういうソリューションがあるよ」を言えるだけのモノもバックグラウンドもないんだけど
mitim
2010-02-25 06:47:41
返信する
RTする
ふぁぼる
たとえば、コードカバレッジは十分有効な計測だと思うんだよね。全部やったらえらい工数になる点と、カバレッジのためにコード改悪するパタンが出る点と、ホワイトボックス・テストだからコード変更性に弱いという点を考慮しないといけないけど。
mitim
2010-02-25 06:51:58
返信する
RTする
ふぁぼる
あと、QA的テスト=手動みたいな見方が感じられるけど、QAテストも受入テストも、自動化できる部分はどんどん自動化しないと、本当に定量的な観測にもっていけないハズなんよ
mitim
2010-02-25 06:53:48
返信する
RTする
ふぁぼる
ド修羅場な現場はひどいと「目視でコード見た!直ってる(と思う)!テスト合格!」とかあるからね
mitim
2010-02-25 06:54:38
返信する
RTする
ふぁぼる
テスト計画を立てた=テスト実行できたになるようにして、その前段階でテスト計画方針の周知徹底と、ペア・テストなりで常時レビュー化が果たせる環境がつくれれば、テストチームとしては最高だと思う
mitim
2010-02-25 06:57:43
返信する
RTする
ふぁぼる
よくある「単体テスト工程が開発者の頭の中の仕様を確認する場」にしかなってないって現場を考えると、TDDで出てきたUnitTestが開発者の考えている仕様を満たす、という点で仕様テストであるといえるかなー
mitim
2010-02-25 07:02:27
返信する
RTする
ふぁぼる
もちろん、開発者によっては異常系が仕様に入ってないだとかブレがおこるのは、しょうがない部分で…そういったのを「平均以上のテスト」にどう持っていくかを考え、テスト方針が必要になるわけで、その時点で、TDDじゃなくQAテストが必要とされるんだと思う
mitim
2010-02-25 07:04:55
返信する
RTする
ふぁぼる
大前提で「顧客はどの程度のクォリティを求めてるのか」の確認が取れてること
mitim
2010-02-25 07:05:35
返信する
RTする
ふぁぼる
前から思ってたんだけど、TDD は「TDD」って呼ばない方がいい気がする。「テスト」って言葉は前から使われてて、そこに「TDD のテストはそのテストとは違う」って殴りこみかけられても混乱するだけだよ。
maskenn
2010-02-25 07:05:43
返信する
RTする
ふぁぼる
まあ、正直、WFの単体テストについては、開発者がそのままテストやるんなら「テスト計画」とか絵に描いた餅状態だろ、TDD*のほうが*効率も品質寄与も高いじゃん派だけど、テストチームがちゃんといる恵まれた環境なら、テストチームにテスト計画含めてお任せしたいよな。
mitim
2010-02-25 07:28:07
返信する
RTする
ふぁぼる
テストは第3者視点でやってこそ質のいいものができると思ってるかな
mitim
2010-02-25 07:30:24
返信する
RTする
ふぁぼる
RT
@katzchang
: TDDと品質保証
http://d.hatena.ne.jp/katzchang/20100225/p1
kanu_
2010-02-25 07:35:03
返信する
RTする
ふぁぼる
脳内テストですね。脳内テストの事前可視化と証明がTDDなのかなと思ってます。 RT
@mitim
: ド修羅場な現場はひどいと「目視でコード見た!直ってる(と思う)!テスト合格!」とかあるからね
kanu_
2010-02-25 08:07:04
返信する
RTする
ふぁぼる
ありがとうございます! QT
@htada
:
@t_wada
勝手ながら、「TDDについて」にもりっと追加させていただきました。どんどん放りこんでしまったので、取捨選択などしていただけたらと思います。
http://togetter.com/li/6923
t_wada
2010-02-25 08:16:40
返信する
RTする
ふぁぼる
@goyoki
そのモジュール仕様書から、TDDのすべてのテストケースへのトレーサビリティが取れるならOKでしょうね。
biac
2010-02-25 08:32:56
返信する
RTする
ふぁぼる
開発者が意図した(理解した)仕様にはなってるよね。その意図・理解が正しいかどうかは、QA的には第三者が検証すべき。 > QT
@katzchang
: TDDと品質保証
http://d.hatena.ne.jp/katzchang/20100225/p1
biac
2010-02-25 08:44:03
返信する
RTする
ふぁぼる
僕が昨日、TDDについて書いた内容は、プログラムの品質保証とはあまり関係ありません。大きな組織でTDDを推進しようとすると、必ずぶち当たる壁を明らかにして、戦いモードではなく、相互に理解できるようにしたかったのです。
mkoszk
2010-02-25 10:56:19
返信する
RTする
ふぁぼる
日本だと男の子にも必要そうだ > QT
@oreilly_japan
: make_jp: 女の子にも工学の道を アメリカでは、技術者週間の一環として、 2月18日を…(女の子に工学を教える日)と定めている...
http://bit.ly/bz09Ht
biac
2010-02-25 10:57:33
返信する
RTする
ふぁぼる
昨夜から思うことを書いてみた > TDDと品質とビジネス
http://www.hsbt.org/diary/20100225.html#p02
hsbt
2010-02-25 11:00:02
返信する
RTする
ふぁぼる
「TDDやってもバグは出る/出過ぎる場合はそもそもTDDやってない」(via
@mitim
)・・・多分、そうなのです。でもTDDをやっていないのに、「TDDをやりました」という人がいるのです。一緒に考えて欲しいのは、「TDDをやった/やっていない」をどうやって判断するかです。
mkoszk
2010-02-25 12:14:58
返信する
RTする
ふぁぼる
@mkoszk
自分の手にのる範囲で考えると、1.QAテストのフェーズを設け、そこでUnitTestソースを流用することを宣言する 2.QAテストでのテスト計画方針を明らかにし、全体で共有する 3.UnitTestコードを方針に照らし合わせてレビューし、結果を反映する ですかね
mitim
2010-02-25 12:23:20
返信する
RTする
ふぁぼる
TDDを実施した/しないの犯人探しじゃなくって、もう一歩先をみて「TDDという開発方法の教育」と「プロジェクトにおけるQAテストの有りかた」の両面で対応しなくちゃいけない気がするなぁ。自分が「こうあるべき」という理想像より「今足りないもの」をどうするかという考え方をするからかな
mitim
2010-02-25 12:26:06
返信する
RTする
ふぁぼる
togetter「TDD について」は、様々な立場や背景の方の意見が並べられています。ここ数年こういう議論は各所であったのですが、そのエッセンスが可視化されているところに意義があると思います。
http://togetter.com/li/6923
t_wada
2010-02-25 12:26:17
返信する
RTする
ふぁぼる
TDDをやらない人はやらない人で、品質の高いコードを書く人なら放っておけばいいし(歳とると人間頭固くなるしね)、品質の悪いコードを書く人なら、有志メンバでとっかえひっかえペアプロしてもらって矯正するとか、なんとか手を打ちたい(願望カヨ)
mitim
2010-02-25 12:28:35
返信する
RTする
ふぁぼる
それでもダメな人いるけどね…正直職業間違えてるよ、ここは特定技能の技術者の世界だよって言いたくなるのがorz
mitim
2010-02-25 12:29:46
返信する
RTする
ふぁぼる
@mkoszk
TDDは作業手順を規定しているだけだから、TDDやっててもバグがたくさん出る(TDD的には、テストメソッド抜け・誤り)ことはあるでしょう。それは「TDDやってない」というより「TDDはやってるけど、ちゃんと作れない」ってことじゃ? *Tw*
biac
2010-02-25 12:30:23
返信する
RTする
ふぁぼる
@mkoszk
そして、「TDDはやってるけど、ちゃんと作れない」ような開発者は、TDDやらなくても(旧来のやり方でも)、ちゃんと作れないですね。 *Tw*
biac
2010-02-25 12:31:52
返信する
RTする
ふぁぼる
開発者からは「TDDと品質保証」という切り口になります。品質保証の人からは「デバッグとテスト」という切り口になります。テストエンジニアの立場では、「テストと品質保証」になります。立場が違うと、「テスト」「品質保証」という言葉の持つ範囲が違っています。
mkoszk
2010-02-25 12:36:57
返信する
RTする
ふぁぼる
ひょっとして、「TDDをやりさえすれば、誰でも高品質なコードが書ける!」っていう銀の弾丸が出回ってたりするんだろうか?
#tddnet
biac
2010-02-25 12:38:54
返信する
RTする
ふぁぼる
うざい話になるけど、「じっさいにTDDでそれを強制するか」は別問題として、ブラックボックス的考え方、とくにインタフェースの前置条件や後置条件なんかの話は、TDDerに基礎知識としてとらえててほしいなあ、とは思う
mitim
2010-02-25 12:41:27
返信する
RTする
ふぁぼる
頭いい人は感覚的にわかってるもんだけどね
mitim
2010-02-25 12:41:44
返信する
RTする
ふぁぼる
ですから、開発者の中で「TDDと品質保証」という二分法で議論が進んだとしても、他のロールの人達を交えて会話をすると、混乱が起きてしまいます。複数のロールを経験している人ならば良いのです。でも、そんな人ばかりではありません。他の領域との接点になる言葉を使うときは注意が必要です。
mkoszk
2010-02-25 12:44:30
返信する
RTする
ふぁぼる
TDDは、基本的に俺のような馬鹿丸出しな開発者に対する福音なんだと思うw
mitim
2010-02-25 12:45:07
返信する
RTする
ふぁぼる
頭の中だけでロジック回すのもそろそろしんどいお年頃だしw
mitim
2010-02-25 12:46:05
返信する
RTする
ふぁぼる
長く品質保証に携わってきたある人に聞くと、開発者のテストを「デバッグ」というのだそうです。そして、その「デバッグ」では、原因結果グラフをつかってテストケースを挙げたりしているのだそうです。TDD を推進している人達の言う開発者のテストと随分違うでしょう。
mkoszk
2010-02-25 12:47:47
返信する
RTする
ふぁぼる
@mitim
TDDと通常の単体テストを両立させる方法ですね。この単体テストで計測される数値は、従来の数値と異なってきますが、納得しやすいものですね。
mkoszk
2010-02-25 14:12:45
返信する
RTする
ふぁぼる
@biac
そうです。ちゃんと作れていないのです。これを定量的に見えるようになると、品質管理の側面からは、問題視されることは少なくなるはずです。
mkoszk
2010-02-25 14:14:21
返信する
RTする
ふぁぼる
僕がテストとデバッグというとき、tuluneさんと同じ意味で使います。 RT
@tulune
@mkoszk
違うことはよくわかります。ただ、私はそれは開発者によるテストと呼びます。バグの現象を見つけ出すまではテスト。見つけたバグを分析して取り去ることがデバッグ。
mkoszk
2010-02-25 14:15:58
返信する
RTする
ふぁぼる
@mkoszk
おそらく、TDDで通常の計測数値を当てはめると、いろいろとややこしい問題が起こると思うんですよね。ということで、TDDを使った場合の計測観点から落とし所をお互いに探るのが、一番じゃなかろうかと考えてます。お互いに「品質」に関心があるのは同じなんですから
mitim
2010-02-25 14:16:31
返信する
RTする
ふぁぼる
@krsna_crespo
そう、品質保証の立場になると、デバッグっていう言葉になるようなんだ。僕はQAの組織に在籍してことないので、人から聞いた話なんだけどね。
mkoszk
2010-02-25 14:17:16
返信する
RTする
ふぁぼる
@mitim
そうです。従来のテストケース密度やバグ密度といった品質基準値を適用しようとすると、上手くいかないと思います。同じバグ密度と言っても、前提条件が異なるため(TDD済みのソースコード)、計測される数値は異なりますし、そもそも別の計測項目が必要なのかもしれません。
mkoszk
2010-02-25 14:20:24
返信する
RTする
ふぁぼる
TDDの議論を読んで違和感を感じたのは、テストという単語を使いながら、テストレベルをずらしている意見があることかな。ユニットテスト/単体テストにおける話をしているはずなのに、ユーザの受け入れテストの話にすり替わっているんだな。これは、品質保証という言葉に原因があると思うよ。
mkoszk
2010-02-25 14:22:55
返信する
RTする
ふぁぼる
「製造」後のシステムテストでのバグ密度の数値は変わると思いますが、それだけのことではないですか? > QT
@mkoszk
: …同じバグ密度と言っても、前提条件が異なるため(TDD済みのソースコード)、計測される数値は異なりますし、そもそも別の計測項目が必要なのかもしれません。
biac
2010-02-25 21:01:35
返信する
RTする
ふぁぼる
@mkoszk
人によっては、コードを書く前に(頭の中で)メソッドの入出力を検討し、それからコーディングし、直後に単体テストを行って入出力を確認する …そういうコーディング手順を取る人も居る(居た …以前の私)わけですが、それはTDDのテストファースト部分と原理的に同じでしょう?
biac
2010-02-25 21:04:30
返信する
RTする
ふぁぼる
賛成! > QT
@babie
: …品質管理の視点から考えればTDDの役割とQAテストの役割は異なることと、TDDが品質管理上メリットがあることは矛盾しないこ ...
biac
2010-02-25 21:13:23
返信する
RTする
ふぁぼる
LINQ to SQL 使って書かれた業務ロジック (…って、.NETerじゃなきゃ分からない f(^^; ) > QT
@exKAZUu
: テスタビリティの低いコードってどんなのがあるのかな。アンチパターン的なものが欲しい。
biac
2010-02-25 21:15:40
返信する
RTする
ふぁぼる
それもあるかもな~。OOは形容詞ってのに通じる話かも QT
@t_wada
: RT
@lchin
: TDDの"TD"は形容詞。"Test Driven Development"ではなく、"Test-driven Development"でつまり名詞「Development」…
biac
2010-02-25 21:19:47
返信する
RTする
ふぁぼる
OO(Obejct-Oriented)は形容詞。OOPは、Programing(プログラムを作る行為)がオブジェクトを志向してるという意味か、"Object-Oriented Program"(オブジェクトを志向しているプログラム)を作る行為という意味の、どちらか。(さてどっち?
biac
2010-02-25 21:29:00
返信する
RTする
ふぁぼる
@exKAZUu
ですます。 var emp = (new HogeDataContext()).Employee.Where(e => e.Salary > 1000) とか書いてあったとして、SQL Server 使わずにテストするには?
biac
2010-02-25 21:48:40
返信する
RTする
ふぁぼる
TDDで信頼度が上がる理由をブログに書きたいが、実証・反証の説明から入らないといけないのでダルい。
babie
2010-02-25 21:50:29
返信する
RTする
ふぁぼる
TDD的にはそうだと思います。QA的にはトレーサビリティの無いテストケースってアリですか? QT
@goyoki
:
@biac
それは間違った解釈だと思います。一部のテストケースが要件を内包していれば良いのです。そしてモジュール仕様書は別に複雑なものを考えなくともよいです
biac
2010-02-25 21:52:37
返信する
RTする
ふぁぼる
開発vsQAの前に、「製造」工程の工数増(2~3割)を認めさせるのがタイヘンかも。システムテストの工数大幅減と合わせればオトクなのに。トータル減の実績が出た後でも、渋い顔される > QT
@mkoszk
: …大きな組織でTDDを推進しようとすると、必ずぶち当たる壁を明らかにして…
biac
2010-02-25 22:02:25
返信する
RTする
ふぁぼる
XHTML相手なら LINQ to XML で!! (…ウソです。整形式ですらないページがゴロゴロw) > QT
@exKAZUu
: なぜ,HTML to LINQがないのだろうかー
biac
2010-02-25 22:09:13
返信する
RTする
ふぁぼる
そうか、TDDの品質向上のキモは、バグの予防と再発防止にあるんだ、と改めて気づかされた。品質管理な話とは別の文脈になるけど
mitim
2010-02-25 22:15:43
返信する
RTする
ふぁぼる
トレーサビリティ的には、余分なテストケース(=要件から導き出せないテストケース)が見つかったら、要件を修正しなければならないはずでは? QT
@goyoki
:
@biac
要件に対して足りないのが駄目で、余分なテストケースがあっても問題ありません。…
biac
2010-02-25 22:30:15
返信する
RTする
ふぁぼる
TDDで信頼度が上がるわけを、実証・反証という語を使えば綺麗に説明できるんです!でも、実証・反証をプログラミングの文脈に合うように一言で説明するのが難しいんです!
babie
2010-02-25 22:35:28
返信する
RTする
ふぁぼる
そして、少なくとも使うテーブルの数だけ、なんちゃらDataContext の種類がある! QT
@exKAZUu
:
@biac
そうですよねぇ。すごく面倒ですが、HogeDataContext用のファクトリクラスを作って、それをモックで切り替えられるようにするしか…
biac
2010-02-25 22:37:06
返信する
RTする
ふぁぼる
あと、テストファーストしてないのに「TDDやってる!」と言う輩もいる。 QT
@biac
:
@mkoszk
そして、「TDDはやってるけど、ちゃんと作れない」ような開発者は、TDDやらなくても(旧来のやり方でも)、ちゃんと作れないですね。 *Tw*
biac
2010-02-25 22:42:34
返信する
RTする
ふぁぼる
TDDでバグが減るのは、1.先にテストケースを作るために仕様書をちゃんと読むことになる、2.作ったテストケースには必ず合格させているからだと思っている。仕様書のレビュー効果と、ブラックボックス的に実施する単体テスト効果。
biac
2010-02-25 22:45:58
返信する
RTする
ふぁぼる
@tomohn
ぉわ、長沢さんまで TDD TL 入り♪
biac
2010-02-25 22:47:02
返信する
RTする
ふぁぼる
@goyoki
要件に対してテストケースは一般に1対多でしょう。テストケース間で冗長があっても構わないでしょう。しかし、逆向きにトレースして要件にたどり着けないテストケースの存在を許したのでは、トレーサビリティ的にはマズいはずでは?
biac
2010-02-25 22:56:14
返信する
RTする
ふぁぼる
TDDがソフトウェアの信頼度を上げる理由についてブログを下書きしたが、このまま出してしまおうか、一晩寝かせようか、迷っている。
babie
2010-02-26 13:12:45
返信する
RTする
ふぁぼる
思い切ってリリースしました!>TDDを行うとソフトウェアの信頼度が上がる理由
http://d.hatena.ne.jp/babie/20100226/1267158419
babie
2010-02-26 13:28:05
返信する
RTする
ふぁぼる
@t_wada
@kakutani
@yoshiori
@m_seki
査読お願いします。>TDDを行うとソフトウェアの信頼度が上がる理由
http://d.hatena.ne.jp/babie/20100226/1267158419
babie
2010-02-26 13:30:15
返信する
RTする
ふぁぼる
@cactusman
込み入った科学哲学を平易にするのがとても難しいです……
babie
2010-02-26 13:32:57
返信する
RTする
ふぁぼる
TDD方面よりも科学哲学方面からのツッコミの方が怖い。私の理解が浅すぎて答えられない可能性がある。
babie
2010-02-26 13:34:08
返信する
RTする
ふぁぼる
金曜日のプログラマは忙しいから、反応は夜になってからかな。
babie
2010-02-26 13:56:32
返信する
RTする
ふぁぼる
@t_wada
査読ありがとうございます。やはり伝えそこねた部分がありましたか。書いて良かったです。
babie
2010-02-26 14:12:51
返信する
RTする
ふぁぼる
TDDを行うとソフトウェアの信頼度が上がる理由 - ζ*’ワ’)ζ<ちれすですの!
http://bit.ly/dgvbhQ
babie
2010-02-26 14:15:13
返信する
RTする
ふぁぼる
@m_seki
「品質」「品質保証」という言葉を使うと立場によってぶれるので、科学哲学の方から「信頼度」という言葉を持ってきて使用しています。加点法か減点法かという問題もあるし。
babie
2010-02-26 15:34:52
返信する
RTする
ふぁぼる
@m_seki
やるかやらないかで言えば、実証は確実になるので、やった方がいいです。
babie
2010-02-26 15:39:05
返信する
RTする
ふぁぼる
@m_seki
私はそう見立てています。TDDを「科学的方法」の見地から分析した記事です。
babie
2010-02-26 15:48:51
返信する
RTする
ふぁぼる
@m_seki
TDDなり他の方法なりが「やれば効果がわかる」というような、ある意味宗教的な盲信で、やったり喧伝したりするのがいやなんですよねぇ。
babie
2010-02-26 15:57:08
返信する
RTする
ふぁぼる
@m_seki
だから科学的方法論を持ち出したという訳です。どの科学的方法論を使うかは異論があると思いますが。
babie
2010-02-26 15:58:38
返信する
RTする
ふぁぼる
ふむん、ソフトウェアは科学か?から始めないといけなかったか。
babie
2010-02-26 16:03:22
返信する
RTする
ふぁぼる
@m_seki
残ってる数は永遠にわからないと思います。反証主義は可謬主義に基づくので。試したケースが100と150なら、ケースが的を射てて多様ならという条件付きで、信頼度が高くなります。信頼度は数じゃわからないです。
babie
2010-02-26 17:07:01
返信する
RTする
ふぁぼる
@m_seki
反証主義的立場では、「絶対不具合はない」ってことはないです。可謬主義に基づき、ソフトウェア・モジュール・クラス・メソッドは新たに発見される不具合によって覆され、その不具合をも包含するよりよいソフトウェア・モジュール・クラス・メソッドが編まれて行く、と考えます。
babie
2010-02-26 17:18:40
返信する
RTする
ふぁぼる
@m_seki
違いますね。誤解です。「数々の反証テスト(F1、F2、…)を乗り越えて」の部分を「多様な〜」に変えた方がいいかもしれませんね。
babie
2010-02-26 17:20:52
返信する
RTする
ふぁぼる
@m_seki
TDDでは、レッドつまり反証テスト(偽になる)を作って、メソッドを書き換え、グリーンになるつまりさっきの反証テストがもはや実証テストに成り果てる、って流れになります。
babie
2010-02-26 17:37:43
返信する
RTする
ふぁぼる
@lchin
実証テスト=Positive Test、反証テスト=Falsificate Test、とかじゃないの?英語わかんないけど。
babie
2010-02-26 17:41:48
返信する
RTする
ふぁぼる
@m_seki
テストファーストだから反証テストから始まると思うんですけど。
babie
2010-02-26 17:47:07
返信する
RTする
ふぁぼる
@lchin
いわゆるテスト技法から持ってきた用語じゃないです、科学哲学の方から持ってきた用語です。
babie
2010-02-26 17:48:38
返信する
RTする
ふぁぼる
@m_seki
あるモジュール・クラス・メソッドに対してのテストで、個人の心に対するテストじゃないので、なんかちょっと考え方が違いますね。
babie
2010-02-26 17:50:46
返信する
RTする
ふぁぼる
@kakutani
「TDDは(実証)テスト技法も内蔵している開発手法」が私の理解です。ブログの通り。
babie
2010-02-26 18:05:09
返信する
RTする
ふぁぼる
@kakutani
最後らへんに明示的に「このようにテスト技法を内蔵してるからこそ信頼度が上がるわけです。」ってのを付け加えた。
babie
2010-02-26 18:13:01
返信する
RTする
ふぁぼる
@m_seki
さんは何を目的にTDDやっていますか?「信頼度を上げる」的なことはその目的に入っていませんか?
babie
2010-02-26 18:22:06
返信する
RTする
ふぁぼる
@m_seki
「信頼度」は「安心度」に言い換えてもいいかもしれません。個人の選択なので。
babie
2010-02-26 18:27:23
返信する
RTする
ふぁぼる
@kakutani
私は今までのような魔術的な信心的なものがいやだったので、科学的方法でプログラミングしたいなと思い、科学哲学を勉強しているところです。
babie
2010-02-26 18:31:45
返信する
RTする
ふぁぼる
信頼度という度合いの使い道は、競合する諸理論の内からどれを優先的に使うか決めるときに使います。プログラミングでは似たような用途のメソッドを2つ作ったりはしませんが。相対的なものですね。
babie
2010-02-26 18:35:53
返信する
RTする
ふぁぼる
「TDDはテスト手法か否か」を読んだ人は全員読んでくれないと困る。RTよろ。QT
@babie
: TDDを行うとソフトウェアの信頼度が上がる理由 - ζ*’ワ’)ζ<ちれすですの!
http://bit.ly/dgvbhQ
babie
2010-02-26 20:54:40
返信する
RTする
ふぁぼる
@biac
問題に対して解決方法があればそれは仮説なので、メソッドの場合も、こういう動作がしたいという問題に対しての解決方法なので仮説とみなしています。
babie
2010-02-26 21:26:43
返信する
RTする
ふぁぼる
絶体ツッコミが入るだろうと思って、はてブを定期的にウオッチしているが、今のところまだない。QT
@babie
: TDDを行うとソフトウェアの信頼度が上がる理由 - ζ*’ワ’)ζ<ちれすですの!
http://bit.ly/dgvbhQ
babie
2010-02-26 21:29:18
返信する
RTする
ふぁぼる
@biac
空のメソッドのこと?
babie
2010-02-26 21:36:04
返信する
RTする
ふぁぼる
@biac
そうですね。コンパイルエラーかパースエラーになりますね。ただテスト書くときに呼ぶためにメソッド名はつけてる訳なのでので、あるとみなせます。
babie
2010-02-26 21:43:59
返信する
RTする
ふぁぼる
@biac
認識論の問題ですよね。名前をつけたら存在するのか。私も深いところはわかりませんけど唯名論と実存論で分かれるのではないでしょうか。概念なんかは唯名論でいいんじゃないかと思います。
babie
2010-02-26 22:10:50
返信する
RTする
ふぁぼる
@m_seki
XP全体の話じゃなくてTDDのみに焦点を絞っているので、他のプラクティスは問題にしてません。
babie
2010-02-26 22:24:25
返信する
RTする
ふぁぼる
@m_seki
いや、僕の方が底辺ですね。個人的な安心(信頼)のためにTDDを利用しているわけですから。他にコードが美しくなるというのもありますが、これも主観ですね。
@m_seki
さんのTDDの目的はなんですか?
babie
2010-02-26 22:27:30
返信する
RTする
ふぁぼる
@biac
そうですね。名前をつけたら存在する。とりあえず。
babie
2010-02-26 22:29:06
返信する
RTする
ふぁぼる
@m_seki
え?TDDってペアプログラミングと一体なんですか?
babie
2010-02-26 22:40:17
返信する
RTする
ふぁぼる
@m_seki
そうなんですか。私は一人で開発することが多かったので、XPの他のプラクティスと併用しない場合でも効果を感じました。その実感の一部を言語化したのが今回のエントリでもあります。一人で開発してると「不安を取り除く」のが難儀ですよ。
babie
2010-02-26 22:48:31
返信する
RTする
ふぁぼる
はてブで全然ツッコミがないのは、「お前がそう思うんならそうなんだろ。お前ん中ではな」ということですかっ?!QT
@babie
: TDDを行うとソフトウェアの信頼度が上がる理由 - ζ*’ワ’)ζ<ちれすですの!
http://bit.ly/dgvbhQ
babie
2010-02-26 23:11:02
返信する
RTする
ふぁぼる
@orangesignal
ありがとうございます。ちょっと安心しました。
babie
2010-02-26 23:16:08
返信する
RTする
ふぁぼる
@t_wada
@kakutani
@yoshiori
@m_seki
読んで頂きありがとうございました。
@blac
@orangesignal
さんもありがとうございました。
babie
2010-02-26 23:22:18
返信する
RTする
ふぁぼる
@chibakick
さんも読んでくれてありがとう。twitterクライアントで取得漏れしてた。
babie
2010-02-26 23:39:03
返信する
RTする
ふぁぼる
@lchin
さんもツッコんでくれてありがとうございました。
babie
2010-02-26 23:40:17
返信する
RTする
ふぁぼる
「品質保証」の「保証」って語が完全性を求めるから悪いんだよな。「TDDで品質が上がります!」だったら問題ないような気がしてきた。まぁ余計な混乱を招かないように「信頼度」って言葉を使ったんだけども。あれ?「信頼性」の方が良かったかな?「度」だと測れそう。
babie
2010-02-26 23:48:26
返信する
RTする
ふぁぼる
「信頼度」でも「信頼性」でもどっちでもいいか。「高い」とか「上がる」とか言ってるわけだし。
babie
2010-02-26 23:52:39
関連するオススメまとめ
TDDネタ再燃?
TDDはテスト手法か否か
おやつ前のTDD
TDD,BDD,SDD,ATDDの話題
powered by Preferred Infrastructure
チェックアイテム
お勧めアイテム
や
ネタ商品
を追加してまとめをもっと面白くしよう!
今すぐ追加?
コメント
まずは自分の分だけ追加してみました
nobeans
2010-02-24 14:09:18
@goyoki
さんを追加
t_wada
2010-02-24 15:18:34
@mkoszk
さんを追加しました
yattom
2010-02-24 15:42:16
@nsiena
@biac
@mitim
@yattom
@skoji
@keisuke_n
@quicy
さんを追加しました。問題ある場合は自分で消すか、もしくは reply ください。
t_wada
2010-02-24 19:39:16
@YasuharuNishi
@ikedon
@akiyama924
@yumotsuyo
の発言を足しました
t_wada
2010-02-24 19:46:04
@yamashiro
@cactusman
@hiranabe
@wtnabe
さんの発言を追加しました
t_wada
2010-02-24 19:57:05
@t_yano
@findup
@bohnen
さんの発言を追加
t_wada
2010-02-24 20:11:45
@exKAZUu
@niku_name
@nawoto
@higepon
@katzchang
@hotchpotch
@piro_or
@showyou
@nagise
@bobbyjam99
さんの発言を追加
t_wada
2010-02-24 20:27:40
@m_seki
@ledsun
@bash0C7
@hikaruworld
@holic
さんの発言を追加
t_wada
2010-02-24 20:38:48
@kkd
(自分)のコメントを追加した。
kkd
2010-02-24 21:10:03
@goyoki
と
@biac
の夕方あたりのつぶやきを追加しました
htada
2010-02-24 21:20:16
22時手前の
@yoshiori
@nobeans
@orangesignal
@skoji
@mitim
@biac
@sakata_akinori
さんを追加しました。
htada
2010-02-24 22:57:14
http://twitter.com/ledsun/tdd
の半分。25日1時頃までを追加しました。
@t_wada
@yamashiro
@keisuke_n
@htada
@localdisk
@yanchi
@hikaruworld
@mkoszk
@fkmn
@sinsoku_listy
@ukstudio
@zecl
@tfujikura
@a_hisame
@exKAZUu
@yumotsuyo
@oota_ken
@akiyama924
@YasuharuNishi
@quicy
さんたち
htada
2010-02-25 03:01:42
http://twitter.com/ledsun/tdd
のもう半分と夜中参戦の方々など。25日2時頃までを追加しました。
@kuresato
@babie
@nobeans
@uokumura
@bohnen
@yujispw
@yoshiori
@yohhatu
@skoji
@k_yanase
@coji
@lchin
@bash0C7
@akasata
@YaSuYuKi
@biac
@henrich
@t_yano
@naka_aki_spl
@tosikawa
@goyoki
@kaorun
htada
2010-02-25 04:10:21
@ledsun
さんを追加しました。リスト作成ありがとうございます!
htada
2010-02-25 04:16:03
RT
@katzchang
: TDDで作るテストコードは、開発者が意図している仕様となっていることを保証している、と言う部分は言い切っちゃっていいような気はする。問題は、その仕様が要件を満たすとは限らないということ。
mitim
2010-02-25 06:57:40
RT
@mitim
: ひとつ言えるのは、UnitTest出現以前の「単体テスト」は、TDDの品質の足元にも及ばない悪い品質しか「保証」できなかったってことかな。最終的なガワの品質がなんとかなってたのは、それ以降のテストの厚みと最終的にはベテランのカバーだった
monjudoh
2010-02-25 16:05:19
自分、
@mkoszk
さん、
@hsbt
さん、
@tomohn
さん、
@biac
さんの25日のツイート、およびblogを書いた
@babie
さんの26日までのツイートを追加しました。中途半端ですみませんorz
mitim
2010-02-27 01:56:39
新たに、25日分の
@wtnabe
さん、
@t_wada
さん、
@carnation
さん、
@maskenn
さん、
@syama666
さん、
@kanu_
さんの発言をごりごり盛り込みました。かなりランダム選択です。
mitim
2010-02-27 10:00:49
編集の履歴
2010-02-27 10:00:49
mitim
さんが更新しました。
2010-02-27 01:56:39
mitim
さんが更新しました。
2010-02-25 04:16:03
htada
さんが更新しました。
2010-02-25 04:10:21
htada
さんが更新しました。
2010-02-25 03:01:42
htada
さんが更新しました。
ブログパーツ
幅・高さの指定を変えることでサイズを変更できます。
またsrcの中の「bc=***」で背景色を変更できます。
プロフィール
t_wada
twitter
rss
その他のまとめ
第13回 xUnit Test Patterns( #xutp )読書会のまとめ
TDD について
カスタム検索
@togetter_jpをフォロー
注目のまとめリスト
24時間テレビの件から始まったテレビに関するちょっとした議論
村上隆批判と村上隆自身および東浩紀による反論など
弟が24時間テレビのボランティアに行ったら激怒して帰ってきた話【9/1追記】
ARIAのリアリティと嘘くさい街
立ち読みって何が悪いの?
東浩紀とカンニング問題
最近追加された商品
Gift for Fanks(DVD付)
プレリアップスカルプシャンプー 220ml
落武者カツラ
プレリアップヘアコンディショナー 220g
第九 21連発!!!
角刈りかつら
最近ログインしたユーザ
コメント
2010-02-24 14:09:18
2010-02-24 15:18:34
2010-02-24 15:42:16
2010-02-24 19:39:16
2010-02-24 19:46:04
2010-02-24 19:57:05
2010-02-24 20:11:45
2010-02-24 20:27:40
2010-02-24 20:38:48
2010-02-24 21:10:03
2010-02-24 21:20:16
2010-02-24 22:57:14
2010-02-25 03:01:42
2010-02-25 04:10:21
2010-02-25 04:16:03
2010-02-25 06:57:40
2010-02-25 16:05:19
2010-02-27 01:56:39
2010-02-27 10:00:49