Automation QA - Собеседование на микросервисный проект (часть 1)

Подготовка к собеседованию на QA Engineer

Транскрипция видео:

  • ведь меня зовут чертоги на ней а снег курицей шанс инженер компании триплекс сегодня я хочу тебя просто беседовать на наш позиция микро сервисный команда может пожалуйста рассказать про себя до меня зовут андрей я в автор тестирование около года вошел этого тестирования с компании epam работал их лобби потом получается работу на внутреннем проекте где мы автоматизировали его и и api тестирование используя библиотечки на ей мы использовали селенит на api и the rest assured и там мы создавали мы покрывали тестом

    00:00:02 - 00:01:34

  • приложения дергали ручки соответственно реальные тестировали потом по паттерну п джорджи кто из создавали там список в полиментов потом на них писали методы которые с которыми можно работать с этими элементами ну и соответственно проводили тесты тестирование api это библиотекари сосули то есть там документации велась в лагере брали оттуда информацию по ручкам соответственно response request какие должны быть ответы и какие должны быть боги какие должны иметь статус коды и дергали эти ручки и проверяли нас на

    00:00:51 - 00:02:27

  • соответствие [музыка] соответствие спецификации эти запросы через дергали прям сам слайдер или какие-то постную коллекции автотесты бы не дергали через получается авто тесты на жаре писали полисахарид вот когда ты рассказывал про свою как ты говорил мы типами а можешь выделить что из этого делалось группы что из этого твой личный вклад ну то есть там бы команда была небольшая один на ручник 1 авто тестер и соответственно ручник там писал функциональные тесты и я смотрел на эти сценарии и автоматизировал и

    00:01:39 - 00:03:12

  • командуя подразумеваем вот такую по тестированию ну на мне лежала получается экспертиза авто тестирование то есть перевод ручных тестов в автоматически фреймворк для автоматизации тестирования сильнее 300 шурак что-то еще может быть он был уже написан до тебя или ты это все создавал это был проект получается с нуля и я создавал вот там сначала описании там вы элементов до реализации да павел последующем выкатки на 7 через дженкинс откуда там запускайся джо бы там отдельно была часть тестов на отправлялась на регресс

    00:02:35 - 00:04:20

  • команду dialogs то есть у нас проект автоматизации он стал отдельно от основного проекта приложения и на регресс мы выделили отдельные тесты которые там передавали уже команде разработчиков которые выполняли эти тесты на своим своим папой плане где проводился соответственно регресс приложить при каждом там релиз [музыка] так так так вот смотри получается у башни соседи крутились ваши тесты вас был только регрессе были ли у вас какие-нибудь из муки или еще что то что на этом как каждый build разработчиков проверялась

    00:03:36 - 00:05:06

  • что у вас ничего не сломалось как вы убеждались что приложение все еще работают там ну соответственно у приложение развивалась нам дорабатывалась тоже была описана какая-то фича новое в документации с этой фичей возникал какой-то там бизнес сценарий там логики и просто бизнеса на речник там делал свои тасс кейсы ручные на функционал я потом браут и сценарии описывал в коде видел запросов и ответов там на сервис и через api [музыка] смол ну смог этот занимался больше ручник муса период теперь я понял

    00:04:21 - 00:06:12

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

    00:05:27 - 00:06:57

  • родины регресс или нет но это как бы у нас есть результат этого прогона у нас есть какая-то [музыка] проверяем это ошибка теста или барашек системы убеждаемся что у нас тест написан корректно что это ошибка системы мы как бы уже начинаем анализировать там на сколько это критично там для бизнес-процесса и по сути как бы в общении с бизнесом надо решать сможет ли этот доработка выйти там протез с этим банком или нет настолько она третичный каких-то формальных правил вас не было ну например я бы себе представил команду

    00:06:12 - 00:07:56

  • в которой из формальные правила что если мы в рисе находим дефекты не выше например чем медиум medium мы можем выкатываться но менеджер critical и блогера их нужно исправить до релиза вас какие бренды ну да такие общие правила были мы останавливаем загадку релиза соответственно проанализируем можем ли их понизить или или надо там исправлять и это критично там для а кто у вас в команде как раз отвечал за проставление приоритета и серьезности дефектов продукт оунер которая ведет продукты [музыка]

    00:07:05 - 00:08:42

  • как тестировщик создаешь дефект у тебя же есть халяль примиритесь и верить то и вообще не заполнял или ты хоть что-то там заполнять а потом если что команде вы можете понизить или повысить и the ready set ну у нас есть же функционал который там но блокеры то там блокирует этот там систем соответственно изначально логика такая тестировщика что если мы блокируем процесс прохождения там запроса блокеры и он как с критичным там приоритетом ног но этот канал ты это ставишь да просто тогда этого упоминал

    00:08:00 - 00:09:29

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

    00:08:46 - 00:10:17

  • условия просто скажи мне пример дефекта с низким приоритетом с низким приоритетом это какой-то дефект не завязано функционал то есть там мукой форма там отображения веб-страниц то есть там поехала там либо какая-то печатка не значит видно что опечатка но на функционал не влияют здесь конечно четки такие которые несут там репутационные риски это уже как бы может быть серьезно проявите ну например да если у тебя на главной странице компания с опечаткой то ну так быстро исправить сложно такой вот рецепт

    00:09:44 - 00:11:08

  • будет высокий потому что как раз и за репутационных мишка ладно давай пойдем дальше я поищу тестирование по тебе спросил смотрел у вас получается был теста у вас были сервиса кроме этого у вас какие-то еще уровне тестирование были если мог мы представим что то какая там доставай-ка рамена вот два слоя я уже понял у вас есть такие пища может быть слайды но это он получается были white тесты были как на функционал конкретные там конкретного модуля там конкретной формы на случай srm система это там заполнении

    00:10:33 - 00:12:00

  • формы или там отправка их там базы также были по дну несколько сквозных тестов the century который гамме заполняя все форму и прохождение пользу этого пути от начала там до конца до смерти того что получилось у нас в базе а вот такое ваши тесты ни на каком уровне находились тоже на модульным и получается а не конкретные до моды опрашивали соответствии с этим со спецификацией какие должен быть запросы по сын и какие ответы получили какой-нибудь интеграционное слова сказкой пирамиде был проверяли в

    00:11:21 - 00:13:02

  • интеграцию сервисов друг с другом или может быть с какими-то внешними взаимодействиями тема была немножко получается без интеграции другими но в теории могу сказать что можно написать также до интеграционные тесты на систему и замок от там взаимодействии с внешним системе [музыка] настроить маки если нам надо вернуть какое-то значение а мы тоже будет с тобой и соответственно сделать тест интеграционный независимо от внешних систем через какой инструменты как раз но this tape идеал на джаве оправе vr мог что-нибудь слышал голоса

    00:12:14 - 00:14:04

  • могут работать нет у меня тогда следующий вопрос раз все таки у нас есть пирамида тестирования несколько слоев the mentally and и компонентный может быть в работе там юнит-тесты даже писали можешь мне рассказать почему у нас это называется пирамидой почему у нас форму вот такая на верхушке сужается что происходит но это пирамида она наверное отображает не наверное отображает количество тестов они их достаточно много они должны быть быстрее они должны быть быстро там показывать неисправность они

    00:13:16 - 00:14:40

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

    00:14:04 - 00:15:48

  • если если мы берем там интеграционные тесты то мы завязываем ся она уже не на детали реализации не на имплементацию она внизу да там мы больше контракт проверяем рослин а вот смотри кроме того что у нас нижний слой вот много тестов но не атомарные вот переходом все выше и выше что у нас там случается количественные изменяются стоимость богатой баночек теста unity стоит дешево дешевые цена исправления этого бага для системы чем дальше чем дороже его исправить ну и скорость получается уменьшается слезами верхушке пирамиды

    00:14:57 - 00:16:37

  • чем тесто не быстрые hydra ционные они там туземцы они могут быть достаточно медленный но зачем нам тогда получается все-таки нужны такие если мы собираем и приложение как из кубиков нам надо проверить целостную картину работает полный сценарий что зачастую есть модуль который там отвечает за определенную часть модуль контроллер как он работает с другими картину в целом надо представлять проверять потому что иначе приложение нерабочие будет то есть разные уровни тестирования разные слои проверяют

    00:15:49 - 00:17:28

  • разные вещи unit тесты проверяют юниты разработки компонента проверяют модуль изолирован а дальше дам на интеграционном проверяешь как модули между собой взаимодействия an end and скважину этот термин ты проверяешь полный пользовательский цикл какой-то большой сценарий хорошо давай теперь мы пойдем дальше ставим себе что нам нужно протестировать какую-то ей страничку ну например у нас есть логин пароль мы можем не знаю там нажать типа вспомнить пароль там и до 20 еще что-нибудь такое вот какие б тест

    00:16:42 - 00:18:10

  • кейсов и какие техники достижений ты бы использовал для проверки вот такой формы но форма у нас там наверное стандартного логины и пароли так как бы [музыка] строчные форма ринатом право лидировать требования к этим полям и соответственно это валидация это там метод эквивалентных классов и граничных значений то есть мы смотрим какие то какое поле что мы вводим это поле и смотрим граничное значение что они как бы системой отрабатывалась правильно началу я бы тестированию с позитивного сценария то есть белку валютные данные ножа вот

    00:17:26 - 00:19:03

  • там логин проверил струну этом система сама работы изначально подобного рода смолко такой поправил да и если смысл общались кастрировать озабочены ли он дальше потом соответственно проверял в каждом более это граничные значения и проверял бы получается это негативный тест и как он отрабатывает с как ошибка отрабатывается системой то есть какой-то должен быть сообщение потом лучше бы чтобы это подсвечивалась там пользователи чтобы он понимал как бы в чем у него ошибки при вводе данных чем-то если

    00:18:15 - 00:19:48

  • система не ни о чем не говорит и она там пишет о себе влоги и что или вообще позже что она вообще не не отрабатывает сбрасывать эту формулу хорошо вот и теперь такая ситуация у тебя все та же самая форма но проблема заключается в том что у тебя нет требования какими то есть у тебя нет аналитика допустим ну не знаю какой то старый проектик просил на проверь пожалуйста какие то проблем с этой форме как ты будешь я тестировать какой вид тестерами ты выберешь и какие будут результаты после этого тестирование

    00:19:03 - 00:20:17

  • тестирование это получается черный ящик программирование нет не имеет доступа к коду как бы я тестировал но также получается то исследовательское тестирование [музыка] с тем же практиками с дизайна валидность полей ограниченное значение и какой такой бы я результат получил или какой вопрос ну да то есть быт был либо у себя помимо вот как ты поймешь дефект отель индийских дефект если это не дефект будешь ли так от и документировать то есть что является результатом исследовательского тестирования

    00:19:42 - 00:21:16

  • но с точки зрения как бы вообще логике обычные что как бы у нас есть там форма мы хотим зарегистрировать провалиться там дальше создаю там пользователя соответственно если у нас не получается ну как бы получается как результат это там логическое всем понятная там ожидаемых это результат если он там не описан конкретно в требуем но у тебя нет вот смотри ситуация такая ты выходишь ну то есть я зарегистрировался не знаем преподам тест тест аккаунт ты водишь тест тест и он теперь что такой палестине найдем но это

    00:20:32 - 00:21:59

  • естественно ошибка да ты можешь это понять из не знаю общих практик разработки мудрость если ты будешь правильный логин пароль должен успешно авторизоваться тут очевидная ошибка все все те поверят но если допустим ты водишь тест тест и теперь волишь ts2 то есть неправильный пароль и анти вместо того чтобы вас неправильный пароль попробуйте ещё пишет не знаем что нибудь какой то же ошибку но не совсем правильно потом мнение например извините но вы не человек то есть текст ошибки уникальный вот как-то

    00:21:24 - 00:22:31

  • и будут понимаешь когда текст ошибки правильно никогда не текст ошибки неправильный на основе чего то это лишь ну на основе каких-то вот этих общих правил там аналогичных систем там которые есть житейского опыта платится опыта профессиональным но допустим все таки оказалось что так и должно быть это был не прав ты создал дефект должно быть человек неправильная ошибка на самом деле она правильная вот поэтому я ожидал тебя что если такое тестирование в том числе результаты это дефекта и текущее состояние системы

    00:21:58 - 00:23:22

  • как-то описано я не знаю вот и тайский снайпер создашь и ты аргументируй как сейчас она работает как текущие доллару потому что потом ты можешь прийти но как они заказчики все-таки гарантия объявятся и какая-то команда который примет ответственность как же все-таки правильно и она скажет а мы специально здесь форма авторизации делали такую игровую у нас сайт про роботов поэтому мы такой текст ошибки придумали мало ли его от принесу не совсем примерно власти допустим разобрался и ты должен аргументировать почему ты

    00:22:41 - 00:23:44

  • считаешь и так и для сербского тестирования текущее состояние системы она берется как эталон а потом ты уже можешь от него идти например через какое-то время ошибка это поменяется она уже была раньше не знаю там вы не человек сейчас оно у тебя неправильный пароль это уже отличие возможный дефект то есть если я больше фиксирует текущее состояние там ты даже можешь принять решение дефекты тэрин дефект но в большей степени он нужен тебе еще для того чтобы у тебя был текущей срез требований так как иным способом кроме

    00:23:13 - 00:24:21

  • как проанализировать текущую систему у тебя его нет и дальше ты сможешь смотреть отличается в следующие поведение от того предыдущего эталонным так так хорошо мы протестировали у нас есть из кейса вернулся аналитик из отпуска сказал что все там кратные неправильно мы с тестированием закончили и нам дают новую страничку говорят теперь все мы авторизовались на самом деле это разрабатываем какой-то там кредитный калькулятор у нас появилась новая форма после авторизации мы должны заполнить заявку пишем там какой у нас город

    00:23:47 - 00:25:00

  • страна наш год не знаю там если у нас собака жена ребенок и так далее там миллион полей и в конечном счете нажимаем кнопку рассчитать он нам говорит там ваш ожидаемый кредитам 100 тысяч рублей что такое вот здесь какие-то дополнительные техники тест дизайн для проверки комбинации миллионов полей ты будешь использовать это еще дополнительные ну есть да комбинаторные техники эта таблица состоянии здесь еще попарно и порываясь английский запомнил порно и тестирование ну хорошо можешь рассказать чем эти два вида пищи они

    00:24:23 - 00:25:54

  • помогут и в таком случае ну таблиц принять решение мы записываем все получается там поля и ожидаемый результат методом перебора перебираем все возбуждается комбинации и из нас будут все возможные комбинации да пусть у нас 100 полей 100 на 100 у нас там много лет а попарно и может помочь с этим в этом случае выручает до попарно и когда мы теория попарно тестирования говорит о том что можно выделить пару из общего списка входящих значений и и проводить тестирование с ней то есть ну месяц так из колб входящих

    00:25:08 - 00:26:53

  • чаще входящих данных парящих значений и [музыка] провести все все все проверки с этой пары теория говорит о том что там процент на ринг ошибок там пара приближен к там короче говоря чем дальше берем дольше больше чем 2 то у нас процент на них ошибок они увеличивается не настолько чтобы там я не понял твои мысли планету и мы смотрим на пассиве dota на 10 полей если мы исчерпывающе тестировать 10 на 10 у нас допустим 100 кейсов будет в случае попарно мы тестирования ориентировочно сколько кордонов кейсов останется если у

    00:26:05 - 00:27:44

  • нас 10 полей ну да можешь сказать какой то предварительно интервал думаешь у нас мы берем 2 и на 10 см состояния у нас будет 20 [музыка] на 20 и там есть какие-то промежуточные ну ладно я тут остаться ну примерно там от 20 там до середины к вам 2050 мы в дом случае как минимум в 2 раза количество наша кейсов наверное меньше вот ладно давай тогда пойдем дальше у нас кстати дети этими только стол потом могут подключиться вот хорошо мы все протестировали теперь нам нужно это все покрыто of the test in и

    00:27:05 - 00:28:32

  • вот уже говорил что у вас есть ты джорджик об этом локатора все найти можешь пожалуйста рассказать в чем преимущество при джорджик преимущество что мы как бы заворачиваем страницу в отдельный класс java и создаем в этом классе кого получается поля объектов в элементы мы бы мы создаем страницу и записываем записан как класс и создаем дней получается переменные которые а точатся элементом ну там поле [музыка] все таки видимо полями переменной в чем разница между полем и переменного поля класса но

    00:27:59 - 00:30:15

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

    00:29:15 - 00:30:34

  • мы вызываем мы как бы создаем экземпляр этой странице и вызываем метод этого объекта и взаимодействия с этими моментами чем за метр вот представьте такую ситуацию тебя есть несколько реальных страница на в приложении например там страница авторизации главной странице странице там продукта товара что-то еще и на каждой странице у тебя есть какие-то классные элементами мир блок авторизация потом там сначала я легко войти потом когда-то уже авторизован там будет твое имя и кнопка над мир выйти или сменить пользователя и

    00:29:57 - 00:31:16

  • на каждой странице этот блок и типа header и footer здание одинаковые вот как ты будешь организовывать да каждый третий элемент или их ты как-то приносить выше расскажи поподробней но я бы да там использовал доме три петли сэлфи вынес это будет все таки в отдельный класс там общий даже но классы наверное потому что с 1 по сама неудобно для из они общие как бы сквозные там для всего приложения можно использовать 1 класс и соответственно вызывал бы его но при этом какие-то методы можно было структуру как бы наследоваться от

    00:30:37 - 00:32:20

  • страницы конкретной и уже конкретную реализацию работают омске рано утром мы пишем там в отдельном классе [музыка] в итоге потому что любая страницы должны одинаково работать следуя вас утром нет смысла писать реализацию для каждой страницы и потом если вдруг это реализация поменяется тебе же один раз над этой справиться не в каждой стране так теперь давай поговорим поподробнее именно про сами локатора каким способом ты будешь выходить локатор какого-то элемента если у тебя какой-то и идеальный локатор которым ты стремишься

    00:31:34 - 00:33:07

  • самый простой это css локаторы которые но и и при этом а чтобы они были названы там человеческими в кармане и авто сгенерированы каким-то фреймворка на станке но мне кажется когда есть фреймворк на фронте тот же ряд надо пообщаться с разработчиком в контендера на тему того чтобы он входил отдельные локаторы для авто тестировщиков называл нижнее подчеркивание [музыка] таким образом как бы упрощаем жизнь авто тестом становится более стабильным ну когда этого нету и когда невозможно там по тегам найти

    00:32:21 - 00:33:58

  • найти элемент то уже там можно палец и спасом [музыка] который помогает получать в более широкий инструмент чем он более широкий чем именно вот его шок широкой заключается что именно такого ты можешь помощью не найти не сможет найти другим способом но он как-то может сколько я помню привязываться каком-то элементы шагать от него там мы знаем конкретный элемент который у нас там допустим уже описан хорошо в стабильном меняется на странице мы можем реализации а в какие получается стороны можем уходить

    00:33:11 - 00:34:55

  • не знаю вот если у вас какая-то таблица внутри таблицы нам нужны колонки строки что-то еще вот колонки строки у нас рандомно генерируется не как к ним не привяжешь но таблица у нас всегда одинаково это называется сможем ли мы с помощью x по х пойти в таблицу а потом находить нужную нам строки и столбцы [музыка] часто с точки зрения в элемент там можно будет создать коллекцию который принимает таблицы нету из одна коллекция тратится тебя верх над один элемент у тебя вложен в таблице в получается элемент xprog и ко

    00:34:05 - 00:35:32

  • мне кажется да можно да шагать вертикали и горизонтали а теперь другая ситуация у нас таблица много они все коран дому как называются вот колонки строки в них нормально называется может привязаться колонки ну чтобы все таблицы тебе получить ну ты не можешь в глубь 5 тебе нужно вверх вайзе к предку какой-то момент экспорте сделал но вот с предками да там взаимодействия что ты можешь называть родителя элемента child это больше ребенок чем предок предок это прародитель какой каким способом можем пойти вверх то есть

    00:34:50 - 00:36:14

  • от меньшего к большему самое это наивно это то вот эти две точки используют ну это ты на уровень выше идешь с двумя точками а если ты не знаешь сколько тебе уровней выше шагать это как выкрутиться ну допустим там структуру меняется носить сейчас это третий уровень влажности завтра 4 хотя тест упадет тебе на там не может быть что-то более стабильным надо да на получается спас подать какую-то переменную там сейчас не помню на условно какая то звездочка которая считается что у нее ладно давай давай тогда пока на этом

    00:35:34 - 00:36:56

  • вопросе остановимся у нас сейчас закончится зубами

    00:36:28 - 00:36:36