вторник, 1 августа 2017 г.

Найти крутой баг минимум раз в месяц!

На первой работе я тестировала игры для мобильных телефонов. Нет-нет, не те современные игры, о которых вы подумали. Айпадов и андроидов тогда и в помине не было. Самый лучший телефон — Sony Ericsson.

На работу меня привел мой знакомый, который там тоже тестировал. Все было просто — начальник выдает нам, мелким тестировщикам, телефоны и задание. «Потестируй гольф. Надо честно пройти все лунки, проверить, что шарик не улетает за текстуры. На этих телефонах еще не проверяли, а графика там другая». Или «вот разработчик исправил А и Б, проверь. Потом просто тестируй игру». Что? Классы эквивалентности и прочая? Не, не слышали.

Просто играй. И ищи проблемы, зависания, вылетания, 
вылезания за текстуры

Самый страшный баг — зависание. Хорошо, если игры. А если капитальное — вообще супер! Это когда ты даже выключить телефон не можешь по красной кнопке, надо доставать аккумулятор. Угадайте, кто нашел такое зависание в первый месяц работы? Smile :) На самом деле это не супер-пупер достижение, конечно, такие зависания были довольно часто, особенно на старых мобилках. Но у меня были какие-то хитрые шаги воспроизведения — мы уже проверили несколько телефонов и тут я нашла этот баг. Который крашил любой телефон. Включая ранее проверенные. Крутой баг! Кстати, по-моему, как раз на игре в гольф, но я могу и ошибаться. Давно дело было.
Сам баг уже не помню, но помню, что произошло потом. Начальником над нами был Максим. Он распределял телефоны среди "малышей", сам заливал туда обновления, пока мы не умели. И критичную ошибку (типа зависания, ага) он сначала проверял сам. Если ок, отдавал телефон нам, тестировать дальше.

Помню, я еще немного повозмущалась в душе — чего это он мой баг там перепроверяет? Моё! Отдай )))) Наконец, Максим отдает телефон мне:
— Так, я зависание проверил, его поправили. Смотри дальше.

Но как же это я и не проверю свой родной баг? Повторяю шаги — завис. Ээээээ... Вроде начальник проверял... Может, я что-то путаю? Повторяю снова. Завис. И еще разок. Оборачиваюсь к Максу и так неуверенно:
— Максиииииим...
— Что?
— А ты точно проверил мой баг? А то у меня падает...

Макс с удивлением посмотрел на меня:
— Да, я проверял, вроде же исправлено. Покажи.

Подкатываюсь к нему на кресле:
— Ну вот, смотри, делаю раз, два... Завис!

Он покачивает головой, забирает у меня телефон и уходит. Мне пока отдает другой.

Это самый яркий случай «как я нашла клевый баг», который отпечатался у меня в памяти. Думаю, Макса он тоже впечатлил. А если не впечатлил, то хотя бы хорошее впечатление оставил. Ведь он проработал при мне всего полтора месяца и ушел. А спустя полтора года позвал к себе. Значит, запомнил. Значит, я молодец ))) Собственно, я начала писать о своем первом собеседовании и это была предистория. Но получилось длинно, вынесла в отдельный пост. А заодно и задумалась о тех эмоциях, ретроспектива прям Smile :)

А ведь после той истории я установила себе мысленно планку — минимум раз в месяц находить что-то такое... Эдакое! И ведь находила! Некоторые баги были настолько яркие, что помню до сих пор. Хотите расскажу? =))


1. Почему она в середине дня пришла и за 5 минут баг нашла?


Начальник сказал, что "завтра с утра будет новая игрушка". Ооооо, новая игрушка!!! Это значит, что там будет куча багов на поверхности! Первая версия жеж, это самое крутое! Кто первый посмотрел, тот все баги и нашел.

Нет, нам платили не за количество найденных ошибок. Но все равно это было прекрасное ощущение — покопаться в сырой версии и найти ворох всего. И завести самым первым! Ну как "завести"... У нас вместо баг-трекера была обычная почта. Нашел косяки — пишешь письмо разработчику. Иногда ты дублируешь соседа, потому что нигде не можешь посмотреть, кто о чем писал. Поэтому нашел — спроси вслух «а вот это уже заводили?». И если заводили, то облом-с.

Тут вы можете сказать — «Оля, как же так! Тестировщик не должен получать удовольствие от найденных багов! Меня вот они всегда огорчают...». Да, баги в продакшене меня сейчас всегда огорчают. Поэтому я понимающе киваю головой. Но в душе вспоминаю свою первую работу и этот азарт — обогнать всех и найти баги раньше! Найти самый-самый клевый хотя бы раз в месяц! Ух! Это было круто!

