お気に入りしたユーザ

  • yoshiori
  • tobetchi
  • hsbt
  • ukstudio
  • ozero
  • suchi
  • kakutani
  • _dot
  • kkd
  • skoji
  • haru01
  • asatohan
  • yujiorama
  • nobeans
  • kenchan
  • emeitch
  • Surgo
  • kaorun55
  • taru
  • matsukaz
  • yoozoosato
  • kwappa
  • noplans
  • repeatedly
  • ymkz303
  • yadokarielectri
  • imai78
  • TrinityT
  • htada
  • Qooh0
  • matarillo
  • regtan
  • hayato_1980

まとめられたつぶやき

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

チェックアイテム

お勧めアイテムネタ商品を追加してまとめをもっと面白くしよう!今すぐ追加?

コメント

編集の履歴

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=***」で背景色を変更できます。