トップページtech
988コメント450KB

eXtreme Programming

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
12のプラクティスがありますが、
実際実用的と思われるのはTesting, Refactoringの2つだと。
Cording Standardsは常識と考えればね。

XP全般について語ってもいいですが、
むしろTesting, Refactoringの二つをメインに語りましょう。
Testingのテクニックなんざをね。

参考URL:
http://objectclub.esm.co.jp/eXtremeProgramming/
0308デフォルトの名無しさんNGNG
>>305
http://www.refactoring.com/
を見てたら
http://www.instantiations.com/jfactor/
http://www.intellij.com/idea/
というのがあるらしい。jFactorはJBuilderのプラグイン。
0309デフォルトの名無しさんNGNG
AssertRange(int value, int min, int max)
{
 Assert(min <= value && value <= max);
}

AssertRange2(int value, int min, int max)
{
 Assert(min <= value && value < max)
}

これらのテストメソッドの適切なメソッド名・引数名はどんなんでしょう?
0310デフォルトの名無しさんNGNG
IntInRange, IntInRange2 ???
0311デフォルトの名無しさんNGNG
>>309
それ、メソッドに分けずに直接ソースに assert() 埋め込んだ方が良いと思うが。
assert に引っかかったときに、AssertRange(), AssertRange2() のファイル名と
行番号が取得できても嬉しくないでしょ。
0312デフォルトの名無しさんNGNG
kent beck来日記念あげ
0313デフォルトの名無しさんNGNG
で、何かニュースはあったの?>>312
0314デフォルトの名無しさんNGNG
>>313

帝国ホテルで公演があって観にいった。
内容は、xpの紹介程度。
あとその日のXP-mlOFFにも出現したな。
OFF逝った人感想きぼーん
0315デフォルトの名無しさんNGNG
age
0316デフォルトの名無みさんNGNG
12のプラクティスで

>比喩(Metaphor)
>どの様に全体のシステムが機能するかを示すシンプルな喩え話(メタファー)を
>メンバーが共有することで全ての開発を導く(ガイドする)。

