テスト駆動開発 (test-driven development; TDD) について マターリ 語りましょう
ツールについては別スレで
テストツールについて語るスレ 2
http://hibari.2ch.net/test/read.cgi/tech/1208013693/
探検
【TDD】テスト駆動開発【TestFirst】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2010/09/19(日) 21:26:122011/07/06(水) 20:26:40.58
>>91
そんな事実みたことねーよ。
そんな事実みたことねーよ。
2011/07/06(水) 20:36:51.52
ぶっちゃけ他社のソース見ることはないな
うち元請けじゃないし
うち元請けじゃないし
2011/07/13(水) 00:20:56.20
t-wadaは真心。
t_wadaは下心。
Twitterで流れていたネタw
t_wadaは下心。
Twitterで流れていたネタw
2011/07/13(水) 17:00:39.07
>>94
古いね。
古いね。
2011/07/14(木) 08:02:22.70
こんなしょーもないネタを事情通っぽく「古いね」とか言われてもなぁ。
2011/07/14(木) 09:49:55.26
おまえらTDDについて話せよ。
ということで話題を投下。ちょっと新人にTDD教えるのにペアプロしようと思うんだがなにかいいお題はないかな。
言語はRubyで仕事はRailsだけど、とりあえずTDDについておしえたいのでWebアプリをお題にするのは避けようと思ってる。
定番どころだとボーリングなのかもしれんが、サンプルとしてあまり良い気がしないんだよな。
ということで話題を投下。ちょっと新人にTDD教えるのにペアプロしようと思うんだがなにかいいお題はないかな。
言語はRubyで仕事はRailsだけど、とりあえずTDDについておしえたいのでWebアプリをお題にするのは避けようと思ってる。
定番どころだとボーリングなのかもしれんが、サンプルとしてあまり良い気がしないんだよな。
2011/07/14(木) 11:22:03.40
別に構えてお題を用意する必要ないだろ
今までやってた業務のやつやらしゃいいじゃん
今までやってた業務のやつやらしゃいいじゃん
2011/07/14(木) 22:29:28.39
だよなあ
100デフォルトの名無しさん
2011/07/15(金) 04:17:44.07 ここにいる人ってTDDBCとか出たり、テスト駆動開発入門の本を読んだりしないで
適当に実業務の中でTDDを覚えたり2chやWebの記事やblogなどで勉強した感じですかね?
少なくともTDDBCとかには出ていない雰囲気がする。。。
適当に実業務の中でTDDを覚えたり2chやWebの記事やblogなどで勉強した感じですかね?
少なくともTDDBCとかには出ていない雰囲気がする。。。
101デフォルトの名無しさん
2011/07/15(金) 12:53:11.73 ヒント:今までのTDDBCの参加のべ人数を推定してみよう
102デフォルトの名無しさん
2011/07/16(土) 00:39:49.48 あんなイベント出てるやつは「TDDBCに参加することでTDDをなんとなく理解をしている自分に酔ってる」と思う。
まあ、2chの練習も程度が低いので五十歩百歩だなwww
まあ、2chの練習も程度が低いので五十歩百歩だなwww
103デフォルトの名無しさん
2011/07/16(土) 00:40:56.78 ああいう、オフのイベントに参加できるだけリア充だと思う。
俺には考えられない。。。
俺には考えられない。。。
104デフォルトの名無しさん
2011/07/16(土) 04:16:36.95 reviewで充分だよな
105デフォルトの名無しさん
2011/07/17(日) 22:35:19.81106デフォルトの名無しさん
2011/07/19(火) 17:32:31.53 bootcampに参加する奴って、人脈を広げたい奴か、自分で書籍を読み通すことができない奴か、
暇人かのどれかでしょ。
暇人かのどれかでしょ。
107デフォルトの名無しさん
2011/07/19(火) 18:57:09.08 どうした、bootcampで小馬鹿にでもされたか?
108デフォルトの名無しさん
2011/07/19(火) 19:23:10.60 TDDBCを叩いてる奴は和田さんに相手にしてもらえなくて悲しい思いでもしたのか?
109デフォルトの名無しさん
2011/07/19(火) 20:35:24.16 これは酷い
110デフォルトの名無しさん
2011/07/19(火) 21:19:32.09 TDDBC参加すらしたことのない小者が2chでTDD?プゲラ。
とかいいながらそれは無いわ…。引くわ…。
とかいいながらそれは無いわ…。引くわ…。
111デフォルトの名無しさん
2011/07/20(水) 11:50:04.76 なんつーか、マ板でやれお前ら
112デフォルトの名無しさん
2011/07/20(水) 21:38:39.32 まずは、外に出て人に会うことから始めろよwww
113デフォルトの名無しさん
2011/07/20(水) 21:54:26.24 堪忍して
114デフォルトの名無しさん
2011/07/28(木) 18:40:18.43 テストに関するオススメの良書教えて
115デフォルトの名無しさん
2011/07/28(木) 18:46:36.80 あげ
116デフォルトの名無しさん
2011/07/28(木) 21:01:34.98 良書はまだ無い、
原点のテスト駆動開発入門を写経するが吉
原点のテスト駆動開発入門を写経するが吉
117デフォルトの名無しさん
2011/07/28(木) 21:21:52.42 テスト駆動開発入門は訳がひどいと書いてあるのが不安になるな
英語の勉強もかねて原著を読むか・・・
↓ここらへんの書籍ってどうなの?
基本から学ぶソフトウェアテスト―テストの「プロ」を目指す人のために
ソフトウェアテスト技法―自動化、品質保証、そしてバグの未然防止のために
ソフトウェアテスト293の鉄則
英語の勉強もかねて原著を読むか・・・
↓ここらへんの書籍ってどうなの?
基本から学ぶソフトウェアテスト―テストの「プロ」を目指す人のために
ソフトウェアテスト技法―自動化、品質保証、そしてバグの未然防止のために
ソフトウェアテスト293の鉄則
118デフォルトの名無しさん
2011/07/28(木) 21:47:37.60 本読んでTDDできると思ってるやつらおめでたすぎ。
TDDBCに参加しないと真のTDDは実践できない。
TDDBCに参加しないと真のTDDは実践できない。
119デフォルトの名無しさん
2011/07/28(木) 22:09:02.48 釣りにすらなんねーだろ…w
120デフォルトの名無しさん
2011/07/28(木) 22:09:20.82 宗教的で気持ち悪いな
121デフォルトの名無しさん
2011/07/28(木) 22:16:19.16 >117
テスト駆動開発入門は確かに読みにくいけど、コードを写経する分には問題ない
1回写経してみると読みにくさも気にならないと思う
ソフトウェア技法とかの本はどっちかというと、品質保証系のテストの本。
そっちはそっちで役に立つし、TDDに応用できないかと言えば色々できるけど、別の分野と考えた方がいいかも。
良書ではあると思うよ
テスト駆動開発入門は確かに読みにくいけど、コードを写経する分には問題ない
1回写経してみると読みにくさも気にならないと思う
ソフトウェア技法とかの本はどっちかというと、品質保証系のテストの本。
そっちはそっちで役に立つし、TDDに応用できないかと言えば色々できるけど、別の分野と考えた方がいいかも。
良書ではあると思うよ
122デフォルトの名無しさん
2011/07/28(木) 23:24:00.87 TDDは慣れるものじゃなくて、理解して実践する類のもの
写経なんかすんなよ ケントベック泣いちゃうぞ
写経している奴は、ケントベックが
「他のTODOをやってみたが上手く行かないことが分かったので、先にこっちのTODOをやる」
などとさらっと書いてある部分はどうしてんだろう
写経なんかすんなよ ケントベック泣いちゃうぞ
写経している奴は、ケントベックが
「他のTODOをやってみたが上手く行かないことが分かったので、先にこっちのTODOをやる」
などとさらっと書いてある部分はどうしてんだろう
123デフォルトの名無しさん
2011/07/29(金) 00:52:42.66 右も左も解らない状態でどうやって慣れるのさw
124デフォルトの名無しさん
2011/07/29(金) 20:43:51.15 テストって二つの意味があるんだよな。
設計をプログラムに落とすテスト駆動開発と。
品質を保証するテスト。
どっちもテストって名前ついているけど、
全くの別物だよ。
設計をプログラムに落とすテスト駆動開発と。
品質を保証するテスト。
どっちもテストって名前ついているけど、
全くの別物だよ。
125デフォルトの名無しさん
2011/07/29(金) 22:55:13.75 そういうデベロッパーテスティングの意味を理解するだけでもTDDBCにいく意味はあると思うぞ。
126デフォルトの名無しさん
2011/07/31(日) 08:55:27.49 TDDについて語るスレなんだから、ここで語るんだよ。
TDDBCについて語るスレじゃねーぞw
TDDBCについて語るスレじゃねーぞw
127デフォルトの名無しさん
2011/08/01(月) 01:13:08.98 >117 読むなら
レガシーコード改善ガイド
+ パターン指向リファクタリング入門
で おk
補足資料として リファクタリング, テスト駆動開発入門 があればって感じだね
まぁ後、アジャイルソフトウェア開発の奥義, コードコンプリート なんかも気休めにはなるだろう。
"品質保証系のテスト"の話がしたいなら別だが。
レガシーコード改善ガイド
+ パターン指向リファクタリング入門
で おk
補足資料として リファクタリング, テスト駆動開発入門 があればって感じだね
まぁ後、アジャイルソフトウェア開発の奥義, コードコンプリート なんかも気休めにはなるだろう。
"品質保証系のテスト"の話がしたいなら別だが。
128デフォルトの名無しさん
2011/08/02(火) 08:12:19.14129デフォルトの名無しさん
2011/08/02(火) 15:00:00.36 ttp://d.hatena.ne.jp/absj31/20110731/1312209896
見たけど、なんでt-wadaがTDDのエバンジェリストっぽい立ち居地にいるのかわからん。
見たけど、なんでt-wadaがTDDのエバンジェリストっぽい立ち居地にいるのかわからん。
130デフォルトの名無しさん
2011/08/02(火) 15:25:14.87 >>129
優秀かつ積極的にTDDを広めようとした人が他にいなかったからじゃないか?
優秀かつ積極的にTDDを広めようとした人が他にいなかったからじゃないか?
131デフォルトの名無しさん
2011/08/02(火) 22:30:09.48 いっつもt_yanoとごっちゃになる。
132デフォルトの名無しさん
2011/08/03(水) 01:26:15.74133デフォルトの名無しさん
2011/08/03(水) 18:16:09.36134デフォルトの名無しさん
2011/08/04(木) 01:42:56.84 > 設計をプログラムに落とすテスト駆動開発
なんかニュアンス違うw
テスト駆動開発でプログラムができあがる、ってまさに設計しながらって感じで
テスト駆動開発の"前"に行う設計ってせいぜいおおまかな下書きラフスケッチみたいなものでしかない。
とてもじゃないがソースに落とせないよ
なんかニュアンス違うw
テスト駆動開発でプログラムができあがる、ってまさに設計しながらって感じで
テスト駆動開発の"前"に行う設計ってせいぜいおおまかな下書きラフスケッチみたいなものでしかない。
とてもじゃないがソースに落とせないよ
135デフォルトの名無しさん
2011/08/04(木) 02:26:35.10 みんな表に出て議論しようよ。
みなさんの知見をもとにより良い開発について考えていきましょう!
みなさんの知見をもとにより良い開発について考えていきましょう!
136デフォルトの名無しさん
2011/08/04(木) 21:43:36.36 個々の事例となると社外秘だったりするんで
公開の場でってのは難しいわなぁ
公開の場でってのは難しいわなぁ
137デフォルトの名無しさん
2011/08/07(日) 10:18:32.85 BDDになるとどのくらい違うんだっけ?
イマイチ、TDDとの違いがピンと来ないんだが
イマイチ、TDDとの違いがピンと来ないんだが
138デフォルトの名無しさん
2011/08/07(日) 14:29:01.42 BDDはただの言い換えでしょ、Spec系の。
俺は嫌い。
俺は嫌い。
139デフォルトの名無しさん
2011/08/07(日) 16:34:10.79 うむ
140デフォルトの名無しさん
2011/08/07(日) 16:41:55.68 結局BDDってなんだったの感はあるよな。
最近詳しく言及してたのは
ttp://ukstudio.jp/2011/07/02/bdd
ぐらいか?
最近詳しく言及してたのは
ttp://ukstudio.jp/2011/07/02/bdd
ぐらいか?
141デフォルトの名無しさん
2011/08/07(日) 17:22:20.47 滝への回帰としか思えん
142デフォルトの名無しさん
2011/08/08(月) 01:29:11.62 和田さん入籍おめでとうございます。
143デフォルトの名無しさん
2011/08/08(月) 14:43:54.15 テスト駆動開発ってプログラミングを楽にするけど、
メインは、プログラマーの底上げを図るための物だよね。
だから力がある人や、それと同等の力のある人同士で
プロジェクトを作成する人には不要だね。
メインは、プログラマーの底上げを図るための物だよね。
だから力がある人や、それと同等の力のある人同士で
プロジェクトを作成する人には不要だね。
144デフォルトの名無しさん
2011/08/08(月) 15:31:50.53 力がある人もプログラミングを楽にできるのだが
145デフォルトの名無しさん
2011/08/08(月) 22:27:31.26 きしださんとか事あるごとにテストに懐疑的な発言してるけど、あの人が言うと業界にいい加減な人を増やすだけだからやめてほしい。
勉強熱心なのは認めるけど、それを解釈する脳ミソや、実践する態度に疑問を感じてならない。
勉強熱心なのは認めるけど、それを解釈する脳ミソや、実践する態度に疑問を感じてならない。
146デフォルトの名無しさん
2011/08/09(火) 11:28:30.47147デフォルトの名無しさん
2011/08/10(水) 18:58:30.33 このへんか。もっと昔にも言ってたけどこの人発言量多いから探すの面倒だな。
TDDとか「TDDはあなたの心のなかにあります」みたいなあいまいな言葉なんだから、技術用語として使うのはどうかと思う。その言葉を使って意思疎通ができてない。混乱にしかならないので、この言葉ははやめに葬るほうがいい気がするよ。
https://twitter.com/#!/kis/status/100050996616642560
それもこれもケントベックというペテン師が悪い。
https://twitter.com/#!/kis/status/100051107589537792
TDDとか「TDDはあなたの心のなかにあります」みたいなあいまいな言葉なんだから、技術用語として使うのはどうかと思う。その言葉を使って意思疎通ができてない。混乱にしかならないので、この言葉ははやめに葬るほうがいい気がするよ。
https://twitter.com/#!/kis/status/100050996616642560
それもこれもケントベックというペテン師が悪い。
https://twitter.com/#!/kis/status/100051107589537792
148デフォルトの名無しさん
2011/08/10(水) 23:42:41.43 良いテストを構築できるかどうかがプログラマの腕の見せ所だろ?
149デフォルトの名無しさん
2011/08/11(木) 11:21:29.20 >>147
hatenaのページ見つけたけど、ことあるごとにテストに懐疑的な発言をしているとは見えないんだが。
googleでざっと探してみたけど…
TDD site:http://d.hatena.ne.jp/nowokay/
テスト site:http://d.hatena.ne.jp/nowokay/
>このへんか。もっと昔にも言ってたけどこの人発言量多いから探すの面倒だな。
いやいや、ことあるごとに懐疑的な発言をしているんなら、すぐに見つかるんじゃないの?
hatenaのページ見つけたけど、ことあるごとにテストに懐疑的な発言をしているとは見えないんだが。
googleでざっと探してみたけど…
TDD site:http://d.hatena.ne.jp/nowokay/
テスト site:http://d.hatena.ne.jp/nowokay/
>このへんか。もっと昔にも言ってたけどこの人発言量多いから探すの面倒だな。
いやいや、ことあるごとに懐疑的な発言をしているんなら、すぐに見つかるんじゃないの?
150デフォルトの名無しさん
2011/08/15(月) 14:57:24.37 ソフトウェアテスト総集編のTDDの記事を書いているTDD研究会のケニチロウってどうなの?
TDDにとっついてみようと本を買ったのはいいが、
ピンとこないというか勘所がわからないので、
この人の言うことをどこまで真に受けていいのかわからないw
TDDにとっついてみようと本を買ったのはいいが、
ピンとこないというか勘所がわからないので、
この人の言うことをどこまで真に受けていいのかわからないw
151デフォルトの名無しさん
2011/08/16(火) 04:58:29.70 噂のRuby&Githubに特化した自動テストサービス「Travis CI」を試してみたらすごいよかった... - mochizblog
http://mochizblog.heroku.com/21
http://mochizblog.heroku.com/21
152デフォルトの名無しさん
2011/08/16(火) 11:45:59.77153デフォルトの名無しさん
2011/08/16(火) 13:29:16.49 >>152
とん、これ参考にお盆中にゴニョゴニョがんばってみる。
とん、これ参考にお盆中にゴニョゴニョがんばってみる。
156デフォルトの名無しさん
2011/09/14(水) 22:59:28.96 自動化テストに対するテストはどうやって…とかグダグダ言う奴って基本的に信頼できん。
じゃあ、お前は手動で行うテスト仕様書に対してテスト仕様書書いて実施してんのかと。
どっちも最終的にはレビューして担保するしかねーんだよ。
じゃあ、お前は手動で行うテスト仕様書に対してテスト仕様書書いて実施してんのかと。
どっちも最終的にはレビューして担保するしかねーんだよ。
158デフォルトの名無しさん
2011/09/15(木) 13:38:38.82 でも気持ちはわからなくはないかな。
テスト対象を書いた自分が信用できないからテストを書くわけだけど、
そのテストを自分で書いたらやっぱり信用できるテストなのかとうたがいたくなるよね。
まあ実際はそんなことやてたらきりがないわけだけど。
せめてテスト内容のレビューはしたいよね。
少人数プロジェクトはテストすらかかねえからなあ。
テスト対象を書いた自分が信用できないからテストを書くわけだけど、
そのテストを自分で書いたらやっぱり信用できるテストなのかとうたがいたくなるよね。
まあ実際はそんなことやてたらきりがないわけだけど。
せめてテスト内容のレビューはしたいよね。
少人数プロジェクトはテストすらかかねえからなあ。
159デフォルトの名無しさん
2011/09/15(木) 13:43:03.78 普通は「手動で行うテスト仕様書」のレビューは行われるが、
自動化テストのコードレビューは、レビューに耐えうる品質になってないのがほとんどだろうがな。
自動化テストのコードレビューは、レビューに耐えうる品質になってないのがほとんどだろうがな。
160デフォルトの名無しさん
2011/09/15(木) 14:58:42.17 テストを通すためのプログラミングをしてもだめだろ
161デフォルトの名無しさん
2011/09/15(木) 15:06:24.69 テストを通すためにプログラミング、それがTDD
162デフォルトの名無しさん
2011/09/15(木) 15:39:05.50 テストさえ通ればあとは知りまへん、それがTDD
165デフォルトの名無しさん
2011/09/17(土) 16:44:34.63 だからTDDでのテストは、本来の意味のテストじゃねぇってばw
まぁ例えるならlintの強化って感じだ
本来の意味のテストは別途行うべし
まぁ例えるならlintの強化って感じだ
本来の意味のテストは別途行うべし
166デフォルトの名無しさん
2011/09/18(日) 18:28:33.11 だからその辺りの勘違いを嫌って
BDDって言い換えようとした流れも有ったんだが
流行んなかったなあ
BDDって言い換えようとした流れも有ったんだが
流行んなかったなあ
167デフォルトの名無しさん
2011/09/30(金) 00:14:01.08 >>165
本来の意味でのテストってどんなテスト?
本来の意味でのテストってどんなテスト?
168デフォルトの名無しさん
2011/09/30(金) 08:15:58.99 実際に手動でシステムを動作させて、結果を目視確認で期待する結果と相違ないかを確認する作業。
俺も昔は自動化テストですべてまかなえると信じたくちだが、最近はやっぱり手動でもやらないとなと痛感している次第。
俺も昔は自動化テストですべてまかなえると信じたくちだが、最近はやっぱり手動でもやらないとなと痛感している次第。
169デフォルトの名無しさん
2011/10/01(土) 20:10:15.37 目視確認か自動化かは悩ましい所だけど、GUI関連はコスパと変更可能性とかを考えると目視確認が妥当なんだろうな
170デフォルトの名無しさん
2011/10/02(日) 11:33:28.50 使い勝手のテストにもなるしねぇ
171デフォルトの名無しさん
2011/10/03(月) 08:18:11.42 自動化さろたテストの環境はだいぶ整備されてきてるのにそっちの方のテストはいまだにエクセル管理が多いよなぁ。
172デフォルトの名無しさん
2011/10/08(土) 16:23:55.58 継続リリースなら自動化のコストも回収できるだろうけど、単発納品が多いからなぁ
173デフォルトの名無しさん
2011/11/10(木) 23:25:22.26 過疎ってんなあ
174デフォルトの名無しさん
2011/11/14(月) 00:42:33.46 てめぇが日記でも書いていけや
175デフォルトの名無しさん
2012/01/23(月) 03:37:03.56 ユニットテストとは:
想定した入力や操作に対して
プログラマーが想定した結果が返ってくることを確認する工程。
本来のテストとは:
乱数入力やきまぐれ操作によって
プログラマーが想定してなかった欠陥を探す工程。
想定した入力や操作に対して
プログラマーが想定した結果が返ってくることを確認する工程。
本来のテストとは:
乱数入力やきまぐれ操作によって
プログラマーが想定してなかった欠陥を探す工程。
176デフォルトの名無しさん
2012/01/23(月) 21:11:03.75 添削
誤:本来のテストとは ....
正:俺様のテストの定義では ....
誤:本来のテストとは ....
正:俺様のテストの定義では ....
177デフォルトの名無しさん
2012/01/24(火) 06:25:19.24 >>175
ユニットテストというのはあくまでユニット(関数、クラス、モジュール等)に対するテストという意味だよ。
対比されるべきは結合テスト(複数のユニットに渡るテスト)とか。
プログラマーの想定の範囲内でテストするか、想定の範囲外をテストするかで分類するなら
もう少し別の分類の言葉があると思う。
TDDBCの人が言ってるような、Developer testing、Customer testing、QA testingという
分類がそれに当たるのかもしれない。
ユニットテストというのはあくまでユニット(関数、クラス、モジュール等)に対するテストという意味だよ。
対比されるべきは結合テスト(複数のユニットに渡るテスト)とか。
プログラマーの想定の範囲内でテストするか、想定の範囲外をテストするかで分類するなら
もう少し別の分類の言葉があると思う。
TDDBCの人が言ってるような、Developer testing、Customer testing、QA testingという
分類がそれに当たるのかもしれない。
178デフォルトの名無しさん
2012/01/24(火) 23:29:13.81 >>176
「真の」とか「本当の」とかも同類だねw
「真の」とか「本当の」とかも同類だねw
179デフォルトの名無しさん
2012/02/07(火) 00:06:45.40 >ユニットテストと対比されるべきは結合テスト
結合テストも広義のユニットテストだと思うけど、違うの?
>想定の範囲内でテストするか、想定の範囲外をテストするか
プログラムわからん人に説明するなら分かりやすくていいと思う
仕様の定義漏れテスト
結合テストも広義のユニットテストだと思うけど、違うの?
>想定の範囲内でテストするか、想定の範囲外をテストするか
プログラムわからん人に説明するなら分かりやすくていいと思う
仕様の定義漏れテスト
180デフォルトの名無しさん
2012/02/07(火) 14:06:58.57 >>179
> 結合テストも広義のユニットテストだと思うけど、違うの?
違う。
> >想定の範囲内でテストするか、想定の範囲外をテストするか
> プログラムわからん人に説明するなら分かりやすくていいと思う
> 仕様の定義漏れテスト
一体何に対する説明なのか良くわからんが、説明する必要がある人(ステークホルダーとか)への
説明なら全然駄目。
> 結合テストも広義のユニットテストだと思うけど、違うの?
違う。
> >想定の範囲内でテストするか、想定の範囲外をテストするか
> プログラムわからん人に説明するなら分かりやすくていいと思う
> 仕様の定義漏れテスト
一体何に対する説明なのか良くわからんが、説明する必要がある人(ステークホルダーとか)への
説明なら全然駄目。
181デフォルトの名無しさん
2012/02/10(金) 10:51:53.71 TestCaseクラスを、どの単位で作ればいいか迷う。
たとえば
class Foo {
def method1() {
}
def method2() {
}
}
があったとして、
RSpecなら
describe Foo do
describe '#method1()' do
it "...spec#1..." do ... end
it "...spec#2.." do ... end
end
describe '#method2()' do
it "...spec#1..." do ... end
it "...spec#2.." do ... end
end
end
というふうに、クラス単位・メソッド単位でテストを自然に記述できる。
(つづく)
たとえば
class Foo {
def method1() {
}
def method2() {
}
}
があったとして、
RSpecなら
describe Foo do
describe '#method1()' do
it "...spec#1..." do ... end
it "...spec#2.." do ... end
end
describe '#method2()' do
it "...spec#1..." do ... end
it "...spec#2.." do ... end
end
end
というふうに、クラス単位・メソッド単位でテストを自然に記述できる。
(つづく)
182デフォルトの名無しさん
2012/02/10(金) 10:58:15.99 (つづき)
しかしxUnit系のツール(JUnitとかTest::Unitとか)だと、DSLじゃなくてクラス定義構文とメソッド定義構文を使うから、
こんなかんじ↓になって、テストの記述が不自然になってしまう。
class FooTest(Test::Unit::TestCase)
# for method1
def test_method1__spec1() ... end
def test_method1__spec2() ... end
# for method2
def test_method2__spec1() ... end
def test_method2__spec2() ... end
end
かといって、メソッドごとにクラス定義を分ける↓のは、細かくなり過ぎてやりたくない。
class Foo_method1_Test(Test::Unit::TestCase)
def test_spec1() ... end
def test_spec2() ... end
end
class Foo_method2_Test(Test::Unit::TestCase)
def test_spec1() ... end
def test_spec2() ... end
end
で、みんなどうしてるんだろうか。
しかしxUnit系のツール(JUnitとかTest::Unitとか)だと、DSLじゃなくてクラス定義構文とメソッド定義構文を使うから、
こんなかんじ↓になって、テストの記述が不自然になってしまう。
class FooTest(Test::Unit::TestCase)
# for method1
def test_method1__spec1() ... end
def test_method1__spec2() ... end
# for method2
def test_method2__spec1() ... end
def test_method2__spec2() ... end
end
かといって、メソッドごとにクラス定義を分ける↓のは、細かくなり過ぎてやりたくない。
class Foo_method1_Test(Test::Unit::TestCase)
def test_spec1() ... end
def test_spec2() ... end
end
class Foo_method2_Test(Test::Unit::TestCase)
def test_spec1() ... end
def test_spec2() ... end
end
で、みんなどうしてるんだろうか。
183デフォルトの名無しさん
2012/02/10(金) 11:41:52.71 そんな開発者全体で見ると、使用者の割合が0.1%のRubyの話題出されても困ります。
184デフォルトの名無しさん
2012/02/11(土) 08:41:31.64185デフォルトの名無しさん
2012/02/11(土) 09:07:55.35 Ruby以外の言語だと、XML等でテスト仕様を記述して
そこからテストコードを自動生成するんじゃまいかと思う
いわゆる外部DSLだね
あと、利用者の割合あれこれというより、
Rubyの柔軟性をフル活用した内部DSLであるRSpecをここで持ち出されても、
他の言語利用者には気の毒というか、変態的だと気味悪がられるだけw
そこからテストコードを自動生成するんじゃまいかと思う
いわゆる外部DSLだね
あと、利用者の割合あれこれというより、
Rubyの柔軟性をフル活用した内部DSLであるRSpecをここで持ち出されても、
他の言語利用者には気の毒というか、変態的だと気味悪がられるだけw
186デフォルトの名無しさん
2012/02/11(土) 11:10:38.08 PythonやHaskellだとコメントにテストを書くdoctestも定番ですよ
187デフォルトの名無しさん
2012/02/12(日) 05:37:05.23 >>181
>TestCaseクラスを、どの単位で作ればいいか迷う。
と書いてあるんだから、別にどの言語であろうと、自分はこういう単位で作ってると教えてあげればいい。
RubyだのRSpecだのにとらわれてるやつは読解力なさすぎ。
自分の場合、Fooクラスに対してFooTestクラスを作り、Fooクラスの機能や仕様ごとに
テストメソッドを書いている。
Fooクラスのメソッド単位での分類はしてない(したいときもあるけど、今はしてない)。
>TestCaseクラスを、どの単位で作ればいいか迷う。
と書いてあるんだから、別にどの言語であろうと、自分はこういう単位で作ってると教えてあげればいい。
RubyだのRSpecだのにとらわれてるやつは読解力なさすぎ。
自分の場合、Fooクラスに対してFooTestクラスを作り、Fooクラスの機能や仕様ごとに
テストメソッドを書いている。
Fooクラスのメソッド単位での分類はしてない(したいときもあるけど、今はしてない)。
188デフォルトの名無しさん
2012/02/13(月) 15:45:37.60189デフォルトの名無しさん
2012/02/13(月) 15:47:13.64 >>187
あのー、スレタイ読んで出直してくれます?
あのー、スレタイ読んで出直してくれます?
190デフォルトの名無しさん
2012/02/14(火) 11:02:17.12 TDDの場合、頻繁に変更中のクラスのテストを実行するわけだから、テストクラスは
テスト対象クラス単位の方が良い。
そうしないと、class FooTestにclass Barとclass Bazのテスト用が入っている場合、
Bar/Bazのどちらを変更するときも、関係無いクラスのテストを実行しなければならなくなる。
一方、TDDで実行するテストはUnit Testであるという側面を考えた場合、各テストメソッドは
独立している必要がある(テストメソッドが相互に他のテストメソッドに影響を与えてはならない)。
そうすると、最も親和性の高いものはxUnitである。
xUnitはsetUp()->testMethod()->tearDown()という流れでテストが実行される。
上記でテストクラスはテスト対象クラス単位が良いと書いたが、このxUnitの仕組みにより、
テスト対象クラスが同じでもsetUp()の内容が大幅に異なる場合に限り、一つのテスト対象
クラスに対して、複数のテストクラスに分割するということもありえる。
ただし、そのようにせざるを得ないというのはごくまれで、そうしたいと思う時は大抵
テスト対象クラスの責務が大きすぎる。
テスト対象クラス単位の方が良い。
そうしないと、class FooTestにclass Barとclass Bazのテスト用が入っている場合、
Bar/Bazのどちらを変更するときも、関係無いクラスのテストを実行しなければならなくなる。
一方、TDDで実行するテストはUnit Testであるという側面を考えた場合、各テストメソッドは
独立している必要がある(テストメソッドが相互に他のテストメソッドに影響を与えてはならない)。
そうすると、最も親和性の高いものはxUnitである。
xUnitはsetUp()->testMethod()->tearDown()という流れでテストが実行される。
上記でテストクラスはテスト対象クラス単位が良いと書いたが、このxUnitの仕組みにより、
テスト対象クラスが同じでもsetUp()の内容が大幅に異なる場合に限り、一つのテスト対象
クラスに対して、複数のテストクラスに分割するということもありえる。
ただし、そのようにせざるを得ないというのはごくまれで、そうしたいと思う時は大抵
テスト対象クラスの責務が大きすぎる。
191デフォルトの名無しさん
2012/02/14(火) 15:46:07.43 >>190
>テストクラスは
>テスト対象クラス単位の方が良い。
これに同意するんだけど、その場合、「メソッド」という単位をどう扱ったらいいの?
ちょうど>>182で書かれていることなんだけど。
class FooTest extends TestCase {
function test_method1_should_return_string() { ... }
function test_method1_should_throw_error_when_invalid_arg() { ... }
function test_method2_should_return_integer() { ... }
function test_method2_should_throw_error_when_invalid_arg() { ... }
}
こんな感じになってるんだけど、こうしかないのかな。
やっぱりテストを入れ子で書けるRSpecがうらやましい。
>テストクラスは
>テスト対象クラス単位の方が良い。
これに同意するんだけど、その場合、「メソッド」という単位をどう扱ったらいいの?
ちょうど>>182で書かれていることなんだけど。
class FooTest extends TestCase {
function test_method1_should_return_string() { ... }
function test_method1_should_throw_error_when_invalid_arg() { ... }
function test_method2_should_return_integer() { ... }
function test_method2_should_throw_error_when_invalid_arg() { ... }
}
こんな感じになってるんだけど、こうしかないのかな。
やっぱりテストを入れ子で書けるRSpecがうらやましい。
■ このスレッドは過去ログ倉庫に格納されています
