【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性 | GameBusiness.jp

【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性

ゲーム開発 ミドルウェア

【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性
  • 【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性
  • 【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性
  • 【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性
  • 【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性
  • 【CEDEC 2015】開発支援ツールを手掛けるインテリジェントシステムズが語る、テスト自動化の重要性
8月26日から28日にかけて開催されたCEDEC 2015。本稿では、インテリジェントシステムズのツール開発チームにおける、テスト自動化に関する公演の模様をお伝えします。

公演を行ったのは、同社でシステムプログラマーを務める白柳隆澄氏。白柳氏はまず、同社の代表作として『ファイアーエムブレム』『ペーパーマリオ』シリーズなどと同時に、ゲームソフトを制作するための開発支援ツールを開発していると紹介。ゲーム開発会社であると同時に、ツールベンダーでもあるとても珍しい会社であると話しました。

今回の白柳氏がメインで語ったのは、ソフトウェア開発には欠かせないテストについて。一口にテストと言っても、単体テストからシステムテスト、そしてテスト戦略と、さまざまなカテゴリーが存在スます。その中でまず単体テストについて白柳氏は、Windowsプログラムのテストを最初に書いたといいます。そこで使用したのはGoogle Testで、同氏が言うにはJenkinsで集計可能なXMLを出力できる、記述量が少なくてすむ、日本語ドキュメントが充実しているといった理由があったとのこと。また、過去に参加したCEDECで評判を聞いたことも、採用の一因になったそうです。ここで白柳氏はテストコード例を提示すると、テストが失敗しても、まずは続行することが成功の鍵だと語りました。

続いては、Windows上で実際に実行可能にすることを目指します。このとき、入力と出力を整理してまとめることで、テスタビリティが向上することも付け加えるように説明していました。また、プラットフォームやハードウェアに依存する場合でもモックを作ることでテスト可能とのことですが、時にはモック作成が困難なときもあります。そんなときは、PCとハードウェア間で情報をやり取りできるプログラムを作成し、通信プログラムを介してテストする案も紹介していました。

システムソフト自動化の道のり

ここからは、デバッガーソフトウェアのシステムソフトを自動化していく道のりが語られました。以前はゲーム開発の際、手動でデバッグを行っていましたが、その作業をインテリジェントシステムズはテストコード化。これにより、デバッグ工数におけるコストダウンが実現したといいます。その一方でテスト漏れや時間の増加、テスト中のPCを占有といった、別の問題も起きたと白柳氏は当時のエピソードを語っていました。

これを解消するために白柳氏は、既存のシステムテストを再利用して、メニューバーから手動で実行していた部分も自動化したといいます。これまではあくまでも半自動だったものを、さらに洗練していったのです。さらにテストの事前・事後処理をスクリプト化し、さらなる簡略化を図ります。具体的には、テストに必要なテストプログラムのダウンロード実行や、ブレークポイントの設置などです。

また、テストモードと比較データ作成モードをスクリプトに用意することで、モード変更のみで比較データを自動作成することにも成功。ここで作った比較データやテストスクリプト、テストデータなど、テスト実行に必要なファイルについてですが、比較データとテストスクリプトはバージョン管理、テストデータはネットッワークドライブ上に配置するそうです。というのも、比較データとテストスクリプトの2種類は最新仕様に合わせて更新されていくもの。古いバージョンでもテストができるように、ソースコードと一緒に管理するのが良いと話していました。

最後の仕上げとして、フィードバックも自動化。同社はツールにGoogle Testと同じ形式でXML出力する機能を実装し、単体テストのときと同様に集計できるように設計しました、そして失敗時の通知などはJenkinsから行なわれるようにしたといいます。

しかし、ここまで自動化しても問題はまだ存在し、そのひとつが失敗したテストが修正されないことです。また、テスト数増加によるコストアップも、大きな問題として存在していたと語ります。ここでインテリジェントシステムズは、テストのフィルタリングを行うことでさらなる効率化、自動化を目指したといいます。テストにおけるフィルタリングとは、自動テスト対象かどうか、テスト頻度、ハードウェアの前提条件などです。そして、ビルドごとのテストや重要なテストを「メインテストジョブ」、1日1回のテストを「デイリーテストジョブ」、週1回のテストを「ウィークリーテストジョブ」といった具合に、テスト属性に対応したJenkinsジョブを作成。長期間失敗がなく成功しているテストはデイリーやウィークリーに、不安定なテストや失敗が連続したテストはテスト検証用のジョブへと自動で振り分けられるように設定。

このテストの自動振り分けを作成したことにより、ジョブが成功状態を保ちやすくなっただけでなくテストの回転率も向上。残っていた問題を解決することに成功したといいます。また、失敗したテストをすぐに気付けるといった、新たな恩恵も得たとのこと。

ここまでが、現時点でインテリジェントシステムズのツールチームが行っているシステムテストの流れになっています。しかしこれで完成ではなく「改善を積み重ねていくことが大事」と白柳氏。正確性が必要な部分はきっりちとテストを行い、また不安に感じるところをテストにすることも重要であると語り、公演を締めくくりました。
《ユマ》

関連ニュース

特集

人気ニュースランキングや特集をお届け…メルマガ会員はこちら