テスト書きたいって話すと品質を向上させようとしてると思われる話

結構テスト!テスト!言い続けて、テスト書いたりしています。

という話を周りにしたときに、何故か「テストを書いて品質を向上or担保したいんですね」っていう話にすり替わっていることがあるっていう愚痴。

怒ってるっていうわけではなく、テスト=品質ってすぐに結び付けないでほしいという要望。この話毎回言ってる。

そもそもテストを書くことで品質は向上しない

https://www.slideshare.net/t_wada/jasst-2014-hokkaidotwadatdd

自分のテスト(CI含む)に対する認識は

  • ライブラリを変更するとかリファクタリングするとか、変更前と変更後で違いが無いことを簡単にチェックできる機構
  • 複雑な条件を人間の手と目を使わずにチェックしてくれる機構

です。

で、それが確かに品質に繋がる部分が無いわけではないが、品質とか *どうでもいい* って思ってます。

あくまで、開発するときにストレス無しにガシガシ開発、変更をするためにテスト書いてます。

これだけだとじゃあそんなのユーザのためになってない開発だからやめようぜって言われるので、

表向きの理由として挙げるなら、

  • テストを書くにはテストしやすさを念頭に置いて開発していく必要があり、テストしやすい開発環境の土壌が出来る。そうすればリリースする前に(テストしにくい土壌と比べて)網羅的にテストしやすくなる。網羅的にテストすることで事前に異常に気づくことが出来る。結果品質の向上が見込まれる。
  • ストレス無くガンガンコードを書き換えられる状態が作れれば、開発生産性が向上して、たとえ品質が悪いものがリリースされたとしても即座に改善したバージョンをリリースできる状態になる。結果として品質の向上が見込まれる。

くらいの言い訳は挙げておきたい。

テストしやすい環境があれば、(今までは面倒で避けてたけど)AパターンBパターンCパターン…のチェックをするようになる。

テストが充実していれば、1行直せば解決するバグのために1万行見る必要もないし、

リリース前のQAに人間がAパターンBパターンCパターン…ってチェックする必要もないし、

リリース後に実はDパターンのチェック漏れて問題発生してましたっていうことも無いと思っている。

15分くらいCI回しておっけー、QAサクッと2分で終わらせまーす、リリースしまーす。

っていう状態が出来ると良いよねと思ってます。

 

観点が品質ではなく、あくまで開発生産性ですよっていうことを言っていきたい。