Но в тот раз новость меня огорчила — игрушка выйдет с утра, когда на работе уже будут Вася, Ваня, Петя... НО НЕ Я! У меня как раз завтра с утра пары в универе, которые нельзя пропустить, я приду только в обед. Как же так! Они же найдут все самое интересное!!1 Утешала только мысль о том, что телефонов много:

См на задний фон)))

Видите на заднем фоне шкаф во всю стену? Там хранились телефоны. В каждом шкафу по 4 столбца и около 25 ячеек (это я по фотке посчитала, так то не помню). Таких шкафа три — получаем около 300 разных моделей.

Так что и мне багов хватит))) Так я себя утешала, уходя под злорадное хихикание Леши: «Хехехе, а мы завтра раааааано придем, все баааааги найдем!».

И вот я прихожу на следующий день в обед. Нам дали бильярд. Ребята уже пару часов как его тестируют. Сажусь за свой стол, беру телефон — эх! Никаких тебе очевидностей «на заставке кий вылезает за пределы экрана»... Прохожу один уровень, мне он не нравится. Я выхожу обратно в меню и пытаюсь начать новую игру уже в другом режиме (ну, знаете, как в играх есть куча вариантов на выбор: 1 игрок, 2 игрока, на скорость, на смелость, на смекалку...). И ТУТ ОНО ПАДАЕТ!

Ого! Неужели все так очевидно? И первый уровень игры в рандом-mode падает? Перезагружаюсь, пробую сначала. Хм, нет, не падает. А что я делала? А я перед этим прошла single-player один уровень. Так так так! Глазки загорелись, ручки дрожат: неужели я сейчас так быстро его воспроизведу и вот оно, падение? Надо поскорее проверить все свои теории, пока остальные ребята это не нашли. А вдруг уже нашли? Они же тут уже 3 часа тестируют! Не может быть, чтобы еще не находили ошибку...

Пробую зайти в single player, выйти, начать рандом. Нет, не падает. А если пройти 1 уровень? АГА! Спрашиваю вслух:
— А падение на рандомном режиме уже нашли?

Начальник оживляется:
— Какое падение? Покажи.
— Ну вот, смотри, так и так...
— Ух ты! 

Убегает с телефоном. Это я потом узнала, что разработчики были с нами на одном этаже, а тогда вообще понятия не имела, куда он ушел.

И вот он возвращается и начинает слух возмущаться, потрясая в воздухе телефоном:
— Смотрите, как надо! Вы тут уже полдя тестируете. А Оля пришла, и за 10 минут зависание нашла!

Приятно! 



2. Как Дима ругаться начал. Line Rider


Самый крутой разработчик у нас был — Дима. Найти в его приложении краш или зависание — это еще постараться надо. Самые лучшие первые версии, обычно мы находили всякие минорчики. Мелкие косяки или вылезания за пределы экрана (все то не предусмотришь). А вот сама логика обычно работала.

И типовых ошибок не было — нас всегда учили проверять входящий вызов или сворачивание приложения. Часто это приводило к тому, что звук в игре отключался или она сворачивалась, а обратно никак. Поэтому так весело было тестировать новые игрушки, за первую пару часов собираешь ворох типовых ошибок 

У Димы ошибок было мало. И сам он был довольно флегматичный. Его коллеги могли принять весть о баге эмоционально, но только не Дима. Он всегда был веселый и отпускал шуточки. Так что эта история — единственный случай, когда я видела его злым и ругающимся.

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


Как раз тогда я задалась вопросом, можно ли попасть в авторы. Мы ведь проверяли в том числе все менбшки и отображение текста там. И вот я читаю плывущий список авторов. Вот Дима в качестве разработчика. А вот отдел тестирования, но там только наш начальник. Я тогда спросила, можно ли и мне туда попасть? Не помню точно, у кого, но мне ответили, что в целом да, я заслужила, но вот только игрушку уже выпустили. Поздно попросила =)

Но мы продолжали ее тестировать. И вот я задумалась о чем то своем, тыкаю в кнопочки и тут... Не помню, что именно страшного случилось, поэтому давайте представим, что игра зависла. На самом деле вроде не зависла, а просто стала криво что-то отображать прямо в игровом процессе.

У меня тут же округлились глаза. Ого! Это же большая проблема! Так, что я делала? А я не помню, что я делала)))) Ведь я думала о чем-то другом. Вот бы мне тогда всякие технологии по записыванию твоих действий :) Я проверила пару версий "о, я вот это строила и такую линию проводила", но нет. Не воспроизводится. А если так? И так не воспроизводится. Но ведь есть же баг! Я же его ВИДЕЛА!

