以前の記事から4ヶ月、今回はSETグループでの取り組みの中のひとつ、テストツールによる効率改善についてご紹介します。
テストやデバッグ・仕様調査のために特定の状態を作るためデータ作成作業は、程度の差こそあれ、テスターやエンジニアの業務の一部として発生する作業のひとつです。
ex) 特定の条件でタクシーを注文した後の履歴表示を確認するためには、事前に配車中の注文データを作りたいなど
テスト手順は社内情報共有ツール内で展開されてきていてとても良い状況にありますが、一部では情報が古かったり分散していたり、それぞれが手元で環境構築を行って実行する必要がありと、存在自体にはとても助かりながらも、自己完結の負荷が高く、楽に出来ない現実もありました。(個人スキルの差など)
そういった課題を改善出来るとテストが楽になり、テストに対する心理的負担や時間的効率が改善し、さらにはリグレッションテストの自動化も容易になり、今より良い状態を作れると思い作ることにしました。
これまでの課題をまとめると
要するにあれ動作確認しなきゃって思った時に、「でもどうやればいいんだ?」っとならずにパパッとやりたいことが出来れば良いんです。
最初に、社内ドキュメントや個人からテスト・デバッグに関する情報を集めて、重要そうな機能からツールとして誰でも利用できる環境を提供することにしました。
その後は、マニュアルテスト実行者や自動テスト側の意見を定期的に取り入れながら、機能拡張をしていく運用サイクルを想定しています。
結果として、サービスに関わる人の作業効率化を図っていく流れです。
最初から大きく目指さず、小さく繰り返しながら。
6月23日が初コミットで、最初に1〜2週間ほどで形になるものができました。
最初はテストが難しくデグレの頻度が多かったある状態を簡単に再現出来る機能だけです。
テスト・デバッグに関わる作業の効率を改善しながら、属人化を防ぐこと。
当初は席に置いてあるMac miniで稼働していましたが、現在はSRE協力のもとAWS上で稼働しています。(参考記事:JapanTaxi Kubernetes Ecosystem)
前述した課題の多くを打ち取れた、または改善することができました。(テストに必要なデータが整った環境などのインフラ面の課題については未解決)
テストツールのテストをテストツールで・・・(すみません)
どこに原因があるのか、調査に必要なデータをレスポンスに返すように改善。それでも現在のツール構成に課題が残っている部分があるため、恒久対応すべくSREと共に引き続き改善しています。
今後サポート範囲が増えるにつれて、情報のキャッチアップ速度やテストツール側への反映速度などがボトルネックになってきます。 このツール自体が属人化するのは防ぐ必要があります。
APIやWebを提供するために広く浅く様々な技術を使って作られているため、 高度で無くともフロントエンドやサーバーサイドの開発経験が必要です。 社内で採用実績のある技術を選定していますが、より絞った方が良いと感じています。 例えばAPIもWebもNode.js + TypeScript で統一することでより必要な言語を減らすこと。ただし言語が同じでもサーバーとフロントでは根本的に違うのでそこの知識が引き続き必要になります。
プロダクト側にテスト用APIエンドポイントを生やす。
イメージとしては社内OSS。 SETグループが面倒を見つつも今後の機能拡張の可能性を考えると自由に手を加えられる状態にしたいを考えています。 既にインフラ面はSREグループに見てもらっていますし。 ドキュメント整備やモブプロ・ペアプロを通してトラックナンバーを増やいけると良いと思います。
これは今回のツール自体とは別の話ですが、主にアプリ開発者目線で、サーバーやDBの観点を抜くことでよりテスト可能な範囲を広げることができます。
以前特定の機能に限りモックサーバーを用意しましたが、時系列を考慮した動的なレスポンスパターンデータの管理コストが高く、サーバーの変更にキャッチアップしていけず廃れてしまったので、運用リソースをしっかり考えた上で再チャレンジしたいと考えています。うまく作用すれば運用リソースは十分元を取れると確信しています。
JapanTaxiでの品質改善チャレンジはまだまだ続きます。
次回は、QA推進についてSETメンバーが公開予定です。
乞うご期待、では!
SETシリーズ
Mobility Technologies では共に日本のモビリティを進化させていくエンジニアを募集しています。話を聞いてみたいという方は、是非 募集ページ からご相談ください!