プログラマーなら単体テスト(UT)も実装しよう

1 :仕様書無しさん:2013/04/07(日) 14:53:58.90 .net
おまえらちゃんとテスト作ってる?

テストメソッドの名前
どういう単位でテスト実装してるか
テストのためにアクセス指定子変える派とリフレクション使う派とどっちが多いのとか

30 :仕様書無しさん:2013/04/12(金) 01:49:21.27 .net

publicのメソッドを実行すればprivateメソッドは内部で呼び出されるんだから
publicメソッドのテストだけをやればいいという考えなら、

それに対して、システムテスト、統合テストを行えば、
publicメソッドは呼び出されるんだから、ユニットテストはいらないんじゃね?
という考えも成り立つよなと言いたくなる。

テストはなるべく小さい粒度でやるべき。それは問題は小さい方で解決したほうが
コストがかからないから。このあたり前の理由がprivateメソッドのテストにも当てはまる。
粒度が大きすぎるなら、当然小さい粒度でやるべき。粒度が問題なのであって
それがクラス内部からしか使わないのであれば、それはテストすべきprivateメソッドということになる。

173 :仕様書無しさん:2013/04/21(日) 19:03:07.21 .net

あと、テストが必要なのは大抵は一覧を取得するクエリ。
一覧を取得するクエリは、一度のクエリで全部終わるのが理想だから、内容が複雑になりがち。
まあ、Oracle SQLパズルに登場するようなクエリをいくつか合わせたようなイメージ。

165 :仕様書無しさん:2013/04/21(日) 15:04:26.91 .net

:2013/04/13(土) 17:46:47.63 .net

:2013/04/13(土) 02:04:40.92 .net

privateメソッドをテストしないの理由を聞いていてわかるのは

privateメソッドは外部から呼び出せないから
テスト出ないだけ。
その言い訳として、あーだーこーだいってる。

140 :仕様書無しさん:2013/04/20(土) 23:43:25.30 .net

:2013/04/21(日) 13:59:59.26 .net

きっちりかっちりやるなら単体テストとしてはそっち(DBはDB、アプリはアプリ)の方がいいとは思う
DBに依存したテストをやるのは単体というより結合だから、自動実行のために用意するのとはちょっと毛色が違う
ローカルで手動実行する結合してみてテストするための補助ツール的な物だと思う
クラスを作成するための支援としての単体テストや、自動テストとしてやるものとはちょっち違う感
まぁどっちが楽かはケースバイケースだと思うから、明確に線引く必要はないと思うけど

118 :仕様書無しさん:2013/04/14(日) 09:35:59.49 .net

:2013/04/14(日) 10:35:35.36 .net

でも実際DIできるのに自前でnewする馬鹿いるんだよなぁ。
1メソッドに全機能詰め込む奴とか。
Java系マはピンキリ激しくて大抵キリ側に寄ってるから、PHPerと戦わせると良い勝負しそうなの多い。

115 :仕様書無しさん:2013/04/13(土) 21:29:31.81 .net

privateメソッドのテストは、テスト対象のクラスのOpen-Closed Principleの原則を破ってしまう。
よってprivateメソッドのテストをしてはならない。

199 :仕様書無しさん:2015/08/08(土) 14:50:36.74 .net

自動化の単体テストってさ
・難しい箇所
・壊れやすそうな箇所
・壊れた結果が致命的な箇所
だけやればいいよね

一時期は、カバレッジ100%宗教に取り憑かれそうになったこともあったけどさ

76 :仕様書無しさん:2013/04/13(土) 17:14:30.97 .net

:2013/04/21(日) 23:16:18.62 .net

仕様通り動くことが確認できれば手段は何でもいいってことだな

65 :仕様書無しさん:2013/04/13(土) 10:20:01.84 .net

リファクタリング中に、テストが失敗しないことで正しさを担保できるのに、privateメソッドのテストのせいでテストが失敗し、カオスになる。
publicA()の為にprivateA()を作り、privateA()のテストを書いた。publicB()でもprivateA()をつかいたいけど、ちょっと引数を変更しなきゃ。おっと、テストが失敗しまくるぜ。

でも大丈夫。。。俺らには無限の時間があるし。テスト工数をけちっちゃけちっちゃ駄目だよね。

69 :仕様書無しさん:2013/04/13(土) 13:42:35.02 .net

privateメソッドは実装詳細なんだから、そのクラスを実装中に引数が変わったり実現内容が変わったりは
よくあること。
publicだって変わることがあるというが、それはprivateと頻度が違う。
そんなにころころpublicのI/Fが変わるとしたら、それは実装のやり方が間違ってるよ。

3 :仕様書無しさん:2013/04/07(日) 14:59:45.81 .net

最近糞コードのテスト書いてるから辛い
TDDやれとまでは言わんが、せめてテストできるレベルの実装位できるようになって欲しい
つかnUnitの使い方すら理解できないクズはプログラマー辞めちまえって思う

204 :仕様書無しさん:2015/09/09(水) 08:45:34.50 .net

:2013/04/13(土) 00:40:01.17 .net

