地方でリモートワーク

リモートワーク、プログラミング、エンジニア、地方

DHHが自社プロダクトのBasecampからシステムテストをすべて削除したらしい

尊敬するエンジニアであるDHHが、 自社プロダクトのBasecampからシステムテストをすべて削除したらしい。

world.hey.com

DHHはRails5.1の時にシステムテストRailsにデフォルトで組み込むようにしており、 熱心にシステムテストに取り組んでいたようです。

しかしバグを検出するために書いたはずのシステムテストが、 システムテストが動かなくなったときに直す労力が大きすぎて、 コストに見合わないと主張しています。

world.hey.com

みなさんも経験があるんじゃないでしょうか? システムテストが動かなくなって、 ヘッドレスブラウザの動作を見るために JavaScriptスクリーンショットを撮ってみたり、 VNC Viewerなどでヘッドレスブラウザがどのように動いているか確認した 経験があるんじゃないでしょうか?

www.realvnc.com

10回に1回だけ失敗するテストに対して、sleepを入れるワークアラウンドを入れたこともあります。

以下の2024年5月17日の時点では、 「すべてのシステムテストを捨てるのではなく、ほとんどのシステムテストを捨てるべき。 」 と主張していました。 そして人間が手動テストすることを勧めています。

Now I'm not advocating you throw out all your system tests. Just, you know, probably most of them. System tests work well for the top-level smoke test. The end-to-end'ness has a tendency to catch not problems with the domain model or business logic, but some configuration or interaction that's preventing the system from loading correctly at all. Catching that early and cheaply is good.

world.hey.com

一方でシステムがちゃんと動作しているか確認するためのトップレベルのシステムテストを この時点では勧めていたので、 システムテストをすべて削除したことには驚きました。

This year, we finished our decision to fold, and to give up on using these types of system tests on the scale we had previously thought made sense. In fact, just last week, we deleted 5,000 lines of code from the Basecamp code base by dropping literally all the system tests that we had carried so diligently for all these years.

world.hey.com

有名なRuby on Railsというオープンソースのコア機能に取り入れるくらい熱心に取り組んでいた システムテストについて、結果的に労力に見合わないと判断して、失敗を認め、実際に行動に 移すDHHは純粋にかっこいい。

自社アプリをAppleにリジェクトされて、Appleにキレて開発マシンをMacからLinuxに変更しちゃうところとか、 クラウドは高すぎると主張して、実際にオンプレに移行かつオープンソースのデプロイツールを出しちゃうところとか。

口だけじゃなくて行動に移して、オープンソースまで出しちゃう。

ちなみに上記DHHの記事はDHHのメールマガジンに登録すると見逃さずに読めるので、 購読をお勧めします。

world.hey.com