ってあるけど、喩え話ってのが今ひとつ意味分かんない…だれか教えてください。 (´_` )

例えば、ファイルを圧縮するソフトをXPで開発するとしたら、
どんなメタファーが考えられるのでしょうか?
0317デフォルトの名無しさんNGNG
>>316
XP-jp ML に丁度メタファについてのスレッドがあるよ
http://objectclub.esm.co.jp/ml-arch/extremeprogramming-jp/2400/2490.html
0318DelフサギコNGNG
  ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < しつもーそ
  U  ミ   \____________
  ミ  ミ
 ノ∪∪

 12のプラクティスの箇条書きってどこかにありますか?
 
0319デフォルトの名無しさんNGNG
>>1 のリンクのFAQってトコにあるはず
0320DelフサギコNGNG
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < ありがとございます。
  ,;゙  ミ     \_____________
 ミ.  ミ
/゛゛゛゛

もひとつシツモソ
オンサイト顧客のオンサイトってどういう意味ですか?
0321Error401NGNG
>>319
お、そのFAQの下の方を見ると、

白XP本(既刊)
ピンクXP本(既刊)
緑XP本(既刊)

の後に、

オレンジXP本
水色XP本
黄緑XP本
紫XP本

の4冊が翻訳中ですね。
誰が翻訳してるんだろう?(あの人はヤだな)
0322Error401NGNG
>>320
オンサイトって十分日本語化してると思うんだけど、そうでもないのかな?
「開発現場の(にいる)顧客」
というような意味。
0323Error401NGNG
ふと思いついて、本家XPサイトに行ったら、リニューアルされてて
Toppageがいやにスッキリしてた。

で、面白そうなもの発見(今まで気づいてなかっただけか?)。

XP Magazine
http://www.xprogramming.com/xpmag/index.htm

翻訳するのめんどいから、誰か訳してくれないかなぁ(ヘタレ)。
0324DelフサギコNGNG
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< いまさら、超ガイシュツかもしれませんが
  ミつ つ  \ 白本の誤訳みたいのを
〜ミ ,, ミ.    修正している所ってどこでしたっけ
  ∪∪   ピンクはリンク先にあるようですが。

改めて白本を読みましたが
技術書籍の翻訳としては
叩かれるほど変でもないような気はしました。

むしろ、日本ジンが書いた日本語なのに読みにくい
技術解説の方がよっぽど嫌かも。
0325Error401NGNG
>>324
それもリンクされてるよ。

Essential EC Kent Beck の Embrace Change 本関連
EC 本要約 essential-ec.html (by ホソカワ, 矢崎, 上手, 佃, やまの)
EC 本,邦訳(XP エクストリームプログラミング入門)へのコメントec-errata.txt (by 小野 剛)

ってとこ。
0326DelフサギコNGNG
____∧ ∧_ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___ミ,,゚Д゚ミ< どーもー。>>325さん、サンクスコ
__ ミ ⊃ つ  \______________
_〜ミ,, ,,〃
_ ∪ ∪
0327DelフサギコNGNG
XPに出てくる4つの変数のスコープって何ですか?

   ∧∧  ↓こいつは赤外線スコープ?
   ミ,, ゚Д⊆0___,,
   ミ⊃二O,---' ̄ ̄
   ミ   ミ
   .∪∪
0328DelフサギコNGNG
http://objectclub.esm.co.jp/ml-arch/extremeprogramming-jp/0/85.html

スコープ ー (そのスコープが顧客の問題を解決しているのであれば)控えめのスコー
プは質の向上に繋がります。それから、納期を前倒しすること、または、安く納品す
ることができます。

ソフトウェア開発で一番意識していなければならないのが、スコープです。スコープ
を積極的に管理できれば、マネージャーや顧客にコスト、質と時間を管理させられま
す。

スコープの凄いところは、しばしば変化するという点です。要件が最初から明確になっ
ていることなど一度もありません。顧客は何がほしいか一度も正確に言えたためしが
ありません。

   ∧,,∧  ゼンゼン ワカラン
   ミ゚Д゚,,⊆0___,,
   ミ⊃二O,---' ̄ ̄
   ミ   ミ
   .∪∪ 赤外線スコープは夜でも見えるんだぞ(多分)
       オサマもイチコロ。
0329DelフサギコNGNG
http://objectclub.esm.co.jp/ml-arch/extremeprogramming-jp/2200/2206.html
> > の第 4 章で「スコープ」という用語が出てくるのですが、意味がわかりません。
> >  scope を英和辞典で引いてみると「(知力・研究・活動などの及ぶ)範囲、視野」
> > とありますが、そういう意味でいいのでしょうか。

> これは,「XP エクストリーム・プログラミング入門」を読んでだ
> れもが疑問に思うことだと思います.私も最初分かりませんでし
> た.

> スコープ: リリースに盛り込む機能の範囲.何を今回のリリースに
> 含めて,何を後回しにするか,ということ.XP では,プロジェク
> トを管理する4つの変数として,コスト,時間,品質,スコープを
> 挙げており,中でもスコープをコントロールしてプロジェクトを「運
> 転(steer)」すべきだ,と言っています.

  ∧,,∧     /
 ミ,,゚Д゚彡  < だってさ。参ったね。
  U  U    \
〜ミ  ミ
  ∪∪
0330デフォルトの名無しさんNGNG
>>328
どこまでやるかっていう範囲のことだよ。
0331デフォルトの名無しさんNGNG
そうそう、このプロジェクト(またはリリース)では何を実現するか、もしくは
何を実現しないか、っていうこと。

ほんとはこれが決まっていないと納期も金額も決められないはずなのだが、
いいかげんなまま見切り発車するプロジェクトが多い。
0332デフォルトの名無しさんNGNG
age
0333デフォルトの名無しさんNGNG
sage
0334デフォルトの名無しさんNGNG
>>331
最初に正確に分かるはずがないから、
少しずつ修正しながら進めよう、ってのがXPでわ。

客が欲しいタスクをイハ°イ書く
→プログラマ達がそれぞれのタスク作成にかかる期間を見積もる
→客が、どのタスクから作るか決める

次のリリースまでに欲しいものが全部入らないとき、
どれを入れるかは客が決める。

最終期限までに入らないとき、機能を削るのか期間を
延ばす(もっと金をかける)のかは客が決める。

良くある「安くしろ、機能は削るな、納期は延ばすな」という
不毛なやり取りはなくなる…はずだが、こういう金の出し方
をできる客が日本にどのくらいいるかは不明。
0335DelフサギコNGNG

   ∧∧   /どのくらいの企業が
〜''ミ ゚Д゚ミ <  XP採用や採用検討しているのでしょうね。
"UU'UU"    \
0336デフォルトの名無しさんNGNG
こういう先進的な技法を率先して取り入れる力のある
ソフトハウスってSRAくらいしか思いつかん。
0337デフォルトの名無しさんNGNG
SRAってソフトハウスだったのか。
0338デフォルトの名無しさんNGNG
XPを導入する上で一番のネックは実は案件の受発注のやり取りじゃないか?
日本じゃ何が何でも最初に金額と納期を決めようとするが、そのくせ要件定義で
出た話と金額が見合うかどうかなんて殆ど考慮されてない。
最近やった仕事でその辺を痛感したんで、その辺の問題意識をもってる営業さん
と共同戦線を張ろうと画策中。
0339デフォルトの名無しさんNGNG
激同。
On-site customerと並んでネックだね。

まずは社内開発プロジェクトから始めてみるのかなあ。
0340DelフサギコNGNG
   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < お客さんの実行する機能テストというのは
⊂,,,,,,,,,つつ.   \どういうものをさすのですか?
0341デフォルトの名無しさんNGNG
>>340
例えば「この入力を与えたら、こういう帳票が出力されないと困る」
というのを顧客が(ワープロやエクセルで)数値まできちんと書いて、
それをチェックするテストはプログラマが書く。
0342DelフサギコNGNG
>>341サンクスコ
 なんかイメージ湧きませんが
 客もテスト作って、すぐリリースされたものを使えや(゚Д゚)ゴルァ
 ってところでしょうか。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    ベンキョウベンキョウ
  ミ,, ゚Д゚彡
   〃つl⌒|⌒l
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
 もっとXPの話題でてこないかな。
0343デフォルトの名無しさんNGNG
>>342
テストケースを作るのはオンサイト・カスタマー
つまり、プログラマ・チームといつも一緒にいて
指示を出してる顧客だよ。ユーザはまた別。
0344DelフサギコNGNG
 ∩∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ゙ミ,,゚Д゚彡ノ < スラッシュドットage
  ミ  ミ   \____________
  ミ ,, ミ
 ノ∪ ∪

http://slashdot.jp/article.pl?sid=01/10/29/1719222
0345デフォルトの名無しさんNGNG
ファシリティというのは
日本語訳すると何?
0346デフォルトの名無しさんNGNG
>>345 Facility 辞書で引いてみよう。
0347デフォルトの名無しさんNGNG
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=Facility&sw=0
まぎらわしいな。
0348 NGNG
>>345

オフィスレイアウト、座席配置ってことだと思う。
個人の席を隅、ペアプログラミング用の席を部屋の真中に置いて、
みんなで共同で使うと良いらしい。

うち会社、席が広いのは嬉しいんだけど、
パーティションで区切られてて、人がまばらに居る感じ。
孤独で寂しいし、ペアプログラミングしにくい…。
0349デフォルトの名無しさんNGNG
>>347のリンク先を見ると
設備, 施設という訳が正解みたいだね。

ところで、
継続した結合のインフラが重要と本に書かれてあるのだけど

継続した結合の為のインフラというのはどういうものがありますか?
WinDiffやVSSを思い浮かべますがそういうもののことですか?
0350デフォルトの名無しさんNGNG
>>349
俺の意見。

・いつでもクリーンビルド出来るマシン(高速のものが良い)
・バージョン管理ソフト(CVSがおすすめ)
・自動インテグレーションの仕組み(オプション)

かな。
0351デフォルトの名無しさんNGNG
>>350レスありがとう。

>・いつでもクリーンビルド出来るマシン(高速のものが良い)
クリーンビルドって何?

>・バージョン管理ソフト(CVSがおすすめ)
これはわかるが

>・自動インテグレーションの仕組み(オプション)
自動インテグレって?
0352デフォルトの名無しさんNGNG
>>クリーンビルドって何?

すべてのソースをコンパイル、リンクすることでしょう。大規模な
システムでは高速なマシンでないとやってられませんな。

>自動インテグレって?

最新ソースを落として、ビルドを実行し、できればすべてのテストを
実行してその結果を報告するまでを行う。
0353デフォルトの名無しさんNGNG
タバコが嫌いなので
喫煙所パターンXPとか言ってる輩は殺していいですか?
0354デフォルトの名無しさんNGNG
>>353
喫煙もエゴですが、嫌煙もまたエゴです。
殺すときはあなたももろともに。
0355デフォルトの名無しさんNGNG
分煙のためにプロジェクトを分けてください
0356デフォルトの名無しさんNGNG
嫌煙の方がまだましでは?
0357デフォルトの名無しさんNGNG
>>356
50歩100歩の50歩の方だな。目くそ鼻くその目くその方かな。
0358デフォルトの名無しさんNGNG
目くその方が上か・・・
0359デフォルトの名無しさんNGNG
VC5.0でCppUnit1.5使えてる人います?
今度のプロジェクトはVC5.0を使うことになってしまった。
ちょっと試したんだけど、謎のRuntimeErrorが・・・(泣

使えてるとか、使えないよ、というレベルで良いので、情報が
あったらお願いします。
0360デフォルトの名無しさんNGNG
海老捨て目に聞けば?
0361吾輩は名無しさんであるNGNG
>>359
同志よ。吾輩も使えておらぬ。
いまさらVC6買うのもアレであるし、
気長にVS.NETとサービスパックを待とうぞ。
0362359NGNG
>>361
うう、そうですか。
VC6はあるんですが(仕事なんで)、今回はVC5.0指定なんです。

今まで、JUnit, RubyUnit, PHPUnit, JSUnitを使ってきて、
VCもそのときインストールしていたVC6でcppunit(CppUnitじゃ
ないほう)を試して、「今回のプロジェクトもxUnitは楽勝でしょう」
なんて言っちゃったんですよ。

CUIのほうだったら使えるのかな。来週試してみよう。

エピス氏に聞いてみようかな・・・。
0363デフォルトの名無しさんNGNG
ケントべっ君は本の中で
クライスラーC三のシステムが、ああでこうでこうなっているよ

と度々おっしゃっていらっしゃいますが

そのクライスラーというのは
どの程度の規模の会社で

C3というのは
どのくらい重要度の高いシステムなのでしょうか。

XPを上司に紹介する時に、
クライスラというネームバリューがあったら
XPの実践を説得しやすいかと思いますので

具体的にどのくらいでかいんだぞ。と
枝葉末端に至るまで偉大さを分からせてくださるような
情報キボンヌ。
0364中身を読まずにカキコNGNG
Extreme Programming / Chrysler C3 Payroll article from the October 1998 issue.
http://www.xprogramming.com/publications/dc9810cs.pdf
0365デフォルトの名無しさんNGNG
Chryslerは今はDaimlerChryslerになってるね。
サイト見てみると従業員は 416,501人(2000年末時点) か。でかい…
0366推測NGNG
>>361, 362
VC5.0 は template をまともに使えません。
CppUnit は template を使います。たぶん
VC5.0 では CppUnit をコンパイルするだけ
でエラーになると推測します。
0367デフォルトの名無しさんNGNG
ていうかクライスラーってやっぱ、あのクライスラーだよな・・・
0368デフォルトの名無しさんNGNG
Java で Input/OutputStream を
継承した解凍/圧縮ストリームの
ユニットテスト書きたいんですけど

 ExpandInputStream(InputStream in) extends InputStream {
  read() で解凍された1byte読み出し
 }

 CompressOutputStream(OutputStream out) extends OutputStream {
  write() で1byteを圧縮して書き込み
 }

みたいなストリームって
どうやってテストしたら良いんでしょ…
0369デフォルトの名無しさんNGNG
>>368
まず圧縮して解凍して問題なければもんぢあなし
0370デフォルトの名無しさんNGNG
>>369
やっぱ そーゆーテストの方法しかないっすよね…
0371デフォルトの名無しさんNGNG
手動で圧縮済みデータ作って比較。
0372368NGNG
>>371
手動で圧縮済みデータ作るの大変そうだなぁ…
はっ 良く考えたら手動で作った圧縮済みデータの
正当性検査はどーしたら?

それは良いとして、 それ以外のチェックって
ストリームの補助機能のチェック
ぐらいしか思いつかんのですけど、
read(int data) で data が 256以上でもちゃんと処理されるとか
mark() / reset() のサポート/非サポートが 仕様どうりかとか
available() の戻り値はOKかとか
それ以外ってチェック項目ありますかねぇ…
0373デフォルトの名無しさんNGNG
>>372
Javaは知らんが、圧縮をどうやってやるのかによる。
自前のロジックを組むなら、圧縮されたデータの正当性の検査は出来ると思う。
既存のライブラリを使うなら、圧縮済みデータを作ることは容易だと思うけど。
0374デフォルトの名無しさんNGNG
>>372
>それ以外ってチェック項目ありますかねぇ…

自分が実装しようとする(あるいはしたもの)についてテストすれば良い。
異常データのときに、ちゃんと異常処理されるか、
期待した例外がちゃんとthrowされるか、とか。
0375DelフサギコNGNG
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< 解凍ツールで解凍したら・・・
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪   って独自の圧縮形式だったらダメだけど...

 圧縮/解凍して元のデータとの整合性を
 チェックすればいいだけでは?
0376デフォルトの名無しさんNGNG
圧縮プログラムなんて、圧縮後のサイズが元より小さくて、圧縮したデータを正しく復元できれば、多少間違ってても要件を満たしてると思うなり。。。
0377デフォルトの名無しさんNGNG
圧縮/伸張処理自体も自分で書いてるものなら、いろんなパターンの
データを食わせてきちんと復元できることを確認しないといかんね…
同じバイトばっかり並んだやつや、欧文、日本語文テキスト、exeファイル、
乱数列、とか。

元が小さい場合、ヘッダ付加の分サイズが膨らむこともよくあるから
常に小さいかどうかってのはアレだが。
0378デフォルトの名無しさんNGNG
ロジックが十分複雑な場合、圧縮解凍して元に戻ればよい
というのはブラックボックステストであって
ユニットテストではない。

ExpandInputStream/CompressOutputStream内部で呼んでいる
メソッドについてテストを書くことを検討してみたら。
テストを書くのが簡単になってその上デバッグが楽になるよ。
0379デフォルトの名無しさんNGNG
結局、誰が翻訳者としてよくて
誰が翻訳者としてダメなわけですか?

ピンク色の本は翻訳はよくても冗長で分厚くなってしまっているのでは?
0380デフォルトの名無しさんNGNG
>>376
>圧縮プログラムなんて、圧縮後のサイズが元より小さくて、圧縮したデータを正しく復元
> できれば、多少間違ってても要件を満たしてると思うなり。。。

圧縮済ファイルをもう一度圧縮するとサイズがでかくなるよ
0381デフォルトの名無しさんNGNG
>>380
たとえば、lhaとかは圧縮結果をまた圧縮して
これ以上小さくならないところまで圧縮を繰り返す
なんて聞いたことがあるんだけど、ホント?
そういうアルゴリズムなら再圧縮しても大きくならない
ような気もするけど、圧縮ロジックの中での再試じゃないから
やっぱりヘッダなりなんなりが付加されて大きくなるかな?
元ファイルがこれからしようとしてる圧縮形式と同じもので
かつ圧縮後もやっぱりちいさくならないようなら
圧縮しない(もしくはしたフリ)でファイルに手を加えない
ってロジックは欲しいかもね
0382名無しさん@EmacsNGNG
>>380
おなじアルゴリズムで2回圧縮したらどうしたって1回目より大きくなっちゃうんじゃないの?
0383359NGNG
VC5でcppunitが使えました!

cppunit-xという奴です。
http://member.nifty.ne.jp/glad/cpp/test/

ただし、USE_LEAK_CHECKERを有効にすると、コンパイルできません。
(oeprator deleteの引数の数が違うと怒られる)

「eXtreme Programming テスト技法」
http://www.shoeisha.com/book/detail.asp?bid=1304
という本が発売されていて、その中でcppunit-xも紹介されているそうです。
(でも、この本、長瀬氏監修なんだよな・・・)

この本は、まだ買ってないので、評価は出来ません。
0384368NGNG
自分が質問したような「変換用ストリームの検査方法」の「確
立した検査方法」とかあるのかな?とか思って質問したんです
けど、やっぱり正攻法でやるしかないみたいですね…
Base64OutputStream とか作ってる人いるみたいだし、
そーゆのあるのかなぁ…とか思ったんですけど。

>>381
>>これ以上小さくならないところまで圧縮を繰り返す
ってのは違います。LHAは名前のとうり LZ77 圧縮した結果を
Huffmanで圧縮して終わりです。
個人的な経験では圧縮2回目は圧縮率9?%で圧縮できます。
でもこの圧縮率はヘッダの大きさ含んでないので書庫サイズ全
体としては1回目の圧縮後より大きくなってる可能性もありま
す。もちろん圧縮失敗する可能性もあり、その場合は「圧縮前
より大きくなる」のでなく無圧縮で格納しなおします。その場
合は確実にヘッダ分だけ書庫サイズは増加します。

普通は解凍に手間と時間がかかるだけで、意味が無いので二重
圧縮は嫌われます。たしか bzip2 だったかは二重圧縮に比較
的強いと聞きましたが自分は試したことが無いので、どの程度
「強い」のかは知りません。
0385デフォルトの名無しさんNGNG
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview05.html
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview06.html
この二人のどっちがいいのかな。
0386DelフサギコNGNG
   ∧,,∧∩   あらためてDUnitのこと効いてもいいですか?
  ミ,,゚Д゚彡 < そもそも、Unitテストの使い方がサパリわからないですー
   U  ミ    猫でもわかるUnitテストを教えてキボーン
 @ミ  ミ
   ∪ ∪
DUnitは二つあるみたいです...

DUNIT Am Xtreme testing framework for Delphi programs
http://dunit.sourceforge.net/
DUnit - Delphi Testing Framework
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/index.htm
0387デフォルトの名無しさんNGNG
下のほうは日本語のチュートリアルついてんじゃん...
それ読め
0388デフォルトの名無しさんNGNG
>>386
>>383 の本を読んでみたら?
0389Delphiを知らずにカキコNGNG
>>386
その二つのHPをちらっと見たところ、前者がxUnitのDelphiバージョン、
後者はUnitTestingの精神にのっとった、独自バージョンつー感じがした。
(ダウンロードして試したわけじゃ無いので違うかも。つーか、Delphi知らんし(藁)

まずやるなら、前者の方がいいかも。xprogramming.comでもpreferredに
なってるし。

いちおう、こんなページも見つけた。
http://www.toymap.net/fightingpg/fighting.htm

しかし、GoogleでDelphi&DUnitで<b>約17件</b>とは・・・。
0390DelフサギコNGNG
>>387さん キビシイですな...

>>388さん
[XP-jp:02767]でさりげなく無視されてたり

>>389さん
xUnitもよくわかなのですが、なんとかやってみます。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    サンクスコ
  ミ,, ゚Д゚彡
   〃  つ旦~~
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
0391デフォルトの名無しさんNGNG
んで、何がxUnitの特徴なのかというと(OOPL以外のxUnitは使ったこと
無いので除外)

・TestCaseがクラスになっている
・それぞれのTestCaseの前後で、setUp(), tearDown()というメソッドを
 呼び出すことになっていて、そこで、準備、クリーンアップが出来る。
 なので、それぞれのTestCaseが独立している。
・TestCaseをまとめる、TestSuite(テスト一式)という概念がある
・オブジェクト(クラス)の情報がわかる言語では、Testメソッドを自動的に
 順番に実行してくれる
・テスト実行(TestRunner)はGUIバージョンとCUIバージョンがある。
 GUIのほうは必須ではない。
・テスト結果がオブジェクトである。
 よって、結果に自由にアクセスできる。

つー感じ。
0392デフォルトの名無しさんNGNG
>>390
なるほど。XP-jp で無視されたら読む価値なしか。
0393DelフサギコNGNG
>>392 違うがな!

うーん、いまチュートリアル読んでるけど
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/tutorial/writing_code.htm
なんか説明が難しい。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,, ゚Д゚彡
   〃つl⌒|⌒l
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
0394DelフサギコNGNG
だ、、だめだ
>>386の下の方、どうやってもフサには理解できん..

      ∩,,,,,,,,,,,∩ ,,,_
   〜⊂`'''''''''ミ。Д。ミ⊃
      `'''''''''''∨ ∨    アボーン
0395デフォルトの名無しさんNGNG
つーか、上からやれって。
0396デフォルトの名無しさんNGNG
>>394
無茶苦茶簡単ですが?
サンプルに以下のコード追加したら普通に動きましたよ
Del6Personalで確認

unit testDUnit;

interface

...

function Plus(a, b: Integer): Integer;
function Minus(a, b: Integer): Integer;

type
TMyTest = class(TTest)
published
procedure testPlus;
end;

implementation

...

function Plus(a, b: Integer): Integer;
begin
Result := a + b;
end;

function Minus(a, b: Integer): Integer;
begin
Result := a * b; // バグ有り
end;

procedure TMyTest.testPlus;
begin
Test(Plus(1,2), 3, 'Plus1');
Test(Plus(1,-2), -1, 'Plus2');
Test(Minus(4,2), 2, 'Minus'); // バグ有り
end;

initialization
TestSuite.Add(TTestTest, [TTestNone, TTestSuccess, TTestFailure, TTestError, TTestException, TTestProfile, TTestExecute
,TMyTest]); // <-追加
end.

エラーレポート
Test failed - Minus
TestName: TMyTest
Type: Integer
Actual: 8
Expected: 2
0397デフォルトの名無しさんNGNG
お、Delphi使い登場ですな。

ところでDUnitはテストコードとテスト対象コードを分離することは出来ないの?
0398DelフサギコNGNG
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/tutorial/writing_test.htm
↑ここまではわかるけど

http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/tutorial/condition.htm
↑ここで
procedure TestとかTestNとか
fooとかTMyTestとか定義も説明も一切無いのになぜわかるのですか?

   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < うーん、>>396さんの説明とチュートリアルに一切接点がみられないのですが...
⊂,,,,,,,,,つつ.   \_

unit testDUnit; じゃなくて
uses testDUnit??
0399デフォルトの名無しさんNGNG
>>397
一緒に合ったほうが分かりやすくない?
リリースコンパイル時には分離できるのだし。
0400デフォルトの名無しさんNGNG
procedure Test(msg: String=''); overload; // 無条件に成功
procedure TestN(msg: String=''); overload; // 無条件に失敗
右にあるコメント見れば一目瞭然な気が
0401デフォルトの名無しさんNGNG
overloadしまくりなテストメソッドって大丈夫なの?
0402デフォルトの名無しさんNGNG
>>399
俺はDelphiも知らない全くの外野ですけど(汗

一緒にあると、バージョン管理がヤじゃないですか?
テストコードを更新すると、テスト対象のバージョンも上がってしまう。
あと、ドキュメント自動生成をやろうとしたときに、両方一緒だと邪魔だとか。

いや、ただ、それだけなんですけど・・・。
0403DelフサギコNGNG
>>400さん、いやゼンゼンわかりません。

沢山あるソースのどこにTestが定義されているのかもわからないし
そもそも、そのprocedureを自分で書くのか、利用するのか?
という事も伝わらないです。

procedure TTest.Test(Actual, Expected: Integer; msg: String);
begin
  if Actual = Expected then Succeed
  else Fail(IntToStr(Actual), IntToStr(Expected), 'Integer', msg);
end;
かろうじて、このソースを見てからなら意味はわかるのですが...

   ∧,,∧   ムズイ...
\,,,,ミ,,゚Д゚彡  五里霧中の中を突き進むような試行錯誤です。
⊂,,,,,,,,,つつ.

そもそもXPのユニットテストに精通している人間にしか
Test手続きが、評価する関数だって理解できないですよ。

procedure Testって、TTestのメソッドだってのも
どうやって、あのページから類推するのでしょう?

>>401さん、たぶん大丈夫(分かりにくいかもしれませんが)
>>402さん、選択できるといいですよね。
基本的にはテストコードはテスト対象コードと一緒にしておく方が
よいと俺は思っています。
0404デフォルトの名無しさんNGNG
>>401
名前同じで引数だけ違うものを複数書くときにoverloadと記述するんだけど
"大丈夫"って何が心配なの?
0405デフォルトの名無しさんNGNG
>>402
テストコードを含めてのコードじゃないかな。特に XP の test-first な視点では。
typo 一つでも commit するときはしなきゃいけないので
バージョンが上がるのは気にしない。

ドキュメントの自動生成は面倒だね。
これも気にしないことにしてるけど(w、
生成ツールにテストコードを omit するオプションつけてくれると嬉しいね。
0406Delphiを知らずにカキコNGNG
>>403
そのDUnitがxUnitの精神を忠実に実装しているかどうか知らないけど、

xUnitは、
・テストケースを書く仕組み
・テストケースをハンドリングする仕組み
・各種チェックメソッド
・テストを実行する仕組み
・結果をハンドリングする仕組み

を含んでいる。
つーか、本買ってきて読め。
あるいは、Java, C++, VBを知ってるなら、JUnit, CppUnit, VBUnitのドキュメントを
Googleしてみろ。つーか、使ってみろ。
Ruby知ってるならRubyUnitだな。256倍本も出てるし。

xUnitの枠組みは、簡単で、誰にでも分かるもの(OOPLの場合)。
・提供されたチェックメソッドを使って、提供されたTestCaseクラスを継承したテストコードを書く。
・提供されたTestRunnerでテストを実行する。
・提供された結果表示機能を使って、結果を確認する。

ただそれだけだ。
0407デフォルトの名無しさんNGNG
この石井氏の記事はどうよ。
xUnit が理に適った作りをしていることが分かる。
http://member.nifty.ne.jp/masarl/article/testing-framework.html
0408デフォルトの名無しさんNGNG
>>405
そういうもんかな。

今まで使ってきたxUnitが全部TestCaseは別ファイルだったから、
違和感を感じるだけかもしれない。

そもそも、コードとテストコードが同一ファイルにあるというのが、
古くからの伝統だったので、xUnitで分かれたのはそれなりの
理由があったのかもしれない。

単に最初の(ほんとか?)のJUnitがJavaであるがゆえにそうなった
というだけかもしれないけど。
■ このスレッドは過去ログ倉庫に格納されています