Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What is going on with this article?
@t2ru

この残酷な世界で、TDDのメリットを少しでも享受する2つのルール(仮)

More than 5 years have passed since last update.

ユニットテストが通ったコードに対する安心感は、結構ある。実際にバグもだいぶ予防できている気がする。

ただ、人は面倒くさがりなもので、「テストコードをたくさん書いたら、メンテ対象のコード量がその分増える。めんどい。」みたいな気持ちが起こってきて、当初のTDDへの意気込みが薄れてくる。

面倒くさいという感情一つで、100の理屈も吹っ飛んで、当初の夢のプランが脆くも崩れ去る。我々はそんな残酷な世界を生きている。

ただ、そんな世界でも生きねばならないので、ちょっとでも対抗したい。そのために、次の2つのシンプルなルールを適用してみてはどうかと考えた。


  1. 自分のコードがちゃんと動くかどうか不安を感じたら・・・
    • テストできるようにリファクタリングして、
    • テストケースを書け。
  2. クロスレビューを必ずやって、そのとき他人のコードがちゃんと動くか不安を感じたときには・・・
    • コードの行数範囲を明示した上で、「テストできるようにリファクタリングして、テストケースを書け。」ととりあえずコメントしろ。

プロジェクトリーダーは、ユニットテストをやるためのツールセットを用意し、何度か繰り返してクロスレビューをやる計画を立てておく。クロスレビューでは、上記のルールを設定して実施する。


まだちょっとしか実践していないから、ルールの過不足は不明。

下記のようなものになんとか対抗したいというのが意図。

  • 他人の指摘がないと、リファクタリングやテストケース書きなどやる気がおこらない。大抵の人は、自分に甘く他人に厳しい。
  • カバレッジとかの簡単すぎる基準を設けて無理にやらせると、本質を捉えてちゃんとやってる人まで罰することになる可能性がある。これはやる気を絶望的に低下させる。
  • 必要と感じられないようなテストコードをメンテし続けるのは苦痛。
  • ちゃんと動くか不安になるようなコードは、大抵関係ないコードとごちゃ混ぜになって長いコードになっている。そういうバグの温床をピンポイントで攻撃すれば、費用対効果は高い。

TDDのいいところは、コードに対して網羅的にやらなくても効果があること。部分的にやったとしても、やった分だけバグの可能性が減る。

必要だと自分で思ったところだけをやるんだったら、面倒くさいという感情にも対抗しやすいのではないかというのがミソ。(特に面倒だと思わないのなら、それはすごい!そういう人は全部ちゃんとやってもらってOK、大丈夫。)

sed -e 's/面倒くさい/コスト/g' < this.md

Test Driven Bugfix...

12
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
t2ru

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
12
Help us understand the problem. What is going on with this article?