Воспроизводила я его долго. Сначала еще были какие-то воспоминания "куда именно я тыкала", но через несколько попыток я начала забывать, что делала. В итоге баг не воспроизводится, а я сижу и сверлю телефон взглядом, отчаянно пытаясь вспомнить, ЧТО же я такого делала.

Не помню, сколько времени прошло, когда меня наконец озарило. Чтобы баг воспроизводился, нужно начать строить трассу, потом выйти в меню, что-то там где-то поменять и вернуться обратно. Я вспомнила, что я меняла этот пункт, когда наконец смирилась с тем, что уже не воспроизведу баг. До этого я была зациклена на мысли "надо вспомнить... что я делала? ну что?", а как только расциклилась, так и вспомнила.

Ура! Я смогла! Я воспроизвела его! Повторила еще пару раз, для достоверности. Будет эпик-фейл, если не сломается при Диме. Иду к разработчикам. Вечернее время, потому что половины ребят уже нет. Дима откинулся на спинку кресла и смотрит футбол. Ему можно, он все сделал и все работает (ну, он так думает). Иду к нему:
— Дима, а я баг нашла в line rider!
— Ну давай, покажи )))) (ухмыляется, не верит в то, что в игре есть важные баги, не минорчики)
— Вот, смотри.

Я сажусь рядом и показываю, проговаривая свои действия (начинаем строить, потом выходим в меню, жмем сюда...). Воспроизвелось! Дима глазам своим не верит)))) Он отбирает у меня телефон и повторяет все сам. Пару раз. А потом... Начинает кричать:

— БОЛВАНЫ! КАК МОГЛИ ПРОПУСТИТЬ ЭТОТ БАГ?!

Это было так на него не похоже. Обычно так кричал только продюссер, сидящий рядом с ним =))) Поэтому от Димы такое слышать было очень удивительно. И потому то это мне и запомнилось )))

Думаю, тут сказалось то, что игра уже была выпущена. А значит, надо выпускать хотфикс. А это сложно, потому что игру уже могли многие скачать, а не все обновятся и т.д., и т.п. =)

Конечно, я тоже входила в ряды болванов, ведь я тоже тестировала игру и тоже раньше пропустила этот баг. Но была помилована, так как я все же его нашла =) А заодно набралась храбрости и попросилась в список авторов. Ну, раз мы все равно выпускаем хотфикс )))) И Дима согласился! Это была первая и единственная игра, в которой я попала в список авторов. Очень гордилась потом)))

Это было уже под конец моей работы в этой фирме, поэтому в другие игры автором попасть не успела. Но и себе скачала line rider-а тогда, чтобы гордиться )))))

Хотя вывести всегда спокойного Диму из себя тоже было достоянием Big grin :D Поэтому я уже забыла, в чем именно был баг и вообще все детали. Но четко помню его реакцию ))) И свое отчаяние, когда пыталась воспроизвести баг, но забыла, что именно я делала ))))


3. Непойманый баг вечного шарика в бильярде


Этот баг я запомнила потому, что он входил в разряд крутых, но я так и не смогла его воспроизвести.

Мы тестировали бильярд. Ты указываешь направление и силу удара. И вот как-то вечером (да, в моих историях часто вечер, но я же тогда училась в универе, приходила на работу часа в два, поэтому и сидела долго, до 8-10 вечера) я сижу себе, играюсь. И тут вдруг мяч зацикливается. Он фигачит и фигачит по стенкам, не остаавливаясь. А ведь его скорость должна начать угасать...

Сижу, любуюсь своим вечным двигателем. Мимо проходит генеральный директор — у нас в комнате стоял настольный теннис, поэтому туда часто заходили ребята из соседних кабинетов, поиграть. Бигбосс, назовем его Вася, тоже шел в ракеткой в сторону настольного тенниса. Помахала ему рукой, позвала посмотреть:
— О, Вася, привет! Зацени, что я нашла.
— Так, и что?
— Он не останавливается!
— О, да, и правда. Прикольно))) А как нашла?
— Пока не знаю)))



Вася ушел играть, а я пыталась воспроизвести баг. Но увы и ах, так и не получилось... Запомнила эту историю потому, что так и не смогла его воспроизвести, хотя потратила какое-то время на попытки. Очень редкий баг, видимо, был. Так что врядли бы его исправлять стали. Какой шанс, что мячик зациклится? Никто больше на него не натыкался, по коду тоже не нашли... Ну и все на этом, нет шагов воспроизведения, нет исправления =)


