Unity 3Dテスト自動化チーム

みなさん、こんにちは。私の名前はエルビスアリスターです。Unityで2年以上働いています。 私は、QA Unity部門の一部であるテストエンジニア(IT)チームの責任者です。 名前が示すように、私たちはテストが大好きなソフトウェア開発者のチームです。 この投稿では、Unityがテスト自動化に焦点を当てた経験豊富な開発者のチームを持つことがなぜ重要なのかを説明したいと思います。



挑戦する


Unityは急速に成長している企業であり、世界27か所で50か国から450人以上の従業員が働いています。 当社の大規模な分布は、異なるタイムゾーン、異なる文化の開発者と協力する必要があることを意味します。 また、250万人を超える登録開発者がおり、フォーラム、フィードバックWebサイト、アルファグループおよびベータグループを通じて頻繁に連絡を取り、それらから受け取ったバグレポートの一部を処理しています。 開発チームとの緊密なコラボレーションは、優れたコミュニケーションスキルが重要になっていることを意味します。







Unityは、最大12のプラットフォームといくつかの小さなプラットフォームをサポートしています。 ユーザーは、3つの異なるプログラミング言語を使用してゲームコードを作成することもできます。 これに、ランタイムテスト、グラフィックテスト、統合テスト、単体テスト、UIテスト、パフォーマンステストなどの存在を追加します。 -そして、テスト自動化インフラストラクチャがサポートおよび対処する必要がある驚異的な数の異なる組み合わせ。



たとえば、ランタイムテストを見てみましょう。 現在、1,300を超える独自のランタイムAPIテストがあります。 単一の自動テストスイートアセンブリで13,000以上のテストが実行されます。 同時に、私たちは100を超える開発分野で働いています。つまり、ビルドファームでは毎日約50万の管理ポイントが実行されています。 ITは、それらを毎日作成、維持、最適化、改善する必要があります。



わずか2年前、文書化されていないテストプラットフォームはわずかしかなく、テストもほとんどなく、プラットフォームやテストコードをサポートまたは改善した人はいませんでした。 これらのプラットフォームのサポートを引き受け、すべてのテストを整理、文書化、最適化するために、ITチームが編成されました。 また、すべての開発者がこれらのプラットフォームの使用方法を理解し、それらを使用して新しいテストを簡単に作成できるようにしました。



Unityのコードベースは非常に急速に成長しています。製品がリリースされるたびに非常に安定して動作することを確認する必要があります。 そのため、Unityのテスト自動化に大きな注意を払っています。 見通しを見ると、約220万行のコードがあり、そのうち約400,000はテストコードで、7,000以上のファイルに分割されています。 これにより、品質を高いレベルで維持し、新しい回帰の出現を回避し、修正された既知のエラーが製品に再度表示されないようにすることができます。



今、私はタスクと呼んでいます!



チーム編成


私たちはツール、プラットフォーム、自動化機能に取り組んでいる8人の開発者のチームであり、後者に重点を置いています。 2人はコペンハーゲン(デンマーク)、1人はシリコンバレー(米国)、5人はオデッサ(ウクライナ)にいます。 私たちの仕事は、ビルドファームの自動化を改善し、ポップアップエラーを防ぐ回帰セットを作成し、テスターと開発者によるプラットフォームの使用を促進することにより、すべてのUnity開発者の全体的なワークフローを改善する方法を見つけることです。



Unityは非常に複雑な製品であり、より効率的に作業するために、スクリプト、ライトマッピング、2D、アニメーションなどのさまざまな領域に分割しました。 各ITは、1つ以上の分野でテストを作成、維持、およびレビューする責任があります。 通常、新しいITは1つの領域から始まり、プロセス、プラットフォーム、戦略の使用に習熟するまで作業を続けます。 十分な知識を獲得し、信頼を獲得すれば、より多くの分野を獲得できます。 すべてのITは最終的に、既存のプラットフォームの改善または新しいプラットフォームの追加に取り組んでいます。 Unityには7種類の自動化プラットフォームがあり、ITはそれらすべてと連携し、連携する必要がある人を支援できるはずです。



私たちの仕事には、QA構造の他のチームやR&D部門のチームとの緊密な協力が必要です。 開発者とソフトウェアテスター(TVE)と連絡を取り、この機能の担当者、開発およびテスト済みの部品、自動化すべきものを確認する必要があります。 テスト自動化が含まれていない場合でも、各リリースのメインQAテストに参加します:探索的テスト、完全テスト、プレリリーステスト(ブログの記事「Testing Unity 4.0」のテストリファレンスを参照)。



自動化作業が特定のUnityリリースに結び付けられることはめったにありません。これにより、改善したいことに集中するための自由度と柔軟性が向上します。 また、さまざまなオフィスを訪問して開発者を支援したり、地元のテスターと協力したりすることもできます。 私たちは大規模なテスト会議に出席し、可能な限りそれらで話します。 私たちは今や有名なHackWeeksに参加しています。そこでは、どんなに奇妙に見えても、どんなアイデアやプロジェクトでも試してみることができます。



スキルとインストール


ITとして、プログラミング、オブジェクト指向設計、およびテストの自動化(ユニットテスト、TDD、高レベルテストなど)に関する広範な知識が必要です。 プラットフォームとメソッドのテストに関する情報を広め、コード分析でフィードバックを維持し、開発者とうまくやり取りできるようにする必要があります。 クリーンコードとベストプラクティスの開発を大切にしています。



Unityでは、内部で使用するFogBugz、QMetry、TeamCity、RhodeCode、Sikuli、NUnit、Moq、Unittest ++、Atomiqなどのツールの多くと効果的に連携できる必要があります。



行くぞ! UnityでITを担当することは非常に有益であり、当社が解決するさまざまなタスクは単純に息をのむようなものです。

タスクがあります! 彼女の準備はいい?



その後、私たちと一緒に仕事をしてください!



翻訳者のメモ:翻訳の品質の改善に関するすべてのコメントとアドバイスを歓迎します。



All Articles