開発とQAのタッグで実現するこれからの開発生産性向上 / 開発生産性Conference 2024

2024年6月28日、29日の二日間にわたって、ファインディ株式会社が主催するイベント「開発生産性Conference」が、開催されました。本カンファレンスは、虎ノ門ヒルズフォーラム(東京)にて実施され、一部のセッションはオンライン配信も行われました。

本記事では、オンラインでも配信されたセッションのうち、オーティファイ株式会社の代表取締役CEOである近澤良さんと、Classi株式会社でQAチームのエンジニアマネージャーをされている定金裕史さんによるセッション「開発とQAのタッグで実現するこれからの開発生産性向上」の内容をお届けします。

Classi社では、オーティファイ社が提供するAIを用いたノーコードテスト自動化ツール「Autify」を導入しています。導入前と比べて約80%も工数を削減することができたと語る定金さん。どのようなアプローチでテスト自動化を組み込んでいったのか?パフォーマンスの最大化に向けた体制の構築において、気をつけるべきポイントについて、お話いただきました。

■プロフィール
定金 裕史(さだかね ひろし)/
Classi株式会社 プロダクト本部 プラットフォーム部 QAチーム Engineer Manager
さまざまな組織での開発、QA、QA組織立ち上げ、マネージメント業務を経て、2019年Classi社に入社。現在はQA組織のマネジメントに従事。

近澤 良(ちかざわ りょう)/ @chikathreesix
オーティファイ株式会社 代表取締役CEO
ソフトウェアエンジニアとして日本、シンガポール、サンフランシスコにて10年以上ソフトウェア開発に従事。DeNAにて全米No.1となったソーシャルゲームの開発を行ったのち、シンガポールのVikiにて、プロダクトエンジニアとして製品開発をリード。その後サンフランシスコへ移住し、現地スタートアップに初期メンバーとして参画。 2016年にAutify, Incを創業。日本人として初めてUSトップアクセラレーターの1つであるAlchemist Acceleratorを卒業し、世界からテストフェーズを無くすべく、AIを活用したソフトウェア開発・テストプロセスを包括的に支援するプラットフォーム Autifyの開発・提供に尽力する。

新サービスを追加しプラットフォームとして生まれ変わった「Autify」

近澤:オーティファイ株式会社の代表取締役CEOの近澤良と申します。本日はClassi株式会社の定金さんをお招きして「開発とQAのタッグで実現するこれからの開発生産性向上」と題してお話していきます。

まずは自己紹介をさせてください。私はオーティファイを立ち上げるまで10年ほどエンジニアとして働いていて、日本、シンガポール、アメリカでWebアプリケーション開発に従事していました。起業したばかりの頃は現在の事業とは異なるサービスを展開しており、何度もピボットしてたどり着いたのが「Autify」です。「顧客のBurning needsを解決する」と題した記事に「Autify」にたどり着くまでの詳細を書いているので、もしお時間があればご一読いただけると嬉しいです。

続いて、定金さんの自己紹介をお願いします。

定金:Classi株式会社の定金裕史と申します。今まで約10年ほど開発関連の仕事に携わってきていて、さまざまな経験を通してQAに魅力を感じたため、現在はQA組織のマネージメントを担当しています。本日はよろしくお願いいたします。

近澤:ありがとうございます。

本日の流れとしては、最初に私から「Autify」についてご紹介したあと、定金さんに活用事例をお話いただき、最後に二人でディスカッションしたいと思います。

それでは、早速本題に移ります。

オーティファイ株式会社は、2024年6月20日にリブランディングを発表しました。コンセプトは「人とAIの総合力で開発を次のレベルへ。」です。リブランディングに伴い「Autify」の名称を「Autify NoCode」に変更し、新サービスとして「Autify Genesis(※2024年7月現在はβ版)」と「Autify Pro Service」を追加しています。

近澤:「Autify NoCode」はノーコードで誰でも簡単に自動化ができるテスト自動化ツールで、「Autify Genesis」は生成AIを使ってテストケースを自動的に作成してくれるものです。「Autify Pro Service」は、オーティファイに在籍しているQAのプロフェッショナルがテストの効率化・自動化をサポートするサービスです。「Autify NoCode」「Autify Genesis」「Autify Pro Service」といった3つのサービスを通して、テストや開発プロセスの課題解決を包括的に支援するプラットフォームとして生まれ変わりました。

