しがないソフトウェアエンジニアの探求日誌

六本木一丁目で働くソフトウェアエンジニアのブログ

Goのテストに関する"もやもや"がgolang.tokyo#17でとても解消された | golang.tokyo#17参加レポート

f:id:khigashigashi:20180822120705j:plain
golang.tokyo

2018年8月21日(火)に、freee株式会社さんのイベント会場で、golang.tokyo#17が開催されました。今回のテーマは、「今あらためてテストの話」ということだったのですが、普段テストを書いていてもやもやしていた部分が解消されるとてもタメになる内容ばかりでした。 本参加レポートでは、会場の雰囲気から内容までをレポートいたします。

golang.tokyoとは

golangtokyo.connpass.com

プログラミング言語のGoの導入企業のメンバーが集まり、Goの普及を推進するコミュニティです トークイベント、ハンズオン、etcのイベントを開催していく予定です!

すでに、togetterをまとめていただいているので、当日の様子はこちらで見ることができます。 togetter.com

会場の雰囲気

今回の会場は、freee株式会社さんのイベントスペースで行われました。

f:id:khigashigashi:20180822120658j:plain
golang.tokyo会場

f:id:khigashigashi:20180822120701j:plain
golang.tokyo会場風景

f:id:khigashigashi:20180822121047j:plain
freee株式会社

発表内容

Tour of testing by budougumi0617

@budougumi0617さんによる発表です。

前段に、freeeさんの会社について紹介されていて、Railsがメインで動いているところに対して、マイクロサービス化を進めていて、実際4機能ほどGoで書かれたマイクロサービスが動いているようです。

今回の発表では、主に「go testコマンド・testing.TについてGo1.10までの復習」・「テストのベタープラクティス」についてはなされていました。

体系的にまとめてくださっているので、何回でも見返したい神資料でした。

個人的に「なるほど」となったのは、Table Driven Testingでループを回す際、testsで回してttで受け取るという点でした。 標準パッケージのテストの書き方が基本的にこうなっているとのことで、casescでやっていた私は返ってすぐ書き換えました。

非公開な機能を使ったテスト by tenntenn

資料URL:https://docs.google.com/presentation/d/1LLEHlg2IEecaoXnUpKOkMSE1hk9lAWVNJz5VMwmbqm8/edit

Gopher道場で講師をされている、@tenntennさんの発表でした。

テストはテスト対象と別のパッケージにする」事に関する標準パッケージの状況・利点・export_test.goを利用したテスト手法についてご紹介されていました。 発表の際、デモをおこなわれていたのですが、デモで使用されていたコードは以下の記事にて公開されているようです。

tech.mercari.com

今回紹介されている手法は、標準パッケージでも利用されているようなので、標準パッケージのソースを読むのが一番参考になるとのことでした。

また、質疑応答にて、「非公開な機能が多いと大変な書き方では」という意見が上がったのですが、その場合は、そもそも「非公開が多いのはよくない設計なのでは」という見直した上で、internalパッケージにするといった検討が必要になることもあるとのことでした。

LT1 外部環境への依存をテストする by duck8823

www.slideshare.net

@duck8823さんより、CIサーバーを作った際に行った、外部環境への依存をテストする方法についての発表でした。

今回発表されているCIサーバーgithub上に公開していただいています。

github.com

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の皆さんありがとうございました!