テスト駆動開発 (test-driven development; TDD) について マターリ 語りましょう
ツールについては別スレで
テストツールについて語るスレ 2
http://hibari.2ch.net/test/read.cgi/tech/1208013693/
探検
【TDD】テスト駆動開発【TestFirst】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2010/09/19(日) 21:26:12446デフォルトの名無しさん
2014/10/18(土) 12:25:58.33ID:/bV95tiS なるほど
447デフォルトの名無しさん
2014/10/18(土) 15:13:02.82ID:mzkaImX0 >>445
あんた公務員か
あんた公務員か
448デフォルトの名無しさん
2014/10/18(土) 15:19:28.52ID:r/p1CvCN たぶんプログラマって言葉の定義が違うんじゃね
SE/PG世界のプログラマは普通のプログラマと別の概念
SE/PG世界のプログラマは普通のプログラマと別の概念
449デフォルトの名無しさん
2014/10/18(土) 15:52:52.83ID:2d9yKbqY >>439
Javaの例外は3種類あって、
プログラマが主に想定する例外は、Exception
Error
メモリ不足やハードウェアの故障など、
プログラムではどうにもならないもので、catchする必要がない
Exception
ファイルが読み書きできない、ネットワークがつながらないなど、
プログラムで想定できるもので、catchすべき
RuntimeException
NullPointerのチェックなど、
一々想定していると切りがないもので、catchしなくてもよい
Javaの例外は3種類あって、
プログラマが主に想定する例外は、Exception
Error
メモリ不足やハードウェアの故障など、
プログラムではどうにもならないもので、catchする必要がない
Exception
ファイルが読み書きできない、ネットワークがつながらないなど、
プログラムで想定できるもので、catchすべき
RuntimeException
NullPointerのチェックなど、
一々想定していると切りがないもので、catchしなくてもよい
450デフォルトの名無しさん
2014/10/18(土) 16:24:30.31ID:L9rzpY5S アーキテクチャをそんな意味で使うの初めて見た
451デフォルトの名無しさん
2014/10/19(日) 00:06:51.41ID:GulnFHAj >>440
> printf() の戻り値見ろと言っているに等しい
例外がない言語はそうなるから大変なんだよね。
例外がある言語ならすべての行でエラーが起きる可能性がある
という前提でプログラムしても全然負担にならないのに。
> printf() の戻り値見ろと言っているに等しい
例外がない言語はそうなるから大変なんだよね。
例外がある言語ならすべての行でエラーが起きる可能性がある
という前提でプログラムしても全然負担にならないのに。
452デフォルトの名無しさん
2014/10/20(月) 11:17:44.91ID:MhItlF5V >>443
> たとえ一人でやっている場合でも、アーキテクチャ(何が起きるか)と、
> インプリメンテーション(どう起こすか)は明確に分けるべき。
> ましてや複数人でやるんなら、アーキテクチャが明示されることが必要。
ちょっと俺とは「アーキテクチャ」の使い方が違うようだ。
> 少なくともユーザに仕様として提示されるものは、全てアーキテクチャなんで、
ユーザに仕様として提示すべきものは「外部仕様」。
そして、その中には内部で使用するアーキテクチャは明示されるかもしれないし、明示されないかもしれない。
> 必要なファイルが無かったり、外部装置や EAI の接続先が故障していた場合
> に"何が起きるか" は、アーキテクチャとして定義されなければならない。
内部設計では、何が起きえて何をすべきかを網羅することは必要だが、外部仕様としてはそれらをすべて
含む必要はない。
> たとえ一人でやっている場合でも、アーキテクチャ(何が起きるか)と、
> インプリメンテーション(どう起こすか)は明確に分けるべき。
> ましてや複数人でやるんなら、アーキテクチャが明示されることが必要。
ちょっと俺とは「アーキテクチャ」の使い方が違うようだ。
> 少なくともユーザに仕様として提示されるものは、全てアーキテクチャなんで、
ユーザに仕様として提示すべきものは「外部仕様」。
そして、その中には内部で使用するアーキテクチャは明示されるかもしれないし、明示されないかもしれない。
> 必要なファイルが無かったり、外部装置や EAI の接続先が故障していた場合
> に"何が起きるか" は、アーキテクチャとして定義されなければならない。
内部設計では、何が起きえて何をすべきかを網羅することは必要だが、外部仕様としてはそれらをすべて
含む必要はない。
453デフォルトの名無しさん
2014/10/21(火) 17:54:15.96ID:LMlVzSKe コードを書かない?設計者が、最終的に使用するミドルウェア・ライブラリ・APIに精通してる奴多すぎ。
んで、if (エラー条件)となる部分を全部設計書に明記するだって?
どんだけ分厚い設計書なんだよ。
んで、if (エラー条件)となる部分を全部設計書に明記するだって?
どんだけ分厚い設計書なんだよ。
454デフォルトの名無しさん
2014/10/21(火) 17:56:11.27ID:LMlVzSKe455デフォルトの名無しさん
2014/10/22(水) 01:30:09.07ID:S8JTP3B8456デフォルトの名無しさん
2014/10/22(水) 10:11:18.50ID:d0Ctl7Dm >>455
オフショアの話なんて誰もしてないと思うが
オフショアの話なんて誰もしてないと思うが
457デフォルトの名無しさん
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:Fb8Lo38E■ このスレッドは過去ログ倉庫に格納されています