また、我々はこれまで独自のAI機能開発に投資してきており、ML UL recognitionといった部分をAIに認識させる基礎技術を開発してきました。
近澤:それによりセルフヒーリングやビジュアルリグレッションテストが、非常に高い精度でできるようになってきています。これらの技術を生かし、ゆくゆくはテスト設計~テストのメンテナンスまで、AIで自動化することを目指しています。

最後に「Autify Genesis」について、改めてお話させてください。「Autify Genesis」は、テスト設計の工程において「そもそも何のテストをしていいかわからない」「何を自動化すれば良いのかわからない」といった悩みを解消するツールです。具体的には、生成AIを活用して仕様書や設計書を読み込んでテストケースを自動的に生成し、テストシナリオまで自動生成します。

β版であるため完全に一般公開しているわけではありませんが「Autify NoCode」の開発において「Autify Genesis」を使用したところ、テストの詳細に関する議論の時間を55%削減できました。

近澤:本日は「Autify Genesis」の簡単なデモも用意しているので、そちらもあわせてご確認いただけますと幸いです。

デモの詳細はアーカイブ動画にてご確認ください!
youtu.be

テスト自動化の推進を通して組織をアップデート

近澤:続いて、定金さんよりClassi社での活用事例についてお話いただきます。

定金:ありがとうございます。Classi株式会社はベネッセとソフトバンクのジョイントベンチャーであり、両社の知見を活かしながら学校のICT化をサポートしています。メインサービスである「Classi」では、生徒・先生・保護者がつながるICTプラットフォームとしてそれぞれが抱えている課題を解決するとともに、個別最適な学びの実現を目指しています。

本日は、開発フローにテスト自動化を組み込んでどのように組織をアップデートしたのか、についてお話します。

Classiで「Autify(現:Autify NoCode)」を導入したのは、2022年ごろです。最初は興味本位で使用していたのですが、今となっては欠かせない自動化ツールとして活用しています。

前提として、Classiには5~7ほどの開発チームがあり、各チームがそれぞれのタイミングでリリースしています。そのため、本番環境での「Autify」の定期実行を日次または週次で行っています。

定金:「Autify」を定期的に実行することで何が変わったのかというと、導入前と比べて工数を約80%も削減できました。以前はライブラリの更新などをする際にリグレッション検証をしないと何かしらのエラーが発生することがあったのですが、通常のリグレッションテストは「Autify」がカバーしてくれるようになったことが大きく影響しています。それにより、QAエンジニアはそれ以外の注力すべき検証の対応に集中できるようになりましたし、検証環境で「Autify」と手動テストを並列で実行できるようになりました。現在は削減できた工数分で「Autify」のメンテナンスをしているほか、他の取り組みも進めています。

また、2年目からは「Autify」を開発メンバーにも解放しています。
定金:ちなみに、なぜ1年目はQAチームだけで使用していたのかというと、自動化ツールはとても便利な一方で管理やメンテナンス、運用については難しい部分もあるからです。ただ、開発チームからの依頼を受けてQAがテストに入るまでに一定の日数が必要となるため、そのコストがもったいないとも感じていました。

そこで、導入から1年ほど経って運用ルールがまとまってきていたこともあり、2年目からは開発チームにも「Autify」を解放することにしたのです。結果として、QAチームは単純なリリースに関してはほぼノータッチで重要な作業に注力できるようになりましたし、開発チームも素早くリリースできるようになりました。

それらの流れを経て、現在進めているのが「Autify」によるリグレッションテストの基盤強化ですね。

定金:今まで作ったシナリオに関しては普通に流していればいいのですが、日々リリースする中で何かしらの障害が発生することもあります。例えば開発チーム1が不具合を起こしたら、その内容を他のチームにも横展開しなくてはいけません。しかし、「Autify」を活用して一括で横展開できるようにすれば、障害が発生した際のリグレッションテストの内容を強化していけるはず。現在は、こういった取り組みを進めています。

情報の分断やチーム間の壁をなくすために行った取り組み

