カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性」として「カプセル化は絶対にやめろ」としている。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
探検
カプセル化の有害性、オブジェクト指向は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/06/18(木) 23:47:36.69ID:l/2SQUll724デフォルトの名無しさん
2020/07/04(土) 15:02:35.63ID:M3d71N9d 権威ある専門家が言ってることだから間違ってます
俺は認めませーんって。どういう気持で言ってるんだろうねw
俺は認めませーんって。どういう気持で言ってるんだろうねw
725デフォルトの名無しさん
2020/07/04(土) 15:04:45.61ID:M3d71N9d 俺は「そいつは権威ある専門家だ!」って指摘しただけで
勝ったつもりにはなれないなぁ(笑)
勝ったつもりにはなれないなぁ(笑)
726デフォルトの名無しさん
2020/07/04(土) 15:05:05.57ID:pmIasW6W t_wadaはなんて言ってるんだよ!
727デフォルトの名無しさん
2020/07/04(土) 15:05:39.57ID:pmIasW6W t_wada原理主義
728デフォルトの名無しさん
2020/07/04(土) 15:06:52.47ID:iuca8iKQ 必死だなw
729デフォルトの名無しさん
2020/07/04(土) 15:07:21.60ID:gUMCer1d 今までたくさんのキチガイPGを見たが
privateメソッドだからテストしないとか言ってるやつだけは許さない
テメーの金玉はここで潰す
privateメソッドだからテストしないとか言ってるやつだけは許さない
テメーの金玉はここで潰す
730デフォルトの名無しさん
2020/07/04(土) 15:10:41.07ID:pmIasW6W ごりごりーごりごりー
そうだ!すりつぶした粉で大根餅作ろうよ!
そうだ!すりつぶした粉で大根餅作ろうよ!
731575
2020/07/04(土) 15:11:12.87ID:sra5+07B >>729
問題なのは、そのprivateの挙動をどうやって確認するのかって話なのかな?
単体テスト?総合テスト?それとも実装中しながらのデバッグ作業の話?
正直、未だにどこで揉めているのかわかりません。
誰か議題教えて。
問題なのは、そのprivateの挙動をどうやって確認するのかって話なのかな?
単体テスト?総合テスト?それとも実装中しながらのデバッグ作業の話?
正直、未だにどこで揉めているのかわかりません。
誰か議題教えて。
732デフォルトの名無しさん
2020/07/04(土) 15:13:12.65ID:iuca8iKQ733デフォルトの名無しさん
2020/07/04(土) 15:14:01.93ID:M3d71N9d >>731
1. public、privateに限らずコードはシンプルにするべき
2. シンプルであるなら、privateはpublicメソッド経由でテストできる
3. publicメソッド経由でやったらprivateがろくにテストできないというなら設計が間違ってる
4. 設計上の問題はバグと言ってもいい。バグなんだから直せ
ここまではあってる
1. public、privateに限らずコードはシンプルにするべき
2. シンプルであるなら、privateはpublicメソッド経由でテストできる
3. publicメソッド経由でやったらprivateがろくにテストできないというなら設計が間違ってる
4. 設計上の問題はバグと言ってもいい。バグなんだから直せ
ここまではあってる
734デフォルトの名無しさん
2020/07/04(土) 15:17:09.02ID:gUMCer1d735575
2020/07/04(土) 15:21:35.25ID:sra5+07B736デフォルトの名無しさん
2020/07/04(土) 15:24:14.77ID:M3d71N9d 動けばOKって考えてる人がどれだけ多いかだな
テストを自動化するという考えがない
シンプルな設計をするという発想がない
動けば設計に問題はないと考えている
テストを自動化するという考えがない
シンプルな設計をするという発想がない
動けば設計に問題はないと考えている
737デフォルトの名無しさん
2020/07/04(土) 15:29:27.53ID:pmIasW6W >>735
Welcome to Underground
Welcome to Underground
738デフォルトの名無しさん
2020/07/04(土) 15:32:02.34ID:NXT3QGLz >>733
あってるの1だけじゃないかw
あってるの1だけじゃないかw
739デフォルトの名無しさん
2020/07/04(土) 15:34:57.08ID:iuca8iKQ 叩き台つくった(´・ω・`)
https://ideone.com/1XhPwl
https://ideone.com/1XhPwl
740デフォルトの名無しさん
2020/07/04(土) 15:39:15.86ID:e19OrKR5 なんかやべえ流れになってるな
とりあえずつっこんどくと
1. unitテストの定義に世界共通の定義など存在しない
2. unitテストという単語はプロジェクト用語であり、プログラム用語ではない
3. マーティンはunitテストという単語と自動テストの単語わけたらいいんじゃない?と提案してる。xunit
4. publicとprivateはクラス設計のため、もっと言えばクラス間の責任範囲のために存在している
5. xunitテストのためだけにprivateをpublicにするのは誤り。本当にやりたければリフレクションでもすればいい
6. c2カバレッジ100%するかどうかは分野次第
7. 我々は十分なシステムを作るのが目的である。完璧なプログラムを作ることが目的ではない。そして十分な利益を獲得することが目的でもある
とりあえずつっこんどくと
1. unitテストの定義に世界共通の定義など存在しない
2. unitテストという単語はプロジェクト用語であり、プログラム用語ではない
3. マーティンはunitテストという単語と自動テストの単語わけたらいいんじゃない?と提案してる。xunit
4. publicとprivateはクラス設計のため、もっと言えばクラス間の責任範囲のために存在している
5. xunitテストのためだけにprivateをpublicにするのは誤り。本当にやりたければリフレクションでもすればいい
6. c2カバレッジ100%するかどうかは分野次第
7. 我々は十分なシステムを作るのが目的である。完璧なプログラムを作ることが目的ではない。そして十分な利益を獲得することが目的でもある
741575
2020/07/04(土) 15:57:07.88ID:sra5+07B ちなみに、的はずれって100%君のことね。まぁ、そんなの今更どうでもいいか。
実際、クラスをどんな風にテストするのか興味あるね。
実際、クラスをどんな風にテストするのか興味あるね。
742デフォルトの名無しさん
2020/07/04(土) 16:03:21.65ID:e19OrKR5 やだよ組み込みが普通だと思ってる人との会話なんかしたくない
743575
2020/07/04(土) 16:32:24.22ID:sra5+07B そんなー。
744デフォルトの名無しさん
2020/07/04(土) 16:32:41.68ID:IaMjsjOG >>735
なんだ早く死ねよ
なんだ早く死ねよ
745575
2020/07/04(土) 16:36:24.03ID:sra5+07B まぁ、Android開発(アセンブラレベルからJavaアプリレベル)をやってるから、たぶん、大丈夫なはず。
組み込み=staticおじさんのレッテルが貼られがちだけど、
私はstaticおじさんじゃないんだけどなー...。
まぁ、アセンブラレベルの階層になると、オブジェクト指向要素なんて微塵もないけど。
組み込み=staticおじさんのレッテルが貼られがちだけど、
私はstaticおじさんじゃないんだけどなー...。
まぁ、アセンブラレベルの階層になると、オブジェクト指向要素なんて微塵もないけど。
747575
2020/07/04(土) 16:46:14.68ID:sra5+07B もういいや。アホくさ。こんなスレ覗いたのが間違いだったな。
人生を無駄にした気分だ。
このスレを覗く時間を使って別して作業してた方が有意義だったよ。
>>744
君はID変えながら死ね死ね連呼しているみたいだけど、気を付けた方がいいよ。あばよ、中身がない死ぬべき技術者さん。
人生を無駄にした気分だ。
このスレを覗く時間を使って別して作業してた方が有意義だったよ。
>>744
君はID変えながら死ね死ね連呼しているみたいだけど、気を付けた方がいいよ。あばよ、中身がない死ぬべき技術者さん。
748デフォルトの名無しさん
2020/07/04(土) 16:53:03.01ID:4XE5L1k5 プ板、と言うか専門板なんてそれぞれの話題を餌にマウント取り合ったり罵り合ったりする所だから。
相手にしたら負け。
相手にしたら負け。
749デフォルトの名無しさん
2020/07/04(土) 17:09:48.00ID:O/jhkl6h750デフォルトの名無しさん
2020/07/04(土) 18:16:38.54ID:sCZUG34Z privateメソッドのテストしないとか言ってるカスとまともに会話するメリットないだろ
751デフォルトの名無しさん
2020/07/04(土) 18:35:31.64ID:gmurOIZf まあテストやるって言ってもこれくらい意見が違って揉め事になるってのは
結構普通だったりするからそういう勉強にはなってるんでないの。
結構普通だったりするからそういう勉強にはなってるんでないの。
752デフォルトの名無しさん
2020/07/04(土) 20:02:50.07ID:M3d71N9d このスレの結論
短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。
テストできているか不安があるならテストカバレッジを確認しましょう。
別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の
プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の
プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の
コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
テスト対象の可視性を(やや)上げる
例えば Java では、同一のパッケージからのみアクセスできる可視性があり(正式名称ではありませんが
「パッケージプライベート」と呼ばれます)、テストを同一パッケージに配置することでテストから
アクセスできるような設計を行うことがあります。(ただし、この質問の場合は JavaScript なので、この手段はとれません)
プライベートのまま、リフレクションでアクセスしてテストを書く
リフレクションは最後の手段であり、強力な手段でもあります。プロダクトコードに手を入れることが
できない状況や、レガシーコード(テストコードの無いコード)に対する「仕様化テスト(Characterization Test)」を
書いているような状況では、リフレクションは唯一の、かつ強力な手段になります。プライベートメソッドに
テストを書くことのデメリットを理解しつつ、黒魔術の強力さを堪能しましょう。
(ただし、この質問の場合は JavaScript なので、この手段はとれません。JavaScript は比較的緩い言語ですが、クロージャの情報隠蔽は非常に強固です)
まとめ
繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。
短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。
テストできているか不安があるならテストカバレッジを確認しましょう。
別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の
プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の
プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の
コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
テスト対象の可視性を(やや)上げる
例えば Java では、同一のパッケージからのみアクセスできる可視性があり(正式名称ではありませんが
「パッケージプライベート」と呼ばれます)、テストを同一パッケージに配置することでテストから
アクセスできるような設計を行うことがあります。(ただし、この質問の場合は JavaScript なので、この手段はとれません)
プライベートのまま、リフレクションでアクセスしてテストを書く
リフレクションは最後の手段であり、強力な手段でもあります。プロダクトコードに手を入れることが
できない状況や、レガシーコード(テストコードの無いコード)に対する「仕様化テスト(Characterization Test)」を
書いているような状況では、リフレクションは唯一の、かつ強力な手段になります。プライベートメソッドに
テストを書くことのデメリットを理解しつつ、黒魔術の強力さを堪能しましょう。
(ただし、この質問の場合は JavaScript なので、この手段はとれません。JavaScript は比較的緩い言語ですが、クロージャの情報隠蔽は非常に強固です)
まとめ
繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。
753デフォルトの名無しさん
2020/07/04(土) 21:00:07.43ID:42LT/T3f >>752
三行以上は読んでもらえないから工夫が必要。
三行以上は読んでもらえないから工夫が必要。
754デフォルトの名無しさん
2020/07/04(土) 21:07:29.85ID:n1PM9L+Z ガワだけのクラスが出来上がるな
#include <iostream>
using namespace std;
class Test{
private:
int methodPrivate(const int x)const{
return 2*x;
}
public:
int method(const int x)const{
return methodPrivate(x);
}
};
int main() {
Test test;
cout << test.method(3) << endl;
return 0;
}
この調子で全部のメソッドにペアになるprivateメソッド作って徹底的に隠蔽してしまえば、相手から調査されることはない
そして上流の方から指定されているメソッドはスッカラカン
実質的に何もしない
名前があるだけ
この技法をprivate開発と名付けよう
相手側に技術が流出することがない
#include <iostream>
using namespace std;
class Test{
private:
int methodPrivate(const int x)const{
return 2*x;
}
public:
int method(const int x)const{
return methodPrivate(x);
}
};
int main() {
Test test;
cout << test.method(3) << endl;
return 0;
}
この調子で全部のメソッドにペアになるprivateメソッド作って徹底的に隠蔽してしまえば、相手から調査されることはない
そして上流の方から指定されているメソッドはスッカラカン
実質的に何もしない
名前があるだけ
この技法をprivate開発と名付けよう
相手側に技術が流出することがない
755デフォルトの名無しさん
2020/07/04(土) 21:08:27.02ID:NXT3QGLz756デフォルトの名無しさん
2020/07/04(土) 21:10:05.29ID:NXT3QGLz757デフォルトの名無しさん
2020/07/04(土) 21:41:09.24ID:pmIasW6W 本人の経験が感じられなくて薄っぺらいんだよなあ
758デフォルトの名無しさん
2020/07/04(土) 21:43:15.97ID:pmIasW6W 僕の高い知性と豊富な経験に基づく主張を聞いて欲しい
privateメソッドはテストした方がいい
privateメソッドはテストした方がいい
759デフォルトの名無しさん
2020/07/04(土) 21:56:15.32ID:gmurOIZf >別クラスのパブリックメソッドとする
>プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
>示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の
>プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の
>プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の
>コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
これだけは意味ある意見ではあるな。他はカスみたいな理由だが。
>プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
>示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の
>プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の
>プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の
>コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
これだけは意味ある意見ではあるな。他はカスみたいな理由だが。
760デフォルトの名無しさん
2020/07/04(土) 22:11:41.53ID:42LT/T3f カバレッジ測定ツール高いし持ってないので、private直接テストしたい。
761デフォルトの名無しさん
2020/07/04(土) 22:19:33.61ID:O/jhkl6h >>759
>>プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
>>示唆している場合があります
わかる
>>コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
これは選択肢の一つであって常にそうすべきなわけではないんだよね
クラスの分割基準とテストを書く書かないの基準は別だから
>>プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
>>示唆している場合があります
わかる
>>コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
これは選択肢の一つであって常にそうすべきなわけではないんだよね
クラスの分割基準とテストを書く書かないの基準は別だから
762デフォルトの名無しさん
2020/07/04(土) 22:19:58.28ID:O/jhkl6h プライベートだとテストしにくいので、パブリックメソッドとして抽出し、普通にテストしましょう
これが本音
これが本音
763デフォルトの名無しさん
2020/07/04(土) 22:47:43.56ID:1l6Tw/KB764デフォルトの名無しさん
2020/07/05(日) 00:43:13.75ID:9F15TCk0 プライベートがテストできるということはホワイトボックスなわけでユニットテスト段階でしょ。
そもそもプライベートをテストするにはソース自体書き換えないと呼べないじゃん。
ソース自体書き換えてテストするようなことはビジネスの世界ではあんまり無いしテストと
なったらブラックボックスが普通。
てかもはやテストの話でカプセル化やOO関係ないな。
そもそもプライベートをテストするにはソース自体書き換えないと呼べないじゃん。
ソース自体書き換えてテストするようなことはビジネスの世界ではあんまり無いしテストと
なったらブラックボックスが普通。
てかもはやテストの話でカプセル化やOO関係ないな。
765デフォルトの名無しさん
2020/07/05(日) 01:18:10.47ID:LRfXHt7v ホワイトやブラックについて語るのは時期が悪いというか、国家を危険にさらす可能性さえあるからね。
もう少し社会情勢に気を配ろうよ。
もう少し社会情勢に気を配ろうよ。
766デフォルトの名無しさん
2020/07/05(日) 01:32:28.51ID:LRfXHt7v 昔のホームページにはサイタマップというものがあった。
767デフォルトの名無しさん
2020/07/05(日) 02:04:25.24ID:9F15TCk0 埼玉県民にはそこらへんの草でも食わせておけ
768デフォルトの名無しさん
2020/07/05(日) 02:11:14.07ID:58eR5uXa >>764
> ソース自体書き換えてテストするようなことはビジネスの世界ではあんまり無いしテストと
まさかpublic・privateメソッドのテストをテスト工程でやる、
public・privateメソッドを書いた人と別の人がやるって思ってないか?
public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか
public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから
当然ソースを書いて(書き換えて)テストするに決まってるじゃん
お前は、その後の(統合)テスト工程でソースコードを変えてテストとか言ってるだろw
> ソース自体書き換えてテストするようなことはビジネスの世界ではあんまり無いしテストと
まさかpublic・privateメソッドのテストをテスト工程でやる、
public・privateメソッドを書いた人と別の人がやるって思ってないか?
public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか
public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから
当然ソースを書いて(書き換えて)テストするに決まってるじゃん
お前は、その後の(統合)テスト工程でソースコードを変えてテストとか言ってるだろw
769デフォルトの名無しさん
2020/07/05(日) 02:46:27.47ID:9F15TCk0 >>768
なんなのその口調気持ち悪い。
大規模開発だとテスト工程を別の人間が何度もやるのは当たり前だよ。
デベロッパ個人のテストはコーディングの範疇なのでもちろん個人ではやるが
それほど大事ではない。
組み込みで車のブレーキ制御とかは全く別の話だろうがOOとかカプセル化とは
基本かけ離れた分野。
なんなのその口調気持ち悪い。
大規模開発だとテスト工程を別の人間が何度もやるのは当たり前だよ。
デベロッパ個人のテストはコーディングの範疇なのでもちろん個人ではやるが
それほど大事ではない。
組み込みで車のブレーキ制御とかは全く別の話だろうがOOとかカプセル化とは
基本かけ離れた分野。
770デフォルトの名無しさん
2020/07/05(日) 02:48:43.07ID:LRfXHt7v テストしない理由を考えるのは。
771デフォルトの名無しさん
2020/07/05(日) 02:50:28.66ID:58eR5uXa >>769
> 大規模開発だとテスト工程を別の人間が何度もやるのは当たり前だよ。
大規模開発だとpublicやprivateメソッドのテストを別の人がやるって?
テストコード専用に書く人でもいるのかよw
それはどこの話だ?事例の一つぐらい持ってきてから言え
> 大規模開発だとテスト工程を別の人間が何度もやるのは当たり前だよ。
大規模開発だとpublicやprivateメソッドのテストを別の人がやるって?
テストコード専用に書く人でもいるのかよw
それはどこの話だ?事例の一つぐらい持ってきてから言え
772デフォルトの名無しさん
2020/07/05(日) 02:51:54.42ID:9F15TCk0773デフォルトの名無しさん
2020/07/05(日) 02:53:01.58ID:58eR5uXa > 某アメリカ製のパッケージとかだな。
だから事例は?
だから事例は?
774デフォルトの名無しさん
2020/07/05(日) 02:54:30.54ID:58eR5uXa ユニットテストのコードを他の人が書いて、どうやってTDDをやるのか不思議なんだがw
先にテストコード書く人がテストコードだけ書いて、
これに通るように実装しろ!
これがTDD(テスト駆動開発)だ!
とか言ってる所とかでもあるんか?
事例を持ってきてくれ
先にテストコード書く人がテストコードだけ書いて、
これに通るように実装しろ!
これがTDD(テスト駆動開発)だ!
とか言ってる所とかでもあるんか?
事例を持ってきてくれ
775デフォルトの名無しさん
2020/07/05(日) 02:56:40.99ID:9F15TCk0 だからユニットテスト自体が少なくともビジネス分野では大事じゃないと
上にも書いてあるが。
事例なんか出せるわけないだろ。中の人なんだから。
上にも書いてあるが。
事例なんか出せるわけないだろ。中の人なんだから。
776デフォルトの名無しさん
2020/07/05(日) 02:58:40.47ID:LRfXHt7v 製品についてネットに書き込むときは、法務と企画のハンコ必要なので。
777デフォルトの名無しさん
2020/07/05(日) 02:59:12.87ID:LRfXHt7v ちなみに法務俺、規格俺だけど。
778デフォルトの名無しさん
2020/07/05(日) 03:03:18.34ID:9F15TCk0 今関わってる製品とかソース10万ファイルくらいあってそれぞれのファイルに
分岐なんか少なくとも数十から数百はあると思うが、その数百万から数千万、下手したら
億の分岐を全部全パターンテストするの?
テストなんてそのあとファンクショナルやってリグレッションやってアクセプタンスやって
ってあるのに、ユニットテスト「だけ」でそれでしょ?
サグラダ・ファミリアかな?
分岐なんか少なくとも数十から数百はあると思うが、その数百万から数千万、下手したら
億の分岐を全部全パターンテストするの?
テストなんてそのあとファンクショナルやってリグレッションやってアクセプタンスやって
ってあるのに、ユニットテスト「だけ」でそれでしょ?
サグラダ・ファミリアかな?
779デフォルトの名無しさん
2020/07/05(日) 03:03:49.83ID:58eR5uXa780デフォルトの名無しさん
2020/07/05(日) 03:04:01.72ID:LRfXHt7v 正しいとか正しくないとかどうでも良いので、privateのテストをさせてほしいものですね。
781デフォルトの名無しさん
2020/07/05(日) 03:05:23.08ID:58eR5uXa >>778
> 今関わってる製品とかソース10万ファイルくらいあってそれぞれのファイルに
> 分岐なんか少なくとも数十から数百はあると思うが、その数百万から数千万、下手したら
> 億の分岐を全部全パターンテストするの?
それユニットテスト関係ないよね?
手動で全パターンをテストするの?
答えはお前自身が言えるはずだよね?
> 今関わってる製品とかソース10万ファイルくらいあってそれぞれのファイルに
> 分岐なんか少なくとも数十から数百はあると思うが、その数百万から数千万、下手したら
> 億の分岐を全部全パターンテストするの?
それユニットテスト関係ないよね?
手動で全パターンをテストするの?
答えはお前自身が言えるはずだよね?
782デフォルトの名無しさん
2020/07/05(日) 03:06:25.42ID:58eR5uXa ユニットテストなんかしてねーよ
ソース修正するたびに、
億の分岐全パターン手動テストしてるんだよ!
って言ってほしいな?
まだかな?
ソース修正するたびに、
億の分岐全パターン手動テストしてるんだよ!
って言ってほしいな?
まだかな?
783デフォルトの名無しさん
2020/07/05(日) 03:13:56.54ID:LRfXHt7v けんか腰は知能が高いと言われるム板に似合わないんだよな。
ユーモアを交えて会話するべきだと思います。
ユーモアを交えて会話するべきだと思います。
784デフォルトの名無しさん
2020/07/05(日) 04:06:24.23ID:9F15TCk0 >>779
知ってる限りGAFAでもERP各社あたりでもやってないけどね。
試しに(ドイツだが)SAPあたりにカバレージどれだけですかって聞いてみれば?
何それ美味しいの?だよ。
まあこういう人は何言っても無駄だし下手に事実いうと発狂するからもう相手は
おしまい。
知ってる限りGAFAでもERP各社あたりでもやってないけどね。
試しに(ドイツだが)SAPあたりにカバレージどれだけですかって聞いてみれば?
何それ美味しいの?だよ。
まあこういう人は何言っても無駄だし下手に事実いうと発狂するからもう相手は
おしまい。
785デフォルトの名無しさん
2020/07/05(日) 04:11:13.84ID:58eR5uXa ではGoogleの事例
https://feb-acchan.hat
enablog.com/entry/2018/03/11/214344
現状について
Googleでは、420万ほどのテストが存在して、1日1億5千万テストケース
実行されていて(150million test execution/dayだからあってますよね?)、
1テストケースあたり35回実行されているらしいです。
そして、これらがすべて自動テストであり、手動テスト率が驚異の0%!
ただし、UX系のテストは手動だそうです。
UIのテストなどは自動化できるが、UXはさすがにまだ人手とのことで、
人の感覚などが関係するUXテストがAIによってテスト可能で人の仕事が無くなるといった日はまだ到来していません。
自動テストですが、毎テストごとに420万テストケースを実行しているわけではなく、
全テストケースを実行するのは一定の間隔で、普段は修正に対して依存があるテストだけを実行しているそうです。
https://feb-acchan.hat
enablog.com/entry/2018/03/11/214344
現状について
Googleでは、420万ほどのテストが存在して、1日1億5千万テストケース
実行されていて(150million test execution/dayだからあってますよね?)、
1テストケースあたり35回実行されているらしいです。
そして、これらがすべて自動テストであり、手動テスト率が驚異の0%!
ただし、UX系のテストは手動だそうです。
UIのテストなどは自動化できるが、UXはさすがにまだ人手とのことで、
人の感覚などが関係するUXテストがAIによってテスト可能で人の仕事が無くなるといった日はまだ到来していません。
自動テストですが、毎テストごとに420万テストケースを実行しているわけではなく、
全テストケースを実行するのは一定の間隔で、普段は修正に対して依存があるテストだけを実行しているそうです。
786デフォルトの名無しさん
2020/07/05(日) 04:13:30.65ID:58eR5uXa Googleの考え方
https://www.publickey1.jp/blog/11/post_144.html
テスターはデベロッパーがテストできるようにするのが仕事
このようにEngineering Productivityのメンバーのレポートラインと
所属を分けることのメリットを、Whittaker氏は次のように書いています。
ここにグーグルの品質管理の大事なポイントがあるようです。
一般にテストは製品開発の最後の段階で行われることが多く、製品チーム/開発チームの
中にテストチームを抱えても、テストフェーズ以外は手持ちぶさたになってしまうため、
多くの開発組織ではテストチームは製品チーム/開発チームとは別に存在し、
必要なときに登場してテストを行う、というケースがほとんどです。
====以下重要====
ところがグーグルではEngineering Productivityに属する、テストのノウハウを持ち支援を
行うエンジニアたちは、前述のように各製品チームに所属しています。
そう、グーグルではテストチームではなく、製品チームが自身で品質管理を負っている。
各デベロッパは自身でテストすることを期待されている。テスターの仕事は、自動テストの
インフラを確立することと、それによってデベロッパ自身がそれをプロセスの中で実行できるようにすること。
テスターはデベロッパーがテストできるようにするのだ。
各製品チームは、Engineering Productivityのメンバーの支援を受けつつ、自分たちの責任で
テストを行わなければならない、ということがグーグルのテストを行う際のポリシーのようです。
https://www.publickey1.jp/blog/11/post_144.html
テスターはデベロッパーがテストできるようにするのが仕事
このようにEngineering Productivityのメンバーのレポートラインと
所属を分けることのメリットを、Whittaker氏は次のように書いています。
ここにグーグルの品質管理の大事なポイントがあるようです。
一般にテストは製品開発の最後の段階で行われることが多く、製品チーム/開発チームの
中にテストチームを抱えても、テストフェーズ以外は手持ちぶさたになってしまうため、
多くの開発組織ではテストチームは製品チーム/開発チームとは別に存在し、
必要なときに登場してテストを行う、というケースがほとんどです。
====以下重要====
ところがグーグルではEngineering Productivityに属する、テストのノウハウを持ち支援を
行うエンジニアたちは、前述のように各製品チームに所属しています。
そう、グーグルではテストチームではなく、製品チームが自身で品質管理を負っている。
各デベロッパは自身でテストすることを期待されている。テスターの仕事は、自動テストの
インフラを確立することと、それによってデベロッパ自身がそれをプロセスの中で実行できるようにすること。
テスターはデベロッパーがテストできるようにするのだ。
各製品チームは、Engineering Productivityのメンバーの支援を受けつつ、自分たちの責任で
テストを行わなければならない、ということがグーグルのテストを行う際のポリシーのようです。
787デフォルトの名無しさん
2020/07/05(日) 04:14:26.63ID:58eR5uXa https://www.publickey1.jp/blog/11/post_144.html
Whittaker氏はさらに次の記事「How Google Tests Software - Part Two」で、
エンジニアに与えられる3つの役割についても触れています。
Softweare Engineer in Test(SET)
テストのしやすさ(Testability)にフォーカスした役割。デザインレビューをし、
品質やリスクをチェック。コードをテストしやすいようにリファクタリングする。
ユニットテストや、テストフレームワーク、自動テストも書く。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Whittaker氏はさらに次の記事「How Google Tests Software - Part Two」で、
エンジニアに与えられる3つの役割についても触れています。
Softweare Engineer in Test(SET)
テストのしやすさ(Testability)にフォーカスした役割。デザインレビューをし、
品質やリスクをチェック。コードをテストしやすいようにリファクタリングする。
ユニットテストや、テストフレームワーク、自動テストも書く。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
788デフォルトの名無しさん
2020/07/05(日) 04:16:28.52ID:58eR5uXa 「コードをテストしやすいようにリファクタリングする。」
っていうのがまさにprivateでテストしたいのに
public経由でテストできない
ならばテストしやすいようにリファクタリングしましょうって話になってる
っていうのがまさにprivateでテストしたいのに
public経由でテストできない
ならばテストしやすいようにリファクタリングしましょうって話になってる
789デフォルトの名無しさん
2020/07/05(日) 04:18:26.54ID:58eR5uXa https://monoist.atmarkit.co.jp/mn/articles/1705/24/news008.html
C/C++かつxUnit系ツールは、数分調べるだけでも数種類見つかります。
今回はその中の1つ「Google C++ Testing Framework(以下、GoogleTest)」の
使い方を紹介します。
Google Testとは、IT業界の巨人、グーグル(Google)製の
単体テストフレームワーク(C/C++用)です。MinUnitと比べて高機能で、
さまざまな使い道があります。ただし、MinUnit同様、テストコードを記述するため、
C/C++をある程度知ってることが前提です。
C/C++かつxUnit系ツールは、数分調べるだけでも数種類見つかります。
今回はその中の1つ「Google C++ Testing Framework(以下、GoogleTest)」の
使い方を紹介します。
Google Testとは、IT業界の巨人、グーグル(Google)製の
単体テストフレームワーク(C/C++用)です。MinUnitと比べて高機能で、
さまざまな使い道があります。ただし、MinUnit同様、テストコードを記述するため、
C/C++をある程度知ってることが前提です。
790デフォルトの名無しさん
2020/07/05(日) 04:19:35.40ID:9F15TCk0 >>785
テスト件数が問題なのではない。オートメーションすればファンクショナルレベル
でのテストはいくらでも流せる。
新しいファンクション・メソッドを書くたびに、あるいは変更をするたびに
全ての条件を網羅して、それをテストケースにして、コード自体をモディファイして
テストした後、結果をドキュメント化してまたコードを元に戻すということはやらないという話。
プライベートのファンクション・メソッド単位でC2100%テストしていくというのは
そういうこと。
テスト件数が問題なのではない。オートメーションすればファンクショナルレベル
でのテストはいくらでも流せる。
新しいファンクション・メソッドを書くたびに、あるいは変更をするたびに
全ての条件を網羅して、それをテストケースにして、コード自体をモディファイして
テストした後、結果をドキュメント化してまたコードを元に戻すということはやらないという話。
プライベートのファンクション・メソッド単位でC2100%テストしていくというのは
そういうこと。
791デフォルトの名無しさん
2020/07/05(日) 04:22:02.73ID:58eR5uXa 米Google、JavaScriptユニットテストフレームワーク「JS Test」をオープンソースで公開
https://mag.osdn.jp/11/10/03/1012250
米Googleは9月29日、JavaScriptユニットテストフレームワーク「Google JS Test」を発表した。
元々はGoogle社内のプロジェクトで利用されていたもので、ライセンスはApache License 2.0。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
https://mag.osdn.jp/11/10/03/1012250
米Googleは9月29日、JavaScriptユニットテストフレームワーク「Google JS Test」を発表した。
元々はGoogle社内のプロジェクトで利用されていたもので、ライセンスはApache License 2.0。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
792デフォルトの名無しさん
2020/07/05(日) 04:27:51.71ID:9F15TCk0 いや、だからそういうツールがあるのなんて常識だが、privateはテストしない。
上にも書いてるがprivateはソース自体弄らないとテスト自体できないわけで、
そういうツールが自動でソースを弄ってコンパイルし直してprivateのメンバーを
全パターンするわけでは、当たり前だけど、無い。
クラス単位でパブリックのメソッドに対してテストコードもセットで書くということは
当然ある。
上にも書いてるがprivateはソース自体弄らないとテスト自体できないわけで、
そういうツールが自動でソースを弄ってコンパイルし直してprivateのメンバーを
全パターンするわけでは、当たり前だけど、無い。
クラス単位でパブリックのメソッドに対してテストコードもセットで書くということは
当然ある。
793デフォルトの名無しさん
2020/07/05(日) 04:29:16.12ID:58eR5uXa facebook / jest
https://github.com/facebook/jest
https://jestjs.io/ja/
Jest はシンプルさを重視した、快適な JavaScript テスティングフレームワークです。
https://github.com/facebook/jest
https://jestjs.io/ja/
Jest はシンプルさを重視した、快適な JavaScript テスティングフレームワークです。
794デフォルトの名無しさん
2020/07/05(日) 04:31:02.86ID:9F15TCk0 全くわかってないなこりゃ。
795デフォルトの名無しさん
2020/07/05(日) 04:33:27.78ID:58eR5uXa 反論すりゃいいのにw
796デフォルトの名無しさん
2020/07/05(日) 04:34:11.33ID:58eR5uXa 憶測に基づいた発言はいらないよ?
俺はGoogleやFacebookとユニットテストに関連する事例を上げただけ
俺はGoogleやFacebookとユニットテストに関連する事例を上げただけ
797デフォルトの名無しさん
2020/07/05(日) 04:34:11.73ID:LRfXHt7v テストの専門家だからそう思うのでは。
798デフォルトの名無しさん
2020/07/05(日) 04:49:06.73ID:LRfXHt7v 完ぺきにテストしたからといって製品の完全性を保証することはできません。
したがってテストしないほうが良いのです。
したがってテストしないほうが良いのです。
799デフォルトの名無しさん
2020/07/05(日) 04:52:22.10ID:58eR5uXa ほらなw
完璧にテストした所で落ちない飛行機はありません
したがってテストしないほうがいいのです
と言い始めた
事例と自分の考えの矛盾を正せず、頭が狂い始めた証拠。
ここから荒らしと変貌する前触れだな
完璧にテストした所で落ちない飛行機はありません
したがってテストしないほうがいいのです
と言い始めた
事例と自分の考えの矛盾を正せず、頭が狂い始めた証拠。
ここから荒らしと変貌する前触れだな
800デフォルトの名無しさん
2020/07/05(日) 04:53:23.27ID:LRfXHt7v 食いついてきた。
嘘みたい。
嘘みたい。
801デフォルトの名無しさん
2020/07/05(日) 04:58:23.98ID:LRfXHt7v privateもテストさせていただけるとありがたいけど、禁止するのが正しいことになってるからな。
802デフォルトの名無しさん
2020/07/05(日) 04:59:58.66ID:LRfXHt7v Visualstudioのテストエクスプローラを使うと考えが変わるのでは。
道具の問題かもしれない。
道具の問題かもしれない。
803デフォルトの名無しさん
2020/07/05(日) 05:53:15.48ID:9F15TCk0 ユニットテストというのはプロジェクトによってかなり幅があるわけで、
当たり前の話だがテストオートメーションのプログラムが勝手にコード
弄ってコンパイルしなおしてPrivateをテストするわけが無いのだよ。
当たり前の話だがテストオートメーションのプログラムが勝手にコード
弄ってコンパイルしなおしてPrivateをテストするわけが無いのだよ。
804デフォルトの名無しさん
2020/07/05(日) 06:05:37.56ID:58eR5uXa ↑みたいなことを言ってるやつがGAFAは〜と
なんのソースもなしに言ってるわけだよ
こんなやつの話を聞くやつがいると思うかね?
なんのソースもなしに言ってるわけだよ
こんなやつの話を聞くやつがいると思うかね?
805デフォルトの名無しさん
2020/07/05(日) 06:06:03.12ID:9F15TCk0 ずれるかもしれないが下のような場合、privateにnullを突っ込んだらヌルポだが
privateをわざわざコード弄ってまで別にテストするようなことは少なくとも
ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。
class ChinTester {
public void testChin(int[] len) {
if (len==null){System.out.println("You are a woman");
return;}
if (len.length<11){ uncS(len);}
else{funcB(len);}
return;}
private void funcS(int[] len){
if (len.length<9){System.out.println("Smallest");
}else{System.out.println("Smaller");}
return;}
private void funcB(int[] len){
if (len.length<14){System.out.println("Medium");}
else if (len.length<16){System.out.println("Bigger");
}else{ System.out.println("Wow!");}
return;}
}
privateをわざわざコード弄ってまで別にテストするようなことは少なくとも
ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。
class ChinTester {
public void testChin(int[] len) {
if (len==null){System.out.println("You are a woman");
return;}
if (len.length<11){ uncS(len);}
else{funcB(len);}
return;}
private void funcS(int[] len){
if (len.length<9){System.out.println("Smallest");
}else{System.out.println("Smaller");}
return;}
private void funcB(int[] len){
if (len.length<14){System.out.println("Medium");}
else if (len.length<16){System.out.println("Bigger");
}else{ System.out.println("Wow!");}
return;}
}
806デフォルトの名無しさん
2020/07/05(日) 06:21:04.56ID:9F15TCk0 あと日本のNTTデータから降りてくるような大企業案件とかもやったことが無いので知らん。
アメリカのビジネス系一般の話。
アメリカのビジネス系一般の話。
807デフォルトの名無しさん
2020/07/05(日) 06:25:10.48ID:M+BkbwUs >>805
そのコードを見ただけで素人ってわかるよw
そのコードを見ただけで素人ってわかるよw
808デフォルトの名無しさん
2020/07/05(日) 06:27:32.73ID:9F15TCk0 はいはいそうですね。
809デフォルトの名無しさん
2020/07/05(日) 06:33:43.45ID:M+BkbwUs 1. 関数名が意味不明
2. インデントがめちゃくちゃ
3. スペースを入れる所が統一されていない
4. lenが配列なのはなんでだ?
5. nullを情報として扱うな
6. 戻り値なしなのに関数の最後でreturnを書くな
7. 数値(長さ?)判定と文字出力を同じ関数に同居させるな
8. テストするなら、長さを入力し文字列を返す関数を作れ
なんでたったこれだけの関数で
こんなにレビューの指摘項目が存在するんだかw
2. インデントがめちゃくちゃ
3. スペースを入れる所が統一されていない
4. lenが配列なのはなんでだ?
5. nullを情報として扱うな
6. 戻り値なしなのに関数の最後でreturnを書くな
7. 数値(長さ?)判定と文字出力を同じ関数に同居させるな
8. テストするなら、長さを入力し文字列を返す関数を作れ
なんでたったこれだけの関数で
こんなにレビューの指摘項目が存在するんだかw
810デフォルトの名無しさん
2020/07/05(日) 06:38:43.59ID:9F15TCk0 口調が気持ち悪い人は相手しても仕方ないからほっとくとして、上の例だと(に限らず)
funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で
リクワイアメントとエッジケースは全てテストするんだから、無駄にテストが倍以上に
なるしそれも手動になる。
普通のケースだとtestChinに対するテストコード書いて、変更があればそれを流す形になる。
上にさんざコピペが貼られたテストツールはそういうのを自動で流すツール。
テストケース流したいからfuncSとfuncBをパブリックにするというのはカプセル化
できてないし、ましてコード弄ってまでテストするのを手順化するというのは普通はやらない。
書いてる最中にコードちょろっと入れて確認するようなことはあって、それもユニット
テストといえばユニットテストだが、手法としてプロジェクト単位で公式にやるような
ものでは普通は無い。
車のブレーキ制御とかならそこまでやって欲しいが、OOとかカプセル化とはちょっと
違う話。
funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で
リクワイアメントとエッジケースは全てテストするんだから、無駄にテストが倍以上に
なるしそれも手動になる。
普通のケースだとtestChinに対するテストコード書いて、変更があればそれを流す形になる。
上にさんざコピペが貼られたテストツールはそういうのを自動で流すツール。
テストケース流したいからfuncSとfuncBをパブリックにするというのはカプセル化
できてないし、ましてコード弄ってまでテストするのを手順化するというのは普通はやらない。
書いてる最中にコードちょろっと入れて確認するようなことはあって、それもユニット
テストといえばユニットテストだが、手法としてプロジェクト単位で公式にやるような
ものでは普通は無い。
車のブレーキ制御とかならそこまでやって欲しいが、OOとかカプセル化とはちょっと
違う話。
811デフォルトの名無しさん
2020/07/05(日) 06:42:42.57ID:M+BkbwUs > funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で
public経由でテストできるだろw
public経由でテストできるだろw
812デフォルトの名無しさん
2020/07/05(日) 06:45:32.12ID:9F15TCk0 >public経由でテストできるだろw
と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を
やっとご理解いただけたようですな。
>>768ではこんな事言ってましたが。
>当然ソースを書いて(書き換えて)テストするに決まってるじゃん
と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を
やっとご理解いただけたようですな。
>>768ではこんな事言ってましたが。
>当然ソースを書いて(書き換えて)テストするに決まってるじゃん
813デフォルトの名無しさん
2020/07/05(日) 06:47:04.12ID:M+BkbwUs >>810
他の言語を勉強したほうがいいぞ
どうもお前は、絶対に来るはずがない値が引数に渡された時、
そのテストしろって言ってるようだからな
「絶対にありえない値」なんだから仕様なんて作らない
他の型がない言語だったら、引数に渡されるオブジェクトなんか
それこそ無限に値なんてありえるだから
privateでも、ソースコードを修正して引数渡せるなら
そのテストをかけって言ってるようなもん
他の言語を勉強したほうがいいぞ
どうもお前は、絶対に来るはずがない値が引数に渡された時、
そのテストしろって言ってるようだからな
「絶対にありえない値」なんだから仕様なんて作らない
他の型がない言語だったら、引数に渡されるオブジェクトなんか
それこそ無限に値なんてありえるだから
privateでも、ソースコードを修正して引数渡せるなら
そのテストをかけって言ってるようなもん
814デフォルトの名無しさん
2020/07/05(日) 06:47:52.42ID:M+BkbwUs >>812
> と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を
頭悪そうだなw
この場合publicメソッドを呼んだらprivateメソッドを呼び出すんだから
privateメソッドのテストになってるだろ
> と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を
頭悪そうだなw
この場合publicメソッドを呼んだらprivateメソッドを呼び出すんだから
privateメソッドのテストになってるだろ
815デフォルトの名無しさん
2020/07/05(日) 06:47:57.37ID:9F15TCk0 少なくともグーグルの面接で絶対こないからテストしないとか言ったら
速攻落ちるよ。むしろ絶対こないのをやるものだからね。
速攻落ちるよ。むしろ絶対こないのをやるものだからね。
816デフォルトの名無しさん
2020/07/05(日) 06:49:10.31ID:M+BkbwUs >>768で
> まさかpublic・privateメソッドのテストをテスト工程でやる、
> public・privateメソッドを書いた人と別の人がやるって思ってないか?
>
> public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか
> public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから
> 当然ソースを書いて(書き換えて)テストするに決まってるじゃん
と言ってますが、今の話と何の関係があるんですか?
「誰がテストするか」の話なんですが?
> まさかpublic・privateメソッドのテストをテスト工程でやる、
> public・privateメソッドを書いた人と別の人がやるって思ってないか?
>
> public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか
> public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから
> 当然ソースを書いて(書き換えて)テストするに決まってるじゃん
と言ってますが、今の話と何の関係があるんですか?
「誰がテストするか」の話なんですが?
817デフォルトの名無しさん
2020/07/05(日) 06:50:26.40ID:M+BkbwUs >>815
だからpublicメソッド経由でテストしてるじゃんw
お前は、内部でprivateメソッドを呼び出しているから
publicメソッドのテストには、privateメソッドがそんな値を返そうが
そのテストは書かないのか?
だからpublicメソッド経由でテストしてるじゃんw
お前は、内部でprivateメソッドを呼び出しているから
publicメソッドのテストには、privateメソッドがそんな値を返そうが
そのテストは書かないのか?
818デフォルトの名無しさん
2020/07/05(日) 06:53:15.16ID:M+BkbwUs 例えば>>805 の話だと
testChinがpublicメソッド、そのメソッドのテストとして
引数に1(なんで配列か知らんが)となるものを渡したら
Smallestが返ってくることというテストを書く
それは実際には内部でprivateメソッドを呼び出しているのだからfuncSのテストになってる
カバレッジを計測したら、privateメソッドであるfuncSの該当行は実行した(テストした)と計測される。
testChinがpublicメソッド、そのメソッドのテストとして
引数に1(なんで配列か知らんが)となるものを渡したら
Smallestが返ってくることというテストを書く
それは実際には内部でprivateメソッドを呼び出しているのだからfuncSのテストになってる
カバレッジを計測したら、privateメソッドであるfuncSの該当行は実行した(テストした)と計測される。
819デフォルトの名無しさん
2020/07/05(日) 06:54:07.51ID:9F15TCk0 え、コーディング中にちょろっとコード書いて動作確認とかを「テスト」って
呼んでたの?そりゃ噛み合わないわ。
開発手法の話をしてる時に「テストする」というからにはテストケースを書いて、
手動にしてもコードにしても実行したログくらいは残すものだが。
君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを
書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。
呼んでたの?そりゃ噛み合わないわ。
開発手法の話をしてる時に「テストする」というからにはテストケースを書いて、
手動にしてもコードにしても実行したログくらいは残すものだが。
君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを
書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。
820デフォルトの名無しさん
2020/07/05(日) 06:56:15.75ID:M+BkbwUs821デフォルトの名無しさん
2020/07/05(日) 06:56:44.73ID:9F15TCk0 publicをテストしたらprivateも呼ばれてるからprivate単位でテストしてる!って
ブレブレやなw
publicから呼ばれないprivateなんて一体誰がなんのために書くんだよw
ブレブレやなw
publicから呼ばれないprivateなんて一体誰がなんのために書くんだよw
822デフォルトの名無しさん
2020/07/05(日) 06:57:27.80ID:M+BkbwUs >>819
> 君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを
> 書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。
変更のたびって、お前変更のたびにメソッドの仕様が変わるのか?
いきあたりばったりで開発してるんだな
> 君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを
> 書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。
変更のたびって、お前変更のたびにメソッドの仕様が変わるのか?
いきあたりばったりで開発してるんだな
823デフォルトの名無しさん
2020/07/05(日) 06:58:49.78ID:M+BkbwUs >>821
最初からそう言ってるだろ?
ブレるも何も、最初からそう言ってる
↓
> 私の回答
> 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
>
> ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
最初からそう言ってるだろ?
ブレるも何も、最初からそう言ってる
↓
> 私の回答
> 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
>
> ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
824デフォルトの名無しさん
2020/07/05(日) 07:00:51.32ID:M+BkbwUs あ?まさかprivate関数の処理のテストをすればいいのに
private関数単独ででテストしなきゃだめだって思ってるのかw
あはは、関数単位でテストするのがユニットテストだって思ってるようだな
こりゃ、お・わ・ら・い・だw
private関数単独ででテストしなきゃだめだって思ってるのかw
あはは、関数単位でテストするのがユニットテストだって思ってるようだな
こりゃ、お・わ・ら・い・だw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
