最終更新日: 2022年11月4日

AIQVE ONEは、テクバン株式会社、株式会社MIXIと共催し、 「【テクバン×MIXI×AIQVE ONE】3社共催!テスト自動化事例LT会」を2022年6月28日に開催いたしました。本セミナーは、テクバン株式会社 品質ソリューション事業部が定期的に開催している、「ソフトウェアテスト」「テスト自動化」「アジャイル」「プロセス改善」など、 「QA/品質保証」に関する様々なキーワードをテーマにしたイベントです。
今回のテーマは「テスト自動化事例のLT会」とし、実際に現場でテスト自動化に取り組まれている方々にご登壇いただきました。この記事では、株式会社MIXI 中尾 恵美氏による「モンスターストライクのQA効率化の取り組み」と題した講演内容をお届けいたします。

<関連記事>【テクバン×ミクシィ×AIQVE ONE 3社共催セミナーレポート】テスト自動化の魅力に気づくまで(株式会社ミクシィ 安里様)

モンスターストライクのQA効率化の取り組み

株式会社MIXIの中尾と申します。本日は「モンスターストライク」のテストについて、またQAにおける効率化の取り組みと、今後の展望についてお話ししたいと思います。

自己紹介

初めに自己紹介をさせていただきます。私は開発の経験があり自動化に興味があったため、現在はモンストQAグループで、技術からQA全体の支援を行うチームのリーダーをしております。

「モンスターストライク」のテスト

本日お話しさせていただく「モンスターストライク」は、皆様のおかげでもうすぐ9周年を迎えます。今年からは、オフラインイベントであるXFLAG PARKも復活し、今後もユーザーの皆様に楽しさと驚きをお届けをできるよう、QA一同も張り切っております。そんな「モンスターストライク」のテストについて、現状どのようにテストを実施しているかをお話しいたします。


「モンスターストライク」は現在ほぼすべてのQAを手動で行っております。バージョンアップのスケジュールはかなり先まで決まっており、ボリュームに関わらず一定のQA期間が確保されています。バージョンアップでは新機能をメインとしつつも、既存機能の改修やUIの変更も多く行われます。この点が、回帰テスト自動化を行う上で大変な部分です。

こちらに参加されている皆様は、自動テストの壊れやすさについてはご存知かと思います。「モンスターストライク」は9年前にリリースしたアプリということもあり、自動化前提の作りではありません。そのため少しの変更で自動テストが壊れてしまい、QAのたびにメンテナンスコストがかかり、QA期間中に変更があった場合はさらにコストがかかるといった悪循環に陥ってしまいました。ですので、回帰テストの自動化では思ったような成果を出すことが困難であると判断しました。

ではどうするか。サービスは年数を重ねれば重ねるほど、仕様もデータも機能も積み重なっていくものだと思います。ユーザー様に長年遊んでいただいた記憶を担保するためにも、何よりこの先も楽しんで頂くためにも、効率化を図る必要がありました。そこで行ったのが、テストフロー全体での確認です。


検出もしくは流出した不具合の分析を行ってみたところ、過半数の不具合は、新機能もしくは新規実装関連で発生しており、既存機能での不具合検出はほぼ無しということが確認できました。長年サービスを続けているということもあり、回帰テストで不具合が見つかることはほぼありません。もちろん、回帰テストは、基本機能の担保といった点で大切ではあります。ですがユーザー様への影響を考えると、まずは流出する不具合を減らす、できる限り無くすことが第一と考えました。

では決まったQA期間で、どうすればより不具合を検出できるか。
私たちは次の二点に注目しました。

・テスターが効率的にテストできるツール
・手動では非効率的なテストの自動化

効率化への取り組み

では、効率化への取り組みの本題に入ります。

手動テストの効率化

最初に効率化に取り組んだのはテスト準備です。

「モンスターストライク」では、期間限定のクエストや、開放に一定の条件が必要なクエストなど、多種の要素が存在します。新規・回帰テスト問わず、テスト実行時にはもちろん、その前提条件を満たした状態にする必要もあります。社内ツールで条件の設定をできるようになっていますが、それでも現場からは、手動で設定するのが大変という声が聞こえてきていました。


そこで、今まで手動で行っていたこの準備を自動操作に置き換えることに取り組みました。実際にやってみたのが、設定変更をする操作の自動化です。こちらはSeleniumで実装しております。「このアカウントをこの状態にしたい」とExcelに入力し、自チームで作成したアプリを押すだけで、社内ツールにアクセスし自動的に設定を行うツールになります。テスター側で開発環境が不要な、手軽に導入できるということを目指して実装いたしました。ツール作成においては、テスト自動化を実施・実装する際に学んだ技法や、ライブラリ、モジュールが役に立ったことも大きな収穫でした。

