Pull to refresh

Команда автоматизации тестирования Unity 3D

Reading time 4 min
Views 8.1K
Original author: Elvis Alistar
Привет всем, мое имя — Элвис Алистэр (Elvis Alistar), я работаю с Unity более 2 лет. Я руководитель команды Инженеров по Тестированию (ИТ), которая является частью отдела QA Unity. Как видно из названия, мы — команда разработчиков программного обеспечения, которые любят тестировать. В этом посте я хотел бы рассказать, почему для Unity настолько важно иметь команду опытных разработчиков, фокусирующихся на автоматизации тестирования.

Задача

Unity — быстро растущая компания, с более чем 450 сотрудниками из 50 стран, работающих в 27 точках мира. Большая распределенность нашей компании означает, что нам необходимо работать с разработчиками из разных часовых поясов, разных культур. У нас также есть более 2.5 миллионов зарегистрированных разработчиков, и мы часто взаимодействуем с ними через наши форумы, веб-сайт обратной связи, альфа- и бета-группы и обрабатывая некоторые отчеты об ошибках, которые мы получаем от них. Тесное сотрудничество с нашими группами разработчиков означает, что хорошие коммуникативные навыки становятся ключевыми.



Unity поддерживает 12 крупнейших платформ и несколько мелких. Пользователи могут также использовать три различных языка программирования для написания игрового кода. Добавьте к этому наличие runtime-тестов, графических тестов, интеграционных тестов, тестов модуля, тестов UI, тестов производительности, и т.д. — и феноменальное количество различных комбинаций, которые наша инфраструктура автоматизации тестирования должна поддерживать и справляться с ними.

Возьмите наши runtime-тесты, например. Теперь у нас есть более чем 1,300 уникальных тестов Runtime API. Более 13,000 тестов выполняются в единой автоматизированной сборке проверочного набора. В тоже время мы работаем в более чем 100 направлениях разработки, это означает, что существует около 500.000 контрольных точек, выполняемых на нашей билд-ферме каждый день. ИТ-ы должны написать, поддерживать, оптимизировать и улучшать их ежедневно.

Всего два года назад у нас было всего несколько тестовых платформ, которые были очень плохо задокументированы, у нас было очень мало тестов, и никто не поддерживал и не улучшал платформы или тестовый код. Команда ИТ была сформирована, чтобы взять на себя поддержку этих платформ, привести в порядок, задокументировать и оптимизировать все наши тесты. Мы также убедились, что все разработчики знают, как использовать эти платформы и что они могут легко создать новые тесты, используя их.

Кодовая база в Unity растет очень быстро, и мы должны быть уверены, что продукт работает очень стабильно с каждым новым релизом, который мы выпускаем. Именно поэтому мы уделяем большое внимание автоматизации тестирования Unity. Просто, чтобы увидеть перспективу, у нас теперь есть около 2.2 миллионов строк кода, из которых приблизительно 400.000 — тестовый код, разбитый более чем на 7.000 файлов. Это гарантирует, что мы можем поддерживать качество на высоком уровне, избежать появления новых регрессий и удостовериться, что известные ошибки, которые были устранены, никогда не будут появляться в нашем продукте снова.

Теперь то, что я называю задачей!

Организация команды

Мы — команда из 8 разработчиков, работающих над инструментами, платформами и функциями автоматизации, с большим акцентом на последнем. Двое из нас находятся в Копенгагене (Дания), один в Силиконовой долине (США) и пять в Одессе (Украина). Наша работа заключается в том, чтобы найти пути улучшения общего рабочего процесса для всех разработчиков на Unity, за счет улучшения автоматизации на билд-ферме, создания регрессивных наборов для предотвращения всплывающих ошибок, а также продвижения использования платформы тестерами и разработчиками.

Unity — очень сложный продукт, и чтобы работать более эффективно мы разделили его на различные области: Скриптинг, Lightmapping, 2D, Анимация, и т.д. Каждый ИТ, ответственен за написание, поддержание и рассмотрение тестов в одной или более областях. Новые ИТ-ы обычно начинают с одной области и работают над ней, пока не становятся опытными в использовании наших процессов, платформ и стратегий. После того, как они получат достаточно знаний и заслужат доверие они получат больше областей. Все ИТ-ы в конечном счете работают над улучшением наших существующих платформ или добавлением новых. У нас есть 7 различных видов платформ автоматизации в Unity, и ИТ-ы должны быть в состоянии работать со всеми ними и помочь тем, кто должен работать с ними.

Наша работа требует тесного сотрудничества с другими командами в структуре QA и командами в нашем R&D отделе. Мы должны поддерживать связь с разработчиками и тестерами программного обеспечения (ТПО), чтобы удостовериться, что мы знаем, кто работает над данной функцией, какие части были разработаны и протестированы, и что должно быть автоматизированно. Все мы участвуем в основных тестах QA в каждом релизе, даже если они не включают автоматизацию тестирования: исследовательское тестирование, полное тестирование и тестирование перед релизом (см. Справочник по тестированию в статье “Тестирование Unity 4.0” в нашем блоге).

Работа по автоматизации редко привязана к определенному релизу Unity, и это дает нам большую свободу и гибкость, чтобы фокусироваться на том, что мы хотим улучшить. Это также позволяет нам посещать различные наши офисы, чтобы помочь разработчикам или чтобы поработать с местными тестерами. Мы посещаем большие конференции по тестированию, и выступаем на них, когда есть такая возможность. Мы участвуем в нашем теперь известном HackWeeks, где мы можем экспериментировать с любыми идеями и проектами, которые у нас есть, какими бы странными они не казались.

Навыки и установки

Как ИТ-ы мы обязаны иметь обширные знания в программировании, объектно-ориентированном проектировании и автоматизации тестирования (поблочное тестирование, TDD, тесты высокого уровня, и т.д.). Нам необходимо распространять информацию о тестировании платформ и методов, поддерживать обратную связь в анализе кода и уметь хорошо работать вместе с разработчиками. Мы ценим чистый код и развитие best practises.

В Unity мы также должны уметь работать эффективно со многими инструментами, которые мы используем внутри, такие как FogBugz, QMetry, TeamCity, RhodeCode, Sikuli, NUnit, Moq, Unittest++, Atomiq и др.

Вот так! Быть ИТ в Unity — это и здорово, и приносит пользу, и разнообразие задач, которые мы решаем, просто умопомрачительно.
Задача есть! Вы готовы к ней?

Тогда устраивайтесь к нам на работу!

Прим переводчика: Буду рад всем замечаниям и советам по поводу улучшения качества переводов.
Tags:
Hubs:
+8
Comments 0
Comments Leave a comment

Articles