近澤:いくつか質問を用意してきたので、ここからはディスカッション形式で進められればと思います。一つ目の質問はこちらです。

近澤:QAチームと開発チームが分割されている組織は少なくなく、両者の連携について悩んでいる企業も多いと思います。定金さんから見て、そういった企業でブロッカーになっているものはなんだと思いますか?

定金:QAチームと開発チームが縦割りになってしまっていることが原因なのではないかと思います。Classiも以前はそういった状態でしたし、開発チームから仕様書をもらったとしても、欲しい情報が記載されていないなんてことも珍しくありませんでした。

近澤:QAチームと開発チームで情報が分断されているというのは“あるある”かもしれませんね。あとは開発チームがQAチームに任せきりにしてしまうケースもあり、アジャイル開発ではクリティカルな問題だと思います。

ClassiさんはQAチームと開発チームが連携できている印象があるのですが、何か特別な取り組みを行われているのですか?

定金:ClassiでもQAチームと開発チームの間に壁があったため、解決策として各開発チームの中にQAチームのメンバーが専属で入るようにしました。要件定義や設計開発などを行う場にも参加して、QAエンジニアとしての意見を伝える。またQAエンジニアが設計書や仕様書のまとめを作成するようにしているのもポイントですね。それにより、開発チームの作業負担を軽減できますし、QAチームとしてもテストに注力しやすくなります。QAチームが開発チームをサポートして、開発チームはQAチームに渡せるものを渡す、お互いに協力し合うことで壁がなくなっていくのではないかと思ってます。

近澤:いわゆるシフトレフトのような形で進められているのですね。

実は、今だから話せるのですが、弊社は品質に問題を抱えていた時期がありまして(苦笑)。それを改善するために、PRDができたタイミングからQAエンジニアが開発チームに参加して、一緒にレビューをして一緒にテストケースを作るスタイルに変更しました。スクラムの段の定義の中に「Autify」のシナリオを作って、動いたらOKという形ですね。

それによって品質が向上し、デリバリーも早くなりました。そういった実体験もありつつ、Classiさんの事例を聞いて、QAエンジニアがチームの一員として上流工程から携わることの大切さを改めて感じましたね。

ポイントとなるのは、ツールの選択とルールの策定

近澤:続けて二つ目の質問をさせてください。 近澤:テスト自動化のツールはたくさんありますが、ツールでは解決できない部分の問題も多く、仕組み化は非常に難しいポイントです。Classiさんはどのようにテスト自動化を推進されていたのですか?

定金:前提として、ClassiのQAチームはQAを専門に扱ってきたメンバーが多く、ロジックは書けませんし開発知識が少ないという特徴があります。そのメンバーが運用することを踏まえて、どのように自動化をするのがベストなのかを考え、ノーコードでテストを自動化できる「Autify」を選択しました。

実は「Autify」を導入する前にコーディングが必要な自動化ツールを使ったこともあるのですが、属人化してしまって、実際に利用するテスターのメンバーはツールのメンテナンスができないという状態でした。そういった課題の改善も含めて、知識がなくてもノーコードで実装できる「Autify」の導入は、テスト自動化を仕組み化する上で非常に重要なポイントだったと思います。

また自動化の組み分けも大切なポイントですね。自動化ツールで自由にシナリオを作りすぎると、運用が大変になってしまいますから。Classiでは、日次もしくは週次、案件単位で回すものを明確にしていて「画像を表示する」「ファイルを扱えるようにする」といった基本動作を担保するものは日次に設定しています。登録や更新、削除などのサーバで処理が走るものをメインに週次のリグレッションテストを行っています。案件で回すものに関しては、その場限りで捨てる「Autify」のシナリオを使っています。ステージング環境で検証して、本番環境でURLを変更して、使い切って、それを日々のリグレッションに持っていくかどうするかを決める。そうやって選定して、仕組み化しています。

近澤:なるほど。何を自動化するかの組み分けはとても大事なポイントですよね。自動化ツールを導入した途端に全て自動化して、結果的に意味のないテストケースが溢れてしまう、なんてケースもありますから。Classiさんでは導入時から組み分けに関するルールを設計されていたのですか?

