Визитки и тестирование программного обеспечения на платформе Xbox
На моем столе стоит коробка с визитками. На них написано мое имя, стоит логотип Xbox 360, мой тэг игрока, адрес электронной почты и другая важная информация. На обратную сторону каждой из этих карточек нанесен красивый шаблон или рисунок из одной из наиболее популярных игр Xbox.
Иногда во время поездок, связанных с наймом новых работников, во время различных собраний или при посещении родственников, я встречаю кого-то, кому интересно, чем я занимаюсь. В таких случаях я роюсь в своем бумажнике и достаю одну из этих карточек. Глядя на эту карточку, человек видит мое имя, классный логотип Xbox 360, мой тэг игрока и мой адрес электронной почты. После того, как он посмотрит на рисунок на обратной стороне карты, мне хочется думать, что теперь этот человек действительно впечатлен.
А затем они добираются до названия моей должности, "Software Development Engineer in Test", (с англ. тестовый инженер) и я вижу, что они немного запутались.
Видите ли, для многих других инженеров в области видео-игр или другого программного обеспечения название их должности довольно четко отражает суть их профессии. В моем случае, в Microsoft это общая инженерная дисциплина. Мы даже сокращаем ее, называя людей в этой должности просто SDET.
Однако для человека со стороны, на которого я стараюсь произвести впечатление, этот заголовок не объясняет, что же именно я так хорошо умею делать. Часть "Software Development Engineer" в целом означает, что я имею какое-то отношение к производству программного обеспечения. Это правда. С толку людей сбивают слова "in Test".
Иногда я слышу: "О! Тестирование! И Xbox!? Должно быть вы тестируете игры?
Не совсем. Тестирование игры - это важная часть разработки игры, но это не то, что я делаю. Фактически, я вообще не работаю с играми в отдельности. Я работаю над платформой Xbox.
Хотя меня должно немного раздражать наличие столько запутанного названия у моей должности, на самом деле оно довольно точно передает основную тенденцию, с доказательствами которой я часто сталкивался - преобладающее заблуждение о том, что если вы хотите работать в игровой индустрии, вы должны быть либо разработчиком или дизайнером в игровой студии, либо тестером игр. Так как это довольно небольшой набор возможностей, я волнуюсь, что люди по ошибке думают, что игровая индустрия не для них, или же что эти должности являются единственным вариантом для людей, которые хотят поработать на пользу игровой индустрии.
Так что в сегодняшней своей публикации я буду рассказывать о двух вещах:
- Платформе Xbox (и чем это понятие отличается от понятия одних только игр)
- Роли Software Development Engineer in Test в Xbox и Microsoft
Платформа Xbox
По сравнению с работой над отдельными играми, работа над платформой Xbox подразумевает, что я помогаю писать программное обеспечение, которое затрагивает практически все виды взаимодействий людей с консолью. В команде разработчиков платформы мы ответственны за несколько сценариев работы с консолью, затрагивающих определенные группы пользователей. Это означает, что большая часть нашей работы состоит в нахождении решений, которые бы по возможности удовлетворяли потребности всех пользователей. Я не могу охватить в этой статье все, чем занимается команда разработчиков. Вместо этого я приведу несколько примеров, чтобы показать всю широту задач, охватываемых командой разработчиков платформы.
Неигровые сценарии и системное программное обеспечение
В команде разработчиков платформы мы отвечаем за построение и обслуживание средств взаимодействия игроков с панелью управления Xbox и основным меню. Сюда включены каналы Friends Channel, музыкальный проигрыватель, Xbox LIVE Parties, редактор аватара и Xbox LIVE Marketplace. В дополнение к этому команда разработчиков платформы производит системное программное обеспечение консоли, которое всегда выполняется на консоли, даже во время игры. Как и в случае с персональными компьютерами, системное программное обеспечение Xbox позволяет играм и приложениям взаимодействовать с аппаратным обеспечением консоли, таким как жесткий диск, сетевой адаптер и контроллеры. Кроме того, это программное обеспечение также обрабатывает инструкции текущей игры, направленные, например, на создание игровой сессии, запись вашего игрового счета в таблицу рекордов или присуждения вам достижений. Здесь лучшее программное обеспечение напрямую взаимодействует с конечным пользователем.
Инструменты разработчика игр
Другой группой клиентов, пользующейся результатами работы команды разработчиков платформы, являются разработчики игр. Они используют комплекты разработчика программного обеспечения (SDK) Xbox 360, которые создаются командной разработчиков платформы. В дополнение к комплектам разработчика, платформа также предоставляет документацию, программные библиотеки, запускаемые на консоли, и инструменты, позволяющие разработчикам создавать игры. Чем лучше эти инструменты, тем проще разработчикам игр сосредоточить свое внимание на создании лучшего игрового процесса.
Служебное программное обеспечение
Серверы. Это слово вобрало в себя множество понятий. Обычные люди представляют их как некие виртуальные арены, где игроки устраивают между собой мультиплеерные баталии. Однако на самом деле все обстоит несколько иначе. Серверы - это машины в нашем дата-центре Xbox LIVE, которые соединяют между собой консоли по всему миру. Например, когда вы входите в вашу консоль под учетной записью Xbox LIVE, несколько сервисов в дата-центре реагируют на это и выполняют посланные вашей консолью запросы. Для платформы очень важно, чтобы было разработано высококачественное программное обеспечение, запускаемое на машинах дата-центра. Такие действия, как вход в учетную запись, просмотр игровой карты друга, поиск других игроков для участия в сетевой игре, присоединение к Xbox LIVE Party, покупка игр Xbox LIVE Arcade в Marketplace и даже повышения места в таблице рекордов - все они полагаются на программное обеспечение команды разработчиков платформы, запущенное в дата-центре. На этих серверах выполняется лучшее программное обеспечение, что означает, что сервисы могут быстро и точно выполнять запросы консоли, что также положительно влияет на удобство использования консоли конечным пользователем.
Помимо тех команд разработчиков, о которых я уже говорил, есть и другие группы, все вместе составляющие команду Xbox. Они включают (но не ограничиваются) команду инженеров аппаратного обеспечения консоли, команду разработчиков дополнений, команду поддержки разработчиков, операционную группу, которая обслуживает сервисы и машины, на которых они работают, а также команды, занимающиеся разработкой дополнительных функций платформы, таких как Netflix для Xbox 360.
Достижения - пример функций платформы
Достижения представляю собой прекрасный пример функции, которая извлекает выгоду из хорошо отлаженной платформы. Для успешного функционирования системы достижений платформа должна предоставлять несколько частей программного обеспечения, которые ориентированы на взаимодействие с различными группами пользователей.
Прежде всего, платформа обязана обеспечивать положительный опыт работы для разработчиков игр, которые работают над играми, использующими достижения. Так, частью Xbox 360 SDK является инструмент, который разработчики игр используют для описания и определения их игровых достижений. В дополнение к этому комплект разработчика содержит программные библиотеки, которые разработчики игр включают в каждую игру для того, чтобы при достижении игроком определенного момента, игра давала консоли указание наградить игрока соответствующим достижением.
Функция достижений также имеет сценарии использования для конечных пользователей. В дополнение к функционалу Compare Games (сравнение вашего списка игр с играми других пользователей консоли) основного меню, достижения доступны для конечных пользователей и из других областей консоли, сообщая нам с их помощью об очередном разблокированном достижении.
Другой стороной функции достижений, непосредственно взаимодействующей с конечными пользователями, является ее интеграция с программным обеспечением сервиса Xbox LIVE. Например, когда вы используете основное меню или сайт Xbox.com для сравнения игр с вашим другом, консоль или сайт xbox.com просят сервис Xbox LIVE узнать список достижений других пользователей и отослать их назад, чтобы ваша консоль или ваш ПК могли отобразить этот список.
Сделав достижения превосходной функцией для пользователей и разработчиков, люди из команды разработчиков платформы внесли большой вклад в улучшения процесса использования консоли пользователями, охватывающий сотни игр.
Тестовый инженер
Теперь, когда я вкратце объяснил, какую роль играет понятие "платформа" в экосистеме Xbox 360, я расскажу о том, что SDET делают для Xbox и для Microsoft в целом. Я не могу предоставить вам исчерпывающую информацию относительно всего, чем занимаются SDET или же описать все детали цикла разработки программного обеспечения, однако я постараюсь объяснить вам несколько важных понятий.
В целом, SDET призваны обеспечить высокое качество программного обеспечения и сервисов платформы, о которых я говорил выше. Другими словами, SDET служат своего рода адвокатами для клиентов - обычно это конечные пользователи, или команды партнеров, или разработчики игр. Работая в тесном сотрудничестве с другими членами команд разработчиков функций (программными менеджерами и инженерами по разработке программного обеспечения), SDET используют их знание программного обеспечения, чтобы сделать этот продукт лучше.
Ладно, а что вы понимаете под словом "лучше"?
Критерии релиза
Это основная часть работы SDET. Мы проводим много времени, работая над тем, чтобы согласовать с командами разработчиков функций список качеств, которыми должен обладать продукт до того, как он станет достаточно хорош, чтобы представить его клиентам. Это называется критериями релиза. Большой частью критериев релиза является набор "тестовых случаев", которые обычно являются пользовательскими сценариями, используемыми для тестирования и утверждения программного обеспечения, которое мы собираемся предоставить клиентам.
Автоматизированное и ручное тестирование
Как только команда соглашается с критериями релиза, SDET разрабатывают и используют внутреннее программное обеспечение, чтобы определить, насколько произведенное программное обеспечение соответствует критериям релиза. Это чрезвычайно важный вклад, который делают SDET, поскольку это позволяет всей команде получать достоверную оценку качества продукта. Обычно мы называем эту часть программного обеспечения "тестами". Они спроектированы так, чтобы охватить сценарии, описанные в тестовых случаях. Также они призваны обнаружить дефекты кода и признаки нежелательного поведения в продукте.
Например, для функции Friends простым тестовым случаем может быть следующий сценарий:
- Регистрация пользователя A и пользователя B в службе Xbox LIVE
- Проверка того, чтобы ни пользователь A, ни пользователь B не присутствовали в списке друзей друг у друга
- Пользователь А отправляет запрос на добавление в друзья пользователю B
- Пользователь B подтверждает получение запроса и принимает предложение
- Проверка того, чтобы пользователь А и пользователь B видели другого пользователя как своего друга
Отдельные функции могут иметь от десятков до сотен тестовых случаев, что означает использование тысяч тестовых случаев для оценки качество программного обеспечения платформы.
Для тестирования библиотек консоли, которые мы предоставляем разработчикам игр, SDET пишут тестовые приложения, которые запускаются на консолях разработчиков для проверки того, будет ли библиотека вести себя так, как надо. Эти тестовые приложения используют библиотеку точно так же, как ее будут использовать игры. Для тестирования программного обеспечения, которое будет выполняться на серверах в дата-центре, SDET пишут инструменты тестирования, которые симулируют активность одной или нескольких консолей или веб-браузеров. Разрабатывая и тестируя эти инструменты, команда тестеров может определить, насколько продукт соответствует критериям релиза.
В идеале множество тестовых случаев охватывается с помощью написания тестового программного обеспечения, как я уже писал выше. Мы называем такие тестовые случаи "автоматизированными". Однако, также бывает необходимо протестировать продукт вручную. Иногда временные или технические ограничения не позволяют SDET создать автоматические средства проверки для определенных сценариев, так что для этих случаев приходятся выполнять проверку вручную. Естественно, что в дополнение к автоматизированным и ручным тестовым случаям, за которые он или она несут ответственность, любой любящий свою работу SDET должен потратить на использование продукта столько же времени, сколько потратит на это потребитель. Это еще одно важное средство для поиска дефектов, проведения дискуссий в рамках команды и определения качества продукта.
В дополнение к непосредственному тестированию продукта, многие SDET также создают инструментарий написания программ и фреймворки, которые могут позволить другому SDET работать более эффективно. Если те или иные сценарии сложно автоматизировать, команда SDET может решить эту проблему путем создания технологии, которая поможет в автоматизации сценария. Кроме того, команды SDET могут работать с инструментарием над созданием фреймворков, чтобы унифицировать процесс создания отчетов о результатах теста, благодаря чему команда может более точно оценить результаты тысяч тестов.
Регистрация ошибок
Как и термин "серверы", термин "ошибка" используется очень часто. Поэтому часто люди не совсем уверены, что же такое ошибка.
Однако мы все можем согласиться, что это что-то плохое.
Когда люди, работающие с программным обеспечением, говорят слово "ошибка", обычно они подразумевают под этим что-то вроде "Эй, здесь что-то работает не правильно, и мы будем стараться отследить источник проблемы, пока не решим ее". Часто ошибки не являются просто дефектами кода, как можно было ожидать. Ошибка может выражаться в отсутствии связи между людьми, определяющими сценарии работы продукта, или в работе, которая просто не была закончена.
Как только ошибка была обнаружена, SDET расследует ее возможные причины, находит разработчика, который может быть ответственен за появление ошибки и с помощью внутренней системы распределения работ, назначает этой ошибке человека, который ответственен за ее исправление. Многие SDET будут работать совместно с этим человеком, обсуждая и отыскивая лучший способ по устранению данной проблемы.
Этот процесс регистрации, исследования и поручения ошибок, наряду с окончательной проверкой факта устранения ошибки, означает, что SDET работают с техническими деталями широкого набора функций определенного продукта. Поэтому многие SDET очень хорошо осведомлены о технических деталях некоторых функций продукта.
Управление высококачественным программным обеспечением
Таким образом, большой объем работы SDET имеет отношение к написанию тестового ПО и работе с другими разработчиками ПО с целью нахождения и устранения ошибок. Однако, SDET также работают с командами разработки функций на протяжении всех этапов разработки программного обеспечения. Я часто слышу за пределами Microsoft одно распространенное заблуждение, что SDET работают на разработчиков программного обеспечения из команд разработки функций. На самом же деле, вместо того, чтобы исполнять любые решения остальных членов команды, SDET организуют и участвуют в обсуждениях, которые помогают определить цели группы разработчиков функции. Принимая на себя активную роль в планировании, проектировании и формировании требований, SDET могут оказать на продукт существенное положительное влияние еще до того, как будет написана первая строчка кода.
Арбитражное тестирование - пример усложненного теста программного обеспечения
Другим распространенным заблуждением является то, что написание программного обеспечения тестирования - это более легкий процесс, чем написание собственно программного продукта. Хотя иногда это действительно так, программное обеспечение, выполняющее тестирование, может быть очень сложным. Прежде всего такое случается при попытке проверить все возможные сценарии, в которых участвует консоль, сервис Xbox LIVE и другие инструментальные программные средства, которые мы предоставляем игровым разработчикам.
Очень часто бывает так, что само тестовое ПО оказывается более интересным, чем проблема с продуктом, которую SDET пытается решить. Хорошим примером здесь является функция, которую я тестировал на первых этапах своей карьеры - арбитраж (Arbitration). Арбитраж - это способ, с помощью которого консоль и сервис обрабатывают и подтверждают счет многопользовательских матчей в сервисе Xbox LIVE. Логика продукта очень проста - каждая участвующая в матче консоль сообщает о результатах матча сервису Xbox LIVE. Сервис исследует эти результаты, и, если обнаруживаются какие-то аномалии, сервис принимает за истинный результат тот, который был передан большинством консолей. Такие результаты заносятся в таблицу рекордов этой игры каждого игрока.
Хотя код данного продукта не тривиален, он менее сложен, чем реализация полной проверки его работы в автоматическом режиме. Команда тестеров должна была создать код, который позволил бы тестерам описать тестовые случаи и затем отправить соответствующие инструкции на несколько консолей в одно и то же время, что напоминает работу разработчиков игр. Тестовые консоли синхронно входили в систему под своими учетными записями, использовали функцию создания онлайн-матчей для создания и присоединения к многопользовательской игре, генерировали счет матча, использовали функцию арбитража для отправки результатов на сервис, после чего проверяли, чтобы консоль и сервис сделали именно то, что от них ожидали в этой тестовой ситуации.
Это произошло на ранних этапах моей карьеры и показало мне, что SDET решают интересные и сложные проблемы с помощью программного обеспечения.
Надеюсь, что эта статья пролила свет на ту роль, которую играют люди, являющиеся членами команды разработчиков платформы Xbox, в развитии индустрии видеоигр. Кроме того, я надеюсь, что вам стало более понятно, какую важную роль играют тестеры в развитии проектов программного обеспечения Xbox и Microsoft.
Если вас заинтересовала эта тема, я приглашаю вас посмотреть
Я надеюсь, что в следующий раз, когда я буду раздавать свои визитки, я встречу меньше смущенных лиц.
Источник:
Перевод: Dazila
По теме
- Как человек стал контроллером (ч.2)
- Как человек стал контроллером (ч.1)
- NAT и Xbox Live
- Новые элементы для главного меню Xbox 360
- Оставаться защищенным в Xbox Live
- Улучшение безопасности консоли
- Avatar Marketplace: открыт в режиме 24/7
- Как разработчики игр могут настраивать Xbox Live
- Достижение разблокировано
- Технология аватаров Xbox LIVE