- 1 名前:仕様書無しさん [2008/06/28(土) 19:49:20 ]
- 何だよ、8割方終わった風な顔で、「コーディング終わりました。後はテストするだけです。」
って... コーディングが終わってやっと3割終わったかどうかってところだろが。 コーディングが終わってからが本番だっちゅーの。テスト仕様書に従い、テストデータ用意して、 正常系、異常系含めて、抜かりなく全網羅テストすること。これがどれだけ大変なことか。 本当に理解してんのか? コーディングが終わってやっとスタートラインに立ったぐらいの気持ち でいろよ、ってくヘラヘラしやがって。 こういう、テストを軽視する輩共が、プログラミングという作業を軽んじ、工数見積りを誤り、 徒に製造を急かし、バグの混入率を間接的に高めているということに気づかんのか。 どんな優秀な奴だって、人間だもの、間違いを犯す。バグを生み出す。それを極力未然に防ぐのが テストだろ。いつバグが判明するかとドキドキしながら納品後の時間を過ごすか、自信と満足感を もって笑顔で過ごすか。どちらがいいか自明のことだろ。 プログラミングはなぁ、テストに始まりテストに終わるんだよ。要件を理解し、その中に潜む異常 パターンを見抜き、どんだけ抜かりなくテストをやれるかが一流とカスを分かつ分水嶺だ。 コーディングなんかできてあたり前、肝心なのはテストだ。テストを極めてこそ、一流のプログラ マーって呼べるんだよ。 この馬鹿者どもが。
- 143 名前:仕様書無しさん mailto:sage [2008/07/02(水) 23:34:18 ]
- 100人で1000万行が本当だとしても、多分>>80は、まともにコードが書けなくてVBScriptくらいでしか
テストが書けない10人いるテスターの下っ端だろ。 しかも、派遣テスターwww
- 144 名前:仕様書無しさん mailto:sage [2008/07/02(水) 23:54:15 ]
- アナログ(エンドユーザ) と デジタル(プログラム)
の間をとりもつのがテスト。 それぞれ言い分や希望、得手不得手、好き嫌いが異なるのは 当り前。そこはお互いを尊重し譲歩すべきは譲歩し、テスト という愛の証、いわば結婚指輪があってこそ両者は結ばれる。 テストのない結納(納品)は、すぐに破局を招くのが必定。 ワハハハハハハハッ なんのこっちゃ
- 145 名前:仕様書無しさん mailto:sage [2008/07/03(木) 00:06:52 ]
- 100人で1000万行のシステムで、外部設計も内部設計もない設計書しか作らないってどういうこった。
クライアントとレビューして承認してもらうというマイルストーンは無いのか? 仮にあったとして、実装仕様てんこ盛りの仕様書をレビューしてもらってるとかか? それとも、実装仕様がほとんど書かれてない仕様書しか作らないのか? それで、スキルがばらばらなプログラマ90人で、ちゃんとしたユニットテストも行われず、 どうやって品質を担保してんだよ。 その回答が、プロ10人によるシステムテスト?
- 146 名前:仕様書無しさん mailto:sage [2008/07/03(木) 00:24:57 ]
- >>117
> システムテストのカバレッジは100%必須。未達成ならリリースはない。 >>140 > システムテストのカバレッジが100%=ユーザーに発見できるバグは0個と > 言う定義なので、もしバグが見つかったらシステムテストのカバレッジ > が100%ではなかったということになる。 カバレッジが100%に達成したことを証明できる人は誰もいないので、 リリースは永遠にないのですね。わかります。
- 147 名前:仕様書無しさん mailto:sage [2008/07/03(木) 00:53:15 ]
- プログラマの心理とすれば、テストってめんどくさいんだよね。
特に結果が分かりきってる(と自分で思い込んでいる)メソッドのテストコード をいちいち書くのがね。 で、俺がこの前ミスったのは、Cのコードで double some_calc(int a, int b) { return d = a / b * 12.34; } みたいな感じの奴。 こんな四則演算なんて間違えようがないだろって高を括ってた。 ちょっとした油断でバグって生まれるんだよなぁ。 上の書き方だと、 some_calc(6, 2) だと問題無いが、 some_calc(2, 6) だと期待した結果にならないわけで。当り前だけど。 正解は、return d = (double)a / (double)b * 12.34; などとキャストするか、引数をdoubleにしとくべきでした。 と、あらためてユニットテストの重要性を認識したしだい。デグレを起こさないため にもね。
- 148 名前:仕様書無しさん mailto:sage [2008/07/03(木) 00:55:48 ]
- うわ、間違ってた。
return d = a / b * 12.34; じゃなくて、 return a / b * 12.34; ね。下の奴も同じく。
- 149 名前:仕様書無しさん mailto:sage [2008/07/03(木) 00:58:01 ]
- 投下するレスのユニットテストも必要だな
- 150 名前:仕様書無しさん mailto:sage [2008/07/03(木) 01:02:24 ]
- 面目ない。。。。
- 151 名前:仕様書無しさん mailto:sage [2008/07/03(木) 01:06:44 ]
- >>80のおかげでユニットテストの重要性を再認識できました。
ありがとう!!>>80
- 152 名前:仕様書無しさん mailto:sage [2008/07/03(木) 20:39:02 ]
- >>149
俺たちがバグ出しするから問題ないよ
- 153 名前:80 mailto:sage [2008/07/03(木) 23:58:00 ]
- >>151
いったんユニットテストを頑張って本当にバグが無くなるかを 試せばいい。経験は大切だと思う。 そのためには、ユニットテストのおかげでバグが減ったことを証明する 方法、つまり指標を決定しなくてはいけない。 まさか闇雲にユニットテストを行うわけじゃないだろ。 >>147 プログラミング能力の低さを、ユニットテストで補うつもりなら よした方がいい。プログラミングスキル向上の方に力を注いだ方がいい。 > double some_calc(int a, int b) { > return (double)a / (double)b * 12.34 > } 問題点1: 関数の仕様がありえない。 int -> double 問題点2: b の 0 かどうかのチェックが必要。0 除算くらいは避けよう。 問題点3: 掛け算から先にする。説明が面倒だからググれ。浮動小数点 で演算する場合は、精度を意識しよう。 以上3つの問題点は、ユニットテストでは見つからない。 なぜかって?プログラマーのレベルを超えるユニットテストが行われる 事は不可能だからだ。
- 154 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:03:14 ]
- >問題点3
>掛け算から先にする。 え?
- 155 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:04:08 ]
- つかユニットテストコードは先に書け
- 156 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:08:45 ]
- なんかとんでもないこと言い出したな・・・
調子に乗らずにちょっと前までのレスで終わりにしてれば締まってたのに
- 157 名前:80 mailto:sage [2008/07/04(金) 00:13:45 ]
- >>155
テストファーストの事だな。 >>154 よーく考えてみよう。 ちなみに掛け算から先にする理由は2つある。
- 158 名前:仕様書無しさん [2008/07/04(金) 00:14:57 ]
- >>147
プログラミングを軽視する者ども というスレ立てても良いですか?
- 159 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:19:57 ]
- >>158
「マを侮るなかれ」 ってスレがいいと思います
- 160 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:29:17 ]
- 80さんよ
一応言っておくが>154は「かけ算から先」がコードの解説と勘違いしてると思われ 俺もそう勘違いしたけどね 問題点と書きながらいきなり修正案を書くのはアホだろ
- 161 名前:80 mailto:sage [2008/07/04(金) 00:37:43 ]
- >>160
なるほど。そこまで意識していなかった。 確かにその通りだ。 一応、掛け算を先にする理由を書いておく。 掛け算を先にするとたとえ引数がintでもキャストする必要がなくなる。 演算子は、暗黙のうちにオーバーロードされるからね。 あと、割り算してすごい小さな値になったらその時点で精度が 落ちてしまうから先に掛け算をする方が良いのだ。 分かっている人からすると「何をいまさら・・・。」だろうけど 念のためにね。
- 162 名前:80 mailto:sage [2008/07/04(金) 00:43:03 ]
- 話はそれたけど、結局、プログラマーがユニットテストで解消される
バグは、プログラマーの能力に依存することは分かったと思う。 それでも、ユニットテストは必要だ。ただし、あまり依存しすぎては いけない。 アジャイルとか、テストファーストとか言っているカリスマプログラマーの 意見は、「天才プログラマーだからこそできる芸当である。」という事を 念頭に置くべきだ。 ユニットテストで成果を出すための前提条件は「高度なプログラミング 能力に裏付けされた分析・設計能力を備えた人材が揃うこと。」 だと俺は思う。
- 163 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:44:22 ]
- どっかの糞コテの文体に似てきたなあ・・・
- 164 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:45:08 ]
- おれは3.5流PGだけど、
だからこそ 作ることよりちゃんと仕様を満たすことの確認こそに命をかける もってっけー
- 165 名前:仕様書無しさん mailto:sage [2008/07/04(金) 00:59:16 ]
- 正常系なんて客にやらせる
異常系は自分でやる これだけやりゃ十分
- 166 名前:仕様書無しさん [2008/07/04(金) 02:24:20 ]
- >>162
>話はそれたけど、結局、プログラマーがユニットテストで解消される >バグは、プログラマーの能力に依存することは分かったと思う。 そこが、まず間違えで、ユニットテストはバグを解消するモノではなくて、 外部仕様(入力・出力・副作用の具体例)そのもの。 今時、テストファーストではない開発は、「ゴールの決まっていないマラソン」 とおなじようにナンセンスだと思うけど、、、 >ユニットテストで成果を出すための前提条件は >「高度なプログラミング能力に裏付けされた分析・設計能力を >備えた人材が揃うこと。」 仕様を網羅するユニットテストを作れないということは、 設計できないということと同義。 ユニットテストを作れるくらい全然「高度な人材」ではないと思う。 # 最後はレビュアーの腕次第とはいえ、コード・カバレッジの自動計測 # など網羅性をはかるツールもいろいろ出てきているし、、、
- 167 名前:仕様書無しさん mailto:sage [2008/07/04(金) 02:40:19 ]
- >話はそれたけど、結局、プログラマーがユニットテストで解消される
>バグは、プログラマーの能力に依存することは分かったと思う。 テストファーストという言葉があるように、 バグが発生する前から、テストを書くことができるわけなんだよな。 バグが発生する前というのは、コードをかくまえってこと。 ということは当然、コードを書く人ではなく、 仕様を書く人がテストを書いて、あとは実装者に任せるということも可能なわけだ。 だから仕様書を作る人が、テストコード書けばいいんじゃね? プログラミングができない人が、設計をするのがどれだけナンセンスなことか。
- 168 名前:仕様書無しさん mailto:sage [2008/07/04(金) 02:47:02 ]
- 携帯電話なんて、発売後に顧客が実地テストさせられてるよなw
- 169 名前:仕様書無しさん mailto:sage [2008/07/04(金) 02:49:50 ]
- あれは顧客じゃない
βテスター
- 170 名前:仕様書無しさん mailto:sage [2008/07/04(金) 02:53:07 ]
- いや、あの製品とか、あの製品とか。あの製品とかの話だよ。
- 171 名前:仕様書無しさん mailto:sage [2008/07/04(金) 02:54:15 ]
- 金払ってまでβテスタに立候補するなんてステキ
- 172 名前:仕様書無しさん mailto:sage [2008/07/04(金) 03:00:04 ]
- カネ貰ってもお断りしますってカンジだな
- 173 名前:仕様書無しさん mailto:sage [2008/07/04(金) 05:16:42 ]
- >>80
>>145にコメントしろ、カス
- 174 名前:仕様書無しさん mailto:sage [2008/07/04(金) 05:26:42 ]
- 携帯なんて所詮おもちゃ。品質は一番あとまわし。
軍事・航空宇宙・医療機器・発電所とかだと品質が命。 80は何作ってるんだろうね?候補は大体想像つくけど。
- 175 名前:仕様書無しさん mailto:sage [2008/07/04(金) 05:46:53 ]
- 1000万行のうち、スケルトン・自動生成が700万行なので、UnitTest軽視なんですよ。
- 176 名前:仕様書無しさん mailto:sage [2008/07/04(金) 07:23:13 ]
- 80はユニットテストは属人性が高いと言っているが、なぜだかシステムテストは属人性が高くない
ような前提になっている。 ユニットテストが成功する前提条件として高度な能力を持ったプログラマが必要としておきながら、 なぜだかシステムテストさえやれば、テスタの能力は関係ないような記述になっている。 また、もっとも効率の良いテストケースを導き出せるのはホワイトボックスの視点を持ったプログラマ であるにも関わらず、それを全く無視してる。 単体テストは必要であると言いながら、どのように実行しているかを曖昧にして具体的な説明を 避けている。 バグはできるだけ早く解決するのが、もっともコストが低いのは常識なのだが、システムテストまで 解決を遅延させても平気なのはなぜだろうか。 プログラマを育てる気はないのだろうか。全員派遣かSESなのか。
- 177 名前:仕様書無しさん mailto:sage [2008/07/04(金) 20:44:02 ]
- > することは分かったと思う。
この辺りの言い回しが非常にうさんくさい 某アホコテっぽいし
- 178 名前:仕様書無しさん mailto:sage [2008/07/04(金) 21:21:15 ]
- 1000万行ってのが胡散臭いんだよな。
システムテスト件数30万件で、バグは3〜6万件くらいか? 10人じゃさばけないよなぁ、コミュニケーションコスト的に。 ちなみに、Windows 2000は2900万行で、出荷前のバグ件数は数十万件だったらしいぞ。 80のシステムは多分業務系だろうから件数は甘めに見積もった。
- 179 名前:仕様書無しさん mailto:sage [2008/07/04(金) 23:17:16 ]
- 早めにバグを潰した方がトータルコストが安くなる
↓ プログラマはうれしい ↓ テスターもうれしい ↓ でも会社はぼったくるよ ↓ クライアントのためにならない
- 180 名前:仕様書無しさん mailto:sage [2008/07/05(土) 01:38:16 ]
- > クライアントのためにならない
ここちょっと違くね? 時間を金で買うクライアントもいるよ
- 181 名前:仕様書無しさん mailto:sage [2008/07/05(土) 08:05:40 ]
- トラブルシステムを経験してるクライアントは
品質面についての時間、工数をちゃんと理解してくれることが多いけど 「ハァ?品質?金払ってるんだから問題ない システム入れんのは当然だろ?スケジュール見直し? ふざけんな、こっちはお客様だぞ!」 というお客様は多い。
- 182 名前:仕様書無しさん [2008/07/05(土) 11:57:14 ]
- 同じ物作りでも、H/Wは徹底的にテストするんだよなぁ。
ちゃんとスケジュールを確保し、テスト項目をドキュメント化し、 何回も精査を重ね、それこそ、しつこいぐらいにテストする。 要件や性能の確認ははもちろん、耐久性、動作限界(温度、湿度、 etc..)、危険の可能性はないか、等々。 それにH/Wの場合は、テストだけでなくマニュアルもしっかりして いる。人命に関わるケースも多いし、法令化されているから当然と いえば当然なんだけど。 しかし、これほどの徹底したテストを実施しても、品質不良や車の リコールなどたまにあるわけだけど。 S/W、特に受託型アプリケーション開発の場合は、何故かねぇ... テストをやらないわけじゃないけど、個人の技量に依存しちゃって る場合が多いよなぁ。
- 183 名前:仕様書無しさん mailto:sage [2008/07/05(土) 16:05:21 ]
- >>162
お前のとこのプロジェクトはテストケースレビューしないのか? 低能一人じゃ無理でも、低能三人集まれば1.5倍の能力にはなる
- 184 名前:仕様書無しさん [2008/07/05(土) 16:14:06 ]
- >>183
テストケースレビューって必要か?仕様書がこなれてないだけじゃね? テストに落とせない仕様書は悪い仕様書。 「URLが開けなかったら、エラーを吐く」←悪い仕様書 「200〜206番以外のステータスコードが返ってきたらエラーを吐く」←良い仕様書 良い仕様書は「おいおい、じゃあタイムアウトは別か?俺が担当すんのか?」みたいなツッコミに繋がる。
- 185 名前:仕様書無しさん mailto:sage [2008/07/05(土) 16:15:12 ]
- >>183
低能一人増える毎に0.5倍なので0.75倍です。1.5倍になるんなら紛れもなく有能な方です。 ちなみに−倍になるのは無能です。 -倍は成果物が0もしくは、焼き直しの仕様が無い成果物しかつくれないって事ね。 低能は一応引き継ぎ出来る。無能は無駄な作業してから結局破棄して一からやり直すので−倍。 落ち目の会社で人が減っていくのは一番有能な連中が消えて低能や無能が増えるので作業効率が落ちる。 それはまだ言いのだが、上が人月取りたい為にさらに人を増やして作業効率を落とす事するので次に有能な連中が消える。 これのスパイラルが有能が一人もいなくなるまで続く。 (ちなみに、低能が有能に化けるので意外に長く続く 無能は低能にも有能にもならない) いえ、そのスパイラルの最終段階に移行中なんで > 給料遅配。
- 186 名前:仕様書無しさん [2008/07/05(土) 16:17:58 ]
- >>185
会社潰れるとgdgdになるから、今のうちに転職した方が良いよ 責任感から動くと、周りを巻き込んで崩壊するぜ
- 187 名前:仕様書無しさん mailto:sage [2008/07/05(土) 17:48:19 ]
- >>184
良い仕様書から作り出すテストって ほぼ全てがユニットテストで書けるんだよね。 ユニットテストが苦手だといわれていたGUIでさえ、 GUI操作の自動化により、かなりのことが可能になっている。 出来ないのは見た目のデザインぐらいじゃないかな。 (ここの背景はもっと明るい色でとか) システムテスト? よくわからないな。 それはユニットテストで出来ないものなのかね?
- 188 名前:仕様書無しさん [2008/07/05(土) 17:54:19 ]
- >>187
単なる名称とかやりかたの違いで、システムテストもユニットテストも同じ様なもんだよ。 いくつかのチームで作ってると、単体同士では良くても、全体としてパフォーマンスがでなかったりするから。 デザインのテストみたいな感性系は、テスターが大量にいるからなあ
- 189 名前:仕様書無しさん mailto:sage [2008/07/05(土) 17:55:26 ]
- 仕様書のテストはどうやるんだ
- 190 名前:仕様書無しさん mailto:sage [2008/07/05(土) 18:17:43 ]
- >>189
その仕様書には、どんなことが書いてあるの? そして、その書いてあることが正しいかどうかは 誰が判断できるの? この二つの質問に答えることができれば、 おのずとどうやるかがわかると思う。
- 191 名前:仕様書無しさん mailto:sage [2008/07/05(土) 18:32:10 ]
- ところで、仕様書の内容だけで、バグが無いソフトが作れるのかな?
理想としてはそうあるべきなのだろうが、仕様書を書く人に聞きたい。 本当に漏れの無い(全ての例外的な事象を考慮している)仕様書を書いていますか? 結局はプログラマがユニットテストという形で仕様書を書いていませんか? こういう場合にはこうなるという仕様書がユニットテストの中にしか無いってことありませんか? たぶんね。仕様書の内容を変更があるたびに短時間で 全て見直すことが出来ない限り漏れが無い仕様書を書くことは 出来ないと思うよ。 ユニットテストのように、OK/NGって表示されないのなら、間違っていてもいいもんね。 だから絶対仕様書のテストをサボるでしょ? 漏れの無い仕様書書かないでしょ? だからプログラムコードではない自動的に何度も検証できない仕様書は、 あくまで参考資料のために作るのであって ユニットテストを本当の仕様書&テストコードにするべきだよ。 時間は限られているからね。何万とある検証項目を何度もする時間は無いんだよ。
- 192 名前:仕様書無しさん mailto:sage [2008/07/05(土) 18:34:03 ]
- ユニットテストを書く人をプログラマーと呼ぶか
テスターと呼ぶか設計者と呼ぶかはこの際問題じゃない。 ユニットテストを書く人が一番重要なのさ。
- 193 名前:仕様書無しさん mailto:sage [2008/07/05(土) 18:50:33 ]
- シングルタスクのプロセスのテストはまぁ簡単。
だけど、これがマルチタスク、マルチユーザの環境になるととたんに 複雑になる。 排他のことやら、負荷の集中や、リソース不足やら、アクセス制御や セキュリティー関連やら、想定されるケースが指数関数的に増える。 ファイルひとつアクセスするのにも、DBのトランザクション処理の場合 でも、いろんなケースを想定し、異常ケースでどう振舞うのが正しい のか考えないといけない。そして普通、仕様書にはそこまで細かく書 いてなく、「このファイルのここをこの値で更新する」ぐらいしか書 いてない。ファイルが無かったらどうするのとか、オープンで失敗した ら?とか、書き込みで失敗したら? とか。人によってそこを確認する人 もいるけど、だいたいエラーメッセージ出すとか、例外を投げるとか、 アボートさしちゃうとか、PG任せなケースも多いわけで、仕様書とプロ グラムのギャップってどうしてもあるのよねぇ。ま俺から言わせれば設 計者の怠慢なんだけど、それをいちいち突っ込むのも、時間がなかった り、面倒くさかったり、人間関係に気を使ったりとかいろいろあってで きなかったりとか。はぁーとにかくめんどいよ、この業界。 自分でスケジューリングして、自分で設計して、自分でつくって、自分 でテストして、全部自分で責任持つのが一番楽だね。
- 194 名前:仕様書無しさん mailto:sage [2008/07/05(土) 18:51:43 ]
- >>193
どこを盾読み?w
- 195 名前:仕様書無しさん mailto:sage [2008/07/05(土) 19:02:30 ]
- >>194 14行目の31列目から2行分だ。
- 196 名前:仕様書無しさん mailto:sage [2008/07/05(土) 21:48:53 ]
- 仕様書のテストなんて恐ろしくて提案出来ないw
- 197 名前:仕様書無しさん [2008/07/05(土) 23:57:14 ]
- テストデータをどのくらい作ればいいのか迷う。
- 198 名前:仕様書無しさん mailto:sage [2008/07/06(日) 00:07:11 ]
- >>197
顧客が満足するくらい
- 199 名前:80 mailto:sage [2008/07/06(日) 00:09:16 ]
- >>166
外部仕様書に相当するものは、うちではインターフェース仕様書と 呼んでいる。 インターフェース仕様書は、その実現を記した「設計書」と区別される。 さらに、インターフェース仕様書の実現方法は複数あるので、 インターフェース仕様書1つに対して、複数の設計書が存在することもある。 外部仕様書と内部仕様書という言葉を使っているということは、 オブジェクト指向とか使ってないの?言語は何? >>178 1000万行ってどうも行数が多いから嘘だと思われているようだな。 俺は逆に、少ないから馬鹿にされているかと思った。 でも、うちの業界では別に多い部類じゃないんだけどね。。。。 ちなみに、業務系じゃないよ。
- 200 名前:80 mailto:sage [2008/07/06(日) 00:15:21 ]
- >>198
良いことを言うな。 うちの顧客は、ユニットテストにまったく興味がない。 説明しても絶対に理解できないし、説明を聞く気持もない。 顧客に説明しなくてはいけない事は、要求(ユースケース)を正しく実 現出来ているかどうかである。
- 201 名前:80 mailto:sage [2008/07/06(日) 00:22:15 ]
- >>191
設計書にないコードを書くのは禁止されている。 設計書に間違いがあってもそのままコーディングされる。 設計書に不備があったら、設計者に戻され修正される。 そして、レビューが開催される。 責任関係があいまいになるような開発スタイルは、うちではありえない。 外資系なのでそのあたりはかなりドライ。
- 202 名前:仕様書無しさん mailto:sage [2008/07/06(日) 00:33:54 ]
- っていうかどこのシステム。
銀行とか証券とか知っているけど、全システムあわせないとそれ位いかんぞ。 漏れのところは総計10万行で、×20で200万行。 1000万行ってどんな無能が作ってるんだ!?って意味合いでも疑わしい。
- 203 名前:仕様書無しさん mailto:sage [2008/07/06(日) 00:41:55 ]
- 多分、糞コード、糞仕様オンパレードの携帯の話じゃね?
- 204 名前:166 [2008/07/06(日) 01:49:39 ]
- >199,200,201
>良いことを言うな。 >うちの顧客は、ユニットテストにまったく興味がない。 >説明しても絶対に理解できないし、説明を聞く気持もない。 > >顧客に説明しなくてはいけない事は、要求(ユースケース)を正しく実 >現出来ているかどうかである。 なんか、根本的に誤解していない? 誰もこのことに反対しているわけではないですよ。 そもそもシステム「製造」の目的が、 顧客の提示した仕様を満たすモノを作り そのモノが顧客の提示した仕様を満たすことを証明すること。 であることには議論の余地はない。 で、その最終目的にアタックする足場として、 7合目あたりに強固なベースキャンプ(自動ユニットテスト) が絶対に必要というのが、80さんの以外のほぼ全員が言っていること。 >設計書にないコードを書くのは禁止されている。 >設計書に間違いがあってもそのままコーディングされる。 >設計書に不備があったら、設計者に戻され修正される。 ・・・ >責任関係があいまいになるような開発スタイルは、うちではありえない。 だから、設計にテスト仕様の洗い出しを含めろとあれほど・・・ なんか 191 さんの論旨が全く伝わっていないような希ガス。 >外資系なのでそのあたりはかなりドライ。 今日日むしろ外資系(特に米系、特に"I")はAgile一色。
- 205 名前:166 mailto:sage [2008/07/06(日) 02:10:28 ]
- >>199
>外部仕様書に相当するものは、うちではインターフェース仕様書と >呼んでいる。 >インターフェース仕様書は、その実現を記した「設計書」と区別される。 >さらに、インターフェース仕様書の実現方法は複数あるので、 >インターフェース仕様書1つに対して、複数の設計書が存在することもある。 だから何? テストケースは、インターフェース仕様の一部にすべきという のが私の論旨なのだが・・・ なぜに、80さんのプロジェクトのドキュメント体型の話をなさる? >外部仕様書と内部仕様書という言葉を使っているということは、 >オブジェクト指向とか使ってないの?言語は何? オブジェクト指向だろうが何だろうが、 −プログラムには外部仕様と内部仕様とがある −−外部仕様はこのプログラムをどう使うかを定義するモノで、 入力・出力・副作用(+前提条件・例外)で表される −−内部仕様は外部仕様の実現手段 というのは変わらないと思けど、、、 何が言いたいのかよく分かりません。
- 206 名前:80 mailto:sage [2008/07/06(日) 08:03:32 ]
- >>202
銀行とか証券とかそういうのじゃないよ。って言うか全く違う。
- 207 名前:80 mailto:sage [2008/07/06(日) 08:25:39 ]
- >>205
ちゃんと整理しよう。 システムの内部=内部仕様書 システムの外部=外部仕様書 だろ。まぁ、一見とてもわかりやすいよな。 では質問 1.システム内部とシステム外部の境界は、どちらの仕様書に書くの? 2.開発するシステムに対しして内部と外部があるわな。 開発範囲=システムとした場合、外部とは、開発範囲の外側と言う ことにならないか? たぶん。 205 の頭の中を整理すると -> 外部仕様書=インターフェース仕様書、ユースケース仕様書 内部仕様書=設計書 なんだと思う。 問題点1 システムの外部は、開発対象ではない。 問題店2 レイヤー、サブシステムに分割されているシステムの場合、 あるサブシステムの外部仕様は、上位のサブシステムの内部仕様書 になる(全く一緒ではないが)。つまり、外部と内部でわけると 仕様書に重複が生じる。 また、インターフェースは、レイヤーやサブシステムに縛られない。 つまり、単に外部仕様とすることはできない。 問題点3 インターフェースを誤解している。 インターフェースは、極めて外部に近い内部ということになる。
- 208 名前:80 mailto:sage [2008/07/06(日) 08:33:20 ]
- >>205
うちは、インターフェースに対するテストを重視している。これを うちは、システムテスト(サブシステム)テストと呼んでいる。 システムの実現側つまり、ソースコードの隅積みまで 行うテスト(単体テスト、ユニットテスト)は、普通にやってる。 システムテストほど重要視していない。 >>205 の最大の矛盾は、外部仕様書に基づいてテストを単体テストとかユニットテスト と呼んでいることだ。単体テストは、内部のテストじゃないのか? 外部仕様書が書かれていることがちゃんとできているか=システムテスト 内部仕様書に書かれていることがちゃんとできているか=ユニットテスト だと思うが?だとすると、205は単体テストをやっていないことになるな。
- 209 名前:仕様書無しさん mailto:sage [2008/07/06(日) 09:07:05 ]
- としたら、学術系か軍事系か宇宙・航空系か・・・。
まあ 166の言いたい単体・ユニットテストは >システムのテスト手法の一つで、個々のモジュール(部品)のみを対象としたテスト。 >対象のモジュールが仕様書で要求された機能や性能を満たしているかどうかをテストする。 >複数のモジュールを組み合わせて行なうテストは結合テスト、システム全体を対象に行なうテストはシステムテストという。 80の言いたいのは単体・ユニットテストは >単体テストとは、プログラムを検証する作業の中でも、プログラムを手続きや関数といった個々の機能ごとに分割し、 >そのそれぞれについて動作検証を行う手法のことである。 大体こんな感じだろ、粒度の問題でその辺変わるので双方間違ってないように見えるけどな。 双方ともシステムやサブシステム”未満”のテストを言っているが、粒度によっては、外部インターフェースとのやり取り をするレベルだと外部仕様書レベル元に単体・ユニットテストやったりするわけだし。
- 210 名前:80 mailto:sage [2008/07/06(日) 09:27:55 ]
- 仕様書・・・システムが、ユーザー(人、外部システム)に提供する利益
が記されている。 設計書・・・システムが、仕様をどのように実現するかが記されている 仕様書に基づいたテスト・・・システムテスト 設計書に基づいたテスト・・・ユニットテスト 仕様書や設計書はシステム、サブシステム、コンポーネントといった 開発対象それぞれに対して作成される。 ○○システム仕様書、○○システム設計書という具合 で、インターフェース仕様書は、インターフェースのことだけ書いた 仕様書。 仕様書と設計書だと、仕様書の方が重要。 人と人とのコミュニケーションやレビューの対象は、おもに仕様書。 設計書は、開発スタイルによるが、自分で設計書書いてプログラミングする 場合は、事細かに書かずに、ユニットテスト(xUnit)で代用することもできる。 ユニットテストはもろ刃の剣で、プログラマーのレベルが高い事が前提だ。 それに、テストコードを書くのはコスト高だ。 これを解決するのに何年か前から試行錯誤を繰り返している。 その解決方法のひとつが、xUnit以外の専用のテストツールを使ったテスト と第三者によるユニットテストだ。
- 211 名前:80 mailto:sage [2008/07/06(日) 09:31:50 ]
- >>209
粒度は、開発範囲(スコープ)と詳細度(レベル)の2次元で定義すると。 今回のケースをとらえやすくなる。 今、ごちゃごちゃになっているのは、スコープを無視して話をしているからだ 。外部と内部という簡単な方法で開発対象を規定しようとしているところに 無理があると思ったから、粒度(スコープとレベル)を物差しに加えてみた。
- 212 名前:80 mailto:sage [2008/07/06(日) 10:17:18 ]
- >>166 の言ってるユニットテストは、
スコープ=小さなシステム(サブシステム、コンポーネント、ライブラリ) のシステムテスト(外部から見たふるまいのテスト)だと思う。
- 213 名前:80 mailto:sage [2008/07/06(日) 10:18:37 ]
- >>209
の言うとおり、粒度に惑わされるが、どんなにスコープが小さくとも 仕様書に基づいたテストは、全部、システムテストだ。 つまり、システムテストは、システム(サブシステム、コンポーネント)の 境界をテストすることだと言える。 システムをサブシステムやコンポーネントに分割すれば、 システムテストの件数が増大する。分割しなければ、ユニットテストの 件数が増大する。 分割していないという事は、システムの詳細を仕様化していない ことになりテスト工数が増大する。 よーは、システムを適度に分割して、分割した境界についてテストを行う ことが重要で、単純にユニットテストを強化しても不具合は減らないと 言いたいのだ。 まぁ、よくよく聞けば。同じ事を言っているみたいなので安心した。 要点は、 ・テストファースト →仕様をテスト可能かどうか検証してから設計する。 ・粒度が高い場合 システムを分割して、分割したサブシステムを仕様化する。 そして、その際にテストファーストを実施する。 ・粒度が低い場合 一人で切り盛りできるレベルになったら、プログラマーに任せる。 あと、俺のミスだが、 ユニットテストをテスターが行うというのは、厳密には、 「粒度の小さいシステムテストもテスターが行う。」だ。 粒度の小さいシステムテスト=ユニットテストと混同してたな。
- 214 名前:仕様書無しさん mailto:sage [2008/07/06(日) 12:44:42 ]
- お前はまず開発工程の定義から勉強して出直して来い
- 215 名前:仕様書無しさん mailto:sage [2008/07/06(日) 13:20:18 ]
- >>214
ウォーターフォールに慣れすぎた古き人々よ 落として焼かねば変わらんのか?
- 216 名前:仕様書無しさん mailto:sage [2008/07/06(日) 13:52:45 ]
- 要求仕様を満たしているかをテストするって考えがまるっきり無いんだな。
自社製品ならまだ知らず、顧客から注文された製品なら、重要な事なのに。
- 217 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:18:27 ]
- > 仕様書に基づいたテストは、全部、システムテストだ。
なら、ユニットテストは全部システムテストってことになるな。
- 218 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:23:08 ]
- ユニットテスト以外で、
どうやってシステムテストをやっているのだろうか? いや、果たしてやれるのだろうか?
- 219 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:23:56 ]
- > ユニットテストはもろ刃の剣で、プログラマーのレベルが高い事が前提だ。
その点、システムテストは、レベルが低くてもやることができる。と?
- 220 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:24:48 ]
- > これを解決するのに何年か前から試行錯誤を繰り返している。
> その解決方法のひとつが、xUnit以外の専用のテストツールを使ったテスト > と第三者によるユニットテストだ。 残念ながらユニットテストをやることは必須。 システムテストでは、ユニットテストの代用にはならない。 なぜなら、システムテストは適当なテストだから。
- 221 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:26:58 ]
- 「適当なテスト」の意味は、レベルが低いやつでもできるテストであり
バグがないことを保障していない。 値を入れて、それらしい値がでてくれば、それでオッケー的なもの。 例外的なことを考慮していない。異常な値を入れたときどうなるかは 一切考えていない。
- 222 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:28:48 ]
- システムテストでどんな内容をテストしているかを
具体的にいってくれれば、それがユニットテストでやれるってことを 証明できるのになぁw
- 223 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:42:03 ]
- >>222
そりゃないんじゃないか? 名前が違うのかも知れないけど、うちのシステムテストって ・チームAが作ったデータベース周り ・チームBが作った入出力周り ・チームCが作った夜間バッチ周り を、一斉に動かしてどこがボトルネックになってるか調べるテストだけども。 (データベースと入出力のAPIとか応答速度は決めて、その速度出るのはテスト済み)
- 224 名前:仕様書無しさん mailto:sage [2008/07/06(日) 16:59:40 ]
- システムテストとユニットテストはやることの対象が違うんだから、
システムテストをいくらしたところで ユニットテストの工数は減らないよ。 そもそも減らしてはいけない。減らす = サボるってことだから。 システムテストはユニットテストの代わりにはならない。 システムテストをさぼることで、無駄なユニットテストをやらされたとしたら、 それはユニットテストが問題なのではなく、システムテストやったやつがヘボで、 そのとばっちりを食らっただけの話。
- 225 名前:仕様書無しさん mailto:sage [2008/07/06(日) 17:04:33 ]
- >>223
ボトルネックになっているとわかった後どうする? 修正するよね? そのときユニットテストがあれば、 不具合を入れることなくパフォーマンスのみを あげることができたって自信が持てるよね? ほらどうだい。ユニットテストってすばらしいだろう? それにボトルネックになっているのを見極めるために、 同じ条件で同じ操作を何度も繰り返すものだ。 どうだい。ユニットテストで自動化されていればそれも可能だろう?
- 226 名前:仕様書無しさん mailto:sage [2008/07/06(日) 17:06:18 ]
- >>225
だからよ。ユニットテストはやってるって書いてるだろう? >(データベースと入出力のAPIとか応答速度は決めて、その速度出るのはテスト済み) >システムテストでどんな内容をテストしているかを >具体的にいってくれれば、それがユニットテストでやれるってことを >証明できるのになぁw ↑は、おかしいだろ。 ユニットテストで出来ることと、システムテストでできることは別じゃね?
- 227 名前:80 mailto:sage [2008/07/06(日) 17:20:08 ]
- >>217
そもそも、ユニットテストという言葉が微妙なんだ。 >>219 システムテストは複数のテスターによって実行できる。 テスターは単価が安い。
- 228 名前:80 mailto:sage [2008/07/06(日) 17:26:31 ]
- >>225
の言っているユニットテストはなんなの? 「テスト用のプログラムと結合して自動的にテストを行う」事か?
- 229 名前:80 mailto:sage [2008/07/06(日) 18:10:30 ]
- >>225
>システムテストでどんな内容をテストしているかを >具体的にいってくれれば、それがユニットテストでやれるってことを >証明できるのになぁw もし証明できるなら、逆も証明することになる。 システムテストとユニットテストは等価変換できるという、 相当、大それたことを言っていることに気づこう。
- 230 名前:仕様書無しさん mailto:sage [2008/07/06(日) 18:47:53 ]
- 80は色々いっているけどプログラムの動作レベルに関して言及していない、
テストは概ねブラックボックスに関して述べている。 よりはっきりいえば、詳細なホワイトボックステストをテスターがやるのは意味が無いといっているとも思われる。 設計がパーペキなら問題ないし(バグはプログラマーの問題) 設計にバグがあるなら差し戻ししてそこからグラマーが直せばよいとの事。 設計通りにすればとりあえずうまくいうと言う考え。 ホワイトボックスのテストはテストツールでやるとかともいっているねー。 それだけの話。
- 231 名前:80 mailto:sage [2008/07/06(日) 19:01:54 ]
- >>230
残念ながら全然違う。 俺が言ってるのは、ホワイトボックステストを最小限にするという戦略。 部品化を進めて、各部品の仕様書を書く。仕様書に基づいて各部品の ブラックボックステストを行うのだ。 ホワイトボックステストを最小限にするのに部品化のほかに 「インクリメンタル型の開発」がある。簡単に言えば一気に作り上げて 一気にテストをするのではなく、少しづつ作って少しづつテストをする のだ。そうすることで、ブラックボックステストとホワイトボックステストの 乖離を最小限にする。 以下の2つを実現したのち、ブラックボックステストが効果的になる。 1.ホワイトボックステストの規模を最小化する。 2.ホワイトボックステストとブラックボックステストの乖離を最少化する。 「問題の難しさ」を「問題の量」に転化したのだから、当然、 ブラックボックステストの件数がかなり多くなる。 これを、テスト自動化によりコストを減らしているわけだ。 まぁ、全部が完全にうまくいっているわけではないが、これ以外に 良い方法を俺は知らない。勉強不足かもしれないので、ヒントを 探しているところさ。
- 232 名前:仕様書無しさん mailto:sage [2008/07/06(日) 20:23:46 ]
- 一言で言えば、粒度を上げて問題の均質化を狙ったわけね。
でもそれって、改良やパフォーマンスチューニング等で崩れそうなもんだけど。 マルチスレッドに起因するバグ発生したら地獄だな。
- 233 名前:仕様書無しさん mailto:sage [2008/07/07(月) 03:22:05 ]
- テストを軽視するのは御役所もいっしょ。
特殊なケースと無理矢理な変数当てはめて机上ではうまくいく。 うまくいくから道路作れ。それ、レッツらゴーってなもんでしょ。 日本という体質そのものがテスト軽視の傾向があるんだよ。
- 234 名前:仕様書無しさん mailto:sage [2008/07/07(月) 05:35:05 ]
- >>231
机上の空論。 実戦経験をつめ。
- 235 名前:仕様書無しさん mailto:sage [2008/07/07(月) 08:11:18 ]
- おまいら一生懸命語ってるけどテストなんて
そんなに重視してないよ
- 236 名前:仕様書無しさん mailto:sage [2008/07/07(月) 08:26:33 ]
- でもテストって大事なんだぜ?
今の現場も結合テスト甘くみやがったせいで 客にブチ切れられて納期延ばし、 メンバーも増員毎日深夜まで再テストだ そう、つまり黒から一気に赤化
- 237 名前:仕様書無しさん mailto:sage [2008/07/07(月) 11:40:51 ]
- >>235
マ辞めちまえ。おまい迷惑。
- 238 名前:仕様書無しさん mailto:sage [2008/07/07(月) 11:45:04 ]
- >>237
俺が辞めたら客が困るんだぜ
- 239 名前:仕様書無しさん mailto:sage [2008/07/07(月) 11:47:57 ]
- >>238
そう思っているのはおまいだけw
- 240 名前:仕様書無しさん mailto:sage [2008/07/07(月) 12:01:08 ]
- >>239
言うと思ったw
- 241 名前:仕様書無しさん mailto:sage [2008/07/07(月) 12:30:29 ]
- わたしが死んでもわたしの代わり(にテストさせられる可哀想なヤツ)は居るもの
- 242 名前:仕様書無しさん mailto:sage [2008/07/07(月) 12:40:45 ]
- >>239
勘違いも甚だしいな。 お前が辞めた方が客は喜ぶぞ。 テストの不十分な商品渡されるよりよっぽど安心だろ。
- 243 名前:仕様書無しさん mailto:sage [2008/07/07(月) 12:43:34 ]
- レス先間違えてね?
|

|