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

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

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

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

    00:00:01 - 00:01:26

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

    00:00:42 - 00:02:30

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

    00:01:51 - 00:03:44

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

    00:03:03 - 00:04:31

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

    00:03:52 - 00:04:56

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

    00:04:24 - 00:05:49

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

    00:05:06 - 00:06:24

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

    00:05:45 - 00:06:52

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

    00:06:19 - 00:08:00

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

    00:07:21 - 00:08:51

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

    00:08:28 - 00:09:50

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

    00:09:09 - 00:10:20

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

    00:09:45 - 00:10:50

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

    00:10:17 - 00:11:30

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

    00:10:54 - 00:12:12

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

    00:11:38 - 00:13:00

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

    00:12:24 - 00:13:40

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

    00:13:02 - 00:14:10

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

    00:13:37 - 00:15:29

  • несколько часов идти представь себе разработчик нажимает deploy на тесты на varmint и у него счетчик говорит новый год unit-тест у вас пошли за 2 минуты контрактные за три минуты компонентные вас час будут идти а н н д 12 часов 14 часов вы увидите на тестом станете ваш ваш разработанный кусочек кода где вы одно поле добавили вот мне как станем они расстроятся теперь последний релизный день какое будет решение на основе чего ты будешь говорить что можно выкладывать на про так шум или нет у [музыка]

    00:14:42 - 00:16:01

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

    00:15:30 - 00:16:54

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

    00:16:15 - 00:17:48

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

    00:17:08 - 00:18:37

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

    00:17:53 - 00:19:27

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

    00:18:43 - 00:19:57

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

    00:19:19 - 00:20:41

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

    00:20:00 - 00:21:32

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

    00:20:56 - 00:22:02

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

    00:21:29 - 00:23:07

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

    00:22:25 - 00:23:54

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

    00:23:19 - 00:25:04

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

    00:24:18 - 00:26:13

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

    00:25:36 - 00:26:56

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

    00:26:15 - 00:27:30

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

    00:26:53 - 00:28:17

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

    00:27:40 - 00:28:49

  • ладно а знаешь ли ты что делает команды git stage & kid on stage пользовался 3 нет статуса я пользовался значит все надо будет gytrash kitan спешишь и посмотреть и ладно еще такой вопрос допустим представься ситуация ты все уже перешел ветку что ты сделал всё опушенным отлично и вдруг вот ты сделал все правильно все работает и вдруг ты заметил что ты опечатку слове у тебя какое-то название метода было не знаю там привет от и кроет какой-нибудь написал и тебе вот нужно всего один символ поменять в комитет будешь это

    00:28:17 - 00:29:45

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

    00:29:07 - 00:30:34

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

    00:29:58 - 00:31:42

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

    00:30:53 - 00:32:34

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

    00:31:54 - 00:33:37

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

    00:32:46 - 00:34:22

  • указать [музыка] ну допустим у нас есть таблица студентов у них есть один студент name таблица оценок идеи стьюдента идеи самооценка ну вот нам понадобилось using a и d таблицы оценок совпадал с а идея сама студента как мы можем две таблицы вывести помощи чему можем объединить какие виды объедините существуют но можем использовать мы можем использовать либо мы можем select объединить через union это такой моему подход мы можем истории join и через union мы два selecta на одну и ту же таблицы нос на с одинаковой структуры

    00:33:57 - 00:35:43

  • иначе как мы будем объединять две разные структурные таблицы а с join и мы можем две разные таблицы объединить и какие есть варианты join и там же их нисколько не сдаюсь и надоем здесь кровь парад лев ну вот ты бери любой не расскажет ну самое простое там этот раз жену редко используется самый простой окружен пошел давай later in early in or join она соединяет все что совпадает своего это результат который имеется 2 таблицы одновременно [музыка] left join соответственно он говорит о том что у нас есть и

    00:34:59 - 00:36:51

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

    00:36:02 - 00:38:09

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

    00:37:31 - 00:38:28