を読み直してみろ。
単体テストでpublicのテストをすればprivateが呼び出されるからprivateのテストは不要と言うのであれば、結合テストをすればpublicメソッドが呼び出されるから単体テストは不要とも言える、というのがお前の主張。

で、そうは言えないというのが俺の主張。理由は前述の通り。

214 :仕様書無しさん:2016/09/07(水) 23:14:56.23 .net

:2013/04/13(土) 17:30:51.92 .net

テストがなければ、コードを書き換えても
テストに失敗しない!

全てのテストをなくそう!

82 :仕様書無しさん:2013/04/13(土) 17:22:59.20 .net

:2013/04/21(日) 19:37:50.67 .net

例えば、Redmineのチケット一覧ページ。
あれが実際どう実装してるのかしらないけど、まあ最終的に単一のクエリが生成されると思ってくれ。
ユーザが指定する条件で、そのクエリのwhere句が変わるのはわかると思う。
それに付け加えて例えば「管理ユーザが登録したもの」とか「直近1週間にSCMに
コミットされたもの

138 :仕様書無しさん:2013/04/20(土) 23:05:10.18 .net

俺は極論かどうかには興味が無い。
言っていることが正しいかどうかだけだ。

161 :仕様書無しさん:2013/04/21(日) 14:54:45.25 .net

:2013/04/12(金) 02:00:47.05 .net

:2013/04/11(木) 13:55:26.00 .net

:2013/04/22(月) 17:42:05.31 .net

DBにアクセスするメソッドを呼ぶメソッドのテストではmockを使うのが良い。
DBにアクセスするメソッドのテストでは、データベースに接続するのが良い。

ってことでしょ。かみ合ってないわ。

5 :仕様書無しさん:2013/04/07(日) 18:30:57.36 .net

:2013/04/14(日) 02:43:58.18 .net

自分は外部非公開メソッドのテスト書いちゃうほうだけど、
多分そういうメソッドが多くなるのは、クラスが大きすぎるのが原因なんだろうなーって思ってる

でも実務だと、抽象化しまくってかなり細かいクラスにわけちゃったりすると、
レガシー脳の奴がついてこれないどころか重複コード量産始めるから、難しい気もする
大抵はパッケージとか好き勝手に増やしたりも難しいし、あんまり細かい単位でクラス分け辛い
あとクラス外出してDIとかするのは、めんどくさいって言われそうだし

で、パブリックメソッドから分岐のある可能性のテストケース全部実装するくらいなら、
プライベートメソッドをパッケージプライベートにして、
メソッド単位でテストケース実装して動作確認するほうがいいかな、って感じに
テストを行った成果物として残せるし

107 :仕様書無しさん:2013/04/13(土) 17:47:51.59 .net

:2013/04/12(金) 00:47:38.27 .net

プライベートかどうかは関係ない。

テストの目的を考えれば、間違いやすいならば
テストを書くということは明らかにわかるはず。

149 :仕様書無しさん:2013/04/21(日) 12:24:16.20 .net

それじゃアプリケーションのテストにならんがな

97 :仕様書無しさん:2013/04/13(土) 17:38:20.75 .net

:2013/04/13(土) 18:04:44.62 .net

というか、実装詳細が何なのかわかってないんじゃ

123 :仕様書無しさん:2013/04/19(金) 12:50:20.96 .net

リファクタリングでprivateメソッド作ったらテストも作んなきゃいけないのは間違ってる気がする

55 :仕様書無しさん:2013/04/13(土) 02:52:05.36 .net

:2015/07/15(水) 23:46:00.95 .net

11 :仕様書無しさん:2013/04/08(月) 14:42:11.01 .net

:2013/04/13(土) 13:29:59.16 .net

それは理由にならないよ

171 :仕様書無しさん:2013/04/21(日) 18:54:09.50 .net

:2015/09/10(木) 17:05:21.12 .net

:2015/12/13(日) 14:36:50.26 .net

プログラマは 0-1 で割り切れないとやりたがらないからな。。
逆にいい感じにテスト書こうとすると
・難しい箇所
・壊れやすそうな箇所
・壊れた結果が致命的な箇所
の箇所がわかったり、局所化できたりするもんだね。

213 :仕様書無しさん:2016/09/07(水) 13:54:23.48 .net

このスレは初心者ばかりだな。

しかもテストフレームワークを使うことがテストみたいなことばかり言ってるし。

128 :仕様書無しさん:2013/04/20(土) 11:34:16.05 .net

:2013/04/07(日) 20:30:06.31 .net

    _, ,_  パーン
 ( ‘д‘)
  ⊂彡☆))Д´) :2013/04/22(月) 16:18:53.25 .net

:2013/04/20(土) 11:45:45.29 .net

:2013/04/07(日) 14:56:52.55 .net

関連しそうなスレ


テストを軽視する者ども
http://kohada.2ch.net/test/read.cgi/prog/1214650160/
テストデータに「test」とか「てst」とかもうやめろ
http://kohada.2ch.net/test/read.cgi/prog/1127447938/


