プログラマーなら単体テスト(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 :仕様書無しさん:2018/06/15(金) 16:43:51.27 .net みんなお前のことそう思っているよ 特に仕事の話ではなく趣味とかの話ばかりしてるおまえな 43 :仕様書無しさん:2019/01/…

  • なぜどうして日本ではプログラマが育たないの?

    元スレ 1 :仕様書無しさん:2013/08/12(月) NY:AN:NY.AN .net    ミ‾ ̄ ̄ ̄\    / ____亅    / > ⌒ ⌒|   |/ (・) (・)|   (6――○-○-|   |  …

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

    元スレ 1 :仕様書無しさん:2018/09/09(日) 17:29:02.60 .net プログラマは こちらで雑談してください。 ユーザ、SEが馬鹿過ぎる、 上司がバカだからもう辞めたい、 もう少し簡単な仕事に転職し…

  • プログラマーのための英語教室

    元スレ 1 :名無し@沢村:2008/02/11(月) 22:24:38 .net おまいらよ、プログラマーの第一の素養といったら英語で書かれた技術文書を読むことだぞ。 英語ができなくては技術者とは言えないぞ。 そんなお…

  • ニートです1からプログラミングを教えてくれる

    元スレ 1 :たかし:2015/12/25(金) 18:43:55.48 .net 先生を募集します 先生!! 323 :takasi:2016/01/07(木) 21:51:01.42 .net GitHubのアカウン…

  • SEなんて職業は海外には存在しない。不要な職業だ

    元スレ 1 :仕様書無しさん:2012/12/09(日) 15:03:28.16 .net ゴミ 8 :仕様書無しさん:2012/12/09(日) 16:00:37.77 .net >>7 日本のSEやPGの…

  • ホワイトカラー・エグゼプション

    元スレ 1 :仕様書無しさん:2006/11/08(水) 21:40:21 .net 「残業代11・6兆円失う」 適用除外で労働総研試算   全労連系の「労働運動総合研究所」(労働総研)は8日、   厚生労働省が導入を検…

  • ハッカーって何の言語使ってんの?

    元スレ 1 :仕様書無しさん:2022/03/17(木) 19:14:55.84 .net 誰かわかる人いる? 気になってさ 27 :仕様書無しさん:2022/03/18(金) 23:52:18.26 .net ルートd…

  • IT業界のクソ労働環境をなんとかしたい

    元スレ 1 :仕様書無しさん:2017/10/03(火) 14:25:42.98 .net 残業多すぎィ! 徹夜多すぎィ! 休日出勤多すぎィ! 給料低すぎィ! 偽装請負やり過ぎィ! 雇用不安定過ぎィ! IT業界はクソ 新…

  • 開発するならWindowsで!最近の露骨なMSの取込戦略

    元スレ 1 :仕様書無しさん:2018/08/20(月) 12:30:15.63 .net ・Visual Studio Code、LinuxやMacでも動くテキストエディタの開発 ・WSL搭載でUbuntu等が動くよう…

  • デブって必ず黙るよな

    元スレ 1 :仕様書無しさん:2018/07/09(月) 17:06:54.82 .net 担当のプログラムが全く出来ていなくて 進捗会議で問い詰められてもひたすら黙り込む ひたすら黙り込む 周りが諦めるまで黙り込む お…

  • フリー/SOHOプログラマの確定申告2014〜

    元スレ 1 :仕様書無しさん:2014/03/19(水) 00:07:07.82 .net 確定申告や経理について語るスレです。 年金や税金なんかの話題もありかな。 前年度スレ フリー/SOHOプログラマの確定申告201…

最近のコメント

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