4. Подсознательное чутье, когда зависнет


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

Фактически, просто выйти в меню, когда фигурка перемещается. Но если бы все было так просто! Понимаете, надо было выйти в определенный момент. Когда фигурка уже сдвинулась и только начала полет, ну процентов 20-30 пролетела.

Поймала баг уже под вечер, разработчик ушел. Несколько раз воспроизвела, отключив мозг: «а руки то помнят». Но немного страшновато было, разработчик скорее всего не сможет воспроизвести это сам и надо будет подойти показать. А вдруг при нем не получится? Начинаю волноваться — у меня не получается воспроизвести... В итоге я даже забрала телефон домой! А это была большая редкость, их старались просто так не давать.

От этого бага мне запомнилось то, как я лежала вечером на диване, таком, знаете, раскладном. А в сложенном состоянии у меня голова лежала на подлокотнике, ноги согнуты в коленях и упираются во второй подлокотник. Благо мягкие оба ツ 

И вот, значит, лежу, тыкаю кнопочки... Но, когда в голове стоит "воспроизведи", не получается. Когда включается мозг и пытается уловить это требование "нажать, куда идти, подождать секунду, выйти" — не получается. Когда забиваешь, отключаешь голову и полагаешься а чутье — воспроизводится!

Не помню процесс починки бага и как в итоге показывала его разработчику. Но тот вечер на диване помню до сих пор ツ 

К чему я это все


Радоваться багам — это нормально! Big grin :D

На самом деле в последнее время слышала фразы из серии «Тестировщик не должен радоваться багам! Это значит, что ему пофигу на продукт». Когда слышу такое, то вспоминаю ту свою первую работу и стыдливо прячу голову в шею. Да, я радовалась багам. Но это же было так весело!

Да, потом я пошла тестировать «серьезное ПО» и моя игра «найти крутой баг раз в месяц» прекратилась. А теперь я еще и за поддержку заказчиков отвечаю. И если, не дай бог, на PROD-е что-то сломается, то мне будет не до смеха. С другой стороны, замечать мелкие косячки во время тестирования и сейчас забавно =)

Мне даже иногда немного жаль, что у нас крутые разработчики и куча автотестов. Ну нету их, простых багов! А сложные можно разобрать только с разработчиком... Помню, когда-то я «тестировала на стороне», в основном на прошлой работе. Фриланс-проекты в этом плане благодать! Автотесты? Не, не слышал. Проверить после коммита, что у тебя хотя бы главная страница отображается, а не падает с ошибкой? Тю, а тестировщики зачем! Вот это тоже было весело =))) После основной работы можно даже мозг особо не включать, а уже пачку багов нашел!



В общем, беде на проде радоваться не стоит, но если вы ловите хитрые баги на тестовом стенде и гордитесь собой — так гордитесь! Это здорово, это значит, что вы развиваетесь, что вам интересна ваша профессия и есть задатки тестировщика. Почему это должно смущать? Сама не знаю =)

И вообще на первой работе я была самой крутой, вон какие баги находила! Да и на второй одна из лучших. А сейчас расти еще да расти... Почти джуниор, хоть и со стажем ツ 

Так что вспомиаю те времена и ностальгирую. Сейчас порой очень не хватает этого чувства «да ты крутая!». Но зато сразу видно: есть куда расти! Чего и вам желаю ツ 

4 комментария:

  1. Спасибо, очень интересные истории))

    ОтветитьУдалить
    Ответы
    1. Спасибо за фидбек )))) Значит, не зря написала ^_^

      Удалить
  2. Читала и вспоминала себя в юности :) Тоже был подобный опыт и тоже в играх. Правда, обучающих.
    Как же я радовалась тому, что случайно нахожу такие крутые баги. Когда опыта прибавилось, стала радоваться тому, что могу локализовать и описать так, что любой менеджер или разработчик без труда этот баг воспроизведет. А потом уже радость доставляло то, что сложный баг находится не случайно, а в результате анализа функциональности и составления тест-кейсов или чек-листов.

    Единственное, хочу выступить в защиту тех, кто за 3 часа не нашел баг :) Причем, пишу с позиции человека, который приходил, тыкал в пару мест и находил то, что другие не нашли за несколько часов тестирования. Если другие тестировщики 3 часа последовательно тестировали уровень за уровнем на соответствие сценарию, они вполне могли не успеть столкнуться с багом при выходе после одного уровня. Но, конечно, нахождение подобного бага выглядит более эффектно, чем тестирование уровня за уровнем :)

    ОтветитьУдалить