テストしにくいコードをテストする方法教えて下さい
http://toro.2ch.net/test/read.cgi/tech/1334408391/
テストを書いてからリファクタリングなんてのは幻想
http://toro.2ch.net/test/read.cgi/tech/1349191466/
【TDD】テスト駆動開発【TestFirst】
http://toro.2ch.net/test/read.cgi/tech/1284899172/

110 :仕様書無しさん:2013/04/13(土) 17:51:22.77 .net

publicにあてはまることがprivateにもあてはまってしまうことこそが、実装詳細の変更を阻害す
要因になるってのが理解できないの?

74 :仕様書無しさん:2013/04/13(土) 17:04:09.02 .net

publicが変更されにくいってのはわかるが
privateが変更されやすいとは限らないだろ。
特に関数にするようなものは変更されにくい。

ロジックは書き換えるが、
メソッドは変更されにくいんだよ。

参考になったらSNSでシェアお願いします!

レスを投稿する(名前省略可)

この記事を読んだ方へのおすすめ

  • 富士通の残業だとかいろいろ教えて><

    元スレ 1 :仕様書無しさん:2008/03/09(日) 04:52:04 .net 前スレ 富士通の残業体質対策を教えて http://pc11.2ch.net/test/read.cgi/prog/119971234…

  • 派遣って昼休みしかネット出来ないの?

    元スレ 1 :仕様書無しさん:2019/02/07(木) 20:23:16.14 .net 毎日昼休みになると大量に貼られるコピペ ↓ 4仕様書無しさん2019/02/06(水) 12:37:20.87 ★☆大人気無能シ…

  • 2020から小学生にプログラムの授業

    元スレ 1 :仕様書無しさん:2018/08/31(金) 10:39:34.94 .net 必須になるらしいけど ttps://techacademy.jp/magazine/8525 ここの住民的にはどう思います? 6…

  • 専門学校卒のプログラマーが少ないのは何故?

    元スレ 1 :仕様書無しさん:2014/06/01(日) 16:55:05.03 .net コンピュータ専門学校なんて日本中どこにでもあるのに現場にいるのは(特に若い人は)大卒の方が圧倒的に多い 大卒より実践的な勉強をし…

  • 案件とって来れない営業は死ね! 2人目

    元スレ 1 :仕様書無しさん:2010/02/24(水) 21:24:42 .net 仕事とってこれない営業はプログラミングできないPGと同じで 生きてる価値無し。 2 名前:仕様書無しさん [sage]: 2009/0…

  • プロのプログラマなら言ってはいけないセリフ

    元スレ 1 :仕様書無しさん:2013/10/08(火) 18:09:59.31 .net ちゃんと書いたのに動きません! 言語・ライブラリのバグだと思います! 242 :仕様書無しさん:2014/04/17(木) 02…

  • 今日メモ帳でハローワールド作らせた

    元スレ 1 :仕様書無しさん:2016/03/02(水) 18:48:00.16 .net 入社してだいたい1年の20〜23の若者5名にメモ帳でハローワールド作らせた(言語はjava)レクリエーションで コマンドプロンプ…

  • プログラマの老後【60歳以上】☆7

    元スレ 1 :仕様書無しさん:2021/08/14(土) 11:06:29.80 .net まだまだ、いろいろ現役ですが・・ あなたはプログラマになって 良かったと思っていますか? 年金と投資、家族、病気、趣味など、 な…

  • 10人の派遣PG < メタプログラミング

    元スレ 1 :仕様書無しさん:2016/05/29(日) 22:09:14.13 .net コード生成を極めると人件費カットが捗るわい 6 :仕様書無しさん:2016/05/31(火) 01:44:44.12 .net …

  • プログラマの雑談部屋 ★50

    元スレ 1 :仕様書無しさん:2018/11/01(木) 21:57:03.84 .net ニャー 猫ですが立てました ※前スレ プログラマの雑談部屋 ★49 https://medaka.5ch.net/test/re…

  • エンジニアと名乗りながら何もスキルがない

    元スレ 1 :仕様書無しさん:2018/03/22(木) 11:23:09.97 .net 何も作れない 何もかけない 何も判断できない そんなスキルゼロの無能でも仕事がやれて給料がもらえるのがIT業界 原因は無資格、無…

  • プログラマーはアニメをみよう! 33クール

    元スレ 1 :仕様書無しさん:2019/09/19(木) 10:05:08.31 .net 前スレ プログラマーはアニメをみよう! 32クール https://medaka.5ch.net/test/read.cgi/p…

最近のコメント

匿名 : 【いちゃ部屋】株式会社SHIFT【5ch出張所】
 新入社員はわかいそう、 在宅勤務でe-ラニングうけとけ、 ... (6/18)
匿名 : 【残業代】福井 株式会社アスタ【未払い】
 プライド高いところあるけど清輝あるなら大丈夫や (5/28)
匿名 : 【残業代】福井 株式会社アスタ【未払い】
 プライド高いところあるけど清輝あるなら大丈夫か (5/07)
ページTOPへ↑