カレーなる辛口Javaな転職日記 RSSフィード

2013年 10/09

ユニットテストは受け入れられるかどうかの問題じゃないような

あるとき、一緒に働いてるエンジニアさん(ここではAさんとしておこう)に「ここ難しそうだから、テスト書いたほうがいいですよ」って話をしたら、「じゃぁ、工数かかっちゃいますね」って言われて結局書いてなかったな。

この解答については

  • id:moriyan6001 「工数かかりますよね」っていうのはオブラートに包んだ言い方で本音は「オレの仕事を増やすなよ」だと思うんですが、長期保守は会社にとっての旨味ですから、社員に対しての模範解答は給料を上げるしかないですよね

なんだろう.*1

でもそれ以外にも,日本のSIビジネス的な病巣が見え隠れするのがユニットテスト問題.

「スキルがないからPHP使ってます」「Javaは使ってるけどオブジェクト指向って何ですか?」みたいな現場だと,テストするスキルも人手も足りない.

http://d.hatena.ne.jp/JavaBlack/20120602/p2

http://b.hatena.ne.jp/entry/d.hatena.ne.jp/hs_hachi/20131007/1381175478

  • id:mapserver2007 この手の奴は個人的に導入するのは別に難しくないが、周りに普及させるのがほんときつい。政治的な問題に必ずぶちあたる。

  • id:s-kic 周りでもよく聞く話。悩ましい。/工数を理由にしている人に、本当にそのコードは1回しかテストしないのか問うてみたくなる…。BugFixは?機能追加は?次Phaseは?本当に無いの?

たとえあっても,その頃に自分が同じ会社にいて,且つその案件の同じ部分に割り当てられる保証がない.


IT業界の(特にプログラマーの)非正規雇用問題が,ここにも影を落としている.

  • id:bienbienbienbien 長期的に品質を維持し続けられる仕組みを講じる必要・立場に無い人がアサインすると大抵そうなる。作ったら抜ける人たちばかりだもの。
  • id:tzt テストを書くにはそれなりにスキルがいるからなぁ。テストを書くことのメリットと、スキルのある人のアサインやスキルのない人の教育のコストを天秤にかけると、なかなか導入は進まないだろうなというのが実感。
  • id:bugcloud ボクも1人で書いてますよー。他の誰にも見られることなく忘れ去られてくんだろうなーと思いながら。

  • id:gomis ユニットテストレベルだと何らかの形で動作検証はしてるはずなので、それを保存しとくだけだと思うのだけど。どういう検証してるか尋ねてみてはいかがか

スキルが低い人は,多くの場合に自動テスト不可能なコードを書く.というかデバッグもろくにしてない.そういう人にユニットテストを作れと言っても自分では手に負えないのが普通.

  • id:nakag0711 スタブがめんどいですね。あと仕様変更のたびにテストもかえなきゃというのがテストたまってくると大変。

多少の仕様変更くらいならテストファーストで変えた方が効率が高いけど,根本レベルで卓袱台返しが日常茶飯事だと,テストを書かない以外の選択肢がなくなることもあるかも.

  • id:trashtoy とは言うものの、テストの必要性を叫ぶ記事はたくさんある一方で、具体的なテストの書き方や導入の仕方などの情報はネットにほとんどないのよね。そのあたりが改善されれば。(ドットインストールなどに期待)

ネットにある情報なんて,ごく一部だけだってば.

参考文献もあるし,それこそテスト付きのOSSソースコードとか読めばいいわけだし.

「ネットにないから勉強しません/できません」は糞プログラマーの決まり文句.

  • id:Koozz テストは大事だけど書く技術を自ら学ばないエンジニアが多いのも事実。知らないことに恐怖を感じないのは他力本願になっているかもね。

  • id:yatt 何回も回帰テストするような開発だと効果あるけど、作って納品して終わりだと無駄に工数がかかるだけだと思う
  • id:harusora30 やり方を決めるのはリーダーだから嘆いても仕方ないことさ
  • id:manaten テストは工数かかるのは間違いないけど、長期保守するプロダクトなら十分取り返せる工数なんだよなー それを折り込めない会社がホント良くない
  • id:cad-san まずは日程的に、ユニットテストを書くだけの工数増加が許容されるかどうかかなぁ。余裕無いと新しい事に手を出しづらいというのはある。一回書いてしまうと手放せなくなる。
  • id:moriyan6001 「工数かかりますよね」っていうのはオブラートに包んだ言い方で本音は「オレの仕事を増やすなよ」だと思うんですが、長期保守は会社にとっての旨味ですから、社員に対しての模範解答は給料を上げるしかないですよね
  • id:dagama そりゃやってもやらなくても給料も予算も変わらないならやらないよねってだけの話では
  • id:ybc テストを書いて給与が上がればみんな書くと思うよ。
  • id:tkc33 中小SIの弊社でテスト書くはチェックシート書くの意味なので、これはソフトウェアエンジニアにしか伝わらない言葉。つかシステムエンジニアってもう別の職業だよね

「ユニットテストが何のことかわからなかったわけだが。」

http://rjge.hatenablog.com/entry/20131008/1381228620

まず最初に、ユニットテストってなんぞ?となり、はてなのキーワードを見たのち、一応グーグル先生にも訊いてみた。結果、単体テストのことらしいと把握。自分が認識してる単体テストと上記の記事で言われてるユニットテストが同じものであるかは置いといて、

置いといちゃ駄目でしょ.


たぶんこの人は,ここで言ってるユニットテストのことは分かってない.JUnit等のテスティングフレームワークを使っていながら,「ユニットテスト」という単語を知らないとは考えにくいもの.おそらく古式ゆかしいSIビジネス的,ドミノ倒しウォーターフォールにおける手動の「単体テスト」のことしかしらないんじゃないかと.

トラックバックを送ってその間違いを指摘しようかと思ったら,トラックバックが見当たらない.やれやれ.


JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

Effective Unit Testing: A guide for Java developers

Effective Unit Testing: A guide for Java developers

JUnit in Action

JUnit in Action


以下はテスト本だけど特にユニットテストに関する本というわけではない.

他テスト本リスト→ http://d.hatena.ne.jp/JavaBlack/20120602/p2

*1:或いは「テストのやり方分かりません」「テストってなんですか?」かもしれんが.でもこれも「動けば良いので,安ければ安いほど(会社にとって)良い技術者」という企業側の都合によるもの.技術者のせいとは言い切れない.