定金:近澤さんが例に出されたように、私たちも最初は好きなようにテスターを作ってもらうようにしていました。その結果、人によって経験値が異なるためにいろんなテストケースが生まれてしまって。そこで反省して「リンク切れはどこまで確認するのか」「アサーションはどこまで入れるか」といった点について話し合い、レベル感を統一するようにしていました。

近澤:テスト観点一覧表を作られたということですか?

定金:そうですね。「Autify」をある程度実装した後に、テストケースが溢れてしまったので、テスト観点一覧表を整理して実装し直しました。

近澤:全て自動化したまま進んでしまうケースもありますし、ある程度実装した後にテスト観点一覧表を見直すことができたのは、すごいことだと思います。

定金:テスト自動化ツールを導入しているのに、適切に活用できないのはもったいないですしね。また開発チームに「Autify」を解放していたのも大きかったと思います。開発チームが「Autify」を活用する
えで ​​「どのテストケースを実行すれば品質を担保できるのか」を明確にする必要がありましたから。開発チームに「Autify」を解放する際には、テストに関するガイドラインも共有しました。

近澤:開発チームが自分たちでテストできるようにしたとしても、ガイドラインがないと品質が揃わなくなってしまいますし、それも重要なポイントなのではないでしょうか。

人とAIの総合力で、テストも開発も変えていく

近澤:最後の質問です。
近澤:実際に「Autify」でテスト自動化を推進されている定金さんから見て、AIによってテストはどのように変わっていくと思われますか?

定金:いろいろ期待しています。今は「Autify」がテストを自動生成してくれますし、AIによって実行したテストの判定もしてくれます。ゆくゆくは、NGとなった時に自動で修復してくれるようになると嬉しいです。また、実行結果を蓄積していって「〇〇の機能はNGとなることが多いため、〇〇のようなテストケースを実行した方が良いのでは」と提案してくれるようになると、より良いのではないかと。「Autify Genesis」は仕様書や設計書をAIで読み込むとお話しされていたので、その技術を応用すればレポーティングもできるようになるのではないかと期待しています。

近澤:ありがとうございます。私もテスト結果の分析にはAIが活用できるのではないかと考えています。現在は根本原因解析(RCA)を実験的に取り入れて、エラーの原因を追求するようにしていて、そこはAIが活用できそうだなと。また自動テストでフレーキーになった場合の原因をAIで分析することもできそうです。あとは、定金さんにお話いただいたように、テスト結果とコード修正を紐付けすれば「こういった変更を加えたらこのテストケースは落ちるだろう」といった予測もできるようになるはず。そうやって考えていくと、テスト自動化にはまだまだできることがたくさんありますね。

個人としての意見もお話しさせていただくと、生成AIを活用することで開発プロセス全体を変えていけると思っています。そういった思いで開発したのが「Autify Genesis」なんですよ。「Autify Genesis」は、言い換えると機械翻訳のようなものと近い部分があると考えていて。翻訳業界では、ポストエディターという仕事が少しずつ浸透し始めていますよね。ポストエディターとは、AIが作った翻訳結果を手動で修正する仕事です。翻訳ツールの精度が高くなっているとはいえ、まだまだ完璧ではありません。だからこそ、翻訳者がレビューをして完璧にする作業が必要となるわけです。

テストや開発も、そういった方向にシフトしていくのではないかと考えています。AIが全てを行うわけではなく、最後は人の力で確認する必要がある。特に労働人口が減少している日本においては「人とAIの総合力」が重要になってくるのではないかと思います。

定金:これからClassiの「Autify」がどのように変わっていくのかについては、改めてレポーティングさせていただきたいなと思います(笑)。

近澤:ありがとうございます(笑)。オーティファイは泥臭い開発もたくさんしているので、期待していただければと思います。

それでは、ここで時間も迫ってきたので終了とさせていただきます。

定金さん、貴重なお話をありがとうございました。自動テストは浸透させるのが難しい部分もある中で、組織的な動きが重要なポイントだというお話は、とても勉強になりました。

ご清聴いただいた皆さまも、本日はありがとうございました!

アーカイブ動画も公開しております。こちらも併せてご覧ください。

youtu.be