データチェックの自動化

次に取り組んだのが、マスターデータのチェック自動化です。

モンストは、国内版と海外版がございます。これらは言語が違うことはもちろんのこと、実装されているモンスターも一部違っております。ただし、イベントや降臨スケジュール、一部コラボは共通です。イベントが実装された場合に、国内版と海外版に想定外の差があってはいけませんので、データが一致しているか、ユーザー様に遊んでいただくイベントに想定外の差がないかを確認する必要があります。


イベントのデータは膨大な量であり、先程述べた通り、国内版と海外版はデータの作りがそもそも違います。そのためQA期間内に目視で確認するのはとても大変で時間がかかりますし、また目視確認ではミスが起こりがちです。そこで、データの作りの違いを組み込んだツールを作成し、比較の自動化を行いました。現在はベータ版のような形で動かしておりますが、十分な確認期間を取った後に本稼働とする予定です。またデータの比較は、国内版と海外版の違いだけではなく、国内版の内部だけでも多数あるので、そちらにも今後導入していく予定となっております。

ひたすらガチャを回すツール

今度は少し毛色を変えまして、ひたすらガチャを引くツールになります。こちらはQAグループ外からの要望で作ったものです。


ガチャを引く仕組み単体自体は、単体テストのような形で、データを流して排出確率を出すことはもちろん可能となっています。ですが、ガチャに新しいロジック(例えばピックアップできるものを自分で選択できる等)を入れた場合は、やはり実機で確認したいという話が出ました。

そこでオーブがある限りガチャを引くというコードを組み、ひたすら回すというツールを作成しました。確率の出し方は、結果画面を全てスクリーンショットに撮り、プログラムを停止させた後、全スクリーンショットへ一斉に画像抽出のロジックを走らせ、一致したケースを基に手動で計算を行いました。自動で回したガチャ数はなんと14万件です。もちろん1日で引ける回数ではないので、日付変更やエラーなどのイレギュラーにも対応することで実現しております。

使用している言語・ツール

他にもいろいろなツールを検討・調査、実装をしております。主に使用している言語はPythonになります。またAirTestやGASといったなじみのあるプラットフォームも利用しております。


開発言語にPythonを選んだ理由は、学びやすさとこれまでの遺産が大きいです。歴史の長い言語だけあって、ライブラリも大量にあり、テスト業界でもPythonの実装はよく見るのではないかと思います。導入のしやすさは、テスターからプログラムへの抵抗をなくすという点を目的にしております。将来的には、テスターが簡単なコードなら書けるようになることを目標としております。実際に興味を持ったテスターの中には、個人でGASやPythonの勉強を始められた方もいらっしゃいます。

自動化ツールというのは、使う側が興味を持って使わないと、宝の持ち腐れになると思っています。ですのでQAグループ全体の効率化のためにも、全員がツールに親しみ、効率化を楽しむ環境を目標にしております。

今後の展望

最後に、今後の展望についてお話しさせていただこうと思います。

『もっともっと便利に快適に!』

今後も、テスターの皆様がもっと効率的に楽しくテストできるよう、テスト環境を整えていく予定です。現在は以下四点の実現に向けて動いています。

検証端末の遠隔操作

まず一つ目に、検証端末の遠隔操作です。皆様の会社でも、リモートでの作業も多くなっているかと思います。すると会社で所有している端末には限りがあるため、使いたい端末が家に持ち帰られている可能性も出てきます。そこで注目しているのが、遠隔で端末を操作できるツールです。こちらは実際に動かして触ってみたところ、かなり良好だったので本格的な導入を考えております。

さらに便利なツールの開発

まだまだQAグループ全体に便利なツールを広められていないので、グループメンバーからもっと綿密にヒアリングを行って、求められているものをさらに定義していこうと思っています。QA内でツールへの要求確認、要件定義から実装まで進められるというのは強みですので、最大限活かしていきたいです。

社内ツールを使ったテスト自動化

先ほど述べた通り、社内ツールはいろいろ用意されています。社内ツールを使って回帰テストの自動化、ないしテスト自動化をより効率的に作る方法があると考えておりますので、再度挑戦してみようと思っております。

自動化をもっと身近に

こういった活動を通して、QAメンバーにツールや自動化をより身近に考えてもらえる環境を整えていこうと思っています。ゆくゆくは、メンバー誰でも簡単なコードは読める、書ける、自分で作れるというのを目指し、不具合激減となることを最終目標としております。

以上となります。
ご清聴いただきありがとうございました。

株式会社MIXI
https://mixi.co.jp/

※この後行われた、テクバン株式会社の市川様、株式会社MIXIの村田様、AIQVE ONE株式会社の花房による登壇の模様は、後日アップいたします。