Slide 1

Slide 1 text

Goでテスト仕様書からJSONファイルを 自動生成するツールを作ったよ - The JSON generator tool for tests 2018-12-18 golang.tokyo #20 LT Takuo OKI

Slide 2

Slide 2 text

About me 2 ● もともと7年くらいSIer。 ● いまはVELTRAという旅行関連の会社でGoを書いています。 ● 技術ブログを気まぐれに書いています。 Let’s search “veltra engineering blog”! GitHub: takuoki Twitter: takuokl ←”i”じゃなくて”l”!

Slide 3

Slide 3 text

Do you write tests? テスト、書いてますか?

Slide 4

Slide 4 text

Unit test is so good! 4 Goはユニットテストが簡単に書けて、メンテナンスもしやすい。

Slide 5

Slide 5 text

How about integration test? 5 インテグレーションテストについてはあまり資料がない。。 例)APIのリクエストとレスポンスをまるごと確認したい。  → データが大きいのでGoのソースに  テストデータを書くわけにもいかない。。

Slide 6

Slide 6 text

I’ve created a tool for such cases! 6 Google Spreadsheetに書いたテストケースから、 JSONファイルを作成するツール”testmtx”を作った! JSONファイルをGoで読み込めば、”go test”でテストもできる! Google Spreadsheet JSON files for test testmtx

Slide 7

Slide 7 text

How to write spreadsheet 7

Slide 8

Slide 8 text

How to write spreadsheet 8 JSONのプロパティ定義を書く

Slide 9

Slide 9 text

How to write spreadsheet 9 テストケース毎のデータを埋める ※1列=1テストケース

Slide 10

Slide 10 text

How to write spreadsheet 10 object型やarray型は"*new"と書く

Slide 11

Slide 11 text

How to write spreadsheet 11 1テストケースで複数の JSONファイルを作成 { "num_key": 101, "string_key": "string value 101", "bool_key": true, "object_key": { "key1": 201, "key2": "string value 201" }, "array_key": [ { "key3": 301, "key4": "string value 301" }, { "key3": 401, "key4": "string value 401" } ] } { "status": “success”, "code": 200 }

Slide 12

Slide 12 text

How to output files 12 コマンドラインツールで、シートIDを指定すればOK! ● 設定ファイルで、シートIDのエイリアスを定義できる。 ● Google Sheets APIを使用しているので、OAuth認証が必要。 $ testmtx out -s 1Zs2HI7x8eQ05ICoaBdv1I1ny_KtmtrE05Lyb7OwYmdE output completed successfully!

Slide 13

Slide 13 text

Supplemental features 13 ● JSONのプロパティ定義をいちから書くのは面倒なので、 Goの構造体を読み込んでテキスト出力できる。 ● プロパティ定義の階層を調整できる。 ● 設定ファイルで対象外のシートを指定できる。 ● YAMLも一応サポートしている。

Slide 14

Slide 14 text

Conclusion 14 ● Goでのツールの実装について ○ ASTを初めて触って楽しかった! ● 良かった点 ○ テストデータが膨大になっても、なんとかメンテナンスできる。 ○ 単純にJSONを吐き出すツールなので汎用的(テスト以外でも可)! ● 気になる点 / 反省点 ○ Sheet自体はGit管理外なので、ブランチころころ変えてると気になる。 ○ テストのツールなのにテストコードをかけていない!! ● その他 ○ 反応があったら改善するモチベーションに! https://github.com/takuoki/testmtx

Slide 15

Slide 15 text

End