ソフトウェアテストの話しです。
サービスが成長していくと、
- テストが肥大化していく
- テストの実行速度が遅くなる
- 一部の変更が他機能へ影響を及ぼす
などの問題が顕著になってくると思います。
そうなると、
- 複数のメソッドをまたがるメソッドの網羅性よりもmock/stubの利用により速度を向上させるためのテスト
- 速度よりも、メソッドの網羅性を重視するためのテスト
- テストの実行環境の並列化
などの取り組みが必要になってくるでしょう。
それに対して、開発者は何らかの指標を持って、何を重視するかの判断を行う必要がでてきます。(テスト戦略、のレベルの話しになるでしょうか。)
個々のメソッドの影響度、重要度などの定義はさておき、ざっと以下のような観点で何を優先するか、ということを考えるのが良いのではないでしょうか。
ここで重要なのは、リファクタリングをいつ行うか、を時間軸をもとに決めることかなと。それに対して、どの程度の網羅度のテストを用意すれば良いとかが変わるでしょうし。さらには、想定した以上に長くサービスが使われる、ということもよくあることだと思います。なので、”リファクタリングを行う目安”として、時間軸もテストを考えるときに考慮に入れることは重要な要素なのではないかと思っている最近です。
さらには、右上の領域に含める機能をどうするか、はサービスに影響の大きな機能にもなるので、優先度の設定が重要ですね。
ここらへんを使いながら、弊社内部もエンジニア/非エンジニア含めて、ユーザに価値を届けるためにどこを向いて価値の検証を行うか、が議論できるように歩んでいきたいなと思います。
最近、Fearless Changeを読んでいて、いつにも増してより仲間で進んでいくことに関心を持っている私でした。
SQiPは間に合わないかもしれないけれど、何らかのオープンな場所で成果を共有したいです。
