Goのテストに関する"もやもや"がgolang.tokyo#17でとても解消された | golang.tokyo#17参加レポート
2018年8月21日(火)に、freee株式会社さんのイベント会場で、golang.tokyo#17が開催されました。今回のテーマは、「今あらためてテストの話」ということだったのですが、普段テストを書いていてもやもやしていた部分が解消されるとてもタメになる内容ばかりでした。 本参加レポートでは、会場の雰囲気から内容までをレポートいたします。
golang.tokyoとは
プログラミング言語のGoの導入企業のメンバーが集まり、Goの普及を推進するコミュニティです トークイベント、ハンズオン、etcのイベントを開催していく予定です!
すでに、togetterをまとめていただいているので、当日の様子はこちらで見ることができます。 togetter.com
会場の雰囲気
今回の会場は、freee株式会社さんのイベントスペースで行われました。
発表内容
Tour of testing by budougumi0617
@budougumi0617さんによる発表です。
前段に、freeeさんの会社について紹介されていて、Railsがメインで動いているところに対して、マイクロサービス化を進めていて、実際4機能ほどGoで書かれたマイクロサービスが動いているようです。
今回の発表では、主に「go test
コマンド・testing.T
についてGo1.10までの復習」・「テストのベタープラクティス」についてはなされていました。
体系的にまとめてくださっているので、何回でも見返したい神資料でした。
個人的に「なるほど」となったのは、Table Driven Testingでループを回す際、tests
で回してtt
で受け取るという点でした。
標準パッケージのテストの書き方が基本的にこうなっているとのことで、cases
・c
でやっていた私は返ってすぐ書き換えました。
非公開な機能を使ったテスト by tenntenn
資料URL:https://docs.google.com/presentation/d/1LLEHlg2IEecaoXnUpKOkMSE1hk9lAWVNJz5VMwmbqm8/edit
Gopher道場で講師をされている、@tenntennさんの発表でした。
「テストはテスト対象と別のパッケージにする」事に関する標準パッケージの状況・利点・export_test.go
を利用したテスト手法についてご紹介されていました。
発表の際、デモをおこなわれていたのですが、デモで使用されていたコードは以下の記事にて公開されているようです。
今回紹介されている手法は、標準パッケージでも利用されているようなので、標準パッケージのソースを読むのが一番参考になるとのことでした。
また、質疑応答にて、「非公開な機能が多いと大変な書き方では」という意見が上がったのですが、その場合は、そもそも「非公開が多いのはよくない設計なのでは」という見直した上で、internalパッケージにするといった検討が必要になることもあるとのことでした。
LT1 外部環境への依存をテストする by duck8823
www.slideshare.net
@duck8823さんより、CIサーバーを作った際に行った、外部環境への依存をテストする方法についての発表でした。
今回発表されているCIサーバーはgithub上に公開していただいています。
LT2 Developer-friendly なテストを考える by izumin5210
@izumin5210さんよる発表です。
「Developer-friendly なテスト」を「落ちたときに直しやすいテスト」と定義した上で、どのようにテストを書いていくかという点について、Table Driven Testingやgoogle/go-cmpなどを使うやり方をご紹介されていました。
LT3 止めたいのに止められないテストの話 by knsh14
資料URL: https://talks.godoc.org/github.com/knsh14/go-slides/lt-go-test-failfast.slide#1
@knsh14さんによる発表です。
go test -failtest
を実際に試した際に意図しない挙動になったことをきっかけに、内部挙動を調査・実験していった内容でした。実際に、go test -failtest
はちゃんと動くのかという結論については資料でぜひご確認ください。
まとめ
「今あらためてテストの話」というテーマで開催された、golang.tokyo#17でしたが、普段テストを書いていて「これであってるのか???」ともやもやしていた点を話していただいてとても素晴らしい会でした。
golang.tokyoの運営スタッフの皆さん・会場を提供していただいたfreeeの皆さんありがとうございました!