スナップショットテストって何だ? っていうのが気になったので、急遽参加してきました。おそらくテスト自動化に関連しそうだなーと思っていて、すごく興味がありました。
勉強会URL
https://supporterzcolab.com/event/186/
講師
@ kentt8046 様
スライド
概要
この日、ノートPCを持たず、時間がたまたまあったので行ってきた、みたいな感じで、ほとんどツイートのメモしか残っていないんですね。
概要としましては、
- テストを書いていない人はテストを書こうね
- JestっていうFacebook様のライブラリが便利ですよ
- 特にReactと相性がいい
- TypeScript、JavaScriptで使える
- テスト自動化することで回帰テストも容易になるので、最初からテスト自動化する工数を取ろう
- スナップショットとはテストデータのアウトプット値
- スナップショットテストとは、スナップショットと現在のプログラムの出力の比較
- デグレに有効
- 乱数とか含む場合は過去の結果と必ずしも一致しないため、スナップショットに含めず、型だけでも確認しておく
下記、乱雑なツイート郡。
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
テストを書いてない人はテストを書きましょう。
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
テストコードはテストフェーズの前借りにするとか、メンテを開発フローを入れるとか、後で問題が起こるよりマシだから先にやらない?
てかCIは手動テストより早いはずだよ???
という話
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
t_wada さんのテストの本を買いましょう(
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
スナップショットテスト??
1回目は目視で確認して、アウトプットデータを保存(スナップショット)、2回目以降はアウトプットとスナップショットを比較する手法
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
JestっていうFacebook様が開発したテスト用ライブラリがある
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
可変値とかはアサーションで確認
スナップショットの更新は1ファイルずつ…
#spzcolab
— 修行という名のyumechi (@yumechi0525) 2017年10月19日
確認する値が乱数だったりする場合は外したりする(型だけ見るとか)
なるほどなあ…
まとめ
このあと自分が取った行動としては、
- t_wadaさんの本を買った、そして半分くらい読んだ
- 実際にJestを手を動かして実感中
- 公式の「始める」のページを見ながら
- https://facebook.github.io/jest/docs/ja/getting-started.html
- TypeScript もついでに始めてみたけど、結構辛い(ドキュメントが探しづらい)
- Jestが使えない環境で、mocha/chai を使ってみたり
- これもちょっと環境的な問題で挫折していたのですが、共通関数とかのテストはある程度かけたので、環境的な問題をなんとか解決する方針に持っていけないかなあ…
と、テスト自動化に興味津々で色々試すようになりました。 今、JavaScriptばかりでやっていますが、他の言語でもテスト自動化のためのライブラリ、フレームワークがあるので、どの言語で開発するにしろ、その手のものは早めに抑えるようにしたいですね。
あとテスト自動化のためのテストコードを書くのにも慣れたいです。開発用コードを書くときとはまた違ったコツが必要な気がしている。
というわけで、テスト自動化は楽しいし、役に立つはずなのでやっていきましょう!