Тестируй как игрок |
14.06.2016 13:46 | ||||||
Автор: Джефф Найман (Jeff Nyman) Оригинал статьи: http://testerstories.com/2015/08/testing-like-a-gamer/ Перевод: Ольга Алифанова Как я уже говорил, тестировать игры трудно, и я также упоминал, что создал игру для собеседования тестировщиков. Думаете, я много внимания уделяю умению мыслить как игрок? Именно так. Это связано с тем, что, исходя из моего опыта, люди, мыслящие как игроки – это самые лучшие тестировщики. Об этом я и хочу поговорить. Начну с того, что я не имею в виду игроков как таковых – я говорю о тех, кто, играя в игры, размышляет о них не только на уровне базовой механики. События, механика, эмоции Начнем с мини-урока гейм-дизайна. Вместо того, чтобы напрямую рулить событиями, гейм-дизайнеры создают игровую механику. Именно механика отвечает за генерацию событий во время игры, и это очень важный момент. Все, что в игре происходит – это результат взаимодействия между игроком, предпринимающим некое действие, и игровой механикой, которая реагирует на это действие в определенном контексте. Игровые дизайнеры не создают сами события – они создают механику, генерирующую их. В этом фундаментальная разница между играми и другими медийными инструментами. Этот момент очень важен для тестировщиков – вы не просто изучаете функциональность, вы исследуете набор поведенческих реакций, которые кросс-функциональны по своей природе и направлены на генерацию определенного опыта. С первого взгляда непросто понять, как перенести этот опыт на неигровые приложения, однако я считаю, что хорошие тестировщики делают это интуитивно. События, происходящие в играх, вызывают у игроков различные эмоции. Небольшая неудача – укол разочарования. Момент нерешительности – волнение, смесь азарта и тревоги, борющихся за превосходство. Один игрок может признавать достижения другого, и, соответственно, ощущать принятие другого человека. Люди описывают игровой опыт, как "счастливый", "печальный" или даже "скучный". Эти слова описывают гигантские сдвиги в очевидных чувствах. Эмоции, из которых состоит игровой процесс, меняются постоянно, ежесекундно. Думаете, это только в играх бывают? Уверяю вас, крупные сайты вроде Фейсбука учитывают этот момент. Искусство и практики геймификации основаны на переносе игрового мышления на другие приложения. Способность понять, работает ли генерация эмоций и создает ли она тот пользовательский опыт, на который мы нацелены – важная часть работы тестировщика. Способность подмечать и понимать неявные эмоции – это навык как дизайнера, так и тестировщика. Как уже высказался Майкл Болтон, эмоции очень важны в тестировании. Зачастую необходимо учитывать эмоциональный опыт пользователя. Если вас что-то раздражает, то, скорее всего, пользователь тоже будет раздражен. Если вам очень нравится какая-то особенность приложения, которая позволяет вам пользоваться им быстрее и проще – пользователь, вероятно, тоже ее оценит. Надеюсь, понятно, что вышесказанное применимо к любым приложениям, но с моей точки зрения, именно игры позволяют неплохо прокачать подобный навык. Пример тестирования игры Несколько лет назад я говорил о том, что, с моей точки зрения, игра Star Wars: The Old Republic (SWTOR) – неплохой опыт для тестировщика. На самом деле практически любая RPG-игра, включая MMORPG, попадает под это определение, но я остановлюсь на SWTOR (просто потому, что я большой фанат Звездных Войн). Если вы не играли в нее (или любую другую MMORPG), то введу вас в курс дела в трех словах. В игре есть классы, и вы выбираете, за какой играть. Классы в целом делятся на три категории – танкующие, наносящие урон, и лечащие. Игровая механика сильно различается в зависимости от того, какой класс вы выбрали. Более того, у каждого класса свои собственные умения, выделяющие его среди прочих, и специфические способности, дающие дополнительные умения или дополняющие имеющиеся. К примеру, предположим, что вы выбрали джедая-рыцаря для игры. Вы хотите играть им как "танком" – и значит, вам нужно выбрать профессию джедая-хранителя. "Танк" – это персонаж, который носит тяжелую броню и может выживать, получая огромный урон. При этом он совершенно необязательно умеет наносить урон самостоятельно. Его задача – генерировать достаточно ненависти в противниках, чтобы они атаковали именно его, а не его соратников по оружию. Пока танк этим занят, его коллеги уничтожают врагов, получая куда меньше урона, потому что основные повреждения наносятся вам (очень в духе джедаев, правда?) Надеюсь, уже на этом этапе ясно, какое количество решений вам придется принимать, выстраивая стратегию игры. Танк – это специфический подход к решению задач, и вам нужно стать мастером техник, которые позволят вам освоить этот подход. Не правда ли, звучит очень похоже на тестирование? Погодите, это только начало. Применяем ситуационные техники Одна из сложностей, с которой сталкиваешься в играх – это "боссы". Босс – это специфический противник, которого очень-очень сложно уничтожить. Они умеют противостоять вашим способностям и сделают все, чтобы разрушить ваш план битвы. В контексте тестирования я бы сказал, что "босс" – это навязанный сверху дедлайн выпуска проекта в большой мир. В контексте игры вы можете использовать различные комбинации способностей, чтобы противостоять механике боссов. В SWTOR три категории способностей – базовые, уровня мастера, и героические. Вы не можете использовать абсолютно все, и вам придется делать выбор. В расширении "Тени Ревана" три типа боссов – Шпионы, Командиры реванитов, и сам Реван. Выбрать способности для боя с каждым из этих типов можно, к примеру, так:
Как можно видеть, различия между этими сетапами крайне невелики. В этом и заключается проблема с восприятием тестирования у некоторых людей – оно выглядит абсолютно однородным с определенного расстояния. Вся разница в мелких различиях между применяемыми техниками. Вы заметили, как это коррелирует с тестированием? Нельзя полагаться на одну-единственную стратегию, которая протащит вас через любой бой. Вам нужно выбрать техники и определить, как их результативно использовать в контексте проблемы, которую вы решаете. Такой тип мышления критически важен для тестировщика, а игры неплохо прокачивают его. Варьируйте свои умения В таких играх у вас, как правило, множество умений. Некоторые из них более мощные, некоторые менее, у некоторых есть "откат" (их нельзя использовать повторно в течение определенного времени), некоторые "суммируются" (можно использовать несколько раз, и эффект от них будет накопительным). Бывают и "тикающие" умения – примените их один раз, и оно будет действовать в течение определенного времени, нанося урон или исцеляя. Ряд умений идеально подходит для совместного использования, а какие-то лучше использовать по отдельности. Тут есть над чем подумать! В играх типа SWTOR, как правило, есть "ротация" умений. По сути, вы используете ваши умения в определенной последовательности, а затем повторяете эту последовательность, пока бой не будет завершен. В некоторых играх также есть система "ситуационных приоритетов" – вы необязательно следуете строгой последовательности действий – вы приоритезируете их, а затем используете, когда и если они становятся доступными. "Когда и если" здесь означает, что некоторые игровые события могут заблокировать ваши умения или сделать их бесполезными, поэтому тупо следовать строгой последовательности действий не всегда разумно. Корреляция с тестированием тут очевидна, не правда ли? Некоторые техники тестирования лучше находят определенные виды багов, однако использование кучи техник одновременно без учета контекста делает тестирование неэффективным и/или нерезультативным. Пример из игры: давайте рассмотрим так называемые "открывающие действия", которые персонаж совершает в начале боя.
Открывающие серии, показанные на скриншоте выше, позволяют набрать максимальный уровень агрессии противника за короткое время, чтобы удерживать ее на себе, а не на друзьях, наносящих большой урон. Другими словами, задача танка – генерировать максимальный уровень агрессии, удерживая внимание врага и не позволяя ему напасть на коллег. Если ваши друзья наносят больше урона, чем вы генерируете агрессию, то враги сосредоточатся на них, а не на вас. Первая способность в списке – Прыжок Силы, сокращающий дистанцию до вашей цели. Она очень важна – вы фактически врываетесь в стан врага и стартуете бой. Однако что будет, если это не очень разумный шаг, и вы хотите привлечь внимание врага на расстоянии? Это можно провернуть следующей открывающей серией:
Не хочу углубляться в детали механики игры, просто обратите внимание на то, что вам приходится выбирать – или приблизиться к противнику, или выманить его издалека, оба действия одновременно выполнить невозможно. Выбор за вами, и вам решать, какая тактика лучше подходит для конкретной ситуации. Это очень похоже на тестирование, когда вы применяете наиболее мощные техники, чтобы выявить наиболее критичные риски как можно быстрее ("генерируете агрессию"). Затем вы пользуетесь более-менее стандартным набором. Интуиция и навык помогают тестировщику выбрать правильную технику в нужный момент (зачастую в качестве "открывающей серии"), и именно этим хороший тестировщик отличается от очень хорошего. Под "очень хорошим" я понимаю способность собрать наиболее важную информацию в наименее короткое время при наименьшем количестве тестов. Открывающей серией дело не ограничивается – есть еще техники, которые используются в разгар событий. Эта схема просто показывает, что игрок делает что-нибудь – что угодно! – что принесет пользу в конкретной ситуации. Именно в этот момент он использует воображение на всю катушку. В плане тестирования это хорошее время, чтобы тестировать свободным поиском. Наконец, есть умения массового поражения (area of effect, AoE) – некоторые противники умеют наносить урон не только вам, а по некоторой области.
Если эта стойка активна в ситуации с АоЕ, вы генерируете много угрозы и вам куда проще поддерживать ее, учитывая, что "Удар Хранителя" (Guardian Slash) наносит большой урон восьми противникам одновременно. С шансами вы зацепите всех ближайших противников и наберет достаточно агрессии. Если вы используете другую стойку, то вам придется попотеть, чтобы набрать достаточно агрессии для использования "Удара Хранителя". Конечно, я довольно примитивно излагаю особенности сложной роли танка, но, надеюсь, картинки помогают понять суть. Вы всегда делаете выбор. Некоторые ваши решения связаны с наилучшим использованием своих способностей в определенной ситуации, чтобы достичь нужного результата. Та же идея применима и в тестировании – например, решение, какой уровень абстракции допустим для теста, где нужны драйверы, а где заглушки, двигать ли тестирование ниже (к юнит-тестированию) или выше (к приемочному). Думайте как игрок… и как ученый В подобных играх вам нужно очень внимательно следить за особенностями и повадками тех, кто на вас нападает. Это "усиленный" монстр? "Элитный", быть может? Может, у него иммунитет к опрокидываниям или умениям, контролирующим противника? Определите, какие умения вам доступны и как их нужно применять, чтобы победить конкретного врага. Если против вас идет один элитный, один усиленный и один слабый противник, стоит ли сначала уложить элитного, как самого сильного? А может, лучше начать со слабейшего – но тогда придется получать урон от двух более сильных врагов. Использовать "щит" сразу же, или, учитывая его долгий откат, применить его тогда, когда он будет действительно необходим? Размышляя над этим, вы создаете ментальную модель того, что произойдет, когда вы начнете атаковать. Затем вы напрямую тестируете эту модель и определяете, насколько ваши предсказания сошлись с реальностью. Если модель верна, вы размазываете противников по полу и двигаетесь дальше. Если она была неверной или неполной – мои вам соболезнования. Вы пересматриваете свою стратегию и пробуете вновь. При этом вы мыслите, как среднестатистический ученый. Тестирование, как и любая наука, базируется на наблюдениях и экспериментах. События развиваются в зависимости от результатов этих наблюдений и экспериментов – и это именно то, чем регулярно занимается любой геймер. Искусство, игры и тестирование Отложим вопросы науки на минутку и обдумаем все вышесказанное. Я думаю, многие в курсе, что гипотеза – это взвешенная догадка насчет вероятного факта, основанная на некоторых доказательствах. В тестировании это наши спецификации или критерии приемки. Наши доказательства – это желания бизнеса. Наши гипотезы – это примеры тестов, которые предполагают, что некий факт существует – например, что фича в наличии и работает так, как должна. Тут в игру вступает тест-дизайн, который должен базироваться на фактах. В большинстве научных дисциплин факты должны основываться на точных, тщательно проверенных и подтвержденных разными людьми наблюдениях. Ученые используют воображение и логику, чтобы размышлять об имеющихся фактах и делать предположения – разумные догадки насчет возможных объяснений результатов наблюдения или (что даже важнее) насчет ожидаемых результатов наблюдений. Тестировщики делают то же самое: они берут первоначальную фактуру (спецификацию) и выстраивают ожидания, касающиеся возможных фактов – например, вариаций в работе ПО, сценариев обработки ошибок, и так далее. Эти ожидания должны поддаваться проверке разными людьми, не только тестировщиками. Возвращаясь к нашему игровому примеру – игровая механика должна быть единой и надежной для любого из игроков. Все игроки должны быть способны сделать одинаковые выводы насчет открывающих серий и ротаций умений. Но что еще более важно – эта информация также может быть оспорена и изменена. Как правило, она меняется, когда меняется ("балансируется") игра. Эксперименты и тесты В науке эксперименты часто разрабатываются для того, чтобы получить новые наблюдения для проверки гипотез. Тестировщики заняты именно этим. Наши эксперименты – это разработанные нами тесты и их прогон. На обоих этапах мы получаем новые результаты наблюдений, и у нас появляются идеи насчет того, что и как тестировать. Бизнес-аналитики тоже учатся новым методам постановки задач, а разработчики – новым способам воплощения этих задач в жизнь. В игровом контексте "балансировка" часто тестируется на предмет соотношения разных классов по силе. Если один класс серьезно превосходит другой, он получает несправедливое преимущество, что вызывает гнев игроков (помните, я уже упоминал эмоции). В науке гипотеза подтверждена только тогда, когда она поддерживается очень сильными доказательствами. В тестировании так же – мы не просто должны увидеть рабочую функциональность, она должна соответствовать нашим "доказательствам" – спецификации или приемочным критериям. К тому же наша доказательная база должна поддерживаться на длительной дистанции, совсем как в науке. Конечно, поразмышлять таким образом можно о любом приложении, но игры намного интереснее и предлагают куда более яркий опыт. Поэтому я убежден, что хороший тестировщик – это тот, кто сфокусирован не только и не столько на играх, но и на том, как именно игры формируют пользовательский опыт, а также тот, кто размышляет, как бы этот опыт протестировать. |