天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

自分たちのチームにおけるテストの立ち位置

先日参加したイベント*1OSTで、自分たちのチームの中で

  • テストを継続的に実施するためにチームで実践していることはなにかあるか?
  • チームで実際に開発の中でテストをどのタイミングで取り入れているのか?

...という話をしたのですが、ふりかえってみると色々と試行錯誤して、意外と実践をしていたことに気が付いたので、メモとして残しておきます。

テストを継続的に実施するためにチームで実践していること

会話する

シンプルですが一番効果があると実感しているのは、とにかく会話をすることです。

仕様を決める段階で、ユーザとの会話を積極的にしたり、チーム全員で仕様を読み合わせながらお互いに疑問をぶつけあったり、コードを一緒に見ながら修正イメージを話し合うことをほぼ必ず実施しています。

話す際には、実例マッピングの話を参考に、実際に具体的な例で整理することを個人的には心掛けています。

レビュアーを専任で置くことを廃止

元々、レビュアーを特定の一人で固定していたのですが、これをやめました。
その代わりに、チーム全員で一つ一つの仕事について、誰がどのくらいの時間をかけてレビューするのかを考えるようにしたのと、テスト観点作成やソースコード作成については、できる限りチーム全員でレビューをするようにしました。

元々は誰か一人で作業をして、特定の人が最後にレビューするという流れだったのですが、チーム全員が成果物に携わるという意識が身についたこともあってか、副次的にモブプロ・モブワークをする時間が増えました。

何がリスクかを考え、テスト戦略を立てる

開発を進めるうえで不透明な部分、先にリスクを削りたい部分を考えてテスト戦略を早い段階で立てるようにしました。
この結果を踏まえて、探索的テストを先行して学習目的で実施したりするなど、テスト戦略を立てるようにしています。

チームで実際に開発の中でテストをどのタイミングで取り入れているのか

上記で書いた話に加え、TDDも実践している*2ので、基本的には継続的にどの段階でもテストをしているのかな、とは思っています。

ただ、全体的に、テストを継続的に実施しようという意識が全体にあるというよりは、毎回ベストな進め方をチームで考えた結果、テストが継続的に実施される場合が多いというイメージを自分としては持っています。

参考資料

なお、試行錯誤していることは、自分で何か考えたというよりは、読書やコミュニティのイベントで参考にした話がほとんどです。

本だと、以下の書籍を特に参考にしています。

leanpub.com

*1:

aki-m.hatenadiary.com

*2:ここは、メンバーの入れ替わりタイミングで実践が途切れることもあるので課題です