テスト駆動開発 (test-driven development; TDD) について マターリ 語りましょう
ツールについては別スレで
テストツールについて語るスレ 2
http://hibari.2ch.net/test/read.cgi/tech/1208013693/
探検
【TDD】テスト駆動開発【TestFirst】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2010/09/19(日) 21:26:12457デフォルトの名無しさん
2014/10/22(水) 12:52:41.64ID:G2nqW3Ft458デフォルトの名無しさん
2014/10/22(水) 13:54:32.30ID:d0Ctl7Dm459デフォルトの名無しさん
2014/10/22(水) 18:54:17.18ID:LJFjeu5w >>444
既に存在するスパゲティなCのプログラムがあるんだけど
これをテストしようとおもうんだが
どうしたらいいとおもう?
ちなみに全てのcファイルが
そのほかのcファイルのヘッダを全部インクルードしてて
隠蔽もクソもない。外部参照の鬼状態で
スタブを作るだけで気が遠くなりそうな状態
既に存在するスパゲティなCのプログラムがあるんだけど
これをテストしようとおもうんだが
どうしたらいいとおもう?
ちなみに全てのcファイルが
そのほかのcファイルのヘッダを全部インクルードしてて
隠蔽もクソもない。外部参照の鬼状態で
スタブを作るだけで気が遠くなりそうな状態
460デフォルトの名無しさん
2014/10/22(水) 19:01:41.56ID:11jX6UQ8 テストの使い方を間違ってる
461デフォルトの名無しさん
2014/10/22(水) 19:16:11.80ID:wZt8Yc67 レガシーコード改善ガイド
462デフォルトの名無しさん
2014/10/23(木) 13:10:10.45ID:YQ33Y8kR463デフォルトの名無しさん
2014/10/23(木) 13:42:02.91ID:eDVkHXcG よくよく見てみたら相互参照や循環が2〜3箇所で
それを除いて解きほぐしたら案外単純…ってことが多いんじゃないかな
それを除いて解きほぐしたら案外単純…ってことが多いんじゃないかな
464デフォルトの名無しさん
2014/10/24(金) 01:19:22.31ID:ytrFsh/0 実装済みならE2Eテスト書けば
465デフォルトの名無しさん
2014/10/25(土) 23:02:32.16ID:vC010Lko スパゲティ
466デフォルトの名無しさん
2014/11/08(土) 12:34:57.35ID:EW+rnnAz パスタ
467デフォルトの名無しさん
2014/11/09(日) 12:21:49.68ID:yjLcynWs テスト駆動ってC0カバレッジの確認しづらくない
468デフォルトの名無しさん
2014/11/09(日) 20:05:25.41ID:45yI7iTj 最後に確認して足りなきゃ足したら良いんじゃないの?
469デフォルトの名無しさん
2014/11/09(日) 20:47:28.67ID:dsC9nPzL お前はなんにもわかってない
470デフォルトの名無しさん
2014/11/09(日) 20:56:21.42ID:iKzDg9OD まさかC0を通すためにテストを書き直すとかやってるんじゃないだろうな・・・
471デフォルトの名無しさん
2014/11/16(日) 09:33:56.00ID:ZyAZKYiT >>470
TDDは開発手法だよ。
TDDと品質テストは、別物として考えるべき。これって、教科書の2,3ページくらい目に書かれている。
ただ、TDDのテストも品質テストに流用は可能だ。なので >468は良くわかっている人間だ。
TDDは開発手法だよ。
TDDと品質テストは、別物として考えるべき。これって、教科書の2,3ページくらい目に書かれている。
ただ、TDDのテストも品質テストに流用は可能だ。なので >468は良くわかっている人間だ。
472デフォルトの名無しさん
2014/11/16(日) 10:04:32.62ID:chCKawZi >>471
なんで俺にレス付けたのか知らんがそんなの知っとるがな
なんで俺にレス付けたのか知らんがそんなの知っとるがな
473459
2014/11/22(土) 19:34:49.92ID:Le0NeUvk >>462
職場の製品プログラムなんで
末端の俺ごときがインクルードをいじると鬼のように罵倒される
なのにカバレッジテストの業務ルールを作れといわれたんだが
正直テストケースを書くだけで眩暈がする
境界値テストとかもはや不可能
職場の製品プログラムなんで
末端の俺ごときがインクルードをいじると鬼のように罵倒される
なのにカバレッジテストの業務ルールを作れといわれたんだが
正直テストケースを書くだけで眩暈がする
境界値テストとかもはや不可能
474デフォルトの名無しさん
2014/11/22(土) 19:48:51.79ID:2zfZYN6C 罵倒されるような人間にルール作りを任せる? ありえんわ
出来ても誰も守らねーだろう
適当に作っとけよ
出来ても誰も守らねーだろう
適当に作っとけよ
475デフォルトの名無しさん
2014/11/22(土) 19:56:54.71ID:2zfZYN6C476デフォルトの名無しさん
2014/11/23(日) 14:05:47.05ID:YQdbMQXk 473-475は無能
477デフォルトの名無しさん
2014/11/23(日) 14:26:41.19ID:GCb4Xc58 476がスゲー解決策を提示してくれるようです
478デフォルトの名無しさん
2014/11/25(火) 11:06:37.29ID:S6K9qD6w479デフォルトの名無しさん
2014/11/25(火) 23:45:47.25ID:Nxen9kpa 使ってないincludeをコメントアウトしただけで動かなくなることもあるからなぁ
末端のPGが勝手にいじるのもどうかと思うよ
組み込みとか古いプログラムだとよくあるんだよね
メモリ周りにバグがあって偶然動いているようなプログラムは
参照を外しただけでアドレスが狂って動かなくなる
末端のPGが勝手にいじるのもどうかと思うよ
組み込みとか古いプログラムだとよくあるんだよね
メモリ周りにバグがあって偶然動いているようなプログラムは
参照を外しただけでアドレスが狂って動かなくなる
480デフォルトの名無しさん
2014/11/26(水) 19:32:04.26ID:iN5Oa4ie 組み込み系のひとが書くCなんてめちゃくちゃだよ
481デフォルトの名無しさん
2014/11/27(木) 10:10:09.22ID:r+bsdp9/482デフォルトの名無しさん
2014/12/22(月) 15:36:54.08ID:lSyDhRKu 組み込み系が酷くなかったいう話は聞いたことがない
自分たちはちゃんとやってるつもりだったのか
自分たちはちゃんとやってるつもりだったのか
483デフォルトの名無しさん
2014/12/22(月) 17:25:12.55ID:xehSPM0d 組み込み系が酷いということなら、業務系も酷いぞ
ゴミの寄せ集めだし
ゴミの寄せ集めだし
484デフォルトの名無しさん
2014/12/24(水) 00:40:32.72ID:83J9p+C4 酷い方向が違うんだよな。
どっちも酷いのは多い
どっちも酷いのは多い
485デフォルトの名無しさん
2014/12/25(木) 01:35:17.73ID:QeaHxHUz 組み込みや業務系が酷いと言われるのはライフサイクルが長いからだよ
それ以外のプロジェクトも実際はゴミばっかり
だけどそれが顕在化する前に淘汰されてサービスの終了を迎えてるってだけ
それ以外のプロジェクトも実際はゴミばっかり
だけどそれが顕在化する前に淘汰されてサービスの終了を迎えてるってだけ
486デフォルトの名無しさん
2014/12/31(水) 16:18:59.05ID:y3Bru/20 組み込みが酷いのはハードやコンパイラの制約によるもの
業務系が酷いのは要員のレベルのばらつきの大きさによるもの
業務系が酷いのは要員のレベルのばらつきの大きさによるもの
487デフォルトの名無しさん
2014/12/31(水) 16:49:50.16ID:eUm/9QT3 組み込みも要員のレベルとさせてくれ
環境があるのに頑なに適応せずに昔のままをやりたがる
環境があるのに頑なに適応せずに昔のままをやりたがる
488デフォルトの名無しさん
2014/12/31(水) 16:55:18.42ID:vA2dnFSZ489デフォルトの名無しさん
2014/12/31(水) 17:19:00.28ID:JkDgdJ7S490デフォルトの名無しさん
2014/12/31(水) 17:36:35.58ID:5tzGTAD9 ソフト屋さんが仕様決めて!その通り作るからってのはあったな
おまえ回路図で線繋ぐだけかよって…
ハードのデバッグもソフト屋まかせな奴だったのでキレました
おまえ回路図で線繋ぐだけかよって…
ハードのデバッグもソフト屋まかせな奴だったのでキレました
491デフォルトの名無しさん
2015/01/03(土) 22:02:59.55ID:kkg062go 亀レスだけど
>>481 組み込み系の組織では、MISRA-Cを意識してるとこ多数だよ。
MISRA-C て本当にまともなルール仕様か?
下を見て、こりゃ阿呆だと思っている。
20.7 R setjmpマクロ及びlongjmp関数は、用いてはならない。
>>481 組み込み系の組織では、MISRA-Cを意識してるとこ多数だよ。
MISRA-C て本当にまともなルール仕様か?
下を見て、こりゃ阿呆だと思っている。
20.7 R setjmpマクロ及びlongjmp関数は、用いてはならない。
492デフォルトの名無しさん
2015/01/04(日) 00:56:12.46ID:inwAoRSs 下手な使い方して落とし穴掘られるリスクより
ハングさせてハードリセットする方がマシというケースも多い
ハングさせてハードリセットする方がマシというケースも多い
493デフォルトの名無しさん
2015/01/12(月) 00:20:00.80ID:qplG+w6a でテスト駆動ってどうなのよ
494デフォルトの名無しさん
2015/01/12(月) 00:22:31.65ID:qWf800EE 終わった
495デフォルトの名無しさん
2015/01/12(月) 08:58:02.07ID:bBlSgM6z テストなんて書くだけ無駄
コードとテストで仕事が2倍になるだけ
どうせ一回通ったら用済みなんだから書く必要ない
コードとテストで仕事が2倍になるだけ
どうせ一回通ったら用済みなんだから書く必要ない
496デフォルトの名無しさん
2015/01/14(水) 20:01:04.12ID:mbeKC74a TDD by example 再出発
497デフォルトの名無しさん
2015/01/14(水) 21:26:18.53ID:ZzJLW/vD >>495
じゃあテスト仕様を先に作るだけなら問題ないの?
じゃあテスト仕様を先に作るだけなら問題ないの?
498デフォルトの名無しさん
2015/01/18(日) 07:54:29.17ID:AOSxsRns yes
499デフォルトの名無しさん
2015/01/18(日) 09:12:40.34ID:geB77wKJ 一回通ったら用済みとか言ってる時点でまともな開発やったことない奴だってわかる
500デフォルトの名無しさん
2015/01/18(日) 10:11:14.89ID:sNaTaheH そんな香具師と判ってて相手するとか
どんだけ親切なんだ
どんだけ親切なんだ
501デフォルトの名無しさん
2015/02/21(土) 16:03:21.19ID:FlDtTMp/ むしろテストが一度でも行われていたらラッキー
502デフォルトの名無しさん
2015/02/22(日) 14:32:31.50ID:J+2bP69K どっかのSEを自称するひとがW字開発とか意気込んでたけど
これもテスト駆動ってやつ?
これもテスト駆動ってやつ?
503デフォルトの名無しさん
2015/02/22(日) 16:00:00.52ID:WbEMx951 違うんじゃね
504デフォルトの名無しさん
2015/02/23(月) 21:53:44.54ID:YPq7I/CP w字開発は悲劇の開発
505デフォルトの名無しさん
2015/02/23(月) 22:53:58.10ID:wIOqQNws W字って初めて聞いた
仕様変更や手戻りが発生したら大変そうなんだけどどうなの
仕様変更や手戻りが発生したら大変そうなんだけどどうなの
506デフォルトの名無しさん
2015/03/05(木) 20:35:18.19ID:Z1VFzrPe 仕様変更の度に試験仕様書の修正が発生します
507デフォルトの名無しさん
2015/03/05(木) 21:41:49.24ID:K2/AKKmr 仕様変更という言葉の意味を知った上で言ってるのか
508デフォルトの名無しさん
2015/03/06(金) 01:16:33.41ID:dcg9agNJ メタテストですね
509デフォルトの名無しさん
2015/03/07(土) 20:16:06.24ID:lexZIoDv510デフォルトの名無しさん
2015/03/07(土) 20:48:33.06ID:evNQRu0c511デフォルトの名無しさん
2015/03/16(月) 21:05:40.30ID:OhH2Zqat テストプログラムのテストというのはおかしいでしょうか。
例えば、アクションゲームの自動機能テストを行うために、
予め設定した大まかな指示通りに自動でコントローラーを入力する
仮想的なプレーヤーをプログラムしたとします。
このプログラムはゲームのリリースには含めないテストプログラムのひとつです。
しかし、正しく動くことが明らかなほどシンプルなプログラムではありません。
なので、この仮想プレーヤープログラムもテスト対象とすべきだと私は思います。
このような考え方はテスト駆動開発としては間違っているでしょうか。
テスト駆動を解説した本やWeb記述にもこのような状況のことは書かれていないような気がします。
例えば、アクションゲームの自動機能テストを行うために、
予め設定した大まかな指示通りに自動でコントローラーを入力する
仮想的なプレーヤーをプログラムしたとします。
このプログラムはゲームのリリースには含めないテストプログラムのひとつです。
しかし、正しく動くことが明らかなほどシンプルなプログラムではありません。
なので、この仮想プレーヤープログラムもテスト対象とすべきだと私は思います。
このような考え方はテスト駆動開発としては間違っているでしょうか。
テスト駆動を解説した本やWeb記述にもこのような状況のことは書かれていないような気がします。
512デフォルトの名無しさん
2015/03/16(月) 23:22:18.02ID:iyRDLNI5 >>511
テスト駆動の考え方がわかってないだけ
テスト駆動の考え方がわかってないだけ
513デフォルトの名無しさん
2015/03/17(火) 17:20:27.93ID:Bw8e4yLM テストプログラムのテストのテストというのはおかしいでしょうか。
テストプログラムのテストのテストのテストというのはおかしいでしょうか。
テストプログラムのテストのテストのテストのテストというのは可笑しいでしょうか。
テストプログラムのテストのテストのテストというのはおかしいでしょうか。
テストプログラムのテストのテストのテストのテストというのは可笑しいでしょうか。
514デフォルトの名無しさん
2015/03/17(火) 18:34:03.30ID:vCwecCoL516デフォルトの名無しさん
2015/03/17(火) 23:32:04.19ID:c2oAi75i 意外と>>513が正しいのでは
517デフォルトの名無しさん
2015/03/17(火) 23:38:56.12ID:k/LbPUX+ >>516
数学的に考えれば品物が上がらない事は明白だろう?
数学的に考えれば品物が上がらない事は明白だろう?
518デフォルトの名無しさん
2015/03/20(金) 15:48:44.47ID:4UXRNT4S どこまでテストするかの話になると外部ライブラリだけでなくコンパイラやOSまで疑う必要がある
一昔前のコンパイラは多すぎてコンパイラのテストもやっていたな
一昔前のコンパイラは多すぎてコンパイラのテストもやっていたな
519518
2015/03/20(金) 15:51:36.12ID:4UXRNT4S 訂正
>一昔前のコンパイラは多すぎてコンパイラのテストもやっていたな
一昔前のコンパイラはバグが多すぎてコンパイラのテストもやっていた
>一昔前のコンパイラは多すぎてコンパイラのテストもやっていたな
一昔前のコンパイラはバグが多すぎてコンパイラのテストもやっていた
520デフォルトの名無しさん
2015/03/31(火) 18:51:00.25ID:855buxIJ Kindleでこんな本が発売されたのを発見。
読んでないので内容は全くわからないが、目次を見る限り、よさげな気もする。
『これからはじめるTDD テスト駆動開発入門 (Think IT Books)』 \1,400
http://www.amazon.co.jp/dp/B00VFQ7WCM
> エクストリーム・プログラミングのプラクティスのひとつであるテスト駆動開発(TDD)について、
> 聞いたことはあるけれど内容は知らない方、概要は知っているけれど実際に使ったことが
> ない方を対象に、全7章にわたってご説明していきます。アジャイルをかじった程度の開発
> 経験の浅いプログラマと、TDD開発を実践しているプロジェクトリーダーによる会話形式で
> 楽しくTDDを学びましょう。本書は、インプレスが運営するWebメディア「Think IT」で、「マル
> チプラットフォーム対応のゲーム開発エンジンUnityを体験する」として連載された技術解説
> 記事を電子書籍およびオンデマンド書籍として再編集したものです。
読んでないので内容は全くわからないが、目次を見る限り、よさげな気もする。
『これからはじめるTDD テスト駆動開発入門 (Think IT Books)』 \1,400
http://www.amazon.co.jp/dp/B00VFQ7WCM
> エクストリーム・プログラミングのプラクティスのひとつであるテスト駆動開発(TDD)について、
> 聞いたことはあるけれど内容は知らない方、概要は知っているけれど実際に使ったことが
> ない方を対象に、全7章にわたってご説明していきます。アジャイルをかじった程度の開発
> 経験の浅いプログラマと、TDD開発を実践しているプロジェクトリーダーによる会話形式で
> 楽しくTDDを学びましょう。本書は、インプレスが運営するWebメディア「Think IT」で、「マル
> チプラットフォーム対応のゲーム開発エンジンUnityを体験する」として連載された技術解説
> 記事を電子書籍およびオンデマンド書籍として再編集したものです。
521デフォルトの名無しさん
2015/03/31(火) 21:27:32.21ID:D90KPxNw ステマ乙。目次どこにあるんだよ。
522デフォルトの名無しさん
2015/03/31(火) 21:42:50.98ID:D90KPxNw あとUnityどこに関係するんだ?amazonの紹介文修正しとけよ。
523デフォルトの名無しさん
2015/04/01(水) 10:34:19.69ID:MxSupW0l >>521
TDDの本なんてめったに出ないから紹介しただけだし。
目次は
http://book.impress.co.jp/books/1114170210
にある。
俺はTDD初心者じゃないから買わないけど。
TDDの本なんてめったに出ないから紹介しただけだし。
目次は
http://book.impress.co.jp/books/1114170210
にある。
俺はTDD初心者じゃないから買わないけど。
524523
2015/04/02(木) 10:30:42.33ID:DnwfhgCI ステマ言われたんで買ってみた。
40分で2/3位読めた(コード入力してないから)。
内容はTDDを全く知らない人向け。誤植を何カ所か見つけた。
DHHのTDD is deadについても言及があるが、及び腰で全くなってない。
40分で2/3位読めた(コード入力してないから)。
内容はTDDを全く知らない人向け。誤植を何カ所か見つけた。
DHHのTDD is deadについても言及があるが、及び腰で全くなってない。
525523
2015/04/03(金) 13:21:39.26ID:C7O2gbfJ 読み終わったけど、全然駄目だった。
やはり、自分が読まないとお薦めしてはいけないね。
筆者は、TDDをテスト手法でもあると勘違いしてる気がする。
誤った要件理解をTDDのテストがFailすることで発見する場面が何度か出てくるが、
TDDでテストがFailするのは、基本的に最初にテストを実装・実行するときと、自分の
意図したものが正しく実装できなかったか、あるいは、リファクタリングで何かを壊した
ときかのどれか。
まあ、期待値が間違ってたということもあるけど、それは要件を間違って理解したと
いうことではない。
この本の例に則して言えば、例えばボーリングで一投目から、{(3, 7), (G, 3)}と投げた
ときのスコアを13点ではなくて16点だと誤った思い込みをしたとき(期待値を間違った
わけではなくて、スペアのボーナスは、次に初めて獲得した点数だと思い込む)、
TDDというはその誤った思い込みによるスコア体系を正しく実装する手段でしかない。
やはり、自分が読まないとお薦めしてはいけないね。
筆者は、TDDをテスト手法でもあると勘違いしてる気がする。
誤った要件理解をTDDのテストがFailすることで発見する場面が何度か出てくるが、
TDDでテストがFailするのは、基本的に最初にテストを実装・実行するときと、自分の
意図したものが正しく実装できなかったか、あるいは、リファクタリングで何かを壊した
ときかのどれか。
まあ、期待値が間違ってたということもあるけど、それは要件を間違って理解したと
いうことではない。
この本の例に則して言えば、例えばボーリングで一投目から、{(3, 7), (G, 3)}と投げた
ときのスコアを13点ではなくて16点だと誤った思い込みをしたとき(期待値を間違った
わけではなくて、スペアのボーナスは、次に初めて獲得した点数だと思い込む)、
TDDというはその誤った思い込みによるスコア体系を正しく実装する手段でしかない。
526デフォルトの名無しさん
2015/05/29(金) 14:19:57.76ID:McOxVkvH TDDを行った時にぶつかった7つの壁
http://qiita.com/syou007/items/7d6fdf1b7b6245a07bce
http://qiita.com/syou007/items/7d6fdf1b7b6245a07bce
527デフォルトの名無しさん
2015/05/29(金) 15:10:31.84ID:McOxVkvH TDDに関する議論をググってみて見つけたページ。
TDDをめぐる、最近の議論についての私見。
http://blog.fieldnotes.jp/entry/2014/05/07/225129
完全に同意。
TDDは、
> 開発者テストのレベルで「開発者の思ったとおりに動く」ことが保証
されるようにするもの。
そしてそれを使って
> テストによって開発が駆動されること
を目指すもの。
TDDをめぐる、最近の議論についての私見。
http://blog.fieldnotes.jp/entry/2014/05/07/225129
完全に同意。
TDDは、
> 開発者テストのレベルで「開発者の思ったとおりに動く」ことが保証
されるようにするもの。
そしてそれを使って
> テストによって開発が駆動されること
を目指すもの。
528デフォルトの名無しさん
2015/06/01(月) 10:17:17.81ID:4t8ilUI7 >>526
TDDと、品質保証のための自動テストによる単体テストを、完全に混同してる。
TDDと、品質保証のための自動テストによる単体テストを、完全に混同してる。
529デフォルトの名無しさん
2015/09/23(水) 22:50:15.66ID:nPFFi/Oi qiitaにマジレス
530デフォルトの名無しさん
2015/09/29(火) 22:12:17.46ID:diX6sJrx テスト駆動開発はゴミクズ
531デフォルトの名無しさん
2015/11/26(木) 08:24:06.20ID:Dizh+t9P Test-Driven Development is Stupid
http://geometrian.com/programming/tutorials/testing/test-first.php
http://geometrian.com/programming/tutorials/testing/test-first.php
532デフォルトの名無しさん
2015/11/26(木) 10:12:43.24ID:wjty/3s6 >>531
ここにも勘違いしてる奴がいた
TDDはよりよい設計をもたらすものじゃない
TDDは、自分が正しいと思った設計で、それをコーディングするときに、テストの力を借りて
確信を得ながらコーディングするための手法だ
「自分が正しいと思った設計」が「Good Design」じゃない奴は、どんな開発手法を使っても
自動的には「Good Design」にはならない
ここにも勘違いしてる奴がいた
TDDはよりよい設計をもたらすものじゃない
TDDは、自分が正しいと思った設計で、それをコーディングするときに、テストの力を借りて
確信を得ながらコーディングするための手法だ
「自分が正しいと思った設計」が「Good Design」じゃない奴は、どんな開発手法を使っても
自動的には「Good Design」にはならない
533デフォルトの名無しさん
2015/11/27(金) 17:53:44.15ID:c/N8jVfb ほんそれ
534デフォルトの名無しさん
2015/11/27(金) 18:02:19.08ID:Ib2iKJmv >>532
TDDは、自分が正しく無い設計を選んでしまったときに、少しでも早くその事を知り、フィードバックするための手法だよ。
TDDは、自分が正しく無い設計を選んでしまったときに、少しでも早くその事を知り、フィードバックするための手法だよ。
535デフォルトの名無しさん
2015/11/27(金) 18:06:37.23ID:c/N8jVfb >正しく無い設計
この「無い」の漢字の使い方は可笑しい
これフィードバックな
この「無い」の漢字の使い方は可笑しい
これフィードバックな
536デフォルトの名無しさん
2015/11/27(金) 18:29:00.24ID:R6S7u3+S >>534
コードを全て実装した後でテストが失敗したとき、それは
・間違った実装をした
・テストの期待値が間違っていた
というのがわかる位だよ。
正しくない設計(というか稚拙な実装)でも、正しい結果(期待値と合致する)であれば、
たいていは気づかない。
コードを全て実装した後でテストが失敗したとき、それは
・間違った実装をした
・テストの期待値が間違っていた
というのがわかる位だよ。
正しくない設計(というか稚拙な実装)でも、正しい結果(期待値と合致する)であれば、
たいていは気づかない。
537デフォルトの名無しさん
2015/11/28(土) 22:21:29.95ID:bl9Uvb4J 三大期待しすぎてガッカリされる手法
オブジェクト指向
リファクタリング
TDD
オブジェクト指向
リファクタリング
TDD
538デフォルトの名無しさん
2015/11/29(日) 11:20:08.54ID:Qj6U8mrf オブジェクト指向が手法?
539デフォルトの名無しさん
2015/11/29(日) 12:57:18.55ID:MDC+yNGn >>535
喜んで頂けて幸いです。
喜んで頂けて幸いです。
540デフォルトの名無しさん
2015/11/29(日) 14:50:26.11ID:ywUk37EG >>536
TDDなんだから、コードを全て実装する前のテストの実装の段階でも、テストのしやすさやテスト観点、インターフェース名称などで何か気付くことがあるし、テストの失敗の仕方でもフィードバックを得られる。
テストは漫然とやるのではなく、情報収集の手段だと考えてやることが大事だよ。
TDDなんだから、コードを全て実装する前のテストの実装の段階でも、テストのしやすさやテスト観点、インターフェース名称などで何か気付くことがあるし、テストの失敗の仕方でもフィードバックを得られる。
テストは漫然とやるのではなく、情報収集の手段だと考えてやることが大事だよ。
541デフォルトの名無しさん
2015/11/30(月) 11:50:49.60ID:l98GVpDh >>540
> TDDなんだから、コードを全て実装する前のテストの実装の段階でも、テストのしやすさやテスト観点、インターフェース名称などで何か気付くことがあるし、テストの失敗の仕方でもフィードバックを得られる。
そういうことを経てTDD用のテストとコードが完成したとき、その設計がGood Designではないと
いうことは気づかないということだよ。
テスト容易性やネーミングは、Good Designのほんの一部。
> TDDなんだから、コードを全て実装する前のテストの実装の段階でも、テストのしやすさやテスト観点、インターフェース名称などで何か気付くことがあるし、テストの失敗の仕方でもフィードバックを得られる。
そういうことを経てTDD用のテストとコードが完成したとき、その設計がGood Designではないと
いうことは気づかないということだよ。
テスト容易性やネーミングは、Good Designのほんの一部。
542デフォルトの名無しさん
2015/11/30(月) 15:39:28.85ID:NGwAlAWY >>541
そりゃTDDのプロセスが1周すれば、残るのはTDDでは気付けない事や割りに合わないことが残るに決まってるよね。
TDDが完全に役に立たないと言いたいのではなくて、より良い設計を目指す手法としては割りに合わないと言いたいのだと思うけど、ではTDDより良い手法としては何があると主張してるのかな?
そりゃTDDのプロセスが1周すれば、残るのはTDDでは気付けない事や割りに合わないことが残るに決まってるよね。
TDDが完全に役に立たないと言いたいのではなくて、より良い設計を目指す手法としては割りに合わないと言いたいのだと思うけど、ではTDDより良い手法としては何があると主張してるのかな?
543デフォルトの名無しさん
2015/11/30(月) 16:20:33.71ID:l98GVpDh >>542
勘違いしてるかもしれないけど、俺は超TDD派だし、日々TDDでコーディングしてる。
ただ、TDDはよりよい設計を導き出す手法ではないと言ってるだけ。
もう少し言うと、「気付けない事」の中には「思い込みバグ」なんかも含まれる。
自分がそれが正しいと思ったら、それが正しくあるようなテストとコードを書くため、
それがバグであることがわからない。
もちろん、要求仕様との乖離があってもわからない。
TDDはそういうものを検出するものではない。
勘違いしてるかもしれないけど、俺は超TDD派だし、日々TDDでコーディングしてる。
ただ、TDDはよりよい設計を導き出す手法ではないと言ってるだけ。
もう少し言うと、「気付けない事」の中には「思い込みバグ」なんかも含まれる。
自分がそれが正しいと思ったら、それが正しくあるようなテストとコードを書くため、
それがバグであることがわからない。
もちろん、要求仕様との乖離があってもわからない。
TDDはそういうものを検出するものではない。
544デフォルトの名無しさん
2015/11/30(月) 20:00:07.27ID:JmXUnbN0 TDDは万能薬じゃないって解っていればOKなのだが、TDDのテストが通るからOKみたいなのはあり得ないってだけでしょう?
想定していない事態はTDDじゃ検出できない(想定外の事が起きたときに加える事は当然だけど)
テストは自分の想定している事態に対してコードが正常であるって保証をプログラマに与えてくれるだけでしかないって言う部分がなぜか万能薬みたいに語られるのってエヴァンジェリストが悪いとしか思えない。
想定していない事態はTDDじゃ検出できない(想定外の事が起きたときに加える事は当然だけど)
テストは自分の想定している事態に対してコードが正常であるって保証をプログラマに与えてくれるだけでしかないって言う部分がなぜか万能薬みたいに語られるのってエヴァンジェリストが悪いとしか思えない。
545デフォルトの名無しさん
2015/12/01(火) 11:33:20.20ID:Fb8Lo38E546デフォルトの名無しさん
2015/12/01(火) 11:36:18.07ID:Fb8Lo38E >>544
> テストは自分の想定している事態に対してコードが正常であるって保証をプログラマに与えてくれるだけでしかないって言う部分がなぜか万能薬みたいに語られるのってエヴァンジェリストが悪いとしか思えない。
エヴァンジェリストは、「○○は万能薬ではない」って大抵言ってると思うが。
「○○は万能薬」と思う(勘違いする)のは、良くわかってない奴か、「○○は万能薬だと言われている」
ことにしてdisりたい奴だけじゃないの?
> テストは自分の想定している事態に対してコードが正常であるって保証をプログラマに与えてくれるだけでしかないって言う部分がなぜか万能薬みたいに語られるのってエヴァンジェリストが悪いとしか思えない。
エヴァンジェリストは、「○○は万能薬ではない」って大抵言ってると思うが。
「○○は万能薬」と思う(勘違いする)のは、良くわかってない奴か、「○○は万能薬だと言われている」
ことにしてdisりたい奴だけじゃないの?
547デフォルトの名無しさん
2015/12/01(火) 13:00:01.79ID:j87epvlp >>543
どんな設計手法も、その手法を使わないよりも良い設計を目指すためにあると思うよ。
より良い設計というのはバグが無いという意味ではなくて、費用対効果の面で妥当な設計、と言い換えても良いけど。
新規の何らかのクラスを設計するときに、シーケンス図を書いて複数人でレビューしてから実装には入った方が費用対効果が高いのか、TDDで実装してから本体とテストコードをレビューした方が費用対効果が高いのか?
もし、TDDの方が高いとき、それは何故なのか?
っという観点の話にすれば、俺の主張は以下になる。
TDDはテストによってより早くフィードバックが得られるから費用対効果が高いが、そのフィードバックを解釈するのにも経験が必要で、テストが通りさえすれば良い、という考え方では効果は発揮できない。
また、レビューアにもフィードバックを解釈する能力が要求されるうえ、ペアプログラミングでない場合はテストがNGになった時点の情報が得られないため、設計者よりも少ない情報から設計を判断するための高い能力が必要になるかもしれない。
シーケンス図の方も書けば良い設計になるわけじゃないし、シーケンス図から問題点を読み解く能力が必要だが、おそらくTDDよりはレビューが易しい気がする。
だが、TDDのテストは実行可能ということが利点であり、レビューアが疑問があればテストを追加して実行することが出来る。これを利用すれば、費用対効果を更に高めることが出来るのではないか?
どんな設計手法も、その手法を使わないよりも良い設計を目指すためにあると思うよ。
より良い設計というのはバグが無いという意味ではなくて、費用対効果の面で妥当な設計、と言い換えても良いけど。
新規の何らかのクラスを設計するときに、シーケンス図を書いて複数人でレビューしてから実装には入った方が費用対効果が高いのか、TDDで実装してから本体とテストコードをレビューした方が費用対効果が高いのか?
もし、TDDの方が高いとき、それは何故なのか?
っという観点の話にすれば、俺の主張は以下になる。
TDDはテストによってより早くフィードバックが得られるから費用対効果が高いが、そのフィードバックを解釈するのにも経験が必要で、テストが通りさえすれば良い、という考え方では効果は発揮できない。
また、レビューアにもフィードバックを解釈する能力が要求されるうえ、ペアプログラミングでない場合はテストがNGになった時点の情報が得られないため、設計者よりも少ない情報から設計を判断するための高い能力が必要になるかもしれない。
シーケンス図の方も書けば良い設計になるわけじゃないし、シーケンス図から問題点を読み解く能力が必要だが、おそらくTDDよりはレビューが易しい気がする。
だが、TDDのテストは実行可能ということが利点であり、レビューアが疑問があればテストを追加して実行することが出来る。これを利用すれば、費用対効果を更に高めることが出来るのではないか?
548デフォルトの名無しさん
2015/12/01(火) 14:07:41.90ID:Fb8Lo38E >>547
本当にTDDを理解して実戦しているのか疑わしいレベル。
> そのフィードバックを解釈するのにも経験が必要
意味がわからない。
テストによるフィードバックは失敗あるいは成功しかなく、正しく実装できたはずなのに失敗するのは、
・テストが間違っている
・正しく実装できたはずというのが思い違い
のどちらか、あるいはその両方しかなく、解釈もクソもない。
自分が書いたテストが失敗して、その原因もわからないレベルなら、それはTDDをする資格がない。
というか、そんな奴にプロダクトコード書かせるな。
> ペアプログラミングでない場合はテストがNGになった時点の情報が得られないため、
> 設計者よりも少ない情報から設計を判断するための高い能力が必要になるかもしれない。
これも意味がわからない。
> どんな設計手法も、その手法を使わないよりも良い設計を目指すためにあると思うよ。
そもそも、TDDは設計手法というより開発手法と言うべきで、極言すれば実装手法でしかない。
というか「よい設計」の定義が俺と大幅にずれてる気がする。
俺が思う「よい設計」というのは、例えば
・SOLID原則が守られている(あるいはそれほど重大な違反は無い)
・カプセル化が守られている
・メンテナンス性が良い(リーダビリティが良い)
・パフォーマンスが良い
などなど。
そういう意味の「よい設計」ができる奴は、TDDをしなくとも良い設計はできる。
本当にTDDを理解して実戦しているのか疑わしいレベル。
> そのフィードバックを解釈するのにも経験が必要
意味がわからない。
テストによるフィードバックは失敗あるいは成功しかなく、正しく実装できたはずなのに失敗するのは、
・テストが間違っている
・正しく実装できたはずというのが思い違い
のどちらか、あるいはその両方しかなく、解釈もクソもない。
自分が書いたテストが失敗して、その原因もわからないレベルなら、それはTDDをする資格がない。
というか、そんな奴にプロダクトコード書かせるな。
> ペアプログラミングでない場合はテストがNGになった時点の情報が得られないため、
> 設計者よりも少ない情報から設計を判断するための高い能力が必要になるかもしれない。
これも意味がわからない。
> どんな設計手法も、その手法を使わないよりも良い設計を目指すためにあると思うよ。
そもそも、TDDは設計手法というより開発手法と言うべきで、極言すれば実装手法でしかない。
というか「よい設計」の定義が俺と大幅にずれてる気がする。
俺が思う「よい設計」というのは、例えば
・SOLID原則が守られている(あるいはそれほど重大な違反は無い)
・カプセル化が守られている
・メンテナンス性が良い(リーダビリティが良い)
・パフォーマンスが良い
などなど。
そういう意味の「よい設計」ができる奴は、TDDをしなくとも良い設計はできる。
549デフォルトの名無しさん
2015/12/01(火) 14:10:57.54ID:Fb8Lo38E あと、TDDにおける「素早いフィードバック」というのは、
・正しくテストが実装できたであろう実感(red -> green)
・思い通りのコードが実装できたであろう実感(green -> refactoring -> green)
だぞ。
設計が正しい、あるいは妥当であるというフィードバックではない。
・正しくテストが実装できたであろう実感(red -> green)
・思い通りのコードが実装できたであろう実感(green -> refactoring -> green)
だぞ。
設計が正しい、あるいは妥当であるというフィードバックではない。
550デフォルトの名無しさん
2015/12/04(金) 15:28:40.97ID:dm9hxmiU >>547
今時、シーケンス図を書いて複数人でレビューしてから実装に入るって、どんな分野のどれくらいの規模なの?
リファクタリングが一般化した現在、クラス図でさえ事前にかっちりしたもの書くと手戻りが発生していやがられるのに。
今時、シーケンス図を書いて複数人でレビューしてから実装に入るって、どんな分野のどれくらいの規模なの?
リファクタリングが一般化した現在、クラス図でさえ事前にかっちりしたもの書くと手戻りが発生していやがられるのに。
551デフォルトの名無しさん
2015/12/14(月) 22:58:51.50ID:dPco7zPj 手戻りが嫌ならプログラムを書かなければいい
552デフォルトの名無しさん
2015/12/16(水) 07:23:08.19ID:JxdBAlmf それは言える
メタプログラミングでプログラムは自動生成にしておけば
手戻り発生しても仕様書直すだけで済む
メタプログラミングでプログラムは自動生成にしておけば
手戻り発生しても仕様書直すだけで済む
553デフォルトの名無しさん
2016/02/14(日) 07:50:17.63ID:KRGWcZPF 自動生成するプログラムの修正が必要になるだろタコ。
554デフォルトの名無しさん
2016/04/01(金) 19:49:18.66ID:xvbiumjA test
555デフォルトの名無しさん
2016/04/18(月) 21:10:16.12ID:WJpLEkGK カバレッジって自動じゃないテスト(ようは手動の結合テスト)でも使えんの?
556デフォルトの名無しさん
2016/04/18(月) 21:36:07.56ID:QSS7pC1U ?
何を言ってるのかさっぱり理解できない
何を言ってるのかさっぱり理解できない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 【広島】ペルー女性の国保加入を誤って認め、福山市が医療費484万円を肩代わりするミス…入院して手術を受ける [ぐれ★]
- 宅急便デス
- さっむ
- 千晴だけど30年前にゲームのカセット貸したら勝手に売られたんだけど
- ッシャー
- 千晴って大王だったの?
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
