工数を理由に管理画面のテストを雑にするのはよくない

という話を同僚としていた。いい話だからブログに書いてと言われたので、無茶苦茶久しぶりに記事を書いた。

通常のユーザーが利用できる面はどういった操作が行われるかわからない以上、テストはしっかり書くべきという意識が強いと思う。実際それは間違っていないし、考えうる限りのケースをテストするべきだと思う。

一方で管理画面は利用できるユーザーが限られているし、悪意のある操作が行われる可能性も限りなく低い。故にリソースが足りていないと「管理画面はまあそこそこのテストでいいでしょ」とか「管理画面は壊れてたら直せばいいから、単純なとこはテストいらないでしょ」みたいな考えに陥りがちだけど、実際は強い権限による操作が行われるのだから相応のテストを書いて然るべきだよね、ということを話していた。

管理画面は通常ユーザーが見れる面と違って権限チェックなども必要だし、これによってテスト書くのめんどくさくなりがちだよねという話題もある。でもテスト手法が確立されていればそれを模倣するだけでいいし、その手法が存在していないってことは実装当初の時点でちゃんとテスト書いてないのでは?という話もできる。まあ後付でどんどんチェック項目増えて肥大化して〜みたいなパターンも考えられるけど、それで追従できないならそれはそれで設計ミスってそうな気はする。

ユーザーからしたら自分の操作起因ではないステータスの変更が行われるわけで、テスト不十分による不具合で誤BANなんてされた日には不快度MAX!!みたいな感じになるので、「この操作が正常に動かなかったときに、対象ユーザーとしてどう思うか」という「操作される側」の意識は常に持っておきたい。

とはいえこれは本当に工数のことを考えていない話で、火の車だった場合には「そんなことしてられっかよ!」という気持ちになるのもまあ分かる。サービスは無料で動かせないからね。でもそれでサービスの信用度下げて「でもあそこ誤BAN多いからな」みたいな風評がついてしまうと新規ユーザー獲得率にも影響するし、自分自身一度信用する気が失せたサービスは可能な限り使いたくないと思っているので、少なくとも自分は自分自身が不具合踏んで(踏まれて)不快になりそうなポイントはちゃんとテストするようにしような、というマインドで開発している。

というかまあこういう脅迫をしてちゃんと工数を確保するのもテックリードの仕事なんだろうな(幸いうちのプロダクトオーナーはその辺の理解度高いので脅迫しなくても大抵やらせてもらえる環境でとてもありがたいのだけど)