golang.tokyo #17 -テストの話- 参加レポート

· 1706 words · 4 minute read

freeeさんで開催されたgolang.tokyoに参加しました。
久しぶりのgolang.tokyo!

freeeさんは最近マイクロサービス化を進めていて、Goのプロダクトも4つの本番稼働しているとのこと。
表に出ている求人はまだRails推しだけど、社内ではGoも積極的に使っているそうです。


登壇#1 「Tour of testing」@budougumi0617さん

いつもtwitterでお見かけしてるけど会うのは初めだったbudougumiさん!

Goのテストについて、基本的なところをわかりやすくまとめていただいだ上で、Go 1.10から追加された go vetTest cache-parallelオプション、デバッガなどの新しい機能をご紹介いただきました。

わかりやすいサンプルコードもついていて、Goのテストを書く人みんなにありがたいまとめ。 発表資料は、今後テストを書くときに見返すことになりそうです。


登壇#2 「非公開な機能を使ったテスト」@tenntennさん

Women Who Go Tokyoでいつもお世話になっているtenntennさん!

メルカリ社の「Go Friday」という社内勉強会でお話しして、ブログにもなった内容をさらに詳しく解説いただきました。

Go Fridayの記事はこちら。

Goのテストではテスト対象とテストコードを別パッケージにできるのですが、別パッケージにすると、パッケージ内にしか公開されていないメソッドや変数などにアクセスできなくなってしまいます。

この課題に対処するために、テスト対象と同じパッケージ内にexport_test.goというファイルを置き、これを経由することでパッケージ内にしか公開されていないメソッドや変数などをテストコードにだけ公開できるようにするという手法を紹介いただきました。

なお後半はハック的な手法の紹介もあり、会場からは笑いがもれていました。

また会場でデモとして公開されたコードのサンプルで公開してほしいという声もちらほら聞かれたので、公開期待しています!


LT#1 「外部部環境への依存をテストする」 by duck8823さん

普段はサーバーサイドKotlinを書いていて、Goは趣味だそう。

duciというDocke内で動くCIサーバをつくる際にテストで詰まったことのお話でした。

DockerやGitHubのサードパーティライブラリを使う際のテストのやり方や、モックサーバーを立ててテストをする方法などをご紹介いただきました。


LT#2 「Developer-friendly なテストを考える」 by izumin5210さん

開発者フレンドリーなテストの書き方のお話でした。

テストが落ちたときに修正しやすい書き方をご紹介いただきました。 またGoのテストでは途中でpanicで停止させずに最後まで走らせることが大事ということで、テストを完走させるためのテクニックも教えていただきました。


LT#3 「止めたいのに止められないテストの話」 by knsh14さん

from メルペイ

Women Who Go Tokyoでいつもお手伝いいただいているknsh14さん。

テストが落ちたら即ストップして、テストの時間を短くしたいというお話でした。

go test -fali-test コマンドが使いたいのにバグがあって思ったように挙動しない、ということで調査した内容を紹介いただきました。

なおこの不具合はGo 1.11で修正されたそうです。 明日のリリースパーティに間に合ってよかった!


感想など

最近は仕事でRailsばかり書いているのですが、金曜日(8月24日)からGopherConに参加するためデンバーに行くので、Goを書いていくぞというきもちです。(先週末の会社の開発合宿では書いた)

ここのところ、小さいものでもたいしたことないものでいいから楽しいと思うものをつくって、コツコツ積み重ねていくのが大事だなと今まで以上に感じています。

自分でコードを書くと理解も深まるし、継続してコードを書くことで、コードを書くのが好き!と言える体力を維持できる気がしています。

golang.tokyo、Go1.11リリースパーティー、GopherConと立て続けに参加して、モチベーション上げてたくさんGoを書いていく所存です。