このスレはクソコードとは何かを考えるスレです。
・親クラスが子クラスに依存する処理を持つコード
例...社員クラスを継承した正社員クラスと派遣社員クラスがあり、社員クラスが正社員クラスの知識を持つ状況
・staticにするべきではないモデルにまでstaticにする人
例...社員クラスのメソッドを全てstaticにしたり、社員クラスにシングルトンパターンに相応するものを適用する人
等、クソコードを見た時に「あっ、これクソコードだ」って認識する根拠を挙げていきましょう。
探検
クソコードとは何か
■ このスレッドは過去ログ倉庫に格納されています
2021/01/30(土) 17:33:05.78ID:BjNTZWUI
436デフォルトの名無しさん
2021/02/19(金) 06:52:05.98ID:zJ55MHzK437デフォルトの名無しさん
2021/02/19(金) 07:43:49.70ID:tQjoVXv/438デフォルトの名無しさん
2021/02/19(金) 07:48:43.11ID:tQjoVXv/ 設計書
→コード→テスト
→テスト手順書→レビュー
で済むはずが
設計書
→コード→テスト
→テストコード
→レビュー
→テスト
になってるんだろ
テストコードがソースコードである以上テストしないわけにはいかんだろ
→コード→テスト
→テスト手順書→レビュー
で済むはずが
設計書
→コード→テスト
→テストコード
→レビュー
→テスト
になってるんだろ
テストコードがソースコードである以上テストしないわけにはいかんだろ
440デフォルトの名無しさん
2021/02/19(金) 08:24:00.57ID:IIFo83yT クソ言語とは
PHP、Swift、Python
JavaScriptも昔はかなりクソだったが完全に復活した
Obj-CはSwiftに取って代わられることは無かった、コード効率が良すぎる
PHP、Swift、Python
JavaScriptも昔はかなりクソだったが完全に復活した
Obj-CはSwiftに取って代わられることは無かった、コード効率が良すぎる
441デフォルトの名無しさん
2021/02/19(金) 08:51:26.62ID:f7HYpZpv >>438
レビューのあとの「テスト」ってビルドボタンを押す度に走るテストのこと?
それとと、gitとかにcommitする度に走るテストのこと?
作業をカテゴリ分けすると増えているように見えるだけで、作業量は減っているように見えるが
途中からこのスレ来たから、流れがわかっていない
レビューのあとの「テスト」ってビルドボタンを押す度に走るテストのこと?
それとと、gitとかにcommitする度に走るテストのこと?
作業をカテゴリ分けすると増えているように見えるだけで、作業量は減っているように見えるが
途中からこのスレ来たから、流れがわかっていない
442デフォルトの名無しさん
2021/02/19(金) 08:52:42.54ID:hd6MOPhf443デフォルトの名無しさん
2021/02/19(金) 08:54:08.49ID:f7HYpZpv444デフォルトの名無しさん
2021/02/19(金) 09:01:26.16ID:f7HYpZpv445デフォルトの名無しさん
2021/02/19(金) 10:36:32.08ID:zJ55MHzK >>438
> 設計書
> →コード→テスト
> →テスト手順書→レビュー
もうこの時点で意味不明w
普通は
1) 設計書 ⇒ コード(⇒ レビュー)
2) 設計書 ⇒ テスト手順書 ⇒ レビュー
3) 手動テスト(工数大)
だろ
で、自動テストなら
1) 設計書 ⇒ コード
2) 設計書 ⇒ テストコード ⇒ レビュー
3) 自動テスト(工数ほぼ "0")
要するにテストコードは計算機に対するテスト手順書だから手間は変わらんよ
むしろプログラマーだと仕様書よりコード書く方が楽と思う奴もいっぱいいるしw
あとどっちもテストと書いてるけど手動テストと自動テストでは工数が全く違うから同じ「テスト」という言葉でごまかすなよ
なおテストコードはデバッグが必要と主張するなら>>255にちゃんと反論しろ
> 設計書
> →コード→テスト
> →テスト手順書→レビュー
もうこの時点で意味不明w
普通は
1) 設計書 ⇒ コード(⇒ レビュー)
2) 設計書 ⇒ テスト手順書 ⇒ レビュー
3) 手動テスト(工数大)
だろ
で、自動テストなら
1) 設計書 ⇒ コード
2) 設計書 ⇒ テストコード ⇒ レビュー
3) 自動テスト(工数ほぼ "0")
要するにテストコードは計算機に対するテスト手順書だから手間は変わらんよ
むしろプログラマーだと仕様書よりコード書く方が楽と思う奴もいっぱいいるしw
あとどっちもテストと書いてるけど手動テストと自動テストでは工数が全く違うから同じ「テスト」という言葉でごまかすなよ
なおテストコードはデバッグが必要と主張するなら>>255にちゃんと反論しろ
446デフォルトの名無しさん
2021/02/19(金) 10:53:49.57ID:IIFo83yT テストコードは暇なら書くレベルの価値しかない。
テスト仕様書に漏れがない事が最も重要。
実データで実動作で検証するのが納品条件。
テスト仕様書に漏れがない事が最も重要。
実データで実動作で検証するのが納品条件。
447デフォルトの名無しさん
2021/02/19(金) 11:02:12.72ID:8jP4Tkvg 実機繋がってないと無意味なテストにしかならんの多いのよな
448デフォルトの名無しさん
2021/02/19(金) 11:29:00.52ID:RipgTCDE >>438
> テストコードがソースコードである以上テストしないわけにはいかんだろ
だからいらない
馬鹿なのかな?
テストコードのテストなんてお前したことないだろ?
世の中の誰もしたことないわw
そんなものありはしないんだから
> 設計書
> →コード→テスト
> →テスト手順書→レビュー
> で済むはずが
だめでしょ?レビューが正しいかをテストしなきゃwww
> テストコードがソースコードである以上テストしないわけにはいかんだろ
だからいらない
馬鹿なのかな?
テストコードのテストなんてお前したことないだろ?
世の中の誰もしたことないわw
そんなものありはしないんだから
> 設計書
> →コード→テスト
> →テスト手順書→レビュー
> で済むはずが
だめでしょ?レビューが正しいかをテストしなきゃwww
449デフォルトの名無しさん
2021/02/19(金) 11:45:25.31ID:3OrjGIvj450デフォルトの名無しさん
2021/02/19(金) 11:47:16.24ID:3OrjGIvj 間違えた
レビューが正しいかのテストが適切かどうかもテストしよう
だった
レビューが正しいかのテストが適切かどうかもテストしよう
だった
451デフォルトの名無しさん
2021/02/19(金) 11:50:29.27ID:RipgTCDE レビューした結果もちゃんと記録しないといけないからな
レビューの結果をドキュメントとして残すなら
そのドキュメントのレビューも必要になる
当然の帰結だ
レビューの結果をドキュメントとして残すなら
そのドキュメントのレビューも必要になる
当然の帰結だ
452デフォルトの名無しさん
2021/02/19(金) 11:52:44.73ID:wrciXaB+ 単体テストの範囲でこんな凝った仕組みいらんよ
一番やりたい結合は今度セッティングのが時間かかるんで
一番やりたい結合は今度セッティングのが時間かかるんで
453デフォルトの名無しさん
2021/02/19(金) 12:21:07.58ID:RipgTCDE 「結合テストはすごく時間がかかる」
え?なんで?
「単体テストでやるべきことも
全部結合テストで手動でテストやってるからさ!」
↑馬鹿じゃね?
え?なんで?
「単体テストでやるべきことも
全部結合テストで手動でテストやってるからさ!」
↑馬鹿じゃね?
454デフォルトの名無しさん
2021/02/19(金) 12:30:35.44ID:F46jrkhY 敢えて皆と同じくらいテストコードの書き方を知ってる自分が弁護するけど
class クソクラス
頻繁に仕様が変わるメソッド
クソコード
不具合が生じると仕様が変わるメソッド
クソコード
思考停止でプライベート変数のgetter
思考停止の変数リターン
思考停止でプライベート変数のsetter
思考停止の変数代入
みたいなクラスを単体テストするところを考えてみよう
他の皆の無駄じゃない主張は疑いもなく事実だろうけど、テストコードは無駄という主張はある意味では事実なのだと思う
これは...扱うコードの質の違いが生んだ悲劇
そう、事故だったんだ
テストコード厨呼ばわりについては...うん(諦め)
class クソクラス
頻繁に仕様が変わるメソッド
クソコード
不具合が生じると仕様が変わるメソッド
クソコード
思考停止でプライベート変数のgetter
思考停止の変数リターン
思考停止でプライベート変数のsetter
思考停止の変数代入
みたいなクラスを単体テストするところを考えてみよう
他の皆の無駄じゃない主張は疑いもなく事実だろうけど、テストコードは無駄という主張はある意味では事実なのだと思う
これは...扱うコードの質の違いが生んだ悲劇
そう、事故だったんだ
テストコード厨呼ばわりについては...うん(諦め)
455デフォルトの名無しさん
2021/02/19(金) 12:34:28.76ID:RipgTCDE >>454
テストコードが無駄なケースでは
手動テストも無駄になる
頻繁に仕様が変わるメソッドがあったとして
手動テストをしたら時間の節約になるとでも?
ああ、テストしないってことね(笑)
プロの仕事じゃねーよ
テストコードが無駄なケースでは
手動テストも無駄になる
頻繁に仕様が変わるメソッドがあったとして
手動テストをしたら時間の節約になるとでも?
ああ、テストしないってことね(笑)
プロの仕事じゃねーよ
456デフォルトの名無しさん
2021/02/19(金) 12:43:07.19ID:F46jrkhY457デフォルトの名無しさん
2021/02/19(金) 12:54:53.31ID:F46jrkhY458デフォルトの名無しさん
2021/02/19(金) 13:02:30.29ID:F46jrkhY まず、クラス設計する際にテストコードみたいなコードを書いたりしない?
クラス利用者から見たクラスの使い勝手を確かめる意味で
で、何度も試行錯誤して、素晴らしいクラスモデルができたらテストコードを書いて、その後、実装をして...
この作業プロセスができていないから単体テストは無駄だという主張が生まれたと思っていた
クラス利用者から見たクラスの使い勝手を確かめる意味で
で、何度も試行錯誤して、素晴らしいクラスモデルができたらテストコードを書いて、その後、実装をして...
この作業プロセスができていないから単体テストは無駄だという主張が生まれたと思っていた
459デフォルトの名無しさん
2021/02/19(金) 13:19:31.43ID:IIFo83yT460デフォルトの名無しさん
2021/02/19(金) 14:03:37.42ID:RipgTCDE >>456
そうなんだよな。テストしたつもりになってるんだろうなって思うよ
「手動テストでテストできる!
リリース前に、人を大量に集めて人海戦術でテストするんだ!」
なんて言われたら、バグ出たらどうするの?って聞きたくなる
「バグを直して(そこだけ)テストするだけじゃないか!」っていうだろうな
たぶん、そこだけしかテストして無くて全体の再テストをしないだろう
最後にもう一回テストすればいい? いやいやバグはなくならないんだから
最後なんてありえないだろ
時間がないときは小さいバグは運用でカバーとかいってリリースするんだろ?
そしてあとから修正するんだろ?再テストするだろ?
何回小さいバグを修正する?そのたびに人を大量に集めて人海戦術でテストする?
どんだけ時間とコストがかかるんだよ?
たぶんその答えは
「小さいバグの修正なんだから、たぶん他に影響してないはずだ。動いていればヨシっ」
なんだろ?
プロの仕事じゃねーよ
自動テストしてるプロジェクトでは、一日数回のリリースと全テストを行うことだってある
このスピードに手動テストでは追いつけない
そうなんだよな。テストしたつもりになってるんだろうなって思うよ
「手動テストでテストできる!
リリース前に、人を大量に集めて人海戦術でテストするんだ!」
なんて言われたら、バグ出たらどうするの?って聞きたくなる
「バグを直して(そこだけ)テストするだけじゃないか!」っていうだろうな
たぶん、そこだけしかテストして無くて全体の再テストをしないだろう
最後にもう一回テストすればいい? いやいやバグはなくならないんだから
最後なんてありえないだろ
時間がないときは小さいバグは運用でカバーとかいってリリースするんだろ?
そしてあとから修正するんだろ?再テストするだろ?
何回小さいバグを修正する?そのたびに人を大量に集めて人海戦術でテストする?
どんだけ時間とコストがかかるんだよ?
たぶんその答えは
「小さいバグの修正なんだから、たぶん他に影響してないはずだ。動いていればヨシっ」
なんだろ?
プロの仕事じゃねーよ
自動テストしてるプロジェクトでは、一日数回のリリースと全テストを行うことだってある
このスピードに手動テストでは追いつけない
461デフォルトの名無しさん
2021/02/19(金) 14:39:19.79ID:IIFo83yT 自動テストじゃほとんど何もできない。
日本語/フォント間違えてるとか色違うとかカクカク動くとか。
日本語/フォント間違えてるとか色違うとかカクカク動くとか。
462デフォルトの名無しさん
2021/02/19(金) 14:45:40.28ID:fG69+Z1U しばらくぶりに見たプロジェクトの自動テストが通らないことぐらい
開発現場じゃ常識なんだよ!(パプリカ:DCmini)
開発現場じゃ常識なんだよ!(パプリカ:DCmini)
463デフォルトの名無しさん
2021/02/19(金) 14:48:09.77ID:RipgTCDE464デフォルトの名無しさん
2021/02/19(金) 14:49:14.42ID:RipgTCDE >>462
> しばらくぶりに見たプロジェクトの自動テストが通らないことぐらい
それを手動テストして動いたら面白いなw
まあよくあるよね。本当はバグってるのに
表面上は動いてるように見えちゃう
だから手動テストは駄目なんだよ
> しばらくぶりに見たプロジェクトの自動テストが通らないことぐらい
それを手動テストして動いたら面白いなw
まあよくあるよね。本当はバグってるのに
表面上は動いてるように見えちゃう
だから手動テストは駄目なんだよ
465デフォルトの名無しさん
2021/02/19(金) 14:55:40.06ID:IIFo83yT466デフォルトの名無しさん
2021/02/19(金) 15:01:38.27ID:RipgTCDE 直接変数に値入れるとは?
まさかデバッガ経由でやってんの?
デバッガを使うと挙動が変わるからテストにならない
まさかデバッガ経由でやってんの?
デバッガを使うと挙動が変わるからテストにならない
467デフォルトの名無しさん
2021/02/19(金) 15:01:59.28ID:RipgTCDE テストは本番用ビルドでやるのが鉄則
468デフォルトの名無しさん
2021/02/19(金) 15:03:42.70ID:IIFo83yT >>466
mockかデバッガーで十分です
mockかデバッガーで十分です
469デフォルトの名無しさん
2021/02/19(金) 15:06:22.55ID:IIFo83yT 客を自動テストして欲しいわ、言うことコロコロ変わるからw
470デフォルトの名無しさん
2021/02/19(金) 15:20:06.23ID:LoU7pdW5 判定させたら99.99%がクソレスだった件
471デフォルトの名無しさん
2021/02/19(金) 16:24:05.46ID:RipgTCDE472デフォルトの名無しさん
2021/02/19(金) 17:47:03.42ID:IFuFAMn0 要件を確定させずレスバってプログラマどころじゃないな
しかも平日の昼間から真っ赤ってまともじゃないの自己紹介しているようなもの
しかも平日の昼間から真っ赤ってまともじゃないの自己紹介しているようなもの
473デフォルトの名無しさん
2021/02/19(金) 17:47:13.51ID:ACLJAhWF 自分はアプリ開発と組み込み開発の経験があるけど、Web開発って単体テストやらんの?
Webは、Python+Django、node、古いPHPの入門書を読んだ程度にしか触れないからリアル開発事情に興味がある(開発経験が無い)
Webは、Python+Django、node、古いPHPの入門書を読んだ程度にしか触れないからリアル開発事情に興味がある(開発経験が無い)
474デフォルトの名無しさん
2021/02/19(金) 18:57:54.50ID:Clj7wgUu web開発ってユーザーが入力欄に何を入れてくるかの組み合わせが
膨大になるから、テストも困難になるな。
膨大になるから、テストも困難になるな。
475デフォルトの名無しさん
2021/02/19(金) 18:58:00.55ID:RipgTCDE 単体テストをやらないのはSIerだよ
ああ、いや、エクセルに単体テスト報告書を書くとか
そういう意味でなら単体テストをやってるよw
テストコードを書かない手動テストのことをSIerは単体テストって言ってる
ああ、いや、エクセルに単体テスト報告書を書くとか
そういう意味でなら単体テストをやってるよw
テストコードを書かない手動テストのことをSIerは単体テストって言ってる
476デフォルトの名無しさん
2021/02/19(金) 19:01:29.71ID:RipgTCDE ああ、わかりやすいのが見つかった。これがSIerのいう単体テスト(手動テスト)
【Web系最高って言うけと゛本当なの?】siの5次請けから離脱したエンシ゛ニアか゛話してみた
https://www.slideshare.net/yuukinakajima794/websi-67526868#8
8. てすとほうほう winshot、エクセル、人間 スクショ一枚取り忘れただけでも
テストがやり直しになるプレッシャーと進捗表.xls との戦い テスト結果.xlsが
不要なのでめんどくささがない 開発者が目で見ておk
https://www.slideshare.net/yuukinakajima794/websi-67526868#12
12. ソース修正とかテスト バグが出た!→単体テスト障害報告書.xlsを書く→
必要に応じて単 体テストケース.xlsを直す→上司にお話して単体テスト障害報告
書を確認して貰う→テストをする バグが出た!→直す→必要に応じてテストパターン を
増やす→テストする あまりに、あまりにめんどくさい、進捗表.xlsには障害数も書くのでバグゼロは困るらしい
【Web系最高って言うけと゛本当なの?】siの5次請けから離脱したエンシ゛ニアか゛話してみた
https://www.slideshare.net/yuukinakajima794/websi-67526868#8
8. てすとほうほう winshot、エクセル、人間 スクショ一枚取り忘れただけでも
テストがやり直しになるプレッシャーと進捗表.xls との戦い テスト結果.xlsが
不要なのでめんどくささがない 開発者が目で見ておk
https://www.slideshare.net/yuukinakajima794/websi-67526868#12
12. ソース修正とかテスト バグが出た!→単体テスト障害報告書.xlsを書く→
必要に応じて単 体テストケース.xlsを直す→上司にお話して単体テスト障害報告
書を確認して貰う→テストをする バグが出た!→直す→必要に応じてテストパターン を
増やす→テストする あまりに、あまりにめんどくさい、進捗表.xlsには障害数も書くのでバグゼロは困るらしい
477デフォルトの名無しさん
2021/02/19(金) 19:04:03.28ID:uscWUjsm 田中勇←口だけテストコード大好き変態老人
技術力はゼロwww
技術力はゼロwww
478デフォルトの名無しさん
2021/02/19(金) 19:19:27.73ID:2/3+b4qC >>476
まあそういうテストが必要なフェイズは確かにあるが、その前に自動テスト入れるべきではある。
まあそういうテストが必要なフェイズは確かにあるが、その前に自動テスト入れるべきではある。
479デフォルトの名無しさん
2021/02/19(金) 19:33:50.76ID:RipgTCDE480デフォルトの名無しさん
2021/02/19(金) 20:27:04.98ID:ACLJAhWF >>476
URLの闇が深すぎて怖い
URLの闇が深すぎて怖い
481デフォルトの名無しさん
2021/02/19(金) 20:45:17.65ID:B4GlCKY0 >>473
Ruby on Rails では、minitest/RSpec という2種類のテストフレームワークがある。
単体/システムテストの2つある
Rails 6 からは、環境を丸ごとコピーして、並列テストもできる
TDD では、テストが仕様書。
Excel で管理したりしない
Ruby on Rails では、minitest/RSpec という2種類のテストフレームワークがある。
単体/システムテストの2つある
Rails 6 からは、環境を丸ごとコピーして、並列テストもできる
TDD では、テストが仕様書。
Excel で管理したりしない
482デフォルトの名無しさん
2021/02/19(金) 21:59:46.75ID:zJ55MHzK483デフォルトの名無しさん
2021/02/19(金) 22:05:12.15ID:ACLJAhWF >>481
おお、なんかスピード感あって楽しそうだな
TDDいいよね!本業の組み込み自社開発でも導入した
何で長年気が付かなかったのか不思議なレベル
この手のノウハウは組み込みより圧倒的にWebの方が進んでるから、俺にとっては上位レイヤーの開発ノウハウが新鮮に感じる
おお、なんかスピード感あって楽しそうだな
TDDいいよね!本業の組み込み自社開発でも導入した
何で長年気が付かなかったのか不思議なレベル
この手のノウハウは組み込みより圧倒的にWebの方が進んでるから、俺にとっては上位レイヤーの開発ノウハウが新鮮に感じる
484デフォルトの名無しさん
2021/02/19(金) 22:07:51.51ID:uYMrqqBZ やっぱり単体テストでそこまで用意する意味ねぇって
時間がかかってるのデバイス周り出し及びじゃねぇよコレ
時間がかかってるのデバイス周り出し及びじゃねぇよコレ
485デフォルトの名無しさん
2021/02/19(金) 22:08:44.56ID:/Wn3Sj0O 結合入ってから頑張ろうよ
486481
2021/02/19(金) 22:31:54.64ID:B4GlCKY0 伊藤淳一などが翻訳してる「Everyday Rails - RSpecによるRailsテスト入門」は有名な本
テストに関しては、ソニックガーデンの伊藤淳一の動画・Qiita などを読めばよい
テストに関しては、ソニックガーデンの伊藤淳一の動画・Qiita などを読めばよい
487デフォルトの名無しさん
2021/02/20(土) 00:24:53.76ID:pHrkUBl9488デフォルトの名無しさん
2021/02/20(土) 01:40:17.33ID:LGEbkfhl >>487
いや、それだとレスポンスも早過ぎるしリトライも起きないから何のテストにもなってない
あと何よりデバイス出ないから返ってきて欲しい値を手動で設定するとか苦痛過ぎる
ソフトでset○○って入れた値が次のget○○に反映されるみたいなとこまで作れないやろ
いや、それだとレスポンスも早過ぎるしリトライも起きないから何のテストにもなってない
あと何よりデバイス出ないから返ってきて欲しい値を手動で設定するとか苦痛過ぎる
ソフトでset○○って入れた値が次のget○○に反映されるみたいなとこまで作れないやろ
489デフォルトの名無しさん
2021/02/20(土) 01:44:19.60ID:pHrkUBl9 何のためにモック使ってるんだ?
素人かなぁ
レスポンスの時間を自由に変えられるのがモックの利点だし
リトライする状態を自由に再現できるのもモックの利点だし
デバイスから帰ってきてほしい値を自由に設定できるのもモックの利点
うーん、わかってない人が、意味不明な答えをしてる状態だw
まずそもそもモックはお前が行った問題点を解決するための
ものだということを知りましょう
素人かなぁ
レスポンスの時間を自由に変えられるのがモックの利点だし
リトライする状態を自由に再現できるのもモックの利点だし
デバイスから帰ってきてほしい値を自由に設定できるのもモックの利点
うーん、わかってない人が、意味不明な答えをしてる状態だw
まずそもそもモックはお前が行った問題点を解決するための
ものだということを知りましょう
490デフォルトの名無しさん
2021/02/20(土) 01:45:23.84ID:pHrkUBl9 まあ正確にはスタブだけどね
みんなごっちゃにして使ってるから俺もごっちゃにして使ってるw
みんなごっちゃにして使ってるから俺もごっちゃにして使ってるw
491デフォルトの名無しさん
2021/02/20(土) 01:48:18.86ID:mqOV0mvT 組み込みでは単体テストよりも実機テストが鬼門
どのプロジェクトでも最初は自動化を夢見ても、実現できたプロジェクトは少ない
自動化ぶん回してたら発熱して煙出てたり電源不足で再起動しちゃったり他の開発機器のノイズ拾ってコケまくったり・・・
どのプロジェクトでも最初は自動化を夢見ても、実現できたプロジェクトは少ない
自動化ぶん回してたら発熱して煙出てたり電源不足で再起動しちゃったり他の開発機器のノイズ拾ってコケまくったり・・・
492デフォルトの名無しさん
2021/02/20(土) 01:54:30.04ID:MdDLRkGY MartinFowlerのMocksAre n't Stubsなど、テストでのモックとスタブに関するさまざまな記事を
読みましたが、それでも違いはわかりません。モックvsスタブ=行動テストvs状態テストと言われ
ますし、ライフサイクルが違うと言われますが、それでも違いはわかりません。
先輩がいつもモックモックモック言うので、すこし嫌になりました。
読みましたが、それでも違いはわかりません。モックvsスタブ=行動テストvs状態テストと言われ
ますし、ライフサイクルが違うと言われますが、それでも違いはわかりません。
先輩がいつもモックモックモック言うので、すこし嫌になりました。
493デフォルトの名無しさん
2021/02/20(土) 02:12:02.30ID:pHrkUBl9 >>491
組み込みのハードの部分が多いのかソフトの部分が多いのか
ハードの部分が多いなら、そりゃソフトウェアのテストじゃなくてハードウェアのテストだ
だが組み込みでもソフトウェアは多いだろ?
そっちはハードウェアなしでテストできる
めんどくさいからソフトウェア部分も
ハードウェア使ってテストするんだよ
時間がかかってしょうがない
っていうのならソフトウェア部分も
ハードウェア使ってじゃないとテストできないのなら
そりゃそうだろうよとしかw
組み込みのハードの部分が多いのかソフトの部分が多いのか
ハードの部分が多いなら、そりゃソフトウェアのテストじゃなくてハードウェアのテストだ
だが組み込みでもソフトウェアは多いだろ?
そっちはハードウェアなしでテストできる
めんどくさいからソフトウェア部分も
ハードウェア使ってテストするんだよ
時間がかかってしょうがない
っていうのならソフトウェア部分も
ハードウェア使ってじゃないとテストできないのなら
そりゃそうだろうよとしかw
494デフォルトの名無しさん
2021/02/20(土) 02:24:18.76ID:ZkUFennS >>489
いやーやめた方がいい
値1つとってもそう単純じゃない
例えばある値を3.223から増加量0.005で7まで変化させたいと
その時6.997で装置は処理を止めましたと
これはソフトからしたらクソでも多分バグじゃねぇんだわ
じゃあ、増加量0.001にしたら7になるのかと?
今度は6.995で止まったと
まだ足せんじゃん足せよゴミカスと言いたいが
デバイスのハード的なもんを無理矢理デジタルに直してるようなのはこんなのが限界のときあるんだわ
精度も条件によって変わったりね
多分ハードの値って一つ一つこういう変な癖があって何でもかんでもうまくはいかないと思うよ
ってなるとやっぱり重要なのって結合なんだよね
デバイスと絡んだ値があるとこはすんなりいかないことが多い
いやーやめた方がいい
値1つとってもそう単純じゃない
例えばある値を3.223から増加量0.005で7まで変化させたいと
その時6.997で装置は処理を止めましたと
これはソフトからしたらクソでも多分バグじゃねぇんだわ
じゃあ、増加量0.001にしたら7になるのかと?
今度は6.995で止まったと
まだ足せんじゃん足せよゴミカスと言いたいが
デバイスのハード的なもんを無理矢理デジタルに直してるようなのはこんなのが限界のときあるんだわ
精度も条件によって変わったりね
多分ハードの値って一つ一つこういう変な癖があって何でもかんでもうまくはいかないと思うよ
ってなるとやっぱり重要なのって結合なんだよね
デバイスと絡んだ値があるとこはすんなりいかないことが多い
495デフォルトの名無しさん
2021/02/20(土) 02:32:10.26ID:mqOV0mvT >>493
落ち着け、後半日本語めちゃくちゃだぞ・・・
落ち着け、後半日本語めちゃくちゃだぞ・・・
496デフォルトの名無しさん
2021/02/20(土) 02:33:03.30ID:56yjs2OO497デフォルトの名無しさん
2021/02/20(土) 02:35:06.23ID:/l8xxO7y498デフォルトの名無しさん
2021/02/20(土) 02:37:16.94ID:3iHtf1vt >>492
マーチンさんはその記事を出すのが遅かったよねw
モックという言葉が広く普及してしまった後だった
rspec界隈?ではテストダブルという言葉を使って言葉を整理しようとしたが
一部でのみ使われて広く普及していない
俺的には、ダミーの値を返すオブジェクトがスタブ
スタブの反対はスパイで、スパイは呼び出された回数や引数を記録しておいて
あとで検証できるもの
スタブとスパイをあわせてモックとしたほうが良かった気がするな
世間的には、スタブ vs モック(スパイはモックの高機能版)と考えればいいよ
スパイは後から検証できるように便利なオブジェクトになってるが
モックはそんな機能がない、もしくは低機能。
だから「テスト対象のコード」から「モック」を呼び出した時に渡されたデータの検証ぐらいしかできない
またスパイもモックも結局はダミーの値を返さないとテスト対象は動かないので多くの場合スタブの機能も兼ねてる
スタブ・・・テスト対象がスタブを呼び出し、スタブはダミーの値を返すだけ
モック・・・テスト対象がモックを呼び出し、その内容をテストする+スタブ(必須ではないが多くの場合必要)
スパイ・・・テスト対象がスパイを呼び出し、その内容を記録しておいて後からテストする+スタブ(必須ではないが多くの場合必要)
テストダブル・・・上記の総称
マーチンさんはその記事を出すのが遅かったよねw
モックという言葉が広く普及してしまった後だった
rspec界隈?ではテストダブルという言葉を使って言葉を整理しようとしたが
一部でのみ使われて広く普及していない
俺的には、ダミーの値を返すオブジェクトがスタブ
スタブの反対はスパイで、スパイは呼び出された回数や引数を記録しておいて
あとで検証できるもの
スタブとスパイをあわせてモックとしたほうが良かった気がするな
世間的には、スタブ vs モック(スパイはモックの高機能版)と考えればいいよ
スパイは後から検証できるように便利なオブジェクトになってるが
モックはそんな機能がない、もしくは低機能。
だから「テスト対象のコード」から「モック」を呼び出した時に渡されたデータの検証ぐらいしかできない
またスパイもモックも結局はダミーの値を返さないとテスト対象は動かないので多くの場合スタブの機能も兼ねてる
スタブ・・・テスト対象がスタブを呼び出し、スタブはダミーの値を返すだけ
モック・・・テスト対象がモックを呼び出し、その内容をテストする+スタブ(必須ではないが多くの場合必要)
スパイ・・・テスト対象がスパイを呼び出し、その内容を記録しておいて後からテストする+スタブ(必須ではないが多くの場合必要)
テストダブル・・・上記の総称
499デフォルトの名無しさん
2021/02/20(土) 02:41:28.39ID:WavZWbYg >>494
> いやーやめた方がいい
やめた方がいい理由は?
> 値1つとってもそう単純じゃない
> 例えばある値を3.223から増加量0.005で7まで変化させたいと
> その時6.997で装置は処理を止めましたと
> これはソフトからしたらクソでも多分バグじゃねぇんだわ
バグじゃないなら、その値でテストするだけのこと
お前は、6.997でテストしたか? 6.995でテストしたか?
してないよな。だって装置が都合よくそんな値で止まってくれないんだから
ハードウェアを使って手動でテストすると 6.995 や 6.997 で止めるのが難しいから
テストの時間がかかる。そういう場合にモックを使うと 6.995 や 6.997 の値を作り出すことができる
単体テストであればデバイスの値を自由に作ることができる
> いやーやめた方がいい
やめた方がいい理由は?
> 値1つとってもそう単純じゃない
> 例えばある値を3.223から増加量0.005で7まで変化させたいと
> その時6.997で装置は処理を止めましたと
> これはソフトからしたらクソでも多分バグじゃねぇんだわ
バグじゃないなら、その値でテストするだけのこと
お前は、6.997でテストしたか? 6.995でテストしたか?
してないよな。だって装置が都合よくそんな値で止まってくれないんだから
ハードウェアを使って手動でテストすると 6.995 や 6.997 で止めるのが難しいから
テストの時間がかかる。そういう場合にモックを使うと 6.995 や 6.997 の値を作り出すことができる
単体テストであればデバイスの値を自由に作ることができる
500デフォルトの名無しさん
2021/02/20(土) 02:44:52.28ID:WavZWbYg >>497
> でもやってみないと具合がわからん
やってみれば具合がわかるだろ
そしたらそれをテストコードにするだけだろ
おまえはやってみて、その場でコード修正して終わりか?
リグレッションテストはしないのか?当然するよな
別の機種のための修正が、別の機種で不具合を起こす場合
Aでうまく行かない→修正
Bでうまく行かなくなった→修正
Aでまたテストして→修正
Bでも大丈夫かな?→修正
って機種を何度も変更して、同じテストを何度も「手動」で繰り返すんだろ?
テストコードにしてれば、この繰り返しを
自動でできるって言ってるんだよ
> でもやってみないと具合がわからん
やってみれば具合がわかるだろ
そしたらそれをテストコードにするだけだろ
おまえはやってみて、その場でコード修正して終わりか?
リグレッションテストはしないのか?当然するよな
別の機種のための修正が、別の機種で不具合を起こす場合
Aでうまく行かない→修正
Bでうまく行かなくなった→修正
Aでまたテストして→修正
Bでも大丈夫かな?→修正
って機種を何度も変更して、同じテストを何度も「手動」で繰り返すんだろ?
テストコードにしてれば、この繰り返しを
自動でできるって言ってるんだよ
501デフォルトの名無しさん
2021/02/20(土) 06:09:56.09ID:Mzr1Xumx >>477
それ誰?
それ誰?
502デフォルトの名無しさん
2021/02/20(土) 09:25:13.41ID:EvFy/+SD503デフォルトの名無しさん
2021/02/20(土) 09:49:08.60ID:xSEyIqRP504デフォルトの名無しさん
2021/02/20(土) 09:55:55.93ID:O4DpQFuV クソコードとは何か
505デフォルトの名無しさん
2021/02/20(土) 10:00:30.75ID:xSEyIqRP テストが手動でテストをするのに膨大な時間がかかるコード
506デフォルトの名無しさん
2021/02/20(土) 10:03:35.37ID:EvFy/+SD >>503
え?モックとか言うやつの話っしょ?
え?モックとか言うやつの話っしょ?
507デフォルトの名無しさん
2021/02/20(土) 10:04:35.86ID:EvFy/+SD むしろこういう複雑な動作されるのはそもそも単体じゃないじゃん
508デフォルトの名無しさん
2021/02/20(土) 10:06:03.68ID:xSEyIqRP509デフォルトの名無しさん
2021/02/20(土) 10:07:47.77ID:xSEyIqRP >>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
510デフォルトの名無しさん
2021/02/20(土) 10:24:31.88ID:MdDLRkGY >>498
ありがとうございます。だけどプロトコルバッファーなどgRPCで生成されるコードにもStubって使うので
もう全部Stubで広義的にはいいじゃんって思います。付加機能があったり、ライフサイクルが複雑であって
テストコードの話に限定できてメインソースじゃない単語だと「モック」と言われてるような気もします。
先輩が見てるといけないので、先輩が嫌いな訳じゃないです、モックモックモックいうのはイライラするので
やめてほしいです。ここで「手動テストは○○○(否定表現)」を連呼する人が先輩に似てます。
ありがとうございます。だけどプロトコルバッファーなどgRPCで生成されるコードにもStubって使うので
もう全部Stubで広義的にはいいじゃんって思います。付加機能があったり、ライフサイクルが複雑であって
テストコードの話に限定できてメインソースじゃない単語だと「モック」と言われてるような気もします。
先輩が見てるといけないので、先輩が嫌いな訳じゃないです、モックモックモックいうのはイライラするので
やめてほしいです。ここで「手動テストは○○○(否定表現)」を連呼する人が先輩に似てます。
511デフォルトの名無しさん
2021/02/20(土) 10:32:54.85ID:xSEyIqRP 「手動テストは時間がかかる」
これは否定表現じゃないからセーフだなw
これは否定表現じゃないからセーフだなw
512デフォルトの名無しさん
2021/02/20(土) 10:37:02.86ID:MdDLRkGY もうこの際だからハッキリ言うと、先輩、それ誰も知ってるから鬼の首を取ったように言われても
ぼくらは困惑ばかりです。正直ウザいです。みんなから嫌われてます
ぼくらは困惑ばかりです。正直ウザいです。みんなから嫌われてます
513デフォルトの名無しさん
2021/02/20(土) 10:49:31.96ID:EvFy/+SD でもそこまで作って尚まだ単体テストなんだぜソレw
ぜってーねーよw
もう繋げてテストしようよw
無駄だよw
ぜってーねーよw
もう繋げてテストしようよw
無駄だよw
514デフォルトの名無しさん
2021/02/20(土) 10:51:50.41ID:xSEyIqRP なんだ?今まであれだけ言い返してたのに
今度は何も言い返してないではないかw
今度は何も言い返してないではないかw
515デフォルトの名無しさん
2021/02/20(土) 10:56:54.38ID:NUXXCfLF キチガイの巣窟スレ
516デフォルトの名無しさん
2021/02/20(土) 13:03:05.75ID:226xMBL/ もう流れ追うのも面倒になってる奴多いやろこれw
当人同士は必死になっちゃってるんで引けないだろうけど
あとワイの研究結果を勝手に報告するで(`・ω・´)キリッ
適当なソースが思い浮かばなかったんでopenjdkのソースを調査したよ
$ grep --include='*.java' -hroE "new +[^<\( \[]+" jdk-master/src | sed -E 's/new +//g' | sort | uniq -c | sort -nr | head -n 30
5039 String
4884 IllegalArgumentException
3231 Object
3099 ArrayList
2465 byte
2186 int
1718 HashMap
1563 IOException
1548 StringBuilder
1513 UnsupportedOperationException
1465 NullPointerException
1263 RuntimeException
1170 IllegalStateException
976 HashSet
:(以下略)
結論:Stringクラスはワイ理論ではもっとも再利用性の有る優れたクラス
当人同士は必死になっちゃってるんで引けないだろうけど
あとワイの研究結果を勝手に報告するで(`・ω・´)キリッ
適当なソースが思い浮かばなかったんでopenjdkのソースを調査したよ
$ grep --include='*.java' -hroE "new +[^<\( \[]+" jdk-master/src | sed -E 's/new +//g' | sort | uniq -c | sort -nr | head -n 30
5039 String
4884 IllegalArgumentException
3231 Object
3099 ArrayList
2465 byte
2186 int
1718 HashMap
1563 IOException
1548 StringBuilder
1513 UnsupportedOperationException
1465 NullPointerException
1263 RuntimeException
1170 IllegalStateException
976 HashSet
:(以下略)
結論:Stringクラスはワイ理論ではもっとも再利用性の有る優れたクラス
517デフォルトの名無しさん
2021/02/20(土) 13:04:05.48ID:226xMBL/ 一応参考までに省略部分も張っとくわ
924 InternalError
886 {@code
755 XColor
742 AssertionError
737 Dimension
710 char
697 Rectangle
632 instance
610 File
594 value
486 DerOutputStream
466 Vector
436 double
408 PrivilegedAction
394 InvalidKeyException
393 Label
924 InternalError
886 {@code
755 XColor
742 AssertionError
737 Dimension
710 char
697 Rectangle
632 instance
610 File
594 value
486 DerOutputStream
466 Vector
436 double
408 PrivilegedAction
394 InvalidKeyException
393 Label
518デフォルトの名無しさん
2021/02/21(日) 19:53:59.50ID:10q0ACVq 誰か突っ込んでやれよ
519デフォルトの名無しさん
2021/02/21(日) 21:30:03.47ID:IppcSdfg 再利用できないコードの特徴
・凝集度が低い
・結合度が高い
この2つがセットだと、自分が使いたい機能に対して無関心な知識まで要求される
そういうのがクソコードの筆頭だと思う
Stringは、上手く実装されている例だな
・凝集度が低い
・結合度が高い
この2つがセットだと、自分が使いたい機能に対して無関心な知識まで要求される
そういうのがクソコードの筆頭だと思う
Stringは、上手く実装されている例だな
520デフォルトの名無しさん
2021/02/22(月) 00:29:45.74ID:nzCnkmXH もしかして文字列出力が多いソフトウェアだと文字列クラスの利用が多くなるんじゃないか?
そうでなくとも5000個の文字列が各所に散らばってるんだろ
どうやって文章を管理して辻褄合わせるんだよ
そうでなくとも5000個の文字列が各所に散らばってるんだろ
どうやって文章を管理して辻褄合わせるんだよ
521デフォルトの名無しさん
2021/02/22(月) 00:48:41.83ID:ESOE+x1C まずさ
別に出来がいいから使ってるわけじゃ無いだろ?
クラスの造りが優秀なのとソースで使用回数が多いことに関連がそんなねぇよ
業務アプリだったらLogってのが簡単にStringをぶっちぎるのなんて簡単に想像できる
別に出来がいいから使ってるわけじゃ無いだろ?
クラスの造りが優秀なのとソースで使用回数が多いことに関連がそんなねぇよ
業務アプリだったらLogってのが簡単にStringをぶっちぎるのなんて簡単に想像できる
522デフォルトの名無しさん
2021/02/22(月) 01:24:32.76ID:FgGbi9an あれ?手動テストの話終わったの?
もっと罵り合えよつまんねーな
もっと罵り合えよつまんねーな
523デフォルトの名無しさん
2021/02/22(月) 02:20:20.48ID:Vv8+u1qd 最後はこれでおしまい
>>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
>>507
複雑なのはたくさん値があってその組み合わせが膨大だから
手動テストも、その組み合わせをテストしないといけない
時間がかかって現実的だからテストしないって言ってる?
手動テストはテストをしないこと・・・意味がわからんw
524デフォルトの名無しさん
2021/02/22(月) 02:33:01.98ID:ESOE+x1C いや、流石にハードの動作知らんやつが設定値7に対して6.997で止まることを想定できんやろ
どんな組み合わせをやっても無理なはずやで
テキトーなことを言うな
どんな組み合わせをやっても無理なはずやで
テキトーなことを言うな
525デフォルトの名無しさん
2021/02/22(月) 02:59:19.84ID:Vv8+u1qd526デフォルトの名無しさん
2021/02/22(月) 03:09:12.22ID:PA6Gvk4i ここまでをまとめると、自動テストは暇なら書く程度の価値
って事でおk?
って事でおk?
527デフォルトの名無しさん
2021/02/22(月) 05:42:49.54ID:Vv8+u1qd 手動テストに膨大な時間がかかるので
自動化してもっと価値が高いことに時間を使いましょうって話だよ
自動化してもっと価値が高いことに時間を使いましょうって話だよ
528デフォルトの名無しさん
2021/02/22(月) 05:49:19.42ID:PA6Gvk4i 手動テストに膨大な時間なんかかからないと思うんだが
そもそも
その時間まで積んだうえの開発コストだと思うんだが
そもそも
その時間まで積んだうえの開発コストだと思うんだが
529デフォルトの名無しさん
2021/02/22(月) 06:03:54.54ID:2p9yrjmm コロナウイルス→鳥インフルH5N8→人
もうダメだな、鶏肉も食えない
もうダメだな、鶏肉も食えない
530デフォルトの名無しさん
2021/02/22(月) 06:23:03.40ID:Vv8+u1qd >>528
俺が作ってる1万行程度のツールはテスト項目数が1000個以上ある
この項目数は多いというほどのものでもないだろう
このテストを全て自動的に実行する時間はに30秒程度
もし手動で実行するなら1つあたり10秒で終わらせられたとしても
1万秒、300倍以上もの時間がかかっている
1万秒といったら、2時間半以上にもなる
開発しながらテストとかやってられないレベル
大きなシステムではテスト項目数は数万、数十万にもなるから
テストに数日かかる。コードを修正するたびにそんな事やってられないから
手動テストはテストをサボることになる
俺が作ってる1万行程度のツールはテスト項目数が1000個以上ある
この項目数は多いというほどのものでもないだろう
このテストを全て自動的に実行する時間はに30秒程度
もし手動で実行するなら1つあたり10秒で終わらせられたとしても
1万秒、300倍以上もの時間がかかっている
1万秒といったら、2時間半以上にもなる
開発しながらテストとかやってられないレベル
大きなシステムではテスト項目数は数万、数十万にもなるから
テストに数日かかる。コードを修正するたびにそんな事やってられないから
手動テストはテストをサボることになる
531デフォルトの名無しさん
2021/02/22(月) 06:34:50.69ID:PA6Gvk4i >>530
毎回やる必要のないテストばかりだろ?
毎回やる必要のないテストばかりだろ?
532デフォルトの名無しさん
2021/02/22(月) 06:38:20.47ID:Vv8+u1qd > その時間まで積んだうえの開発コストだと思うんだが
開発コストは低い方がいいだろ?
そうすりゃ請求金額の多くを儲けにできる
1ヶ月かかる仕事を効率化して1週間でできるようにしたから
販売金額も1/4でいいですよなんて、技術料ゼロの儲けが出ない
ビジネスモデルで仕事してるなら可哀想としか言うしかないがなw
開発コストは低い方がいいだろ?
そうすりゃ請求金額の多くを儲けにできる
1ヶ月かかる仕事を効率化して1週間でできるようにしたから
販売金額も1/4でいいですよなんて、技術料ゼロの儲けが出ない
ビジネスモデルで仕事してるなら可哀想としか言うしかないがなw
533デフォルトの名無しさん
2021/02/22(月) 06:40:44.17ID:Vv8+u1qd >>531
毎回やらなくていいとはどうやって判断したのか?
いつも想定してない所でバグが出るもんだ
コミットのたびにCIで全テストをするのは当たり前
ローカルでは一部のテストだけを行えばいいが
CIで自動的に全テストを行うのは普通の話だ
そこまでの高い信頼性を手動テストでやってるか?
毎回やらなくていいとはどうやって判断したのか?
いつも想定してない所でバグが出るもんだ
コミットのたびにCIで全テストをするのは当たり前
ローカルでは一部のテストだけを行えばいいが
CIで自動的に全テストを行うのは普通の話だ
そこまでの高い信頼性を手動テストでやってるか?
534デフォルトの名無しさん
2021/02/22(月) 06:41:49.22ID:PA6Gvk4i 自動テストで完結しないのに、議論に値しないだろ
535デフォルトの名無しさん
2021/02/22(月) 06:42:47.10ID:Vv8+u1qd536デフォルトの名無しさん
2021/02/22(月) 06:42:57.10ID:PA6Gvk4i 自動テストはヒマなら書くレベルの価値しかない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★3 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 [お断り★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 【東京】玉川高島屋「シャネル」で窃盗容疑 バッグ210万円相当、無職少年(18)逮捕 買い取り店で身分証提示できず売却失敗 [ぐれ★]
- 【維新】奥下衆院議員 政治資金でキャバクラとラウンジに支出 費用は返金へ 「国民の皆さんからすれば『税金で』という思いが強い」 [ぐれ★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか ★2 [どどん★]
- ラーメンと電車とアニメとV好きなネトウヨ [907330772]
- ニュー速(嫌儲)「撮り鉄を叩いているのはネトウヨ。ケンモメンは撮り鉄を叩かない。撮り鉄は嫌儲公認趣味」 [932029429]
- まったりおじゃる丸まったり待機スレ🏡
- 女っていらないよな
- イーノック、そんな装備で大丈夫か?
- 国民の半分が日中戦争を支持しているという現実…冷静に考えるとヤバイよ? [819729701]
