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
遠足は家に帰るまでが遠足だかんね。
363:仕様書無しさん
08/07/18 21:10:41
>>362
ど素人さんですか?
今まで何やってたの?
364:仕様書無しさん
08/07/19 01:08:59
>>363
>>362はちゃんとテスト工数の話してるしちょっと区切り間違っちゃっただけだろ。
いじわるなんだからっ!
365:仕様書無しさん
08/07/19 11:20:47
たかだか二人月のゴミみたいなプロジェクトの例を出されましても・・・
366:仕様書無しさん
08/07/19 13:00:56
URLリンク(itpro.nikkeibp.co.jp)
6000人のSEが同時期に集まったのであって,「6000人月」ではない。
開発工数は先に書いた通り,11万人月である。
このSEパワーは開発だけではなく,テストに惜しみなく使われた。
ざっと5000人が8カ月テストをしたとするとこれだけで4万人月,開発工数の3分の1がテストに費やされた計算になる。
本来なら有り得ない開発工数とマネジメント工数とテスト工数である。
本来なら有り得ない開発工数とマネジメント工数とテスト工数である。
本来なら有り得ない開発工数とマネジメント工数とテスト工数である。
367:80
08/07/19 17:11:42
URLリンク(sankei.jp.msn.com)
テスト段階では、全く想定していなかったトラブルが起きた
テスト段階では、全く想定していなかったトラブルが起きた
テスト段階では、全く想定していなかったトラブルが起きた
テストに開発工数の 1/3 を費やしてもシステム障害で行政処分。
部分最適化のもろさを露呈してしまう結果になった。
「全く想定していない」・・・要求定義者や分析・設計者のミスをテストで
カバーできないってこと。間違った仕様を完璧にコーディングしても
それは、バグ。
368:仕様書無しさん
08/07/19 17:22:10
6000人全員が派遣でしたwww って話??
369:仕様書無しさん
08/07/19 20:48:04
コーディングは終わったので、あとは人海戦術で手動テストしてくださいって
パターンなら最初からうまくいくはずないよ。
370:仕様書無しさん
08/07/19 22:14:17
なんか、ぶっちゃけ私の方法ならうまくいくと間接的に言ってるように
見えるけど、ほんとそうなの?
371:仕様書無しさん
08/07/19 22:22:01
>>369
テストの際に出てくる不具合報告を眺めてるだけじゃ完成しないがなw
テストに入ってからが本当のコーディング作業が始まると思わなきゃ上手く行かない。
372:仕様書無しさん
08/07/20 02:22:31
>>371
メガプロジェクトじゃ、そんなの通用しないし。
373:仕様書無しさん
08/07/20 02:34:44
>>372
はあ?
メガプロジェクトじゃ、最後までコーディングしてる部署が必ずあるよ。
つうか、不具合改修はやらねえの?
374:仕様書無しさん
08/07/20 03:14:48
普通、やるでしょ
PSPの海腹川背みたいな例もあるけどw
375:仕様書無しさん
08/07/20 12:12:05
>>371
> テストに入ってからが本当のコーディング作業が始まると思わなきゃ上手く行かない。
だから、無駄なテスト前コーディングをしないで、
テストをやってコーディングをするんだよね。
376:仕様書無しさん
08/07/20 12:16:01
>>367
> 「全く想定していない」・・・要求定義者や分析・設計者のミスをテストで
> カバーできないってこと。間違った仕様を完璧にコーディングしても
> それは、バグ。
ですよね。だからちゃんと想定して、
その想定した内容をテストとして書くんですよね。
これであなたもユニットテストの重要性を理解したと思います。
377:仕様書無しさん
08/07/20 12:20:56
ついにマ板にも夏が来たか・・・
378:仕様書無しさん
08/07/20 14:21:36
>>376
ユニットテストじゃ、要求定義や設計時のミスは取り除けないよ。
それを元にテストが作られるんだからね。
だいたい、設計時の矛盾は最終的な総合テストまで残る。
要求定義の矛盾は製品にまで残る。
379:仕様書無しさん
08/07/20 15:00:32
>>373
「本当のコーディング作業」の定義次第だな。
そして、その定義を云々するのはくだらねー。
380:仕様書無しさん
08/07/20 17:13:26
80の言い分だけど、
うちの会社は1000万のコードで、
次に、基本証券・金融系では無い。制御系だといって、
最後に、国内最大の金融系の仕様段階での問題点を出している。
あ、あとシリコンバレーと仕事しているってのもあったな。
で、別に仕事のやり方は全否定する要素は無いが、具体例は
全否定されても仕方ないほど妄想力に満ちていると感じたの漏れだけ?
381:仕様書無しさん
08/07/20 19:23:59
>>374
あれは、「仕様です」
382:仕様書無しさん
08/07/23 01:01:35
とりあえずユニットテストやファンンクショナルテストをちゃんと書いていけば
設計時の矛盾とか普通にたくさんでてくるよ。
んで、短いサイクルでどんどんリファクタしていけばいい。
もちろん手動テストもするけど、ばかげた規模での人海戦術テストとかにはならないでしょ。
383:仕様書無しさん
08/07/23 01:06:30
またまた富士通!東証システム障害 プログラムミスが原因 2008/7/22
URLリンク(headlines.yahoo.co.jp)
41 名前:仕様書無しさん 投稿日:2008/07/23(水) 00:00:22
∧∧
富 ( ・ω・) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
士 (つ/ ̄ ̄/ < 1銘柄当たり1280バイトの作業用メモリー領域だから、
通 /__/ \ \ 2万8000銘柄分、合計3万5000Kバイト・・・
||\ TOWNS \ \ 4万バイトということで"PIC 9(40M)"ってことだな
||\|| ̄ ̄ ̄ ̄ ̄|| \_________________________
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
え~と40M・・と、 それ、ポチっとな
000230 01 WORKAREA.
000240 03 WORK PIC 9(04). <--- 4バイト
∧東∧
∧富∧ (´<_` ) さすがだな富士通
( ´_ゝ`)/ ⌒i
_(__つ/ ̄ ̄ ̄/i |_ そんなこと言ってないで、チェックお願いしますよ、東証&NTTデータさん
\/___/ ヽ⊃
そして・・・・
. . : : : :: : : :: : ::: :: : :::: :: ::: ::: ::::::::::::::::::::::::::::::::::::::
. . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
/:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
/ :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
/ :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄
384:仕様書無しさん
08/07/23 01:06:41
【東証のシステム障害、設定ミスをテストでも見抜けず 2008/07/22 】
鈴木CIOは「設定をミスしたのはベンダーの富士通」とした上で、「多数の銘柄に対し板情報の
問い合わせがあった場合をテストケースに含んでいなかったのは我々の責任。もっと幅広く
テストすべきだった」と陳謝した。
URLリンク(itpro.nikkeibp.co.jp)
【富士通の開発ミスの全責任は東証にある」とみずほ証券、株誤発注裁判 2008/05/09 】
2005年12月にみずほ証券がジェイコム株の誤発注で出した損失を巡って東京証券取引所を
訴えた裁判の第9回口頭弁論が2008年5月9日、東京地方裁判所で開かれた。
原告のみずほ証券側は、被告の東京証券取引所にシステムの発注者としての注意義務違反と
重過失があったことを改めて主張する準備書面を地裁に提出した。
みずほ証券側は「東証はシステムの発注者として、業務上の要求を富士通に伝え、富士通が
開発したプログラムが要求と整合しているかをテストする責任がある」と訴え、「誤発注の
取り消しができなかったのは東証の重過失だ」と主張した。
:
次回口頭弁論は2008年7月25日の予定だ。
~~~~~~~~~~~~~~~~~~~~~~~~~~
URLリンク(itpro.nikkeibp.co.jp)
【「短期間で2回のシステム障害は、痛恨の極み」東証社長が会見 2008/03/25 】
証は2月8日の金融派生商品の取り引きを担う新派生売買システムの障害に続き、3月10日にも
株式売買システムで障害を起こした。
先月22日に新派生売買システムを中心とした障害の再発防止策を発表したばかりだが・・・
URLリンク(itpro.nikkeibp.co.jp)
【特集・東証システム問題リンク】
URLリンク(itpro.nikkeibp.co.jp)
385:仕様書無しさん
08/07/25 03:00:06
ユニットテストは詳細設計どおりにプログラムが稼働するテストと認識しているんだが、
詳細設計が1STEP対応の設計書でない場合、全パステストの結果って
どういう扱いになるのかな?
386:仕様書無しさん
08/07/26 01:44:42
>詳細設計
の確認はうちではユニット-ユニットの結合テストだな
ユニットテスト対象はプログラム設計
ここ→URLリンク(msugai.fc2web.com)
のV字モデルに近い
なので全パステストなんて結合テストで考えない
387:386
08/07/26 01:57:35
URLリンク(itpro.nikkeibp.co.jp)
の図1もプログラム設計が書いてないけど同じっぽい
388:仕様書無しさん
08/07/28 11:42:25
今日初めて見たが、みんな何か勘違いしてないか?
テストで信頼性は上げられない、テストは
「このプログラムにはバグがあるます」を実証するもので
バグを沢山検出したからと言って、そのプログラムには
もうバグが存在しないと言う実証にはならない。
実際は逆で、統計的に見るとバグ密度の多いプログラムほど
残りの潜在バグが多く含まれている。
テストでは信頼性は旦保できない為、極度に
信頼性が求められるシステムでは、テストをしない開発手法もある。
389:仕様書無しさん
08/07/28 15:31:02
>>388
asshole
390:仕様書無しさん
08/07/28 18:11:43
>>388
>信頼性が求められるシステムでは、テストをしない開発手法もある。
kwsk
391:仕様書無しさん
08/07/28 18:23:16
耐震偽装と同じレベルだろwww
392:388
08/07/29 00:35:28
>>390
有名な所では、ダーリントン原子力発電所の緊急炉停止システム
393:仕様書無しさん
08/07/29 00:43:53
>>388
ソフトウェアの信頼性を定義してみな
394:仕様書無しさん
08/07/29 02:52:18
IEC読んで言ってるなら凄いけどね・・・
395:388
08/07/29 21:00:07
>>393,394
俺をテストしてどうする。しかし、なぜムキになるか分からん?
URLリンク(ja.wikipedia.org)
>ソフトウェアテストでは、欠陥が存在することを示すことはできるが、欠陥が存在しないことは証明できない。
Wikipediaにもにも書いてあるし、大半の「テスト」関連の書籍にも同じような意味の事が書かれている
いままで、その辺りの知識もなしにレスを書いていたのか?
396:仕様書無しさん
08/07/29 21:28:57
>>395
それは394への答えにはならないよ。
397:仕様書無しさん
08/07/29 21:32:30
>>395
だから、普通テストは
要求された機能が特定の条件下で要求通りの結果を示せるかをテストするんだぜ?
要求されてない(テストされてない)機能がどのように振る舞おうが知ったこっちゃ無いのはあたりまえ。
だからその理論は正しいが、そんな事は誰も要求していないんだよ。
想定外の欠陥は許されるが、想定内の欠陥はダメなの。
398:仕様書無しさん
08/07/30 00:31:54
>>397
>想定外の欠陥は許されるが、想定内の欠陥はダメなの。
現実は想定外の欠陥でも許さない人間が大半だがな。 相乗りしている他システムが
異様にリソース使いまくって、それに巻き込まれて不具合起きて、それでも不具合が
おきない様にしろと言われかけたときは頭抱えたよ、、、
399:仕様書無しさん
08/07/30 00:34:35
>>398
もちろん納品前に発覚した不具合は想定内だよ。
400:仕様書無しさん
08/07/30 00:36:13
予想GUYダ!
401:仕様書無しさん
08/07/30 00:52:25
よそう、GAYダ!
402:仕様書無しさん
08/07/30 02:14:08
>>399
納品後ですが、何か?
しかも納品後すぐとかじゃなくて、数ヶ月たってとかだったり、他の納品先だと
そんなこと起きなかったりとかで調査だけでも結構かかりましたが。
403:仕様書無しさん
08/07/30 02:16:01
>>402
受け入れ検査終了後なら別料金もらってんだろ。
いいじゃん仕事あって。
404:仕様書無しさん
08/07/30 18:45:40
>>388
>信頼性が求められるシステムでは、テストをしない開発手法もある。
ネタにしてはよく出来てる手口。
405:仕様書無しさん
08/07/30 21:15:43
>>395
で、信頼性はどう定義するんだ?
406:388
08/07/30 23:03:31
>>397
限られた前提条件・限られた入力値・限られた入力値組み合わせでテストをして
その機能が、全て正しく動くと思ってる? テストが何たる物か分かっていない証拠だな
>>404
自分の知識で分からないものはネタか!やっぱりこんな奴がいるんだ
例を出したんだから、調べれば分かると思うが。
>>405
俺に聞いても、プログラムの信頼性は上がらんだろう、自分で考えないと。
407:仕様書無しさん
08/07/30 23:07:51
>>406
誰も信頼性の上がる方法なんて聞いてない。
信頼性の定義を聞いているのがわからないのか?
408:仕様書無しさん
08/07/30 23:09:50
>>406
お前もちゃんと調べてから例出しな
409:仕様書無しさん
08/07/30 23:10:08
>>406
全て動くなんて言ってないが。
ファビョるのもたいがいにしろよ。
410:388
08/07/30 23:19:22
>>407
>信頼性の定義を聞いているのがわからないのか?
分かって書いているんだが、分からないのか?
>>408
調べても分からなかったのか?俺はこれ以上教えるつもりはないから
>>409
>全て動くなんて言ってないが。
だから、テストでは信頼性は確保出来
411:仕様書無しさん
08/07/30 23:20:59
>>信頼性の定義を聞いているのがわからないのか?
>分かって書いているんだが、分からないのか?
どこに書いたんだ?
412:仕様書無しさん
08/07/30 23:21:48
駄目だこいつ。
413:仕様書無しさん
08/07/30 23:22:33
テストの前にソースの読み直しをお願いします
先輩
414:仕様書無しさん
08/07/30 23:23:52
単純リプレースとか言って営業がとってくる仕事ほど
前の機能をちゃんと満たしてるか(正しく動作するか?)って意味で
テストが重要、
って口をすっぱくして言ったんだがヌルーされた。
マシン->マシンでコピーして、簡単に動作確認すればいい
だってさ
まぁ、うまくいけばいいんだけどね。。。その時期夏休みとって携帯電源切っとこう
415:仕様書無しさん
08/07/30 23:23:58
原子力発電所のソフトウェア開発について議論するスレじゃないよ
416:仕様書無しさん
08/07/30 23:24:26
>>410
394にまともに答えられない人に教えてもらう事無いと思うよw
417:仕様書無しさん
08/07/30 23:25:44
何手法だか知らないが、その手法でぬるいメガプロジェクトでも回してみればいいさ。
418:仕様書無しさん
08/07/30 23:40:28
KKDは勘と経験と度胸による見積もり法です
419:仕様書無しさん
08/07/30 23:40:45
それ
なんて
みずぽ?
420:388
08/07/31 00:05:03
>>411
>>どこに書いたんだ?
信頼性の定義は書いていない
>>412
>駄目だこいつ。
そうだな
>>413
>テストの前にソースの読み直しをお願いします
読み直しは大事だと思う、テストよりも
>>414
何処でも営業は同じ、そんなもん
>>415
ソフトウェアの話じゃないのか?
>>416
教えるつもりもないから大丈夫
>>417
そこまで信頼性を求められるプロジェクトは、ほとんどない
>>418
勘・経験・度胸は大切だと思うよ、マネジメントは人間性が一番重要だと思う
>>419
???
421:仕様書無しさん
08/07/31 00:10:24
>>420
聖徳太子現る
明日は合コンだってさ、木曜だしなーーー
女の子たちの接客上手をテストしてやるぜ~
422:仕様書無しさん
08/07/31 13:06:27
>>420 からおじゃば臭がするのは気のせいか?
423:仕様書無しさん
08/07/31 19:21:50
気のせいじゃなくね
424:仕様書無しさん
08/07/31 20:04:06
>>421
どこのキャバでやんの?
425:仕様書無しさん
08/07/31 20:39:41
>>420
おじゃばとしては、どういうテスト手法を理想としてんの?
426:仕様書無しさん
08/07/31 20:43:06
>>422
いや、ハカセじゃないのかシステム工学を語りたいんだろう
でもハカセはアホだから違うかw
427:仕様書無しさん
08/07/31 20:48:28
>>425
教えてやろう君にはすばらしい餌だなw
428:仕様書無しさん
08/07/31 20:52:52
>>426
お前、おじゃばだろ
429:仕様書無しさん
08/07/31 22:14:57
>>424
キャバじゃないし、今日でもなかった・・・
だれかおれの視力、聴力、記憶力をテストしてくれ
430:仕様書無しさん
08/07/31 22:18:40
>>429
つ URLリンク(homepage3.nifty.com)
431:仕様書無しさん
08/08/01 03:03:06
テストしてほしけりゃ金よこせ
432:仕様書無しさん
08/08/01 03:36:48
まともにテストできるか能力を示せ。
433:388
08/08/02 15:13:28
テストは限られたリソースの中で、いかに効率良く不具合を見つけるかが重要
例えば、同じプログラムをテストして
「Aは10件のテストケースで5件のバグが見つけた」
「Bは100件のテストケースで10件のバグが見つけた」
では、Bの方がAより残りのバグも少ないので信頼性のあるプログラムになるが
テストとしては、半分の確率でバグを見つけたAの方が、「良いテスト」と言える
つまり、テストは効率性が重要で、プログラムの信頼性は考えない
(バグを多く見つけるかでは無く、「"効率的"」にバグを多く見つけるかが重要)
同値テストや限界値テストなどのテストテクニックも、バグを効率に見つける為に考え出されたもの
434:仕様書無しさん
08/08/02 16:18:18
なるほどね。
おじゃばという人物は、コミュニケートする気はないわけだ。
相手とちゃんとやりとりしたい訳じゃない。
単に「自分は知識があるのだ、おまえらより優れているのだ」と思っていて、
その優れた俺様の知識をひけらかし(たつもりになっ)て、気持ちよくなってるだけ。
その過剰な自己過信が揺らぐことも、基本的にはなくて、
それ故に、主張が基本的にいつでも一方的で、言いたいことを言うだけ。
使いようによっては、存在に意味を持たせる事は可能かもしれないけど、
人間的にはゴミだなぁ。w
435:仕様書無しさん
08/08/02 16:23:25
Aの方が効率悪いじゃん?
なんでBは100件もこなせてるのに
Aは10件しかこなせなかったんだ?
リソース一緒なのに。
436:仕様書無しさん
08/08/02 16:44:08
>>388
節子、それ、テストやない。デバッグや。
437:仕様書無しさん
08/08/02 19:52:15
>>435
10件辺り5件も不具合出りゃあ、テスト中止だろwww
50%なんてどんだけボロボロなんだよwww
438:80
08/08/03 00:48:44
>>437
>>435 の例は、
・同じプログラムなら網羅できたとしてテストケースの数は同じになる。
・テストケース数=1000件
・実際の不具合の数=20件
テストA:
テストケースの中から10件を選択してテストを実施->不具合5件発見
テストB:
テストケースの中から100件を選択してテストを実施->不具合10件発見
プログラマーが嫌うような意地悪なテストから実施すると不具合は見つかり
やすいとか、やりようによっては早期に不具合を発見できるという意味なのでは?
さらに、テストケースの粒度や内容をコントロールすれば効率はさらに
上がると思う。
439:80
08/08/03 01:17:35
屁理屈といわれそうだが、言葉の定義だけで言うなら
「信頼性=故障しにくい事」
故障とは
1. 機械や身体などの機能が正常に働かなくなること。
2. 物事の進行が損なわれるような事情。
3. 異議。苦情。
1. の意味だと
ハードウェアシステムの場合は、劣化などでそのうち故障する。
ソフトウェアシステム(プログラム)の場合は、劣化などはしないので
故障しない。
ソフトウェアの不具合は、2. の意味と考えられる。で、実際には、
3の苦情を指すんじゃなかろうか?
つまり、苦情の件数が少ないほど信頼性が高いと考えられる。
で、
A. 頻繁に使用されるある1つの機能に不具合がある
B. たまに使用されるある2つの機能に不具合がある
C. 滅多に使用されないある10の機能に不具合がある
を考えた場合、A, B, Cのどれを見つけるのが実際に利益があるのか?
を考えるとわかりやすいかもしれない。
なので、 >>435 の言う「テストの効率」は、もっと深く考慮されるべき
だと思う。
蛇足だが、
あるボタンを連打すると発生する不具合をテスト自動化で見つけたが
人間業では決して発生させることができない不具合だったので修正を
見送った経験がある。
440:仕様書無しさん
08/08/03 01:21:11
>>435じゃなくて>>433な。
441:仕様書無しさん
08/08/03 01:25:14
>>438
そんな机上論、幾ら並べても無意味。
何故って?
不具合の数に全容なんて無いからさ
その「実際の不具合の数」自体が空論
テスト方法変えて出てくるのは、異なる不具合であり、全容の一部が見えたわけではない。
442:80
08/08/03 01:36:54
>>440
訂正サンキュー。
ついでに補足
滅多に使用されない機能に致命的な不具合がある場合が一番厄介。
しかも、要求にはない機能が盛り込まれる場合、つまり、想定外の使い方
をされるのは、本当に厄介だ。
要求に無い機能(設計の段階で暗に入り込んだ機能)は、テストから漏れる
事が多いと思う。で、うちでは、繰り返し型なので、この手の潜在的な機能は、
(気付けば)要求としてとらえることにしている。
443:80
08/08/03 01:53:57
>>441
「ソフトウェアの信頼性ほど信頼性の低いものはない」と俺も思う。
不具合密度がどーとか経営陣や顧客に嘘くさい説明はできても自分自身は
納得していない。なので、実際には、統計的な手法からは距離を置いている。
持論で申し訳ないが、俺は、
「ソフトウェアの信頼性=クレーム処理にかかった費用の少なさ」
と考えている。
極論すると
・ユーザが発見できない不具合は不具合とはみなさない。
(無実ではないが無罪。飲酒運転も逮捕されなければOK的な・・・)
・要求にない機能は、一切入り込まないようにする。
てな感じかな。
444:仕様書無しさん
08/08/03 02:21:12
>>443
そういうプログラム引き継がされて爆弾爆発させたら
爆弾仕込んだヤツは無罪で爆発させたヤツが
全部罪をかぶることになる
この図式はなんとかならないかなあ
445:仕様書無しさん
08/08/03 02:24:47
まあ、完全にBUGを潰す作業をいつまでも行っていたら、永久に製品が出せないからね。
完全にBUGの無いプログラムなんて存在しないからね。
もしBUGが一切無いプログラムがあったとしたら、それは検査方法が間違っているかテスト結果にねつ造があるかのどちらかさ。
446:80
08/08/03 02:45:56
以前にも書いたけど、テストだけを頑張るだけではだめだと思う。
部分最適化じゃなくて全体最適化ね。
以下は、テストではなく設計で逃げたケースの事例。
要求
「何年も24時間連続稼働させないといけないシステム」
設計
・非稼働時に定期的にこっそり再起動
・異常終了した場合はこっそり再起動
100%絶対に異常終了しない設計にするとテストが大変(証明できない)ので
設計で対策をこうじた。画面はあれ?ってな感じになるけどしばらくすると
復帰する。今のところクレームは無い。
447:仕様書無しさん
08/08/03 10:42:24
>>80
能書き垂れる前に、1000万行のシステムで何件のテストケースを実行して、何件のバグが発生したのか早く教えろ
448:仕様書無しさん
08/08/03 10:56:30
>>446
死ぬほどよくあるインフラ構成を偉そうに語る辺り働いてないか末端PGでしょ。
しかも、いきなり「非稼働時」とかまともに説明出来てないしw
インフラ構成に頼ったシステム安定性なんて無いに等しい
449:仕様書無しさん
08/08/03 11:04:28
>>436
なるほど。>>388を直してみた。
--------
今日初めて見たが、みんな何か勘違いしてないか?
デバッグで信頼性は上げられない、デバッグは
「このプログラムにはバグがあるます」を実証するもので
バグを沢山検出したからと言って、そのプログラムには
もうバグが存在しないと言う実証にはならない。
実際は逆で、統計的に見るとバグ密度の多いプログラムほど
残りの潜在バグが多く含まれている。
デバッグでは信頼性は旦保できない為、極度に
信頼性が求められるシステムでは、デバッグをしない開発手法もある。
450:仕様書無しさん
08/08/03 11:45:31
>>449
あ すげーまともな文章になったww
451:80
08/08/03 16:25:33
>>448
インフラじゃないけど・・・。全然、意味通じてないみたい。
俺、文章力自信なくしてきた。
452:80
08/08/03 16:51:01
>>448
真面目に読んでくれているみたいだな。
非稼働ってのは変だな。よーは、ユーザーがシステムを使用していない
隙間の時間ということ。
あと、システムと書いたけど厳密には、ソフトウェアシステムね。
自己診断機能と自己修復機能を連携させてるよーな感じのシステム。
実際には、ソフトが原因で異常終了することはないんだけど、
うちは、デバイスがくっついてるからそいつらのせいでシステムが
落ちたりする。
デバイス側の不具合により通信系が異常をきたした場合・・・・
ごめん、長文になりそうだから説明止めとく。
453:388
08/08/03 18:19:20
>>439
>つまり、苦情の件数が少ないほど信頼性が高いと考えられる。
それは違う「原子力発電所の緊急炉停止システム」みたいな
稼動する事がまれで、稼動での不具合が致命的になるケースもある
苦情の件数など関係なく、信頼性は稼動前から求められている
>>436,449,450
テストとデバッグは別もの
454:448
08/08/03 18:41:06
>>452
余計おかしいだろ。
>要求「何年も24時間連続稼働させないといけないシステム」
>非稼働ってのは変だな。よーは、ユーザーがシステムを使用していない隙間の時間ということ。
要求満たしてないのはお話しにならないよね?
上の文が出るって事は仕様を修正した訳でもないし。
>うちは、デバイスがくっついてるからそいつらのせいでシステムが
>落ちたりする。
この1行でもうお腹一杯です・・・
455:仕様書無しさん
08/08/03 19:18:07
最近話題の地震速報とかか?
456:仕様書無しさん
08/08/03 20:03:05
>>453
> テストとデバッグは別もの
正解。よくできました。
お前自分が書いたレスよく読んでみろ。
テストとデバッグの違いの何たるかが解ってない奴の発言だ。
勉強して出直して来い。
457:388
08/08/03 22:14:06
>>456
それは間違い、俺が書いたものを理解出来ないだけの話
458:仕様書無しさん
08/08/03 22:33:42
>>457
だとしたら日本語の書き方を勉強して出直して来い。
459:388
08/08/03 23:17:19
>>458
それも違う、そっちが知識が無いから理解出来ないだけの話
システム工学系の話だから、知識がない人とは話が噛み合わない
460:仕様書無しさん
08/08/03 23:27:23
理解出来てたら簡潔に説明できる。
理解出来てないから伝わらないと教わった俺はいい先生に出会えてたんだなw
461:仕様書無しさん
08/08/03 23:35:54
なんかいつのまにか80:その他大勢
みたいな流れになってしまったな
おれとしては80みたいな特異な例よりも
ふつーに自分の現場では・・・みたいなノリが好きなんだが・
462:仕様書無しさん
08/08/04 00:34:05
自分の話が分かってもらえないなら
まずどうすれば分かってもらうかを考えるべき
分かってもらいたいのであればな。
463:仕様書無しさん
08/08/04 01:15:35
「信頼性」の定義が述べられない以上
>>388の話には何の主張も存在していない。
故に誰にも理解できるはずがない。
464:仕様書無しさん
08/08/04 01:27:15
『HAYST法』ってなんて読むのか知っている方いますか??
465:80
08/08/04 07:01:35
>>453
繰り返すが、ソフトの信頼性は、苦情の件数ではなくて以下と
俺は、考えている。
「ソフトウェアの信頼性=クレーム処理にかかった費用の少なさ」
「原子力発電所の緊急炉停止システム」のような重要な機能は、
不具合が現実のものとなった時、クレーム処理に相当金がかかるだろう。
よって、網羅的にテストすべきだと思う。
対投資効果的に
誤解があるようだけど、クレームは、あくまでも結果。
「クレーム処理費用が高くつきそうな不具合を発生させる可能性のある
機能のテストケースをきっちりやれば、絶望的な数のテストケース全部
はやらなくてもいいんじゃないか?」と言ってるだけ。
クレーム処理で高くつく機能は、顧客要求にある機能とリスクに関する機能
とかね。
466:80
08/08/04 07:04:16
>>454
悪いが、たぶん俺と >>454 はドメインが違いすぎると思う。
「顧客要求≒真の要求」とだけ書いとく。
467:80
08/08/04 07:25:53
>>460
横やりで悪いが。
そんなに単純なものじゃないと思うぞ。
システムのアーキテクチャは複数のビューで相補的にモデル化される事が
ある。エンドユーザ、プログラマー、システムエンジニア、アナリスト・・・
といった立場によって、「見方」が違うわけ。
話題がプログラミングならビューは「プログラマ」だけで済むので
混乱は少ないが、「テスト」は裏返すと要求でもあるので、いろんな利害
関係者が混ざってややこしい。
理解にも種類があるんじゃないか?
468:80
08/08/04 07:44:33
>>464
俺は、ヘイストと読んでるが・・・。自信はない。
別に否定するつもりはないが、数あるテスト手法の一つだな。
HAYST法は、上流工程がパーフェクトな場合に生きる手法だと思う。
469:仕様書無しさん
08/08/04 21:23:22
隔離スレが必要なレベルだな・・・