The JSON generator tool based on Google Spreadsheets

483c56e6db996871fa14fe17430eccc4?s=47 takuoki
December 18, 2018

The JSON generator tool based on Google Spreadsheets

483c56e6db996871fa14fe17430eccc4?s=128

takuoki

December 18, 2018
Tweet

Transcript

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

    golang.tokyo #20 LT Takuo OKI
  2. About me 2 • もともと7年くらいSIer。 • いまはVELTRAという旅行関連の会社でGoを書いています。 • 技術ブログを気まぐれに書いています。 Let’s

    search “veltra engineering blog”! GitHub: takuoki Twitter: takuokl ←”i”じゃなくて”l”!
  3. Do you write tests? テスト、書いてますか?

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

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

  6. I’ve created a tool for such cases! 6 Google Spreadsheetに書いたテストケースから、

    JSONファイルを作成するツール”testmtx”を作った! JSONファイルをGoで読み込めば、”go test”でテストもできる! Google Spreadsheet JSON files for test testmtx
  7. How to write spreadsheet 7

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

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

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

  11. 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 }
  12. How to output files 12 コマンドラインツールで、シートIDを指定すればOK! • 設定ファイルで、シートIDのエイリアスを定義できる。 • Google

    Sheets APIを使用しているので、OAuth認証が必要。 $ testmtx out -s 1Zs2HI7x8eQ05ICoaBdv1I1ny_KtmtrE05Lyb7OwYmdE output completed successfully!
  13. Supplemental features 13 • JSONのプロパティ定義をいちから書くのは面倒なので、 Goの構造体を読み込んでテキスト出力できる。 • プロパティ定義の階層を調整できる。 • 設定ファイルで対象外のシートを指定できる。

    • YAMLも一応サポートしている。
  14. Conclusion 14 • Goでのツールの実装について ◦ ASTを初めて触って楽しかった! • 良かった点 ◦ テストデータが膨大になっても、なんとかメンテナンスできる。

    ◦ 単純にJSONを吐き出すツールなので汎用的(テスト以外でも可)! • 気になる点 / 反省点 ◦ Sheet自体はGit管理外なので、ブランチころころ変えてると気になる。 ◦ テストのツールなのにテストコードをかけていない!! • その他 ◦ 反応があったら改善するモチベーションに! https://github.com/takuoki/testmtx
  15. End