Подготовка к собеседованию на QA Engineer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
вот мы проскочим проскочим пункт 2 я думаю что то что тоже там я не знаю просто буду обозначать как и не знаю например websocket а потом к джаве вернемся потому что она она большая чтобы она не съела все время так ну смотри ты хочешь по этим вопросом как пойти по этим вопросам не готовился единственно что нашел тебе па-де-де ссылку все остальное я водка это задание готовим здесь ну ты можешь начать рассказывать я тебе если что скажу что можно было бы дополнить давай тогда я это continuous integration
00:00:00 - 00:01:32
по сути дела это подход когда у нас реализация большой задачи разбивается на подзадачи и мы поставляем как бы по мере готовности да мы сделали какой-то модуль и его поставляем все сначала разрабатывается потом он закладывается там на какой-то из какой-то из репозитория где мы можем там review лица и так далее потом он заливается и тестировщики могут уже приступать к тестированием и выполнять свои задачи и там соответственно у себя их тоже если это автоматизация деплоить я извиняюсь у него борьба за
00:00:46 - 00:02:16
независимость и вам возможно будет слышно имение в них уже меня вот с таким образом происходит вот это continues integrations то есть не прерывающиеся поставка продукта заказчику вот самом начале это какими-то другими словами но вроде как и не тела говорится что это подходит к определенным методологиям разработки программного истечению можешь сказать какая бен методология бы отлично бы совмещалась с contests ближе но в моем понимании это скрама джайю гибки металла гибкие гибкие методологии то не waterfall нет можешь назвать
00:01:33 - 00:02:56
основное преимущество всей идее основными доставка основное преимущество это то что ну как мне кажется да то есть это достаточно быстрый процесс он структурирован его можно хорошо визуализировать показывая заказчику уже какие-то промежуточные этапы опять же если мы находим какие-то ошибки мои достаточно быстро корректируем и стоимость ошибки тогда меньше недостатки мне кажется что когда этих стримов параллельно очень много то это достаточно сложно контролировать ну там надо удерживать перформансы
00:02:18 - 00:03:48
delivery и окон дома когда вижу ну в принципе да у тебя долгосрочной перспективе только преимущества будут то есть если ты делаешь кантине стэн ты берёшь cuppatinis деревьями это глобальная цель быстрее выкладывать новую версию продукта и свого заказчика плюс увеличивать качества поставок это две глобальные цели скорость и качество ну если нас есть скорость и качество цена чем-то надо будет жертвовать скорее всего жертва будет деньгами потому что им саурона инфраструктур на и не знаю требуем дико специалистам они вырастают
00:03:08 - 00:04:23
по отношению к тому и свечение от кантине если ты говоришь на континенте тебе нужно это в общем же мере тебе нужно тестировщики которых эти моменты работать разработчики тебе нужно pipeline выстраивать то есть она несет свои преимущества если у тебя глобальная цель это скорость и качество если у тебя не глобальная цель сэкономить этом я вижу главный плюс главный минус и не все могут быстро плите contestant и грешниками и сути маленький проекту тогда ты больше сил потратишь на всю инфраструктуру очень дорого очень дорого
00:03:46 - 00:04:47
тогда понимать имеет смысл это если у тебя уже все конструктор поднята либо если у тебя долгосрочный проект на котором ты хочешь на долгосрочном дать что значит долгосрочно это три месяца это будет долгосрочные полгода или год то есть как это мне просто любопытно что такое но если три месяца из трех месяцев у два месяца будете hidden настраивается а [смех] так [музыка] это теста g & g-unit я честно говоря из того что помню в основном спрашивают какие там есть аннотации но в тесте g их там из того что я визуально помню
00:04:19 - 00:06:06
чуть поменьше там по моему есть обе for all автору или for each of the reach to be for all а второе это то что выполняется до и после всех тестов аннотация теста отмечает заполняемый тест вот а before each of the rich это то что [музыка] выполняется перед каждым тестовым выполняемым тестом это что я еще подсмотрела потому что там в конце был вопрос вот этот параметр и параметре за до параметризирована тест это в тест энджи когда мы на один и тот же тест подаем несколько наборов данных и таким образом
00:05:16 - 00:06:52
проверяем а дома сердцами или там выполняемыми проверками с разными данными вот тебя такой аннотацию ты можешь и несколько тестовых данных тестамент парам ароматом медведи провайдер тогда что делают а я так понимаю что это в unity дата провайдер а в тест энджи параметре зайд тест она называется нато провайдером [музыка] ну вот я сегодня специально сидела искала эти аннотации и я не нашла в теста g data провайдер нашла только вот этот собачка параметре заяц вот параметра из тест adata провайдера в
00:06:10 - 00:07:58
зации есть параметр мы используем xml файл для того чтобы сконфигурировать наш тест по данным и тут есть ещё используйте для эти провайдеры этот минус это провайдеров именно с тестом же тоже работали на самом деле больше джейн этим работу как видишь даты провайдер позволяет тебе тоже через оператор подставлять входные данные [музыка] ну то есть смотрите то есть можно это делать на purchase office excel файл или прям класс какой-то создать там прописать объект в принципе это все работает подожди
00:07:06 - 00:08:23
секундочку может быть я между ними запуталась вот это это тест анджи или и g-unit сейчас от снг и с там же есть и помни траст параметр съесть и есть да да и требований бам бам бам бам а у него здесь есть аннотация пара вот я просто то что я находила там было аннотация параметр заид вот этот тест так мы ж это же это просто с мужем и ходил антонис там нет google из конечно очень удобно мой тут но я хотел статьи каток которых и то есть здесь имеется ввиду что у тебя есть этот параметр с моими достиг фармит райс
00:07:46 - 00:09:21
тогда я не видел под этим имеет ввиду что-то я использую здесь обе статья неодинаковым использует офицер использовать танцы это параметр и используется такой провайдер . поступающим форум drazice ну наверное для эдилов дают я нашла в g unity до параметров тест-драйве нить аннотация но вот я не вижу чтобы вот здесь есть be for each of the rich я не они в каких то вариантов есть этой станции объединить а только прибытию что добавил там не только пи форму автору есть еще типа by force you do after you
00:08:44 - 00:10:25
be formed by forclaz и for each то есть там вложенностей побольше на самом деле групп съезда то есть ты можешь как это делать например тебя нужно что-то инициализировать абсолютно перед всеми тестами ну один раз либо у тебя перед каждым тестом нужно чтобы инициализировать либо перед какой-то группой тестов ваших разделить по тегу например репос юту или по классу или по методу вот есть разделение у тебя вложенности всех структур есть например метод он у тебя не может быть несколько методов внутри одного класса несколько
00:09:43 - 00:10:58
классов внутри одного чью-то и все с юты входят во все тесты просит тебя есть иерархия вот этих вот параметров бифа автор хорошо а что же могу спросить про тесте джей-джею нет ну я думаю может как морализировать запуск и как посмотреть отчет по запуску ну то есть обычно что что интересно как запустить как сгруппировать теста как какие-то теги проставить ну чтобы можно было там сумки отдельно запускать чтобы можно было отдельно регрессию запускать или бы по какой-то фиче либо или вареными сервис на этой стадии . в том
00:10:22 - 00:11:45
чтобы можно было их запустить параллельно чтобы можно было посмотреть отчет по ним то есть если у них стандартный отчет а у них есть стандартный отчет у них у обоих да он заводится и вот эти вот параметр типа и for all of the road как ты работаешь здесь наверное тебе за счет sos pro парализации но парализация смотрела там есть такая тоже пока называется параллель она вписывается как параметр но ведь это же не всегда работает у тебя иногда ну например вот я сейчас да на внутреннем проекте у меня очень много
00:11:06 - 00:12:37
кнопок если я запущу параллельно то он одновременно попытается у меня обратиться к одной и той же группе кнопок и она может махнуться ну поэтому тебя когда ты хочешь реализовать свои тесты они должны друг от друга не зависеть ну и так и критерии хороших тестов это то что они изолированы и атомарные это что означает например у тебя каждый тест который той в парализации запускаешь он под новым юзернеймом запускается новая сессия новый браузер открывает все это признак пять потоков ставишь это 5 тестов спуска и лайку и 5
00:11:53 - 00:13:17
браузерных как он запускается в каждом свой пользователь и они друг другу мешать не будут если у тебя один пользователь не знаю там удалил что-то подругой и не собирался смотреть на тот товар который первый удалил вот таким образом только ты можешь запускать это в параллели либо у тебя все равно тогда какая-то приоритезация давно например test1 должен обязательно быть перед тестом 2 иначе говоря те же может там он пристрелит тестов и зависимость друг от друга но это тоже плохо либо ты стремишься к
00:12:37 - 00:13:48
изолированности и атомарный да это тоже можно не но у нас реализована очень плохо у нас всего лишь один пользователей поэтому всегда заходим по только под ним ну тогда выбор тем более шапка но она в некоторых случаях не так уж и необходимо если у вас так что быстро запускаются его с ними небольшое количество теста вы можете такие ну ну и ладно 10 минут запускаются сервисный тест делаем 5 допустим мы можем 20 минут это нормально это не шесть часов как у нас допустим это только раз в день это зависит от твоих
00:13:13 - 00:14:54
вот этот и сюда что что парализация вывод результата чё-то чё-то что там еще вроде все прорезаться так поджопник potter это подход к проектированию в автоматизации тестирования когда мы каждую страницу описываем отдельным отдельным если не пожалуйста бы сейчас секунду он пытается обоину оторвать часы вернусь понял что за дверью и что то есть маленький раньше не знал что за дверь и что то есть теперь все борется борется за выход в коридор так паттерн к проектированию когда мы все то что есть на определенной странице
00:14:14 - 00:15:55
заносим в отдельный отдельный класс это объекты которые есть на странице и операции которые мы можем там выполнять например страница логина у нас там есть имя у нас есть попали для в ней введения имени поле для ведения паролей кнопка сабмит и вот мы описываем эти три объекта и те действия которые мы можем с ними выполнять и таким образом если вдруг у нас там нас каждой странице получает вот такой свой отдельный файл и если у нас предположим на одной странице что-то поменялось что мы меняем только в относящийся к ней по и job
00:15:36 - 00:16:58
черту осмотре допустим у тебя несколько страниц есть логин . главная страница какие-то по страницам и на каждой странице есть окей сейчас встречаюсь с элементом хедер утра там какие-то бандера для них ты какаешь организовать структуру того чтобы спеть джорджику на буду ну а как они могут совпадать обычно же в header и footer ах все равно есть информация относящиеся скорее или ты имеешь ввиду что они сквозные и они пронесу тебя ходор одинаковый а понятно берем конечно если ты зарегистрированный пользователь будет твое имя если ты не
00:16:18 - 00:17:38
зарегистрирует кнопка пойти для сквозных элементов которые везде одинаковые можно сделать отдельно свой поджопник чтобы его не дублировать на каждой странице там лагеря будет еще один да будет наследоваться и каждом другом поджог дикции у тебя будет неё самка получаем не поняла зачем тогда будем тебя ты хочешь на страницу логина проверить их нажимаешь на кнопку варите стоить относится к этому тогда у тебя будет тесте палагин пейдж . не знаю федор . сайн ин . клик вот примерно так а вот у тебя будет пример и потом ты хочешь
00:17:06 - 00:18:34
сделать теперь не знаю там на какой-то странице конкретного продукта хочешь влаги путем тоже будет конкрит продукт . федор . logout . крик у тебя же страница должна содержать ссылку на ходу хотя каждая страница получается должно содержать header если он идет сквозным у всех то тогда да хорошо ну и соответственно тоже если какие то изменения в хадере будут ты будешь их делать в классе хитро и так как у тебя ссылка каждый джорджик то-то у тебя только один раз нужно будет отыскать так ладно тут про по джорджик то можно
00:17:55 - 00:19:15
еще много чего говорить у нас уже была лекция если что может посмотреть то есть принципе базу конечно есть да так я даже не знаю что там ещё можно спрашивать есть еще скорее принцип да то есть на сколько человек понимает что он как бы логически структурирует так давай [музыка] selenium ну это инструмент для тестирования ей это инструмент который позволяет нам управлять браузер вот starlix ближе к правам инструмент тестирование selenium меньшей степени инструмент тестирования всем инструмент автоматизации действий брал за
00:18:41 - 00:20:16
автоматизации действия но тогда это инструмент управления браузером для для задач автоматизации кости нет да это это косвенно это так получилось что мы использовать для автоматизации тестирования на самом деле на это это побочный продукт а вот например фреймворке типа селенида они именно заточил это тестирование разница чистого selenium и селенида в том что чисто селения он себе как бы не содержит цель первопричину тестирования а вот селенит тебе это содержит поэтому там уже все основные методы написано тебе не
00:19:30 - 00:20:58
нужно вручную там вейдер оставить и прочее это уже из коробки доступны поэтому часто селению он в меньшей степени про тестирование хорошо вот смотри у нас подселением мы обычно имеем в виду вот драйвера то есть это какой то это означает что у нас до каждого браузера что то мы пишем какие-то драйвера ну или кто-то за нас их написал мы можем использовать вам драйверу себя это значит что у нас есть какой-то общий интерфейс для того чтобы на этом написали и не заботились о том что каждый браузер как это сам себя понимаем
00:20:14 - 00:21:25
да то есть абстрагируемся от того какая нас конкретика работа с каждым браузером пишем общие какие-то шаги общие методы которые все имеют а дальше уже они конкретные действия каждого браузера будут через грабят бирюзова так а какие-то основные методы класса именно селениями можешь называть что мы можем с помощью линий культивировать в правду но мы можем находить элемент по пола котором можем нажимать элемент что весь экшен класс у нас там была лекция мы говоришь ну там есть action классно пример есть
00:20:49 - 00:22:26
несколько действий можем кликнуть на элемент для кондрово спаивать drag'n'drop так ли кадра can drop разная операции с кнопками которые могут будете да то есть что там еще бывает с ними но самим браузером мы можем как-то взаимодействие не с конкретным элементам а прям с браузером но мы можем его открыть мы можем открыть его в полноэкранном режиме бывает для экономии headless режим когда браузер не открывает это все равно явная открывается на все тесты идут потом что еще может быть переход по страницам
00:21:38 - 00:23:13
потом что еще а может написать тест который открывает не знаю там два браузер в одном под админом создает пользователя во втором browse под этим пользователем авторизовываться да только по очереди до но с разными ролями можно заходить проверяйте их мы можем новые окна открывать либо вкладке закрывать их переходить можем как между окнами между вкладками до можем списке открывать я не знаю что там еще карусели крутится ладно с этим понятно у нас есть несколько видов ожиданий в селе ними можно рассказать но мы ждем что у нас
00:22:28 - 00:24:02
какой то элемент какой-то у нас есть явное и неявное ожидании явное ожидания это ожидание которое мы проставляем для конкретного элемента например там ждем пока появится определенное поле ввода они явно ожидания она проставляется в общих настройках например настройках in warm on the и она распространяется на все на открытия всех окон то что ждем открытия окна столько-то времени of you in the void что такое hand made я не сталкивалась могу попробовать что это у тебя страну ну там просили нет например еще упомянуть
00:23:21 - 00:25:09
или что-то еще такое and weight он отличается от и пестик скрести тем что во фронт выйти у тебя есть какое-то условие тебя из пол интервал например это звучит так я хочу чтобы какая-то кнопка стала красным я буду проверять ее раз в десять секунд максимум минут что-то типа такого так ну давай дальше пойдем крест сок можно да я их и скорее всего вместе буду туда saab это протокол rest это подход к архитектуре усоппа описывается все в изделия файлом он работает с xml файлами и соответственно у него выполняется метод post всегда и то
00:24:32 - 00:26:29
есть все все операции выполняются при помощи поста и она является он по своим характеристикам стоит full то есть следующему выполняемому запросу нужна информация о предыдущем запросе рис это подход к архитектуре там есть шесть принципов я их наизусть не помню вот по сути своей он работает по протоколу http он может работать со всеми ешьте типе методами основные get пост дэвид так у него соответственно чаще всего реализуется формат чтобы посмотреть как это работает через swagger и он стоит ли стать для
00:25:35 - 00:27:24
выполнения запроса в раз те ненужной информации о выполняем о том что вы подалась до лагерь типа подробнее как раз он не зависит она описывается swagger это такой как способ что ли описать работу то есть какие методы для каких интентов выполняются ну слава это интерактивный инструмент который позволяет тебе как будто бы чуть-чуть с какой-то пост манты отсылает запросы ты видишь примера ты видишь какой сервис какие методы поддерживает примеры входных выходных значений по факту этот паб осман в браузер и
00:26:37 - 00:28:16
сразу же с документацией про двойки и документации со спецификацией до что туда нужно как бы этом тасс опыт тесно не связан он работает open api ой ну или по моему с каким-то спецификации по факту ты просто пишешь спецификация и подключаем swagger и он тебе генерирует вот твоего ссылку на который у тебя есть доступ к ну и интерактивный доступ вот это то же самое в принципе что если отдельно выложил бы спецификацию и способом коллекции сделал просто удобство так прямо сказать что это прямо христу
00:27:30 - 00:28:55
не сказал это просто инструмент которые сделали дополнительно чтобы можно было им эту спецификацию с должен ручками патронов а усоппа есть такая возможность какой то сойдет ли сок или нет у него есть весь del файл где все описывается ты мне сам кстати говорил что для роста swagger это как для свапа в sdl я тебя спросил ответил я как расстреляю ну вы весь день чуть похуже потому что это не можем запустить не можем только импортировать так в пакет ну чтоб пропускаем или что-то про избушка сказать я сам провел
00:28:13 - 00:29:33
сотни мастер так что это хотя бы такое не знаешь я тебе скажу я тоже красивый остальным websocket ну на самом деле это у нас у нас протоколов связи чтобы мы могли соединяться между приложением b и все-то тебя есть возможность общаться сервером с приложениями с браузером причем там по моему постоянное соединение которая позволяет себе общаться 5 очень много про это не расскажу давай ссылочку должно не знаю на гранте будет достаточно википедии потому что я слаб сокетом за всю свою карьеру ни разу не
00:28:58 - 00:30:22
работу так ну это получается инструмент я правильного успела там прочитать нет для работы в бокал айда протокол а протокол людей между сервису так давай теперь типичный free инфраструктура фреймворка первый слой это скажем так с какой логикой да с каким инструментарием мы работаем что у нас это будет java selenium а я не знаю там где то есть но определяем на основе чего ты выбираешь не язык программирования [музыка] на основе того что мне нужно будет тестировать то есть если разрабы пишут на джавит тестируем но как правило
00:29:44 - 00:31:29
насколько инвестирует и не настолько все тебя надо менять насколько я знаю у тебя языка программирования для тестовый фреймворк выбирается на основе нескольких критериях первое тот язык который используется разработчики второе тот язык который использует большинство тестировщика третье тот язык который вы считаете самый перспективный допустим то есть есть несколько критериев выбора зачем тебе выбирать например не знаком у тебя только его и разработчики и и тебе придется на typescript выбирать вас все
00:30:42 - 00:31:56
тестировщики на джайна писали тогда вам придется всем зову скрипты typescript учить поэтому во многих приезжала выбрать он не будет соответствовать языка программирования для ваших я разработчик в бэг-энд у вас может быть допустим majaly но для тестов wprime орка вы допустим выбрали катрин потому что он новее какие-то дополнительные синтаксические сахар плюшки или то есть вы можете разные критерии спорить поэтому я бы так вот не говорил что это всегда тот же язык что у разработчиков есть несколько вариантов ладно выбрали
00:31:19 - 00:32:26
язык решили что это будет его и сервисы что-то еще в стандартном потом определяется как мы работаем с тестовыми данными откуда мы их берем если у нас какие-то там может быть от заказчика представлены до или нам нужно самим им как-то генерить и так далее и третий слой это то как мы работаем с результатами да то есть куда мы тепло и мся как мы лоббируем ся как мы отчитываемся и так далее и так далее вот я так это представляю то есть запуск тестов тестовые данные и результата да то что это будет дженкинс
00:31:53 - 00:33:30
что у нас есть ли порт портал из того что я видела да как мы представляем отчетность заказчику достаточно ли ему просто там открыть от аллюр report или так далее ли он хочет еще же какие-то там встречи отдельно и так далее так далее вот ну то есть как мы входим да как мы выполняем откуда мы берем эти тестовые данные и как мы при портимся интересов попить картинки в интернете что у нас есть ну вот например картинку да у нас есть ну мы кое-что забыли вот у нас есть та страна у нас есть что-то это либо это
00:32:44 - 00:34:18
тестовые данные у нас сами тесто не сказали что сами доспехи но у меня я так понимаю что они в возник как бы они скорее в том разделе когда мы определяемся на чем мы пишем что мы пишем и так далее ну то есть если мы выбрали например нам население села вот например ну все конечно зависит от многих факторов например иногда у тебя тестовый фреймворк может еще содержать отдельные какие-то библиотеки то есть у тебя муж потеря и иерархи тестовый фреймворк может наследовать какие-то библиотеки общедоступные например ты там добавляешь
00:33:30 - 00:34:49
не знаток для pdf а какая-то библиотека ты можешь его носить это на отдельные слои например деваются может одна библиотекам быть сервиса еще одна библиотека а если тебе нужно intent с какой-то сделать он будет обе этих переносите наследовать или например я на своем последнем проекте сделал библиотеку с общими шутками и у каждого проекта своя библиотека который наследует эти общие шаги внутри сети несколько являться здесь называется комом бизнеса в том еще скрипт здесь может быть такое в принципе наверное
00:34:10 - 00:35:20
примерно то же самое то есть тестовые бизнеса и тут как раз ты проколы вербуешь сказал то есть та страна репортёра сами тесты у тебя хранятся наверное business of the story а ну то есть тут стр у тебя еще и тесты в бизнес сэр какие-то класса ну и смотри если центр пдд у тебя будет уровень и джорджик то у тебя будет сам шаг реализация этого шага тестовые данные то есть у тебя зависит от того какой подход и выбрала слоев может быть чуть больше да да да там будет там в степс всякие разные фуке плюс еще например когда мы
00:34:45 - 00:36:20
делаем reporting иногда reporting может быть чуть даже сложнее то есть может быть сам отчет о тестировании и иногда еще какие-то внешние там базы данных куда мы не знаю там какие-то метрики складываем это тоже может быть то есть reporting может быть тоже многоуровнего но в принципе я вот так картинки посмотрем и практических принципе все сказали да он апликэйшен андер тест она тоже может быть несколько у тебя например тесты могут найти запускаться тесто мог на мобилки запускаться сервисные теста возможно у тебя это
00:35:32 - 00:36:44
будет в виде разных билдов вот это фрагмент либо разных конфигов либо вообще несколько активных теста наймарк вот то есть это все зависит от там что-то там так ладно вескера давай перейдем но я предлагаю сейчас начало отключится и потом да да да хорошо все давай я тогда в отличаюсь [музыка]
00:36:08 - 00:37:04