1. yammerの日記
  2. ユニットテストは大抵の場合書..
2024-04-22 08:12

ユニットテストは大抵の場合書いたほうが早い

ということをあらためて

サマリー

大抵の場合、ユニットテストを書くことが早いと感じられます。特に、複雑な計算ロジックや外部通信するグループコードもテスト作成が効果的です。また、自動テストや正常系のテストは時間を節約することができます。

ユニットテスト作成の有用性
こんばんは、2024年4月22日の夜です。
今日のタイトルは、大抵の場合、ユニットテストは書いたほうが早い、にしたいなと思います。
2024年にユニットテストの必要性を解く、そういうのも別にいらないともするんですけど、
ここは日記なので、そういうことを話してもいいかなと思ってしゃべっています。
よく、4回動作を検証するなら、自動テストを書いたほうが良い、みたいな。
大抵の場合、4回ぐらいは動作を確認するので、それ以上回数を重ねるようなら、
自動テストを書いて実行しているほうが、動作検証にかかる時間が短くなる、みたいな。
そういうのが言われたりすると思うんですけど、まさにこれはその通りで、
何も言ってないんですけど、まさにその通りかなというふうに、実感としても思っていて。
よく、計算ロジックが複雑なところに変化があるタイプですね。
計算ロジックが複雑なところはテストを書いて、ユニットテストを特に書いてもいい、みたいなイメージを持ったりもするんですけど、
別にそういうのに限らず、例えば外部で通信するグループコードみたいなもの、
テストを書けば、とりあえずテストを書くと、そのほうが早かったりするんですよね。
特にそういうグループコードってテストを重くしないといけなくて、書きたいとかあるような気もするけど、
一方で動作検証も、例えばPostとかPutのリクエストっていうのをバンバン送って検証するのも若干やりづらい場合とかもあったりするし、
通信のレスポンス回ってるのもだるいし、実際に通信されてるなみたいな気持ちにもなるんで、
重くして完全にそれが全てをテストできたかとしても、7割ぐらい、5割ぐらい試せればとりあえずいいと思うんですよね。
で、何かシンタックスエラーなくて、一通りコードパッセルみたいなのを確認しながらコードを書いていくみたいな感じで、
テストを書きながらアクションコードを書いていったらいいと思うんですよね。
で、最後に、実際に本当にリクエストを飛ばしたのも試してみて、ふむふむ動いたと。
そういうのを固定しておくっていう、動くプロダクションコードを固定しておくっていう意味で、
正常系のテストはいつもあるっていうのは、やっぱりすごい強力だと思うんですよね。
今更、2024年にそんなこと言っても、もう何というか別にそうだねとしかならないと思うんですけど。
なんかユニットテスト見たほうが大抵の場合早いと思うんですよね。
ユニットテストって結構、というか、自動テストってある種、アクションコードとは違ってドライに書かないっていうのが結構あると思うんですよね。
あえて具体的に冗長に書く。それによって、実際はロジックによって印刷されてるような抽象的な操作っていうのを具体的に検証できる。
そういう形になってると思うんですよね。
そういう冗長なコードっていうのも、GitHubコパイロットとかによってめちゃくちゃ早く生成されるように、
めちゃくちゃ早くタイプしなくてもほぼ勝手に打ってくれるみたいな状態になってると思うんですよね。
生成アリが出したコードは正しい、テストは正しいのかみたいなのはなくはないかもしれないですけど、
自動テストと正常系のテスト
人間が書いたコードも別に正しいとは限らないし、どうせどっかで動作検証するんで、
だいたい動いてるんじゃないみたいな感じで、
実際どっちのコードもプロパクションコードもテストコードも動かせるっていうのはすごい強力だと思うんですよね。
特にテストの環境が強制してるライブラリとかフレームワーク、テストフレームワークみたいなのが結構しっかりしてる場合っていうのは。
全然ここからトピックが変わるんですけど、
動いているコードがすでにあって、それを固定するみたいな意味で言うと、
ライブラリのバージョンアップとか、ランタンのバージョンアップとか、インプラストラクチャーの変更とか、
そういうので、いついいみたいな感じで検証したりとか結構あると思うんですよね。
しかもいついいって結構壊れやすいみたいなのがあるんですけど、
継続的に保護していくっていうよりは、ある時点のいついいと、ある時点のいついいが比較できればいい。
継続的にメンテナンスするまではそこまで考えなくて、
とりあえず同じHTTPクエストを送ったら同じHTTPデスクが返ってくるみたいなことを検証したいみたいな、
そういういついいをすごいたくさん作ってモーラル的にやりたいみたいなのを、
生成アイディアでできないかなと結構最近思ってるんですよね。
あんまりうまくいくやり方を思いついてはないんですけど、
こういう動作は変えないんだけど、中のコードは変えるとか、
もちろんゼロからそれを作り直すって場合はいろいろエッジケースを踏んだりとかあるんですけど、
ライブラリー入れ替えるとか言語のランタイムを入れ替えるとかって、
大抵のケースがうまく動いてたらいいみたいな感じだと思うんですよね。
正常系が発達することを確認したい。
そういうケースにおいて勝手にいついやってくれる仕組みみたいなのができないかなというか、
欲しいなというか、そういうふうに思っています。
本番環境ではたくさんのHTTPリクエストも受け付けていたり、
もしくはバッジとかで実際に毎日毎分とか毎日とか動作していたりするので、
それと同じ動作を検証するみたいなのがWebアプリケーションでよくあるケースだと思うんですけど、
いちいちテスト書いてるのがだるいし、いい感じにしてくれないですかね。
そういうのを勝手にやってくれるとか、いついいを準備しやすくしてくれるFusionプラットフォームとかもありますけど、
いいのないですね。
というわけで、今日はこの辺りで終わりにしたいと思います。さよなら。
08:12

コメント

スクロール