08/06/30 20:39:08
テストチームがQTPでテストするとして、プログラマはどうやって単体テストしてるんだ?
101:80
08/06/30 20:40:20
>>98
プログラマーとテスターに別に壁はないので、テスターが管理している
QTPをプログラマーが使わせてもらうことも可能。テストコード自分で
書いてテスターによろしくーってのもあり。柔軟にやってる。
>>99
ユニットテストってどういうものを言ってるんだ?
xUnit?、単なる単体テスト、テストファーストの考え方?アジャイル?
102:仕様書無しさん
08/06/30 20:42:24
え?QTPってテストコード書くのか?
だったらなぜQTPはよくてUnitTestが悪いのか、わけわからん。
103:80
08/06/30 20:50:11
>>102
xUnitだとテスト用のコードを書くのに時間がかかるし、テスターには無理。
QTPのテストコードは、VBScriptでテスターでも書こうと思えばかける。
しかも、自動的にVBScriptのテストコードを生成する機能も付いている。
104:仕様書無しさん
08/06/30 20:53:54
え?テスターとプログラマに壁はないけどスキルの壁はあるのか?
どうでもいいけど、>>100の回答プリーズ。
105:仕様書無しさん
08/06/30 20:55:25
QTPだと時間がかからないのは、使いなれてるから。
どんなツールでも慣れれば時間がかからなくなる。
xUnitが時間がかかると思ってるのは、よく知らないか、慣れてないから。
106:99
08/06/30 20:59:06
>>101
ユニットテストとは、テストの種類。イコール単体テスト。
使うツールは何でもよいが、アドホックなものや繰り返し不可なものは駄目(俺的に)。
107:80
08/06/30 22:01:59
>>104
一般論を言うと、QTPは、システムテスト用のツールでそもそもユニット
テスト用ではない。が、うちでは、ユニットテストにも使ってる。
テストコードは、プログラマが書くが、テストはテスターがやっている。
テストコードは、テスト用データを入力できるようになっている。
テスト用データを用意するのはテスター。
・・・つーかうちの会社の特殊事情聞いてどうするんだ?一般的だとは
言ってないぞ。
108:80
08/06/30 22:04:42
>>106
システムテストはやらないのか?
たぶんやるだろ。
ユニットテストとシステムテストはどちらが大切だと思うんだ?
俺はシステムテストだと思っているんだが・・・。
ユニットテストだけでまさか出荷していないよな。
109:仕様書無しさん
08/06/30 22:18:22
>>12
鉄道動かすプログラムですが、客にバグ出しさせますね^^v
110:仕様書無しさん
08/06/30 22:37:47
テストできない仕様は作らない設計。
111:仕様書無しさん
08/06/30 23:13:53
テストはそこそこでいいよ
112:仕様書無しさん
08/06/30 23:26:02
>>107
>テストコードは、プログラマが書くが、テストはテスターがやっている。
なぁ、これテストのプロなのか?
>・・・つーかうちの会社の特殊事情聞いてどうするんだ?一般的だとは
>言ってないぞ。
一般論としてユニットテストを否定してるんだろ?だからどうやってるのか聞いてるんだけど。
>>108
>ユニットテストとシステムテストはどちらが大切だと思うんだ?
どっちも大事に決まってるじゃん。
従来のウォーターフォール的なテストのやり方だと工数が膨らむから、ユニットテストに
力を入れようぜって話だ。
つか、はっきり言って、お前がPMだとしたら、その下でできた1000万行のシステムなんか
受け入れたくないわ。
113:仕様書無しさん
08/07/01 00:24:29
あげてみるテスト
114:仕様書無しさん
08/07/01 00:35:37
>>107
> テストコードは、プログラマが書くが、テストはテスターがやっている。
テストコードをプログラマが書くだって?
テストの品質がばらつくからそりゃ駄目だって主張してるんじゃないのか?
>>80
> - 優秀な奴とそうでない奴の差が激しく、属人的でテストの品質がばらつく。
115:仕様書無しさん
08/07/01 01:27:50
プログラマが書くテストコードは、実際のソースコードの前提条件みたいなもんだよ
「テストの品質」っていうテストは受け入れテストみたいな顧客に近いレベルのテストだね
つまりテスターがやるテストはプログラマがやるテストとは別ってこと
116:仕様書無しさん
08/07/01 01:54:44
ブラックボックスとホワイトボックスの違い?
117:80
08/07/01 06:28:14
>>114
ユニットテストのテストコード -> テスター&プログラマー
システムテストのテストコード -> テスター
うちのテスターは、すべての仕様書や設計書を読む。
全てのテストは、テスターの監視下で行われる。
もちろん、プログラマーの書いたテストコードも監視下に置かれている。
ユニットテストよりもシステムテストに重きを置いている。
システムテストのカバレッジは100%必須。未達成ならリリースはない。
ユニットテストに関しては、残念ながらカバレッジ100%を待てない。
大抵のプログラマーは、時間切れに陥る。十分な時間を与えてもだ。
プログラマーは、余った時間があればコードを洗練させるがテストは
しない。プログラマーは、テストが嫌いな生き物だ。
118:80
08/07/01 06:40:46
>>115
同意。顧客はテストにも金を払っている。ユニットテストは、顧客にとって
のテストではない。プログラマーの失敗を補うものと思われるので
なかなか顧客には納得が得られない。単体テストとデバッグの違いを
明確に区別して作業しているプログラマーがどれだけいることか・・・。
テスターは、あくまでもシステムテストに主眼を置いている。
ただし、うちはテスターが開発初期からアサインされ、
要求把握、分析、設計、ユニットテスト・・・といろいろな工程を
監視している。
一般的には、ユニットテストは、テスターの仕事ではない。
しかし、ユニットテストが本当に重要だというのなら。
プロに監視してもらうのも一案だし、うちでは、効果があった。
119:仕様書無しさん
08/07/01 08:51:27
優秀なテスターは、外部テストだけでプログラムの構造、BUGの場所と実装具合が分かる。
120:仕様書無しさん
08/07/01 19:54:57
テストの経験を積ませてくれない90人は不幸だよな
121:80
08/07/01 23:47:14
>>119
同意。さらに言うなら、外部テスト(ブラックボックステスト)で
問題をちゃんと把握できるシステムは良いシステムだと思う。
「テスト可能なシステム」とうわけだ。
ユニットテストに主眼を置かなければ品質を保てないシステムは、どこか
おかしいと思うのだが・・・。
122:仕様書無しさん
08/07/01 23:59:12
良くわからんが、テスト駆動の
テスト→実装→レビュー→コミットしてデイリービルドへ
の「テスト」と、完成後の受け入れテストは違うモンだろ?
両方やるんじゃないのか普通。
うちは受け入れテスト(というか、納入前の自社内受け入れテスト)は、専門のテストチームがやってるが。
テスト駆動開発とそうじゃないので、バグ発生件数が如実に違ったから、社内でテスト駆動流行りだした。
123:仕様書無しさん
08/07/02 00:07:17
仕様が明確な場合は有効だと思うが...仕様がなぁ...ころころ変わるぐらい
ならまだしも、がらっと変わるときあるからなぁ。根底から。せっかく作った
テストもぱぁ。せっかくいい調子でやってたのに、モチベーションを木端微塵
にしてくれるよなぁ... あ、スレチスマソ
124:仕様書無しさん
08/07/02 00:30:44
80はユニットテストに主眼を置けと言われてると思ってるみたいだな。
ユニットテストを軽視するなっつーのが大半の意見だと思うけどな。
ユニットテストの自動化を意識してる所は、当然、機能テストもシステムテストも
受け入れテストも自動化を意識してると思う。ユニットテストやってるから、テスト
可能なシステムになってないとでも思ってるんかいな。
それと、機能テスト以外の話が出てこないが、本当のテストのプロは、機能テスト
以外に力を入れるもんだけどな。たとえばISO 9126に基づく品質保証をめざすとかな。
(蛇足だが、テストチームを外部委託すると、確かに数割はテストのプロがいるが、
残りは二重派遣とかが多いぞ。会社名は出さないが、TEF協賛の品質保証専門の
会社のいくつかはそうだ。全部と付き合いがあるわけじゃないから、全部がそうだとは
言わんが)
それから、はっきり言って、コード書けないテスターは「プロ」とは言いたくない。
テスト対象の言語特性も標準ライブラリの仕様も知らずに、効率の良いテストなんか
できるはずない。
プログラマは、本質的にはテストが好きだと俺は思うぞ。まぁこれは定量的な
評価ができないから水かけ論になるだろうが。
ユニットテストが重要なのは、それが設計という意味でのコードの品質を上げる手段に
なるからだ。自分でユニットテストをやらなくては、真の意味でのTestabilityを
考えられるようにはならないと思うぞ。詳しくは説明しないが、ユニットテストは
保守性を大きく向上させる手段になりうる。
80のプロジェクトでは、たまたまうまくいってるんだろうが、ユニットテストレベルのバグが
ぼろぼろ出るプロジェクトは、テスト技術者のモチベーションを著しく落としめて、
プログラマ対テスターという対立構造を生みやすい。
125:仕様書無しさん
08/07/02 00:35:08
長い
126:仕様書無しさん
08/07/02 00:38:17
すまねー。
でも言い足りん。
またどこかで。
127:125
08/07/02 00:39:30
いや、すまん。
俺以外の住人は待ってるのかも知れん。
続けてくれ。
128:>123
08/07/02 01:24:09
使えなくなった(使わなくなった)コードは"習作"と割り切って捨てるが吉
下手に利用しようとして傷口を広げるべからず
129:仕様書無しさん
08/07/02 03:03:17
>>117
> システムテストのカバレッジは100%必須。
そんなことをやっていたら時間がいくらあっても足りない。
たいていのテスターは時間切れに陥る。十分な時間を与えてもだ。
130:仕様書無しさん
08/07/02 03:08:56
> ユニットテストよりもシステムテストに重きを置いている。
> システムテストのカバレッジは100%必須。未達成ならリリースはない。
> ユニットテストに関しては、残念ながらカバレッジ100%を待てない。
これはどういうことを意味するか。
それは、システムテストのカバレッジが100%でも
ユニットテストのカバレッジは100%ではないということ。
つまり、バグがあったとしても、システムテストの
カバレッジが100%になるということを意味する。
これが最近巷でよく発生している「ごくまれな事例において発生する不具合」に
つながっている。つまりテスト不足。
そしてそのいいわけがこれ。
> ユニットテストに関しては、残念ながらカバレッジ100%を待てない。
> 大抵のプログラマーは、時間切れに陥る。十分な時間を与えてもだ。
言い換えると、時間が足りないからテストを省くという意味である。
131:仕様書無しさん
08/07/02 08:12:27
よくある現実
マ「すいません、これ以上仕様変更があると改修はともかく
テストが間に合いません」
上司「テストなんて現地ですればいいよ」
・・・
客「なんだこの不具合だらけのシステムは!こんなものをリリースするなんて
おたくはいったいry)」
132:仕様書無しさん
08/07/02 08:50:19
>>131
それで上司が
「俺は関係ない、部下の独断だ」
とか言ったら最悪だな。
133:仕様書無しさん
08/07/02 13:10:02
>>132
それに近いことは言うけどな
「すいません、開発担当のものたちがスケジュールの調整でうんぬん」
結局自分以外の誰かを悪人にしないとすまないらしい
134:80
08/07/02 21:26:47
>>124
「テストファースト」は賛成だが、「テスト駆動」は反対だ。
前者は、ソフトを作る時に先にテストを考えるというアプローチだ。
後者は、テストに基づいてプログラミングをするということなんだろう。
135:仕様書無しさん
08/07/02 21:35:17
>>134
テストに基づいたプログラミングが、イコール設計に基づいたプログラミングと読めないうちは素人だな。
136:仕様書無しさん
08/07/02 21:36:21
テスト=設計書という前提だがな。
137:80
08/07/02 21:42:14
>>135
プログラミング可能なテストということなんだろ。
コード化が可能なほど詳細に書かれているテストってどうやって記述
してあるんだ?
設計とテストがイコールということは、設計書のタイトルをテスト仕様書
に変更しても問題ないということか?
テストは、設計からすると客観的な別の存在であるべきではないのか?
138:仕様書無しさん
08/07/02 21:44:10
世の中には外部設計と内部設計とがあってだな(ry
139:80
08/07/02 21:53:46
>>138
外部設計と内部設計は、誤った用語で今は死語になっている。
設計に内部も外部もない。
作りたい対象の詳細が書かれているものが設計書。
外部と内部の区別はない。
140:80
08/07/02 22:16:44
>>130
>それは、システムテストのカバレッジが100%でも
>ユニットテストのカバレッジは100%ではないということ。
>つまり、バグがあったとしても、システムテストの
>カバレッジが100%になるということを意味する。
システムテストのカバレッジが100%=ユーザーに発見できるバグは0個と
言う定義なので、もしバグが見つかったらシステムテストのカバレッジ
が100%ではなかったということになる。
ユーザーがバグを発見できるということは、それは、システムテストで
テスターでも発見できるはずのバグと言える。
ユニットテストをちゃんとしておくとテスターは楽になる。
でもユーザーには関係がない。
141:仕様書無しさん
08/07/02 22:29:57
>>139
顧客に言えよw
142:124
08/07/02 23:27:10
うーんと、とても100人で1000万行のシステムを作ってる人の発言とは思えないんだよなぁ。
反論するのもアホらしいというか。
かまってちゃんの学生さんって気がしてきた。
143:仕様書無しさん
08/07/02 23:34:18
100人で1000万行が本当だとしても、多分>>80は、まともにコードが書けなくてVBScriptくらいでしか
テストが書けない10人いるテスターの下っ端だろ。
しかも、派遣テスターwww
144:仕様書無しさん
08/07/02 23:54:15
アナログ(エンドユーザ) と デジタル(プログラム)
の間をとりもつのがテスト。
それぞれ言い分や希望、得手不得手、好き嫌いが異なるのは
当り前。そこはお互いを尊重し譲歩すべきは譲歩し、テスト
という愛の証、いわば結婚指輪があってこそ両者は結ばれる。
テストのない結納(納品)は、すぐに破局を招くのが必定。
ワハハハハハハハッ なんのこっちゃ
145:仕様書無しさん
08/07/03 00:06:52
100人で1000万行のシステムで、外部設計も内部設計もない設計書しか作らないってどういうこった。
クライアントとレビューして承認してもらうというマイルストーンは無いのか?
仮にあったとして、実装仕様てんこ盛りの仕様書をレビューしてもらってるとかか?
それとも、実装仕様がほとんど書かれてない仕様書しか作らないのか?
それで、スキルがばらばらなプログラマ90人で、ちゃんとしたユニットテストも行われず、
どうやって品質を担保してんだよ。
その回答が、プロ10人によるシステムテスト?
146:仕様書無しさん
08/07/03 00:24:57
>>117
> システムテストのカバレッジは100%必須。未達成ならリリースはない。
>>140
> システムテストのカバレッジが100%=ユーザーに発見できるバグは0個と
> 言う定義なので、もしバグが見つかったらシステムテストのカバレッジ
> が100%ではなかったということになる。
カバレッジが100%に達成したことを証明できる人は誰もいないので、
リリースは永遠にないのですね。わかります。
147:仕様書無しさん
08/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:仕様書無しさん
08/07/03 00:55:48
うわ、間違ってた。
return d = a / b * 12.34;
じゃなくて、
return a / b * 12.34;
ね。下の奴も同じく。
149:仕様書無しさん
08/07/03 00:58:01
投下するレスのユニットテストも必要だな
150:仕様書無しさん
08/07/03 01:02:24
面目ない。。。。
151:仕様書無しさん
08/07/03 01:06:44
>>80のおかげでユニットテストの重要性を再認識できました。
ありがとう!!>>80
152:仕様書無しさん
08/07/03 20:39:02
>>149
俺たちがバグ出しするから問題ないよ
153:80
08/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:仕様書無しさん
08/07/04 00:03:14
>問題点3
>掛け算から先にする。
え?
155:仕様書無しさん
08/07/04 00:04:08
つかユニットテストコードは先に書け
156:仕様書無しさん
08/07/04 00:08:45
なんかとんでもないこと言い出したな・・・
調子に乗らずにちょっと前までのレスで終わりにしてれば締まってたのに
157:80
08/07/04 00:13:45
>>155
テストファーストの事だな。
>>154
よーく考えてみよう。
ちなみに掛け算から先にする理由は2つある。
158:仕様書無しさん
08/07/04 00:14:57
>>147
プログラミングを軽視する者ども
というスレ立てても良いですか?
159:仕様書無しさん
08/07/04 00:19:57
>>158
「マを侮るなかれ」
ってスレがいいと思います
160:仕様書無しさん
08/07/04 00:29:17
80さんよ
一応言っておくが>154は「かけ算から先」がコードの解説と勘違いしてると思われ
俺もそう勘違いしたけどね
問題点と書きながらいきなり修正案を書くのはアホだろ
161:80
08/07/04 00:37:43
>>160
なるほど。そこまで意識していなかった。
確かにその通りだ。
一応、掛け算を先にする理由を書いておく。
掛け算を先にするとたとえ引数がintでもキャストする必要がなくなる。
演算子は、暗黙のうちにオーバーロードされるからね。
あと、割り算してすごい小さな値になったらその時点で精度が
落ちてしまうから先に掛け算をする方が良いのだ。
分かっている人からすると「何をいまさら・・・。」だろうけど
念のためにね。
162:80
08/07/04 00:43:03
話はそれたけど、結局、プログラマーがユニットテストで解消される
バグは、プログラマーの能力に依存することは分かったと思う。
それでも、ユニットテストは必要だ。ただし、あまり依存しすぎては
いけない。
アジャイルとか、テストファーストとか言っているカリスマプログラマーの
意見は、「天才プログラマーだからこそできる芸当である。」という事を
念頭に置くべきだ。
ユニットテストで成果を出すための前提条件は「高度なプログラミング
能力に裏付けされた分析・設計能力を備えた人材が揃うこと。」
だと俺は思う。
163:仕様書無しさん
08/07/04 00:44:22
どっかの糞コテの文体に似てきたなあ・・・
164:仕様書無しさん
08/07/04 00:45:08
おれは3.5流PGだけど、
だからこそ
作ることよりちゃんと仕様を満たすことの確認こそに命をかける
もってっけー
165:仕様書無しさん
08/07/04 00:59:16
正常系なんて客にやらせる
異常系は自分でやる
これだけやりゃ十分
166:仕様書無しさん
08/07/04 02:24:20
>>162
>話はそれたけど、結局、プログラマーがユニットテストで解消される
>バグは、プログラマーの能力に依存することは分かったと思う。
そこが、まず間違えで、ユニットテストはバグを解消するモノではなくて、
外部仕様(入力・出力・副作用の具体例)そのもの。
今時、テストファーストではない開発は、「ゴールの決まっていないマラソン」
とおなじようにナンセンスだと思うけど、、、
>ユニットテストで成果を出すための前提条件は
>「高度なプログラミング能力に裏付けされた分析・設計能力を
>備えた人材が揃うこと。」
仕様を網羅するユニットテストを作れないということは、
設計できないということと同義。
ユニットテストを作れるくらい全然「高度な人材」ではないと思う。
# 最後はレビュアーの腕次第とはいえ、コード・カバレッジの自動計測
# など網羅性をはかるツールもいろいろ出てきているし、、、
167:仕様書無しさん
08/07/04 02:40:19
>話はそれたけど、結局、プログラマーがユニットテストで解消される
>バグは、プログラマーの能力に依存することは分かったと思う。
テストファーストという言葉があるように、
バグが発生する前から、テストを書くことができるわけなんだよな。
バグが発生する前というのは、コードをかくまえってこと。
ということは当然、コードを書く人ではなく、
仕様を書く人がテストを書いて、あとは実装者に任せるということも可能なわけだ。
だから仕様書を作る人が、テストコード書けばいいんじゃね?
プログラミングができない人が、設計をするのがどれだけナンセンスなことか。
168:仕様書無しさん
08/07/04 02:47:02
携帯電話なんて、発売後に顧客が実地テストさせられてるよなw
169:仕様書無しさん
08/07/04 02:49:50
あれは顧客じゃない
βテスター
170:仕様書無しさん
08/07/04 02:53:07
いや、あの製品とか、あの製品とか。あの製品とかの話だよ。
171:仕様書無しさん
08/07/04 02:54:15
金払ってまでβテスタに立候補するなんてステキ
172:仕様書無しさん
08/07/04 03:00:04
カネ貰ってもお断りしますってカンジだな
173:仕様書無しさん
08/07/04 05:16:42
>>80
>>145にコメントしろ、カス
174:仕様書無しさん
08/07/04 05:26:42
携帯なんて所詮おもちゃ。品質は一番あとまわし。
軍事・航空宇宙・医療機器・発電所とかだと品質が命。
80は何作ってるんだろうね?候補は大体想像つくけど。
175:仕様書無しさん
08/07/04 05:46:53
1000万行のうち、スケルトン・自動生成が700万行なので、UnitTest軽視なんですよ。
176:仕様書無しさん
08/07/04 07:23:13
80はユニットテストは属人性が高いと言っているが、なぜだかシステムテストは属人性が高くない
ような前提になっている。
ユニットテストが成功する前提条件として高度な能力を持ったプログラマが必要としておきながら、
なぜだかシステムテストさえやれば、テスタの能力は関係ないような記述になっている。
また、もっとも効率の良いテストケースを導き出せるのはホワイトボックスの視点を持ったプログラマ
であるにも関わらず、それを全く無視してる。
単体テストは必要であると言いながら、どのように実行しているかを曖昧にして具体的な説明を
避けている。
バグはできるだけ早く解決するのが、もっともコストが低いのは常識なのだが、システムテストまで
解決を遅延させても平気なのはなぜだろうか。
プログラマを育てる気はないのだろうか。全員派遣かSESなのか。
177:仕様書無しさん
08/07/04 20:44:02
> することは分かったと思う。
この辺りの言い回しが非常にうさんくさい
某アホコテっぽいし
178:仕様書無しさん
08/07/04 21:21:15
1000万行ってのが胡散臭いんだよな。
システムテスト件数30万件で、バグは3~6万件くらいか?
10人じゃさばけないよなぁ、コミュニケーションコスト的に。
ちなみに、Windows 2000は2900万行で、出荷前のバグ件数は数十万件だったらしいぞ。
80のシステムは多分業務系だろうから件数は甘めに見積もった。
179:仕様書無しさん
08/07/04 23:17:16
早めにバグを潰した方がトータルコストが安くなる
↓
プログラマはうれしい
↓
テスターもうれしい
↓
でも会社はぼったくるよ
↓
クライアントのためにならない
180:仕様書無しさん
08/07/05 01:38:16
> クライアントのためにならない
ここちょっと違くね?
時間を金で買うクライアントもいるよ
181:仕様書無しさん
08/07/05 08:05:40
トラブルシステムを経験してるクライアントは
品質面についての時間、工数をちゃんと理解してくれることが多いけど
「ハァ?品質?金払ってるんだから問題ない
システム入れんのは当然だろ?スケジュール見直し?
ふざけんな、こっちはお客様だぞ!」
というお客様は多い。
182:仕様書無しさん
08/07/05 11:57:14
同じ物作りでも、H/Wは徹底的にテストするんだよなぁ。
ちゃんとスケジュールを確保し、テスト項目をドキュメント化し、
何回も精査を重ね、それこそ、しつこいぐらいにテストする。
要件や性能の確認ははもちろん、耐久性、動作限界(温度、湿度、
etc..)、危険の可能性はないか、等々。
それにH/Wの場合は、テストだけでなくマニュアルもしっかりして
いる。人命に関わるケースも多いし、法令化されているから当然と
いえば当然なんだけど。
しかし、これほどの徹底したテストを実施しても、品質不良や車の
リコールなどたまにあるわけだけど。
S/W、特に受託型アプリケーション開発の場合は、何故かねぇ...
テストをやらないわけじゃないけど、個人の技量に依存しちゃって
る場合が多いよなぁ。
183:仕様書無しさん
08/07/05 16:05:21
>>162
お前のとこのプロジェクトはテストケースレビューしないのか?
低能一人じゃ無理でも、低能三人集まれば1.5倍の能力にはなる
184:仕様書無しさん
08/07/05 16:14:06
>>183
テストケースレビューって必要か?仕様書がこなれてないだけじゃね?
テストに落とせない仕様書は悪い仕様書。
「URLが開けなかったら、エラーを吐く」←悪い仕様書
「200~206番以外のステータスコードが返ってきたらエラーを吐く」←良い仕様書
良い仕様書は「おいおい、じゃあタイムアウトは別か?俺が担当すんのか?」みたいなツッコミに繋がる。
185:仕様書無しさん
08/07/05 16:15:12
>>183
低能一人増える毎に0.5倍なので0.75倍です。1.5倍になるんなら紛れもなく有能な方です。
ちなみに-倍になるのは無能です。
-倍は成果物が0もしくは、焼き直しの仕様が無い成果物しかつくれないって事ね。
低能は一応引き継ぎ出来る。無能は無駄な作業してから結局破棄して一からやり直すので-倍。
落ち目の会社で人が減っていくのは一番有能な連中が消えて低能や無能が増えるので作業効率が落ちる。
それはまだ言いのだが、上が人月取りたい為にさらに人を増やして作業効率を落とす事するので次に有能な連中が消える。
これのスパイラルが有能が一人もいなくなるまで続く。
(ちなみに、低能が有能に化けるので意外に長く続く 無能は低能にも有能にもならない)
いえ、そのスパイラルの最終段階に移行中なんで > 給料遅配。
186:仕様書無しさん
08/07/05 16:17:58
>>185
会社潰れるとgdgdになるから、今のうちに転職した方が良いよ
責任感から動くと、周りを巻き込んで崩壊するぜ
187:仕様書無しさん
08/07/05 17:48:19
>>184
良い仕様書から作り出すテストって
ほぼ全てがユニットテストで書けるんだよね。
ユニットテストが苦手だといわれていたGUIでさえ、
GUI操作の自動化により、かなりのことが可能になっている。
出来ないのは見た目のデザインぐらいじゃないかな。
(ここの背景はもっと明るい色でとか)
システムテスト? よくわからないな。
それはユニットテストで出来ないものなのかね?
188:仕様書無しさん
08/07/05 17:54:19
>>187
単なる名称とかやりかたの違いで、システムテストもユニットテストも同じ様なもんだよ。
いくつかのチームで作ってると、単体同士では良くても、全体としてパフォーマンスがでなかったりするから。
デザインのテストみたいな感性系は、テスターが大量にいるからなあ
189:仕様書無しさん
08/07/05 17:55:26
仕様書のテストはどうやるんだ
190:仕様書無しさん
08/07/05 18:17:43
>>189
その仕様書には、どんなことが書いてあるの?
そして、その書いてあることが正しいかどうかは
誰が判断できるの?
この二つの質問に答えることができれば、
おのずとどうやるかがわかると思う。
191:仕様書無しさん
08/07/05 18:32:10
ところで、仕様書の内容だけで、バグが無いソフトが作れるのかな?
理想としてはそうあるべきなのだろうが、仕様書を書く人に聞きたい。
本当に漏れの無い(全ての例外的な事象を考慮している)仕様書を書いていますか?
結局はプログラマがユニットテストという形で仕様書を書いていませんか?
こういう場合にはこうなるという仕様書がユニットテストの中にしか無いってことありませんか?
たぶんね。仕様書の内容を変更があるたびに短時間で
全て見直すことが出来ない限り漏れが無い仕様書を書くことは
出来ないと思うよ。
ユニットテストのように、OK/NGって表示されないのなら、間違っていてもいいもんね。
だから絶対仕様書のテストをサボるでしょ? 漏れの無い仕様書書かないでしょ?
だからプログラムコードではない自動的に何度も検証できない仕様書は、
あくまで参考資料のために作るのであって
ユニットテストを本当の仕様書&テストコードにするべきだよ。
時間は限られているからね。何万とある検証項目を何度もする時間は無いんだよ。
192:仕様書無しさん
08/07/05 18:34:03
ユニットテストを書く人をプログラマーと呼ぶか
テスターと呼ぶか設計者と呼ぶかはこの際問題じゃない。
ユニットテストを書く人が一番重要なのさ。
193:仕様書無しさん
08/07/05 18:50:33
シングルタスクのプロセスのテストはまぁ簡単。
だけど、これがマルチタスク、マルチユーザの環境になるととたんに
複雑になる。
排他のことやら、負荷の集中や、リソース不足やら、アクセス制御や
セキュリティー関連やら、想定されるケースが指数関数的に増える。
ファイルひとつアクセスするのにも、DBのトランザクション処理の場合
でも、いろんなケースを想定し、異常ケースでどう振舞うのが正しい
のか考えないといけない。そして普通、仕様書にはそこまで細かく書
いてなく、「このファイルのここをこの値で更新する」ぐらいしか書
いてない。ファイルが無かったらどうするのとか、オープンで失敗した
ら?とか、書き込みで失敗したら? とか。人によってそこを確認する人
もいるけど、だいたいエラーメッセージ出すとか、例外を投げるとか、
アボートさしちゃうとか、PG任せなケースも多いわけで、仕様書とプロ
グラムのギャップってどうしてもあるのよねぇ。ま俺から言わせれば設
計者の怠慢なんだけど、それをいちいち突っ込むのも、時間がなかった
り、面倒くさかったり、人間関係に気を使ったりとかいろいろあってで
きなかったりとか。はぁーとにかくめんどいよ、この業界。
自分でスケジューリングして、自分で設計して、自分でつくって、自分
でテストして、全部自分で責任持つのが一番楽だね。
194:仕様書無しさん
08/07/05 18:51:43
>>193
どこを盾読み?w
195:仕様書無しさん
08/07/05 19:02:30
>>194 14行目の31列目から2行分だ。
196:仕様書無しさん
08/07/05 21:48:53
仕様書のテストなんて恐ろしくて提案出来ないw
197:仕様書無しさん
08/07/05 23:57:14
テストデータをどのくらい作ればいいのか迷う。
198:仕様書無しさん
08/07/06 00:07:11
>>197
顧客が満足するくらい
199:80
08/07/06 00:09:16
>>166
外部仕様書に相当するものは、うちではインターフェース仕様書と
呼んでいる。
インターフェース仕様書は、その実現を記した「設計書」と区別される。
さらに、インターフェース仕様書の実現方法は複数あるので、
インターフェース仕様書1つに対して、複数の設計書が存在することもある。
外部仕様書と内部仕様書という言葉を使っているということは、
オブジェクト指向とか使ってないの?言語は何?
>>178
1000万行ってどうも行数が多いから嘘だと思われているようだな。
俺は逆に、少ないから馬鹿にされているかと思った。
でも、うちの業界では別に多い部類じゃないんだけどね。。。。
ちなみに、業務系じゃないよ。
200:80
08/07/06 00:15:21
>>198
良いことを言うな。
うちの顧客は、ユニットテストにまったく興味がない。
説明しても絶対に理解できないし、説明を聞く気持もない。
顧客に説明しなくてはいけない事は、要求(ユースケース)を正しく実
現出来ているかどうかである。
201:80
08/07/06 00:22:15
>>191
設計書にないコードを書くのは禁止されている。
設計書に間違いがあってもそのままコーディングされる。
設計書に不備があったら、設計者に戻され修正される。
そして、レビューが開催される。
責任関係があいまいになるような開発スタイルは、うちではありえない。
外資系なのでそのあたりはかなりドライ。
202:仕様書無しさん
08/07/06 00:33:54
っていうかどこのシステム。
銀行とか証券とか知っているけど、全システムあわせないとそれ位いかんぞ。
漏れのところは総計10万行で、×20で200万行。
1000万行ってどんな無能が作ってるんだ!?って意味合いでも疑わしい。
203:仕様書無しさん
08/07/06 00:41:55
多分、糞コード、糞仕様オンパレードの携帯の話じゃね?
204:166
08/07/06 01:49:39
>199,200,201
>良いことを言うな。
>うちの顧客は、ユニットテストにまったく興味がない。
>説明しても絶対に理解できないし、説明を聞く気持もない。
>
>顧客に説明しなくてはいけない事は、要求(ユースケース)を正しく実
>現出来ているかどうかである。
なんか、根本的に誤解していない?
誰もこのことに反対しているわけではないですよ。
そもそもシステム「製造」の目的が、
顧客の提示した仕様を満たすモノを作り
そのモノが顧客の提示した仕様を満たすことを証明すること。
であることには議論の余地はない。
で、その最終目的にアタックする足場として、
7合目あたりに強固なベースキャンプ(自動ユニットテスト)
が絶対に必要というのが、80さんの以外のほぼ全員が言っていること。
>設計書にないコードを書くのは禁止されている。
>設計書に間違いがあってもそのままコーディングされる。
>設計書に不備があったら、設計者に戻され修正される。
・・・
>責任関係があいまいになるような開発スタイルは、うちではありえない。
だから、設計にテスト仕様の洗い出しを含めろとあれほど・・・
なんか 191 さんの論旨が全く伝わっていないような希ガス。
>外資系なのでそのあたりはかなりドライ。
今日日むしろ外資系(特に米系、特に"I")はAgile一色。
205:166
08/07/06 02:10:28
>>199
>外部仕様書に相当するものは、うちではインターフェース仕様書と
>呼んでいる。
>インターフェース仕様書は、その実現を記した「設計書」と区別される。
>さらに、インターフェース仕様書の実現方法は複数あるので、
>インターフェース仕様書1つに対して、複数の設計書が存在することもある。
だから何?
テストケースは、インターフェース仕様の一部にすべきという
のが私の論旨なのだが・・・
なぜに、80さんのプロジェクトのドキュメント体型の話をなさる?
>外部仕様書と内部仕様書という言葉を使っているということは、
>オブジェクト指向とか使ってないの?言語は何?
オブジェクト指向だろうが何だろうが、
-プログラムには外部仕様と内部仕様とがある
--外部仕様はこのプログラムをどう使うかを定義するモノで、
入力・出力・副作用(+前提条件・例外)で表される
--内部仕様は外部仕様の実現手段
というのは変わらないと思けど、、、
何が言いたいのかよく分かりません。
206:80
08/07/06 08:03:32
>>202
銀行とか証券とかそういうのじゃないよ。って言うか全く違う。
207:80
08/07/06 08:25:39
>>205
ちゃんと整理しよう。
システムの内部=内部仕様書
システムの外部=外部仕様書
だろ。まぁ、一見とてもわかりやすいよな。
では質問
1.システム内部とシステム外部の境界は、どちらの仕様書に書くの?
2.開発するシステムに対しして内部と外部があるわな。
開発範囲=システムとした場合、外部とは、開発範囲の外側と言う
ことにならないか?
たぶん。
205 の頭の中を整理すると
-> 外部仕様書=インターフェース仕様書、ユースケース仕様書
内部仕様書=設計書
なんだと思う。
問題点1
システムの外部は、開発対象ではない。
問題店2
レイヤー、サブシステムに分割されているシステムの場合、
あるサブシステムの外部仕様は、上位のサブシステムの内部仕様書
になる(全く一緒ではないが)。つまり、外部と内部でわけると
仕様書に重複が生じる。
また、インターフェースは、レイヤーやサブシステムに縛られない。
つまり、単に外部仕様とすることはできない。
問題点3
インターフェースを誤解している。
インターフェースは、極めて外部に近い内部ということになる。
208:80
08/07/06 08:33:20
>>205
うちは、インターフェースに対するテストを重視している。これを
うちは、システムテスト(サブシステム)テストと呼んでいる。
システムの実現側つまり、ソースコードの隅積みまで
行うテスト(単体テスト、ユニットテスト)は、普通にやってる。
システムテストほど重要視していない。
>>205
の最大の矛盾は、外部仕様書に基づいてテストを単体テストとかユニットテスト
と呼んでいることだ。単体テストは、内部のテストじゃないのか?
外部仕様書が書かれていることがちゃんとできているか=システムテスト
内部仕様書に書かれていることがちゃんとできているか=ユニットテスト
だと思うが?だとすると、205は単体テストをやっていないことになるな。
209:仕様書無しさん
08/07/06 09:07:05
としたら、学術系か軍事系か宇宙・航空系か・・・。
まあ
166の言いたい単体・ユニットテストは
>システムのテスト手法の一つで、個々のモジュール(部品)のみを対象としたテスト。
>対象のモジュールが仕様書で要求された機能や性能を満たしているかどうかをテストする。
>複数のモジュールを組み合わせて行なうテストは結合テスト、システム全体を対象に行なうテストはシステムテストという。
80の言いたいのは単体・ユニットテストは
>単体テストとは、プログラムを検証する作業の中でも、プログラムを手続きや関数といった個々の機能ごとに分割し、
>そのそれぞれについて動作検証を行う手法のことである。
大体こんな感じだろ、粒度の問題でその辺変わるので双方間違ってないように見えるけどな。
双方ともシステムやサブシステム”未満”のテストを言っているが、粒度によっては、外部インターフェースとのやり取り
をするレベルだと外部仕様書レベル元に単体・ユニットテストやったりするわけだし。
210:80
08/07/06 09:27:55
仕様書・・・システムが、ユーザー(人、外部システム)に提供する利益
が記されている。
設計書・・・システムが、仕様をどのように実現するかが記されている
仕様書に基づいたテスト・・・システムテスト
設計書に基づいたテスト・・・ユニットテスト
仕様書や設計書はシステム、サブシステム、コンポーネントといった
開発対象それぞれに対して作成される。
○○システム仕様書、○○システム設計書という具合
で、インターフェース仕様書は、インターフェースのことだけ書いた
仕様書。
仕様書と設計書だと、仕様書の方が重要。
人と人とのコミュニケーションやレビューの対象は、おもに仕様書。
設計書は、開発スタイルによるが、自分で設計書書いてプログラミングする
場合は、事細かに書かずに、ユニットテスト(xUnit)で代用することもできる。
ユニットテストはもろ刃の剣で、プログラマーのレベルが高い事が前提だ。
それに、テストコードを書くのはコスト高だ。
これを解決するのに何年か前から試行錯誤を繰り返している。
その解決方法のひとつが、xUnit以外の専用のテストツールを使ったテスト
と第三者によるユニットテストだ。
211:80
08/07/06 09:31:50
>>209
粒度は、開発範囲(スコープ)と詳細度(レベル)の2次元で定義すると。
今回のケースをとらえやすくなる。
今、ごちゃごちゃになっているのは、スコープを無視して話をしているからだ
。外部と内部という簡単な方法で開発対象を規定しようとしているところに
無理があると思ったから、粒度(スコープとレベル)を物差しに加えてみた。
212:80
08/07/06 10:17:18
>>166 の言ってるユニットテストは、
スコープ=小さなシステム(サブシステム、コンポーネント、ライブラリ)
のシステムテスト(外部から見たふるまいのテスト)だと思う。
213:80
08/07/06 10:18:37
>>209
の言うとおり、粒度に惑わされるが、どんなにスコープが小さくとも
仕様書に基づいたテストは、全部、システムテストだ。
つまり、システムテストは、システム(サブシステム、コンポーネント)の
境界をテストすることだと言える。
システムをサブシステムやコンポーネントに分割すれば、
システムテストの件数が増大する。分割しなければ、ユニットテストの
件数が増大する。
分割していないという事は、システムの詳細を仕様化していない
ことになりテスト工数が増大する。
よーは、システムを適度に分割して、分割した境界についてテストを行う
ことが重要で、単純にユニットテストを強化しても不具合は減らないと
言いたいのだ。
まぁ、よくよく聞けば。同じ事を言っているみたいなので安心した。
要点は、
・テストファースト
→仕様をテスト可能かどうか検証してから設計する。
・粒度が高い場合
システムを分割して、分割したサブシステムを仕様化する。
そして、その際にテストファーストを実施する。
・粒度が低い場合
一人で切り盛りできるレベルになったら、プログラマーに任せる。
あと、俺のミスだが、
ユニットテストをテスターが行うというのは、厳密には、
「粒度の小さいシステムテストもテスターが行う。」だ。
粒度の小さいシステムテスト=ユニットテストと混同してたな。
214:仕様書無しさん
08/07/06 12:44:42
お前はまず開発工程の定義から勉強して出直して来い
215:仕様書無しさん
08/07/06 13:20:18
>>214
ウォーターフォールに慣れすぎた古き人々よ
落として焼かねば変わらんのか?
216:仕様書無しさん
08/07/06 13:52:45
要求仕様を満たしているかをテストするって考えがまるっきり無いんだな。
自社製品ならまだ知らず、顧客から注文された製品なら、重要な事なのに。
217:仕様書無しさん
08/07/06 16:18:27
> 仕様書に基づいたテストは、全部、システムテストだ。
なら、ユニットテストは全部システムテストってことになるな。
218:仕様書無しさん
08/07/06 16:23:08
ユニットテスト以外で、
どうやってシステムテストをやっているのだろうか?
いや、果たしてやれるのだろうか?
219:仕様書無しさん
08/07/06 16:23:56
> ユニットテストはもろ刃の剣で、プログラマーのレベルが高い事が前提だ。
その点、システムテストは、レベルが低くてもやることができる。と?
220:仕様書無しさん
08/07/06 16:24:48
> これを解決するのに何年か前から試行錯誤を繰り返している。
> その解決方法のひとつが、xUnit以外の専用のテストツールを使ったテスト
> と第三者によるユニットテストだ。
残念ながらユニットテストをやることは必須。
システムテストでは、ユニットテストの代用にはならない。
なぜなら、システムテストは適当なテストだから。
221:仕様書無しさん
08/07/06 16:26:58
「適当なテスト」の意味は、レベルが低いやつでもできるテストであり
バグがないことを保障していない。
値を入れて、それらしい値がでてくれば、それでオッケー的なもの。
例外的なことを考慮していない。異常な値を入れたときどうなるかは
一切考えていない。
222:仕様書無しさん
08/07/06 16:28:48
システムテストでどんな内容をテストしているかを
具体的にいってくれれば、それがユニットテストでやれるってことを
証明できるのになぁw
223:仕様書無しさん
08/07/06 16:42:03
>>222
そりゃないんじゃないか?
名前が違うのかも知れないけど、うちのシステムテストって
・チームAが作ったデータベース周り
・チームBが作った入出力周り
・チームCが作った夜間バッチ周り
を、一斉に動かしてどこがボトルネックになってるか調べるテストだけども。
(データベースと入出力のAPIとか応答速度は決めて、その速度出るのはテスト済み)
224:仕様書無しさん
08/07/06 16:59:40
システムテストとユニットテストはやることの対象が違うんだから、
システムテストをいくらしたところで
ユニットテストの工数は減らないよ。
そもそも減らしてはいけない。減らす = サボるってことだから。
システムテストはユニットテストの代わりにはならない。
システムテストをさぼることで、無駄なユニットテストをやらされたとしたら、
それはユニットテストが問題なのではなく、システムテストやったやつがヘボで、
そのとばっちりを食らっただけの話。
225:仕様書無しさん
08/07/06 17:04:33
>>223
ボトルネックになっているとわかった後どうする?
修正するよね?
そのときユニットテストがあれば、
不具合を入れることなくパフォーマンスのみを
あげることができたって自信が持てるよね?
ほらどうだい。ユニットテストってすばらしいだろう?
それにボトルネックになっているのを見極めるために、
同じ条件で同じ操作を何度も繰り返すものだ。
どうだい。ユニットテストで自動化されていればそれも可能だろう?
226:仕様書無しさん
08/07/06 17:06:18
>>225
だからよ。ユニットテストはやってるって書いてるだろう?
>(データベースと入出力のAPIとか応答速度は決めて、その速度出るのはテスト済み)
>システムテストでどんな内容をテストしているかを
>具体的にいってくれれば、それがユニットテストでやれるってことを
>証明できるのになぁw
↑は、おかしいだろ。
ユニットテストで出来ることと、システムテストでできることは別じゃね?
227:80
08/07/06 17:20:08
>>217
そもそも、ユニットテストという言葉が微妙なんだ。
>>219
システムテストは複数のテスターによって実行できる。
テスターは単価が安い。
228:80
08/07/06 17:26:31
>>225
の言っているユニットテストはなんなの?
「テスト用のプログラムと結合して自動的にテストを行う」事か?
229:80
08/07/06 18:10:30
>>225
>システムテストでどんな内容をテストしているかを
>具体的にいってくれれば、それがユニットテストでやれるってことを
>証明できるのになぁw
もし証明できるなら、逆も証明することになる。
システムテストとユニットテストは等価変換できるという、
相当、大それたことを言っていることに気づこう。
230:仕様書無しさん
08/07/06 18:47:53
80は色々いっているけどプログラムの動作レベルに関して言及していない、
テストは概ねブラックボックスに関して述べている。
よりはっきりいえば、詳細なホワイトボックステストをテスターがやるのは意味が無いといっているとも思われる。
設計がパーペキなら問題ないし(バグはプログラマーの問題)
設計にバグがあるなら差し戻ししてそこからグラマーが直せばよいとの事。
設計通りにすればとりあえずうまくいうと言う考え。
ホワイトボックスのテストはテストツールでやるとかともいっているねー。
それだけの話。
231:80
08/07/06 19:01:54
>>230
残念ながら全然違う。
俺が言ってるのは、ホワイトボックステストを最小限にするという戦略。
部品化を進めて、各部品の仕様書を書く。仕様書に基づいて各部品の
ブラックボックステストを行うのだ。
ホワイトボックステストを最小限にするのに部品化のほかに
「インクリメンタル型の開発」がある。簡単に言えば一気に作り上げて
一気にテストをするのではなく、少しづつ作って少しづつテストをする
のだ。そうすることで、ブラックボックステストとホワイトボックステストの
乖離を最小限にする。
以下の2つを実現したのち、ブラックボックステストが効果的になる。
1.ホワイトボックステストの規模を最小化する。
2.ホワイトボックステストとブラックボックステストの乖離を最少化する。
「問題の難しさ」を「問題の量」に転化したのだから、当然、
ブラックボックステストの件数がかなり多くなる。
これを、テスト自動化によりコストを減らしているわけだ。
まぁ、全部が完全にうまくいっているわけではないが、これ以外に
良い方法を俺は知らない。勉強不足かもしれないので、ヒントを
探しているところさ。
232:仕様書無しさん
08/07/06 20:23:46
一言で言えば、粒度を上げて問題の均質化を狙ったわけね。
でもそれって、改良やパフォーマンスチューニング等で崩れそうなもんだけど。
マルチスレッドに起因するバグ発生したら地獄だな。
233:仕様書無しさん
08/07/07 03:22:05
テストを軽視するのは御役所もいっしょ。
特殊なケースと無理矢理な変数当てはめて机上ではうまくいく。
うまくいくから道路作れ。それ、レッツらゴーってなもんでしょ。
日本という体質そのものがテスト軽視の傾向があるんだよ。
234:仕様書無しさん
08/07/07 05:35:05
>>231
机上の空論。
実戦経験をつめ。
235:仕様書無しさん
08/07/07 08:11:18
おまいら一生懸命語ってるけどテストなんて
そんなに重視してないよ
236:仕様書無しさん
08/07/07 08:26:33
でもテストって大事なんだぜ?
今の現場も結合テスト甘くみやがったせいで
客にブチ切れられて納期延ばし、
メンバーも増員毎日深夜まで再テストだ
そう、つまり黒から一気に赤化
237:仕様書無しさん
08/07/07 11:40:51
>>235
マ辞めちまえ。おまい迷惑。
238:仕様書無しさん
08/07/07 11:45:04
>>237
俺が辞めたら客が困るんだぜ
239:仕様書無しさん
08/07/07 11:47:57
>>238
そう思っているのはおまいだけw
240:仕様書無しさん
08/07/07 12:01:08
>>239
言うと思ったw
241:仕様書無しさん
08/07/07 12:30:29
わたしが死んでもわたしの代わり(にテストさせられる可哀想なヤツ)は居るもの
242:仕様書無しさん
08/07/07 12:40:45
>>239
勘違いも甚だしいな。
お前が辞めた方が客は喜ぶぞ。
テストの不十分な商品渡されるよりよっぽど安心だろ。
243:仕様書無しさん
08/07/07 12:43:34
レス先間違えてね?
244:仕様書無しさん
08/07/07 12:55:08
専ブラの番号ズレたんじゃね?
245:仕様書無しさん
08/07/07 16:29:11
>>241
そんな(おれらに被害が及ぶような)こと言うなよ
246:仕様書無しさん
08/07/07 16:34:17
>>245
だって(めんどくさいんだもの)仕方ないじゃない
247:仕様書無しさん
08/07/07 19:53:15
>>210
> 仕様書・・・システムが、ユーザー(人、外部システム)に提供する利益
> が記されている。
世間では、その部分を要件定義書と外部設計書にわけてるんだよ。
例えばユーザインターフェース仕様。これはクライアントが要件として出す場合もあるが
それはまれで、普通はシステムを作る方が設計する。
> 仕様書に基づいたテスト・・・システムテスト
> 設計書に基づいたテスト・・・ユニットテスト
なるほど、「俺定義」で今まで話してたのはわかった。
> 仕様書や設計書はシステム、サブシステム、コンポーネントといった
> 開発対象それぞれに対して作成される。
サブシステム分割や、何をコンポーネント化するかというのは、内部設計と普通は言う。
なので顧客レビューはせず、80定義で言う所の仕様書は書かない。
> ユニットテストはもろ刃の剣で、プログラマーのレベルが高い事が前提だ。
> それに、テストコードを書くのはコスト高だ。
ユニットテストのケースレビューやコードレビューをするという概念は全くないの?
顧客はユニットテストにはお金を出さないというようなことを繰り返し言ってるが、
まったくそんなことない。顧客は品質にもお金を払ってる。
ユニットテストでバグを潰そうが、システムテストでバグを潰そうが、顧客が知ったこっちゃ
ないのは同意する。
248:仕様書無しさん
08/07/07 20:02:58
(続き)
「効率の悪いユニットテスト」や「品質の低いユニットテスト」は確かに否定されるべきだが、
だからと言って、ユニットテストが否定されるものではない。
バグは潰すのが早ければ早いほど、その修正コストは低くなる。これには80も同意してくれる
ものと思う。
「効率の悪いユニットテスト」や「品質の低いユニットテスト」が、開発コストを押し上げている
のであれば、「効率の良いユニットテスト」「品質の高いユニットテスト」に出来ないかを考えるのが
まず第一だ。なぜなら、バグは潰すのが早ければ早いほど修正コストが低いからだ。
修正コストが低ければ、開発コスト全体も低くなり、それが顧客のメリットになる。
ユニットテストをほとんどやらずに、第三者によるシステムテストに力を入れるという方法論も
あるだろう。
俺自身は、この方法論を全く支持しないが、スキルの低いプログラマが多数いるチームであれば
そのような方法論を取った方が、全体のコストが下がるのかもしれない。
しかし、方法論として提示するのであれば、システムテスト重視の方が品質が高くなる理由(根拠)と
ある程度のメトリクスを提示しなければ、第三者を納得させることはできないと思う。
249:仕様書無しさん
08/07/07 20:18:40
サブシステムやコンポーネントやレイヤーを合わせてテストするのは、普通、結合テストと言います。
250:仕様書無しさん
08/07/07 20:28:37
(少し追加)
>>231
> これを、テスト自動化によりコストを減らしているわけだ。
今のところ、80の発言から読み取れる「削減できているもの」は、このシステムテスト
(ブラックボックステスト)実行コストのみだ。
本気でテストの自動化をやってるところは、自動化されたテストの実行コストなど、
テスト全体のコストにほとんど影響を与えないことを知っている。
つまり、本当に自動化されているなら、実行するPCの台数を増やし、夜間に動作
させればよいのである。
問題は、自動化にかかるコストと、第三者検証の場合は、テスタ-プログラマ間の
コミュニケーションコスト、プログラマチームからテスタチームへ引き渡すリソース管理、
出荷判定(100%バグを修正できない場合の判定という意味での)などのコストをどう
減らすかなんだよ。
251:仕様書無しさん
08/07/07 20:31:23
(書き忘れ)
テストのコストを引き上げる要因をひとつ忘れていた。
自動化テストの場合、それが正しいテストかどうかのチェックに非常に時間を取られる。
事前条件は正しいのか、テストの内容は正しいのか、事後条件は正しいのか、(自動)確認は
正しく行えているかなど。
252:仕様書無しさん
08/07/07 20:43:11
・PGが作ったものが「作ったとおりに」動く事(あるパス通したら落ちる、ボタンはあるけど反応がない、など)
単体としてはまともに動く事を確認するのが単体テスト
・1PGから複数PG、はては複数チームが作ったものが、ちゃんと連動すること
お客様にうたった仕様どおりの動作をしている事を確認するのが結合テスト
・(結合との位置づけがあいまいなんだけど)
お客様レベルでの操作をしてもらって、「うん、ちゃんと動いてますね」
って確認を本番環境、現地レベルで取るのがシステムテスト、そして最終的な運用テスト
とか位置づけちゃってたわ、ワタシ
>>248の言うように、単体レベルでの不備はテスト初期(というか開発途中)のレベルで
とっておいた方がいいと思う、コストというより、後の方のテストはざるの目が粗いから
思わぬ不具合(ある異常系パスを通るとシステム全体がダウンしてしまう、など)を
見逃してしまう可能性が高い(下位のレベルの不具合は上位のテストからはブラックボックスなので)
253:仕様書無しさん
08/07/07 21:08:02
最後のは、普通、受け入れテストと言いますね。
254:仕様書無しさん
08/07/07 21:17:01
>>253
thx
255:仕様書無しさん
08/07/07 21:58:28
テストが億劫になるスレだなぁ
256:仕様書無しさん
08/07/07 23:25:27
「システムテスト」が設計(design)ではなく、仕様(specification)に基づくものだという80の意見には同意する。
80が言う方法論には同意しないが。
依然として機能テスト以外のテストに関する話が出てこないが、よくまとまっているページを見つけたので
紹介しておく。
URLリンク(en.wikipedia.org)
システムテストでは、機能的に要件とマッチしていることを保証するとともに、上記ページにあるようなテストを
行うのが一般的だと思う。
まぁ普通は機能外要件を要件定義書に書けるチームはほとんど無いと思うが、「システムテスト」工程で
行うもんなんだよね。
また、いわゆる「内部設計」以外を「仕様書」におこして、それをクライアントレビューにかけるというのは、
双方にとって負担が大きいと思うね。工事進行基準が始まれば、「要件定義書」の範囲も、業界的に合意が
形成されていくのかもしれないね。
257:仕様書無しさん
08/07/08 00:11:34
>>256
wikiを良く纏まったページって紹介するのはなんだと思う。
80の言っている事だけど
一つの方法論だけど・・・、
>「問題の難しさ」を「問題の量」に転化したのだから、当然、
>ブラックボックステストの件数がかなり多くなる。
>これを、テスト自動化によりコストを減らしているわけだ。
テスト項目表作成も自動化しないとコストかかるね。
正確には「正しい」テスト項目表の作成。
ぶっちゃけ、テストにコストがかかるのではなくて、
テスト項目の洗い出しにコストがかかり、
さらにその妥当性をだすのにコストがかかる。
半年後のユーザの意見を聞きたいな、ボトルネックが山に
様にできてそうだ。
(まあ、最近のPCは出来が良いので問題おこんないって前提だろうけど)
258:80
08/07/08 01:01:27
>>256
■機能要件
機能要件は、インクリメンタル型で開発している。仕様書に基づいて
要求が満たされているかをチェックするのに重点が置かれる。
■フレームワーク
非機能要件は、フレームワークに含まれるのがほとんどで、イテレーティブ
型で開発をしている。
実際には、リファクタリングをしまくるわけだ。つまり、外的な
ふるまいだけをテストして、内部はガンガン変えていくのだ。
なので、単体テストは軽視され回帰テストが重要視される傾向がある。
■再利用可能なコンポーネント
レイヤーの低い位置にいる、再利用可能なコンポーネントは、
不具合が全体に波及するので、ユニットテストからコツコツ積み上げる。
ユニットテストは低レベルのコンポーネント(ライブラリ)開発で役に立つ。
259:80
08/07/08 01:09:01
>>256
>また、いわゆる「内部設計」以外を「仕様書」におこして、それを
>クライアントレビューにかけるというのは、 双方にとって負担が
>大きいと思うね。工事進行基準が始まれば、「要件定義書」の範囲も、
>業界的に合意が形成されていくのかもしれないね。
開発プロジェクト内で閉じるレビューがほとんど。レビューは、一種の
テストだから軽視してはいけない。それに、ドキュメント
に関しては、CMMとかISOとかやってるので結局書かなくてはいけない。
260:仕様書無しさん
08/07/08 01:58:40
80は一体誰と闘い、何が目的なんだ
261:仕様書無しさん
08/07/08 02:10:45
>>259
>>210の内容と、思いっきり矛盾してるのに気がつかないのか?
262:仕様書無しさん
08/07/08 02:22:06
80をやり込めても、誰も何も得しないよ。逆もまた真なり。
263:仕様書無しさん
08/07/08 03:28:11
つまり、80にやり込められても、誰も何も得しないw
264:仕様書無しさん
08/07/08 08:41:06
>>257
システム/ネットワークのパフォーマンス的なボトルネックは生まれにくくなってきてるけど
利用するライブラリ/パッケージ自体は未だに流行に合わせどんどん入れ替わり立ち替わりな
うちのPrjでは、半年以内に「原因不明系」のトラブルが多発してるよ。
ImageGear許すマジ
265:仕様書無しさん
08/07/08 08:43:02
>>260、これな
_,====ミミミヽ、
,,==≡ミヽミヾミミミ、ヾ、
_=≡≡三ミミミ ミミヾ、ソ)),,》 .
彡彡二二三≡ミ-_ ミミ|ノノj )||ヽ, )、
__,,,,,,,,,/彡二二二 ,- __ミ|/ノ ノノノノ) ||
-=二ミミミミ----==--'彡 ∠ミミ_ソノノノノ ノ
//>=''"二二=-'"_/ ノ''''')λ彡/
,,/ ̄''l 彡/-'''"" ̄-=彡彡/ ,,-''",,,,,,,ノ .彡''"
(, ,--( 彡 ,,-- ===彡彡彡"_,-_ ヽ Υ
ヾ-( r'''''\ //=二二''''''彡ソ ̄ ∠__\ .\ソ .|
\;;;; \ Ζ彡≡彡-'''',r-、> l_"t。ミ\ノ,,r-v / ̄ ̄ ̄ ̄ ̄ ̄
\;;;; \ 彡""彡彡-//ヽ" ''''''"" ̄'''""(エア/ /
\;; \'''''')彡ヽ// | (tv /| , r_>'| <一体みんな誰と戦っているんだ
\;;; \'" \ ,,"''-,,ノ,r-", / r'''-, .j \
\;;; \ /,,>--'''二"''' r-| 二'" / __ \______
\;;r'""彡_l:::::::::::::::::::::: /./_ " / ̄ ̄"===-,
)''//rl_--::::::::::::::::/:/ヽ"'=--":
266:仕様書無しさん
08/07/09 00:48:04
作業指示出してる人が「テスト嫌い。あんなもん無駄だしやってると苛々してくんだよね。」とか言っててこっちが苛々ですよ。
267:仕様書無しさん
08/07/09 01:13:20
結局結論としては80の言ってるシステムテストと他の人の考えるシステムテストの定義が違ったってことでいい?
俺的には80が言ってるシステムテストは単体テストレベル。
一般的にテストはUT、IT、STという順番でやっていくはず。
だからSTの観点はITより上のレベル。分割したモジュールをテストしてシステムテストとか、一般的じゃない。
268:仕様書無しさん
08/07/09 01:16:38
>>267
同じ同じ。
UTってMTと一緒なのかな?
269:仕様書無しさん
08/07/09 01:40:34
80は業務系じゃないらしいから考え方が違うんだと思う。
UT:作ったものが仕様書どおりだよねってことをIF含めて確認するテスト。
⇒コードのチェック
IT:それぞれが作ったものをつなげても動くよね?ってことを確認するテスト。
⇒仕様書の整合性のチェック
ST:とりあえず動くもの作ったけど、そもそもこんなんでよかったんだっけ?ってのを確認するテスト。
⇒要件を満たしてることのチェック。
受け入れテスト:STまでやってるけど、レビューとか適当な客もいるので後で文句を言わせないために
実際に動かしてもらって、確かに要件満たしてますよね?って確認するテスト。
⇒保険。
270:仕様書無しさん
08/07/09 06:36:32
MT?
271:仕様書無しさん
08/07/09 07:00:15
いやいやいや、
>「問題の難しさ」を「問題の量」に転化したのだから
なんの証明も根拠もなしに、転化できましたなどと無邪気に主張されてもとても納得できない。
80の中で完結しているロジックが存在するとすれば、それはまだこの場では語られていない。
語ったつもりになっているとすれば、それは表現能力に問題があると言わざるを得ない。
272:仕様書無しさん
08/07/09 19:17:24
80来ないとつまんないね
273:仕様書無しさん
08/07/09 22:41:42
そもそも、UTとかMTとか、
必ずしも企業間で、示す実作業の統一が取れているとは言い切れない、
曖昧模糊とした略語で話を進めようとするのが問題ではないか?
274:仕様書無しさん
08/07/09 23:10:36
実作業としては統一されてないだろうけど、UTの概念は統一されてるだろ。知らない奴は論外。
MTは知らんw
275:仕様書無しさん
08/07/10 02:47:55
あとはPGはあると思う(w。
UTとかPTとかは辺りも曖昧だし、当然それ以上はも場所によって違うだろうし。
276:仕様書無しさん
08/07/10 03:12:38
世の中にはテスト技術者資格認定とかいう資格があってだな、そこで公開されている
シラバスとか標準用語集位の事を知っておいてもらえるとありがたいなぁと思ったり
するわけですよ。
80みたいに自分理論で色々言われてもねぇ。
URLリンク(www.jstqb.jp)
277:仕様書無しさん
08/07/10 23:31:11
あら…
一つのモジュールがちゃんと動くかどうか…みたいなテストを
モジュールテストとかMTとか呼んでるんだけど一般的じゃないのかw
テストの種類は基本情報の勉強で覚えたくらいだな。
ユニットテストとか現場でのレベル感で縛られるな。
278:80
08/07/11 00:05:27
>>267
> 結局結論としては80の言ってるシステムテストと他の人の考えるシステムテストの定義が違ったってことでいい?
よいです。
> 一般的にテストはUT、IT、STという順番でやっていくはず。
> だからSTの観点はITより上のレベル。分割したモジュールを
> テストしてシステムテストとか、一般的じゃない。
UT, IT, STという3段階が一般的なのは理解している。
ただし、うちでは、これでは、うまくテストを定義できなかった。
質問1
巨大なシステムでも小さなシステムでも等しく
この3段階でテストを進めるので良いと考えているのか?
俺が聞きたいのは、一般論ではない。過去の経験から判断してほしい。
質問2
小規模の場合、UT->IT->STとするなら大規模だとどうなる?
1. UT->UT->UT->UT->UT->UT->UT->UT->UT->IT->ST
2. UT->IT->IT->IT->IT->IT->IT->IT->IT->IT->ST
3. UT->IT->ST->ST->ST->ST->ST->ST->ST->ST->ST
4. UT->IT->ST->IT->ST->IT->ST->IT->ST->IT->ST
5. UT->IT->ST->UT->IT->ST->UT->IT->ST->UT->IT
6. そのた。
279:仕様書無しさん
08/07/11 00:14:23
>>278
1.同じでないと困る。
2.テスト結果による。
全体的にはどんなプロジェクトも同じ工程じゃないと困るが、
そのテスト工程で発覚する不具合の深刻度と混入工程によって、
それぞれ小さな部分テストの反復があるんだよ。
修正する度に、部分的にUT→IT→が間に幾つも入るのさ。
280:仕様書無しさん
08/07/11 00:15:46
場合によっちゃSTまでを反復で何度も行う事だってあるしな。
281:80
08/07/11 00:23:30
つまり、仕様や性能を満たせているかを確認するテスト(ST)が
ずいぶん後回しになるやり方を皆は支持しているわけだ。
そもそも、仕様書は、システム全体に対してのみ書かれるのか?
282:仕様書無しさん
08/07/11 00:29:52
>>281
皆っておい、俺一人しか答えてねえよwww
279も280も俺、俺俺www
283:仕様書無しさん
08/07/11 00:31:51
>>282
いや、オレオレwww
284:仕様書無しさん
08/07/11 00:34:56
>>278
工程として考えたいのか、テスト手順と考えたいのかがよくわからない。
工程なら大規模小規模かかわらずUT>IT>STとなるべきだが、
実際に行われてるテストはいくらでも入り組むだろう。
バグ対応入った時とか。
もし工程として(もしくは工程に近いレベルで)
質問2みたいな手順になっているなら
>>78の言うとおり、機能単位で分けるべき。
すごく今更なんだが、>>80の
> 分割すると管理コストが増えるし組織が複雑になる。
> そして、意思疎通が難しくなる。
> 問題が形を変えるだけで何も解決したことにはならない。
なんというか…オブジェクト指向じゃない感じみたいな…
モジュール一つで表示から処理から遷移から何から何までって感じがする…
285:仕様書無しさん
08/07/11 00:40:03
>>80の言っている>>258には同意できる。
■機能要件
開発スタイルにもよるんだろうけどうちの顧客はころころ機能要件を
修正してくるから、機能にマッピングされるモジュール内の関数構成や
実装はそのたびに修正される。
=> ホワイトボックステストはコスト的に合わないので、モジュールの
入出力に相当するAPIだけをブラックボックステスト。
■再利用可能なコンポーネント
タスク・タスク間通信・メモリ管理周りといった部分がそれに含まれる?
不具合が全体に波及するのは勿論だし、そういったモジュールは
関数構成や実装が大きく変わることは無い。
=> ユニットテストで関数ごとにホワイトボックステスト。
コスト的に許されるんなら、全てにホワイトボックステストを用意するに
越した事は無いんだけど。
286:仕様書無しさん
08/07/11 00:48:20
>>258はよくわからなかったけど>>285には納得できる。
> => ホワイトボックステストはコスト的に合わないので、モジュールの
> 入出力に相当するAPIだけをブラックボックステスト。
コスト的にかどうか知らないんだけど、これが一番理想とするテストだと思ってる。
APIの所だけホワイトな、穴あきブラックボックステストみたいな。
287:仕様書無しさん
08/07/11 01:03:04
>>278
スパイラル型でもない限り結合超えてUTに戻る、ってのはないんじゃないの?
上位テストフェーズで不具合が見つかった瞬間はともかく
おれはスパイラルスキーなんだけどね。
ちなみに今関わってるPrjは大規模であっても
UT->IT->ST
これだけ。そして受け入れフェーズで多々トラブル。
おれ、どうしたらいい?
あ、
1.よくない。お客様との要件詰めが完全合致していて、仕様変更などが絶対入らない
前提でもない限りUT->IT->STのみではうまくいかない。
なぜなら、UT後に仕様変更なぞ入ろうものなら品質面での保証がまったく出来なくなってしまう、
客は触って初めて「違うぞこれ?」とか言い出す生き物、などなど。
2.同じことの繰り返し、と考えてしまうと、6.その他、が正解だと思う。
自動テストをUT,IT,STのくくりにいれず同時並行すべきかなー、とか。
288:仕様書無しさん
08/07/11 01:04:19
みんな考え方は現場経験や本人の考え方により違うんだろうけど
こうやってテストフェーズについて色々活発に話せることはよいことだナァ。
289:仕様書無しさん
08/07/11 01:05:31
>>288
なー。おれはよくわからんから読んでるだけだけどなー。
290:仕様書無しさん
08/07/11 01:14:59
>>289
実際現場でテストやその後フェーズで苦労しだすと結構分かってくるんじゃない?
ってか品質面で問題でない現場ならそれが一番の幸せだよ。゜(゚´Д`゚)゜。
291:仕様書無しさん
08/07/11 01:15:27
>>281
仕様書はもちろん個々の機能についても書かれる。
そしてその仕様どおりの入出力を満たしていることの確認もする。
ただし、業務系ではそれをシステムテストとは呼ばない。
個々の機能の入出力を重点的にテストして、それより下位のテストは適当にするっていうのは
いいと思うよ。
本当にただ言葉の定義が違うために言ってることが分かりづらいだけ。
292:仕様書無しさん
08/07/11 01:20:39
今回うけた仕事、システム全体の中の1カ所の開発(というかリファクタ)なんだが
自分たちが受けた部分はともかく、他のところはいきなりシステムテストらしい。
ちゃんとモジュールテストされてない・・・
そのせいで、システムテストで
他の会社が作った部分のデバッグをやらされてる。
293:仕様書無しさん
08/07/11 01:22:10
>>292
そういう段取り/スケジュール考えた奴は軽蔑していいよ
294:仕様書無しさん
08/07/11 02:33:59
>>290
テスト後フェーズは幾度となく経験してるし、
修正後のテスト堂々巡りも経験してるけど、
大規模開発というものを経験したことがないので、
UT→IT→ST が同時進行ならまだしも、何度も巡る
というのが理解できず、議論についていけないw
というかあれだな、読んでいて思ったけど、
言葉の定義や論点がずれているだけで、
本質はみんな同じ認識の様な気がする。
295:仕様書無しさん
08/07/11 06:03:21
>言葉の定義や論点がずれているだけで、
>本質はみんな同じ認識の様な気がする。
いや、違うね。俺だけが違ってるという可能性もあるが。
>>281
テストフェーズの定義について、素直に間違っていたと認めた80は評価する。
同じように「仕様書」に関しても、他とずれていると認識してほしいのだが。
そうでないと、>>281の後半部分には答えられない。
>つまり、仕様や性能を満たせているかを確認するテスト(ST)が
>ずいぶん後回しになるやり方を皆は支持しているわけだ。
何度も言うように、システムテストは機能テストと「性能を測る」テストだけではない。
後回しになる(後でやらないと意味がない)テスト(ケース)もあれば、先にやるものもある。
機能テストのことをずいぶん気にしているようだが、「皆」がどう取り組んでいるかは、
「受け入れテスト 自動化」でググってみるとわかるかもね。
296:仕様書無しさん
08/07/11 06:12:26
俺が80と違っている(と思っている)点は、
・ユニットテストは軽視してはならない。むしろ重視すべき。
・ユニットテストはプログラマが行うべき
・ユニットテストを重視することは、顧客のメリットになる
・(おまけ)外部設計と内部設計という考え方はある
80に同意する点もいくつもあるが、それは列挙しない。
297:仕様書無しさん
08/07/11 19:44:58
適当でいいんだよ適当で。
298:仕様書無しさん
08/07/12 02:15:00
適当、よりも、適度、がいいと思うんだ
299:仕様書無しさん
08/07/12 15:17:35
適当≠手抜き
300:仕様書無しさん
08/07/12 19:29:48
サンビャク!
301:80
08/07/13 08:07:03
>>296
>・ユニットテストは軽視してはならない。むしろ重視すべき。
->軽視はしていない。重視もしていない。
おれは、テスターじゃなくて、プログラマー上がりなので、
ユニットテストの大切さを知っている。ただ、組織としてユニットテストを
成功させる場合は、以下の前提条件を満たせないとだめだ。
1. バグが減ったことを評価して、ボーナス査定をUPさせる。
2. 機能実装よりバグが少ないことを重視する。
重要なのは、2 だ。ユニットテストを重視した結果開発のスピードが
落ちたのだ。つまり、機能的要件(フレームワーク、下位コンポーネント
を除く)を実装するチームに関しては、ユニットテストがボトルネックになる。
よーは、すべてがトレードオフなのだ。ユニットテストを重視しすぎると
逆に効率が落ちる開発フェーズがあることを俺は、経験で学んだ。
>・ユニットテストはプログラマが行うべき
-> ユニットテスト=ホワイトボックステストなら同意。
>・ユニットテストを重視することは、顧客のメリットになる
-> 大規模開発では、顧客には理解されない。
業務系ではないうちでは、専門的すぎて説明するのが難しい。
>・(おまけ)外部設計と内部設計という考え方はある
-> うちの会社にも昔はあったよ。外部設計、内部設計という言葉が
間違っているのに気がついた。
確かに、システムというものを対象にした時にそれの外部について
記述したドキュメントと内部について記述したドキュメントはある。
ただ、外部か内部かという言葉は、対象物を前提としている。
システム、サブシステム、コンポーネント、ライブラリ・・・・などだ。
そして、これらは、整然と関連付けられる。内部設計とか外部設計という
言葉をこれに当てはめると間違いである事が理解できる。
外部は仕様書で、内部は設計書なんだ。これでもわからないなら。
仕様書と設計書の違いを説明してくれないか
302:80
08/07/13 08:17:57
補足だが、プログラマーとテスターの作業量を新規開発の初めから
終わりまで時間を追ってグラフにしてみると俺の言っていることが
分かるかもしれない。
理想を言えば、一番初めのインテグレートの時にテスターが
チームに参加すれば、コスト的にOKなのだが。
大抵は
1. 一番初めのインテグレートは遅れる。つまりテスターが遊ぶ。
2. テスターが開発初期から参加している場合、テスターは
プログラマーよりも暇である。
3. 機能要件は、よく変わる。せっかくユニットテストをばっちりしても
作り直しが多数発生する。さっさと、要求者に「うごく」ソフトを
見せるのは重要だ。
テスターを遊ばせないで、機能要件の間違いを早期に発見できる方法
を俺は支持しているんだ。
303:80
08/07/13 08:29:15
>>285
だいたい、同じ考えだ。
機能要件と再利用可能なコンポーネントでは、テストのやり方
を変えないとだめだ。
再利用可能なコンポーネントは、下位の層で人目につかない。
テスターに通信プロトコルや各種規格をすべて理解してもらうことは無理
なので、プログラマーしか「テストができない」と俺は思う。
違うところは、再利用可能なコンポーネントのテストは、
ホワイトボックステストと加えて回帰テスト(ブラックボックス)を
重視するところだ。
再利用可能コンポーネントは、最適化を繰り返すので、ソースコードが激変する。
つまり、ホワイトボックステストは毎回変わってしまう。
ホワイトボックステスト事態の品質を維持することは非常に難しい、
なので、回帰テストとの合わせ技が重要になる。
304:80
08/07/13 09:11:20
開発工程の中のボトルネックはどこにあるのか?によってやり方は異なる。
プログラマーのスキルが高い場合、テスターのスキルが高い場合など
状況は様々だ。
うちのボトルネックは、「実装」フェーズだった。
スケジュールの遅れは、プログラマーの責任だという認識が多数を占めていた。
なので、ユニットテストが流行したが、結局、失敗に終わった。
ボトルネックにさらに仕事を増やした(人は増えない)結果、開発そのもの
が遅れ、テスターが遊び始めた。設計者は次の設計に入っている。
しかし、ボトルネックが解消されなければ、実装されない設計が溜まる
ばかりだ。テスターは、空いた時間で別のプロジェクトのテストをしている。
リソースが有効活用されていないのは明らかだ。
ボトルネックを解消するのに設計者にテスターにできることはないのか?
そう考えるのが普通だろう。
設計者には、設計を洗練させた。結果、不要なソースコードをプログラマー
が書かなくても良いようになった。
ユニットテストを強要することはやめた。その代りテスターの負担が増えた
が、もともとテスターは遊んでいたのでプロジェクト全体のスループットは
向上した。テスターのストレスは増えたが・・・。
ユニットテストを完璧にやるという事は、ウォーターフォールの考え方
に近い。うちは、繰り返し型の開発をやっているので、たとえバグが残っても
開発の最後の方でプログラマーの手が空いてきたころに網羅性の高いテストを
行うので実質品質が下がるようなことはない。
ユニットテストは有効だが、使い方を間違ってはいけないと思う。
重要なのは、部分最適化(ユニットテストだけを協調する)のではなく
全体最適化(全ての開発工程を見直す)の方だと思う。
305:80
08/07/13 09:30:44
>>291
業務系は、書籍などで知っているだけで現場は知らない。
うちは、メカトロニクス。半分は制御系。ただし、大規模な制御系だ。
Web技術、データーベース、各種通信、など色々開発要素も多い、
言語もC++, C#, Java, その他が入り乱れている。
うちのシステムは、多層になっているシステムの集合体だ。
担当者は、自分の担当範囲だけどをシステムと呼んでいる。
つまり、人によって、システムの範囲(スコープ)が違うんだ。
そして、多段階にインテグレートしてテストを行う。
なので、スコープとレベルの違うシステムテストはチーム内の複数存在
することになる。
見方を変えれば、下位のシステムは、ユニットとも言えなくもないが、
よほどの下位でもない限り「一般論で言うユニット」とは違う。
うちでは以下のように定義している。
・(粒度はともかく)機能的要件を実現する単位をシステム
(サブシステム)と呼んでいる
・下位の原始的なメカニズムを提供するものを、ユニットと呼んでいる。
・機能外要求や、システムのアーキテクチャーをつかさどるものを
フレームワークと呼んでいる。
306:仕様書無しさん
08/07/13 11:05:04
>>301
>ユニットテストを重視した結果開発のスピードが落ちたのだ
結局ユニットテスト非重視と重視で品質面はどちらがあがったの?
非重視で品質落ち(最悪客先リリース後に不具合多々発現)だとしたら
開発スピードが落ちた、ではなく必要フェーズをはぶいてスピードあげてた、
ってだけでは??
307:仕様書無しさん
08/07/13 11:10:26
みんなの会社で「専任テスター」っている?うちは
a.管理:チームMGR、PL
b.営業/客対応:客対応向けSE、営業
c.開発:開発向けSE、PG
みたいな位置づけになってて、テストは
「それ開発の一環だろ」って見方を上がしているから結局c.が全員で当たってる。
いい形とは思ってないけど、この場合、
フェーズによって「テスター」が暇になる、ってのはないけどなー
308:仕様書無しさん
08/07/13 12:54:44
80の方法だと、ユニットが細かい区分になるので、つまり単純化される。
つまり単純で小さなテストが沢山できる。
質の問題を量に転化したと言っている。
で、コスト削減の為にテストを自動化したと。
まあ、制御系で1000万コードってどんだけーって話だけど。
工場の制御丸ごとやったとしか思えんなぁ。
309:仕様書無しさん
08/07/13 18:02:22
グローバル変数が100万個位あるんだろ
310:80
08/07/13 20:32:06
>>306
品質は向上した。第三者テストの重要性を再認識することとなった。
多分、問題点や間違いを早期のうちに把握できたことと、プロジェクト管理
がやりやすくなったことなども良かったと思う。
プログラマーに、プレッシャーを与えることになったのと、
テスターの地位が向上したのも良かったのかもしれない。
311:80
08/07/13 20:40:06
>>307
うちは、専任のテスターがいる。
そして、開発の初めから開発に参加している。
要件定義が終わったら、これをもとにテストを作成しはじめる。
(テスターが要件を事細かに見るので要件は洗練されるというおまけもつく。)
312:仕様書無しさん
08/07/13 21:11:33
つーか、日本の現場にありがちな曖昧な部分を消したという事が重要だと思う。
グラマーのプライドなんて、邪魔ものだからなー(本人にとってもー)。
313:80
08/07/13 23:04:06
>>312
そういう見方もできるな。要件の曖昧さとテスターのカバレッジを
ユニットテストで補えるとプログラマーが考えているなら、
勘違いも甚だしいな。
314:仕様書無しさん
08/07/13 23:05:54
プログラマの常識は一般人の非常識って事ですね。わかります。
315:仕様書無しさん
08/07/14 01:12:09
>そういう見方もできるな。要件の曖昧さとテスターのカバレッジを
>ユニットテストで補えるとプログラマーが考えているなら、
>勘違いも甚だしいな。
いや、それに甘えてきたSEが問題でしょ。
厳密に言えば、曖昧さは発生しない為に仕様があるわけで、
仕様抜けとか仕様に考慮を入れていないというミスを
グラマーがプログラミングやユニットテストで吸収するのは
よくある風景だ。
単純にそれはSEの怠慢でしかない。
ちなみにそれやらないと、ユニットテストが上がらないっていう
話になって仕様書を押し戻すと作成元の責任になったりする
ので出来ないってのも基本。
316:仕様書無しさん
08/07/14 06:01:41
>>301
> よーは、すべてがトレードオフなのだ。ユニットテストを重視しすぎると
> 逆に効率が落ちる開発フェーズがあることを俺は、経験で学んだ。
バグを取り除くのが早ければ早いほど、トータルコストが少なくなるというのには同意してもらえるのかな?
もっと言えば、トータルコストが少なくなるような効果的なユニットテストを模索しなければならない。
> -> 大規模開発では、顧客には理解されない。
> 業務系ではないうちでは、専門的すぎて説明するのが難しい。
トータルコストが少なくなり、品質も安定するという意味で、顧客のメリットになる。
>-> うちの会社にも昔はあったよ。外部設計、内部設計という言葉が
>間違っているのに気がついた。
>そして、これらは、整然と関連付けられる。内部設計とか外部設計という
>言葉をこれに当てはめると間違いである事が理解できる。
君が間違っていると主張しても、それでも世界は回っているんだよ。
目をふさぐのは簡単だけどね。
317:80
08/07/14 06:56:34
>>316
>バグを取り除くのが早ければ早いほど、トータルコストが少なくなるというのには
>同意してもらえるのかな?
当然そうだが、早いというのは、開発のスケジュールの早い段階でという
意味でだ。うちはスパイラルだからできる芸当なんだが、早期の詳細な
テストが徒労に終わることを経験で知っている。
開発の初期で最低限の要件で開発して、さっさとインテグレート
してさっさとシステムテストをやることで早期にテストを行って
要件の問題を修正している。この場合、ユニットテストは簡単にしか
行われない。
318:80
08/07/14 07:10:39
>>316
>君が間違っていると主張しても、それでも世界は回っているんだよ。
>目をふさぐのは簡単だけどね。
世界って広いぞ。うちは外資系だからアメリカ、インド、ロシア・・・・
いろんな奴と一緒に仕事しているけど、ソフト開発なんてのは、世界的に
統一されたりしてないぞ。各国各様でばらばらだ。つまり、外部設計と
内部設計という言葉が通用しないのを、実際に経験で知っている。
319:仕様書無しさん
08/07/15 01:47:04
なんでシステムテストをやると
ユニットテストをサボれると思うのだろう?
320:仕様書無しさん
08/07/15 08:56:28
>>317
> 意味でだ。うちはスパイラルだからできる芸当なんだが、早期の詳細な
> テストが徒労に終わることを経験で知っている。
誰も、過剰なユニットテストをやれなんて言ってねーよ。ユニットテストをプログラマにやらせると
必ず過剰なものになるからやらせないってことか。
まぁ、お前のチームのプログラマがレベル低すぎて効果的なユニットテストをできないのならそれも仕方ないかもな。
>>318
どんだけ田舎者と仕事してんだよ。
internal designとexternal designも通じない奴と仕事してんのかよ。
321:仕様書無しさん
08/07/15 08:58:53
そろそろメトリックスベースで話さないと埒があかんな。
1000万行のシステムで、第三者検証チームが検出したバグは何件だったんだ?
322:仕様書無しさん
08/07/15 09:26:09
>>318
とりあえず、原著で読んだsoftware development processの本の題名を列挙してくれ。
323:80
08/07/15 23:50:38
>>320
シリコンバレーは、確かに田舎だな。。。。
ちなみに言うとうちでは設計書はあまりかかれない。仕様書を重視する。
うちの外人さんは、「設計書=ソースコード」だと言い張る。
年収3000万を超えるプログラマーだからできる芸当なのかもしれない。
こいつらテストはしない。テストは、テスターの仕事だと言い張る。
324:仕様書無しさん
08/07/16 00:20:17
ダメだ、はったりにしか見えない。゜(゚´Д`゚)゜。おれもうROMるわ
325:仕様書無しさん
08/07/16 01:51:18
「顧客のメリットになる」ことにこだわっている人が
いるけど、それが必ずしも自社にとってメリットになる
わけでは無いわけで。そういった意味で顧客との間で
落とし所をさぐる時にユニットテストを一部省くというのは
普通にあると思うけど?
やった作業に対して全て金を払ってくれる契約
(それって派遣?)なら全ソースに対してユニット
テストするのもありかもね。
326:仕様書無しさん
08/07/16 16:08:56
経験上の話だが、(良い)詳細設計というものは考えていても作れない。
そういう頭の中で考えただけの設計というものは実際に作るときに、
絶対に問題点やバグがある。パフォーマンスの問題なんか
実際に作らないで目標を達成することなんか不可能。
結局コーディングして、その結果をフィードバックして
設計を完成させなければならない。
ユニットテストってのは、その設計を完成させる為のチェックポイントなんだ。
これは重要なこと。
「設計・コードは簡単に変わるが、チェックポイント(テスト内容)は変わらない。」
ゲームに例えるとこうなる。
仕様・・・世界を平和にする。
ユニットテスト・・・各ステージのボスを倒す。(チェックポイント)
設計・・・どういうルートを通ると早くすすめるか。
コーディング・・・実際のキー操作
最初に仕様があるが、これはすごくあいまいなもの。
システムを作るうえでの大前提だが、コレを決めてもシステムは作れない。
個々の目標が、ユニットテスト。これがシステムを作るうえで一番重要なもの。
これがあれば、設計やコードを柔軟に変更することができるし、間違っていない証明になる。
そして、ユニットテストを作ってから、設計とコーディングを行いながら開発していく。
(実際にキー操作をしないと、考えたルートが通れるのか本当に早いかはわからないね)
327:仕様書無しさん
08/07/16 16:20:33
>>325
あなたが言っているのは、ユニットテストに限った話じゃないね。
「自社のメリットにならない場合はテストを省く。」
「やった作業に対して全て金を払ってくれる契約なら全部テストするのもありかもね。」
もし俺が客で、あなたの会社にシステム開発を依頼する立場なら、
お金を払って開発したシステムを、あなたがちゃんとテストしてくれるかどうか不安だけど。
> やった作業に対して全て金を払ってくれる契約
これは、全部のテストの作業量を見積もって、その金額で契約するわけだから、
全部テストするのが当たり前だと思うんだけど?(客が80%で良いとか言うのなら別)
328:仕様書無しさん
08/07/16 16:37:47
>>1
おれの作ったプログラムにはバグがない。
だからテストは不要。
と書きたいところだが、
C言語だと1万ステップに3カ所ぐらいは
バグがある。
ただし重要なところでバグがでないように
単体テストをしっかりとやってから納品している。
バグは意思の疎通が十分にできていれば
ほとんどでることはない。
バグのでる仕事というのは、だいたい意志の疎通がとれていない
ということ。
329:仕様書無しさん
08/07/16 16:45:46
俺も1万行に一回くらいしかコンパイルしないけど
ほとんどバグないな
330:仕様書無しさん
08/07/16 17:08:08
何この全力で釣られるスレは・・・
331:仕様書無しさん
08/07/16 19:24:52
>>327
>これは、全部のテストの作業量を見積もって、その金額で契約するわけだから、
>全部テストするのが当たり前だと思うんだけど?(客が80%で良いとか言うのなら別)
100%見積もれて、客が1つも仕様変更をしない場合の話だよね。それって。
そこら辺は開発スタイルの問題かと。俺が言いたいのは「仕様変更のリスクを設計や
計画に含めた形で客に説明しているし、客にもある程度納得してもらってる」
という事。
そういった意味でテストの手法や粒度をどうしましょうか?という事を>>80は言い
たいんじゃないの?
332:仕様書無しさん
08/07/16 19:37:34
>>331
でも、最初っから変更出来るって頭を顧客に植え付けちゃうのもどうかと思う。
費用込みなんだから一度くらいは変更できるよね? とか言われないか?
333:仕様書無しさん
08/07/16 19:59:42
>>332
プロジェクトがある程度続いている or 続く事が期待できる
相手であればそれもありかと。いずれにしても開発・契約
スタイルによるわな。
334:仕様書無しさん
08/07/16 20:01:37
まあ、変更は一切出来ませんとか言っててもどうせ変更させられるんだけどなwww
335:仕様書無しさん
08/07/16 21:27:23
普通は1000行あたりバグが5~50個くらいかな。数え方やプロダクトの難易度にもよるが。
1000万行だったら、5万~50万個くらいか。
まぁ、正直、これだけのバグを10人でさばけるのなら大したもんだよ。
336:仕様書無しさん
08/07/16 23:05:12
>>335
ちょっと待て
最悪20行に一個出るのが普通か?
たとえ200行に一個でもかなり多いだろ
新人レベルがかなり混じってるならともかく・・・
337:仕様書無しさん
08/07/16 23:25:32
>>336
設計から実装までやれば、延べにしてそのくらいは出るよ。
設計ミスで全面入れ替えの所とか、パフォーマンス出なくてとか、必ず出てくるwww
338:仕様書無しさん
08/07/16 23:35:42
ここがコーディング界のネ申達がおわす所、バルハラですか(1万ステップに1バグあるかないかを誇るという)?
それにしては冴えない連中が多いのですが・・・
339:仕様書無しさん
08/07/16 23:37:43
あいつ使えねーからこっちで直しておこーぜ。
いいよ、バグ無しって言っておけよ。
340:仕様書無しさん
08/07/16 23:39:08
>>329
それはデータ込みの・・・むしろデータのみを扱ったコードですか?
社会保険庁よりは優秀ですねwww
341:仕様書無しさん
08/07/16 23:42:32
>>340
一般人には想像すらできない天才っているもんなのよ。
天才というか、障害というか。
342:仕様書無しさん
08/07/16 23:43:54
>>337
設計にしてもキモになる部分ならプロトタイプなりなんなりで
実装可能性やパフォーマンス検討するだろ。
それを実装まで持ち越しているなら設計工程が十分でないだけ。
ひょっとして手戻りが好きなのか?w
343:80
08/07/16 23:46:47
>>324
はったりじゃないんだけど・・・。
それに、嘘ついても仕方がないじゃんか。
344:仕様書無しさん
08/07/16 23:48:32
>>342
やらねえよ。
だって動作環境が半年後じゃないと揃わないとかザラにあるからな。
パソコン上で幾ら理論構築しても、載せて初めて発覚するパフォーマンスなんてのは普通だし。
345:仕様書無しさん
08/07/16 23:54:42
まあ、何万行書いてもBUGなんて皆無と豪語してる奴は、信じられなくて当然。
そういうコードは結合後に醜い事になってる事が経験的に多いなw
要するに、俺様仕様でBUGゼロってだけだからwww
346:仕様書無しさん
08/07/17 00:05:34
入力がパンチカードとかだった時代ならともかく…
347:仕様書無しさん
08/07/17 00:07:03
どこかの会社の面接を受けて
特技「1万ステップのコーディングでバグが1件です」
って言ったら、さてどうなるか?
348:80
08/07/17 00:07:24
>>342
パフォーマンスに関するチューニングを急いではいけない。
これは、鉄則なので、いまさら説明する必要はないだろう。
パフォーマンスのチューニングは、設計ではなくて
測定に基づいて行われるべきである。
>>345
正論だな。俺様仕様で作ったプログラムを、俺様が作ったユニットテストを
しても、そりゃー合格するよ。そもそも、自分が理解したとおりのプログラム
を書けない奴はうちにはいない。
たいてい、俺様仕様が間違っている時にバグが埋め込まれる。
349:仕様書無しさん
08/07/17 00:10:11
///なんか80に正論とか言われると萎える・・・
350:仕様書無しさん
08/07/17 00:13:46
// 80は極論派だと思う
351:仕様書無しさん
08/07/17 00:15:48
/うわなんでコンパイルエラー!?
352:仕様書無しさん
08/07/17 00:38:06
>>1はいいこと書いてるな。
353:仕様書無しさん
08/07/17 00:49:15
でも、なんか>>1ってチンコ臭そう
354:仕様書無しさん
08/07/17 00:52:26
/* >>351 コメントとして間違っている!! */
355:仕様書無しさん
08/07/17 01:26:10
まて、もしかするとマンコかもしれないじゃないか
356:仕様書無しさん
08/07/17 01:27:47
>>344
組み込みならモノがないのでやむを得ない面もあるが、
大概は前のチップや代替品を使って見当を付ければいい。
>>348
パフォーマンスを急げと言っているわけではない。
パフォーマンスがどれくらいでそうか当たりを付けて
速度重視にするかフットプリント重視にするかの設計方針に入れろと言っている。
それを設計工程で行わないで後に回すから手戻るんだよ。
357:仕様書無しさん
08/07/17 02:14:55
パフォーマンスって、チップ次第だし。
パソコンアプリ作ってればそのまま試せるだろうがな。
石のアクセス自体仕様通りじゃない場合だって普通にあるからさw
358:仕様書無しさん
08/07/17 02:22:35
>>356
設計段階でパフォーマンスのトレードオフ検討出来るってうらやましいな
たいていは、死守要求だったりするからな。
359:仕様書無しさん
08/07/17 02:47:00
>>358
排反事象なら一方を満たして他方を次善にして、後は交渉術でそ。
全部実現するにはこれこれのコスト(金額、開発期間)がかかりますと言うだけだし。
金払わない以上どこか諦めてね♥
360:仕様書無しさん
08/07/17 02:50:37
>>359
いや、払うだろ。
正当な追加費用ならなwww
361:仕様書無しさん
08/07/17 03:09:11
>>360
まともな客ならなぇ。。。
大概はより良く(まぁいい)より安く(切り詰めてんじゃねぇ)。
362:仕様書無しさん
08/07/18 02:24:12
たしかに>>1はいいこと書いてるな
先日面接で「xxのシステムを作り直すとしたらどのくらい?」って聞かれて
「コアを作り直すなら2人月ぐらいですね、今まで自分らで作っていた部分が今ではライブラリとして提供されているから。
それよりも、テストの方に工数がかかると思いますよ。」って答えた。
でもよく考えたら、xxを作り直す(完成させる)まで、ってのは当然テストが完了して、のことなんだよな。。。
どうも自分の中で実装とテストを別に考えてしまっていたわ・・・ちゃんとしたものを作る、っていう意味では
テストはものづくりの一部だわ、、、今ここで反省します m(^_^;)m
遠足は家に帰るまでが遠足だかんね。