社員インタビュー

開発

SETのベストプラクティスを追求する挑戦

LINE Fukuokaには開発エンジニアと同じ目線でサービスへ貢献するテスト自動化のプロフェッショナルSET(Software Engineer in Test)が在籍しています。多数のサービスをリリースするLINEではプロジェクトによって担当するテストフェーズも必要な技術も大きく異なります。今回はエンジニアの大園にLINEのSET組織や取り組みについて聞きました。

テスト自動化専門チームの立ち上げ

これまでのキャリアを教えてください

学生の頃はWeb系や情報処理とは関係のない、工学系分野の研究室に博士課程まで在籍して、主に科学計算に関しての研究を行っていました。縁があって30歳を手前に地元の福岡に戻ることになり、まだ立ち上げフェーズだったLINE FukuokaのQAに興味をもち入社しました。当時は実務経験がなかったのですが、研究で科学計算を行っていたので、ITやエンジニアリングと繋がる知見はあり比較的スムーズにキャッチアップできたかと思っています。

テスト自動化チーム立ち上げの背景は?

業務をする中で「この部分が自動化できたら効率いいな」と思うことがあったんです。当時はブラックボックステストが中心。自動化は他のブランチでも行っておらず前例が無かったのですが、まずはやってみようと手を挙げてテスト自動化に着手し始めました。はじめは1人でテスト環境構築やスクリプトコードを書いたりと、目の前のプロジェクトに取り組んでいました。ちょうどエンジニアキャリアのメンバーが入社したこともあり、次第にチームとしての体制を整えていき、現在は6名程の組織になっています。

プロジェクトによってフェーズも技術も異なる

LINEのテスト自動化/SETの開発体制は?

SET(Software Engineer in Test)というロールはまだ比較的新しい呼称ですが、開発エンジニアとQA(品質保証)のブリッジ役としてサービス開発をテスト自動化の観点から支援するポジションです。
LINEグループ全体では各拠点それぞれにテスト自動化チームがありますが、サービスが異なるので担当するテストフェーズや技術も多様です。実際に端末を動かして自動テストをしたほうがいいプロジェクトもあれば、QAに依頼する前の開発段階で自動テストを実施したほうがいい場合もあります。テストフェーズによって求められる技術もかなり異なってくるので、各サービス開発に最も適したテスト環境や手法を導入していく必要性があります。開発エンジニアと一緒に、エンジニアが開発をしやすい環境を作ることが私たちのミッションです。

業務内容を教えてください

LINEの各プロダクト/サービスのアーキテクチャに適した自動テストの設計、環境構築並びに運用などテストフェーズに関わる開発を全て担当しています。
LINE FukuokaにはQA組織もありますが、QAエンジニアはリリースフェーズのシステムテストをメインに担当。SETは、E2Eテストだけではなくユニットテストやインテグレーションテストなど幅広く行っています。
使用する技術は主にJava、Kotlin、JavaScript、JUnit、Selenium、Appiumなどを使用しています。

現在取り組んでいることを教えてください

現在はE2Eテストを行うことが多いですが、自動テストはまだまだ発展途上の分野です。スタンダードな手法が確立されていない部分も多く、色々なケースを試しながら検証しています。サービス自体は問題がなくても、端末の故障や連携サービス側の不具合で検証失敗という外的要因で難航することもしばしばあります。
また、サービスの機能やボタンやラベルの変更などでも、すぐテストが壊れてしまうのでメンテナンスコストがかかります。1人のエンジニアがテストスクリプトを書けるのは2サービスくらいが限界。サービスの数が多い分エンジニアを増やすというのも難しいので、その状況を解決するためにコードを書かなくてもE2Eテストをつくれるテスト自動化プラットフォームを開発しているところです。この仕組みができればいくつかのサービスはプランナーやテストエンジニアが自分たちでテストを組んで実装できるようになります。サードパーティでも同様の仕組みはあるのですが、社内環境と合わないことが多いため内製で開発しています。LINEは1つのプラットフォームの上に複数のサービスがのっていて、サービスごとに仕様も開発言語も異なる特殊な構造のため、同じようにテストをしようと思ってもなかなか難しいことが多いです。内製の仕組みを使うことで、社内の要望も汲み取りながら構築できるというメリットがあります。

SETのプロフェッショナルとして開発に携わる

どんなエンジニアと一緒に働きたいですか?

新しい領域へチャレンジするマインドを持っている方です。SETの領域は発展途上でベストプラクティスが確立されていない分、自分で見つけてアイデアを具現化していくことが必要です。新しい技術を導入する際、リスクばかりに目を向けてしまうのではなく、様々な要素を踏まえた上で“まずはやってみる”のが私たちのスタンスです。全く別の分野からヒントを得て、既存の手法とマージしてみるといいパフォーマンスが出たというケースも数多く見てきました。固定概念を持たずにチャレンジすることで新しいソリューションが見えるのだと思います。
また、よく聞かれるのですが、私たちはテストコードを書くだけが仕事ではないので、Seleniumなどの自動テストの経験がなくても問題ないです。どちらかというと自分でサービスやアプリを開発した経験があって、テスト領域にフォーカスをして深掘ることに関心があったり、SETにジョブチェンジしてエンジニアの開発をサポートするという立ち位置で、やりがいや面白みを感じられるタイプの人と一緒に働きたいと思います。

今後取り組みたいチャレンジを教えてください。

現在行っている自動テストは期待通りに動くことを保証する、いわゆる「最後の砦」的な役割を担うことが多いです。それももちろん大事ですが、その一歩先に進んで、開発エンジニアがもっと気軽にコードを修正・追加できるような環境を自動テストで手助けしたいと思っています。
そのためにはテストの実行速度を今より何倍も早くしなければならず、より安定的なものを提供しないといけない。大変ですが、とてもやりがいのあるテーマだと感じています。
最近は、LINE Creators Marketの開発チームにSETが入り、リリースサイクルを速くするために複数のテストフェーズを自動化するテスト環境の構築やテストケースの作成などを行っています。開発エンジニアは自分のコードをGitHubにアップするだけで、自動的にテストが開始され、結果もすぐ返ってくるというような仕組みを構築しています。このような環境が整えば、エンジニアは今以上に速いサイクルで開発を進めることが可能になります。
私たちは1人ひとりがSETのプロフェッショナルとして、開発エンジニアと同じ目線でテストフェーズまで考慮したアーキテクチャの提案や、サービスを安定させるための手法について一緒に議論したりもします。そのほうが、最終的にエンジニアの負担も減り、アプリの品質も上がることに繋がると考えています。