Подготовка к собеседованию на 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 каналы и чаты
Транскрипция видео:
так ребятушки Всем привет всем Здарова будем смотреть этот Стрим сегодня так немножко спонтаненько запустили посмотрим как нам будет подключаться так сейчас раскидаю ссылочки [музыка] Всем доброе утро [музыка] хорошо [музыка] Привет ребята что подключился Давайте сразу начнем собеседования у кого сейчас есть желание поднимите ручку по собеседу Если ни у кого не будет желание кто сейчас Зум подключился Давайте могу так задаю вопрос что-нибудь такое полегче и вызывает допустим Вячеслав и в чате [музыка]
00:00:18 - 00:01:58
давай так что Вячеслав сразу не буду заново ответишь на что-нибудь если спрошу Давай так я тебя развенчиваю размечешься да да Хорошо Так ну что тебе какие вопросы технически не технические теоретические чем полегче можно и дети договорились расскажи мне Что такое тестирование на отказ и восстановления это когда мы перегружаем нашу систему избыточными данными и смотрим как восстановится как оно ну если наш восстановили приложение крашнете Смотрим как она будет работать дальше после повторного запуска
00:05:23 - 00:07:08
хорошо и как оно должно работать также как стабильно должно восстановиться и работать отлично А что такое восстановиться восстановить предыдущие сессии чтобы не потерялись данные пользователи это ведь функционал восстановления сессии Это не то что прям софт должен это делать по умолчанию это такой знаешь правило хорошего тона что в принципе такое должно делать такой сон должен это делать не потерять данные пользователя после падения как правило такой софт программисты именно такую логику И вот эту логику надо будет проверять А
00:06:41 - 00:08:13
как ты ее проверишь что ты сделаешь допустим вот браузер Chrome Да если у тебя там миллиард вкладок открыт Бывает же такое что падает потом ты его обратно включаешь он тебе предлагает хотите ли вы восстановить предыдущие сессии да да и ты нужен Ну хочу И все Он берет и включает и восстанавливает Какие еще варианты такого восстановления Ты знаешь но [музыка] допустим чтобы не потерялись данные пользователя при которых допустим покупать какие-то покупки в магазине и а нет это обновление другое или это то же самое обновление
00:07:32 - 00:09:08
когда обновляется новая версия чтобы не потерялись предыдущие покупки Отлично Отлично а где у тебя обычно новая версия обновляется приложение на телефон отлично то есть не то чтобы это прям был отказ какой-то Да но когда ты обновил приложение все твои данные должны восстановиться хорошо что еще [музыка] но когда само приложение Это то же самое если вызвала ошибку тогда в основном ну допустим приложение просто зафризилось и надо его закрывать или перезапускать ты вручную как бы перезапустил и информация должна сохраниться или
00:08:30 - 00:10:04
восстановиться после падения Хорошо хорошо отлично так Вальдемар еще подсказать будешь отвечать если я спрошу Можно попробовать Ну давай попробуем я тогда ребятки вас по очереди буду спрашивать хорошо только у меня будет сейчас отключусь А ну давай давай зовут как хорошо тебе какого уровня вопроса задавать Я уже как бы работаю частенько слушаю и настоящие чтобы держать как бы в тонусе и не забывать то что уже пройдено поэтому я не знаю Web ты хочешь именно выберем подержать тонус или там допустим там мобила что-нибудь
00:09:28 - 00:11:13
базы что-нибудь еще База Я думаю не особо стоит там обычные простые запросы Ну да не касаюсь их мобилки тоже не занимаюсь просто хорошо смотри какая ситуация как-то ее раскопаешь У тебя кнопка зарегистрироваться на форме регистрации она есть визуально отображена но когда ты нажимаешь влогах на backendi не отображается этот ивент то есть не прописывается а должен как ты раскопаешь эту ситуацию А на кнопке зарегистрироваться у нас какое действие идет запрос мы отправляем данные формы или что да должен запросу
00:10:39 - 00:12:23
лететь в опишу самого элементарного можно начать посмотреть залезть вкладка посмотреть запрос проходит а у нас логи пишутся В какой момент когда данные легли в базу или когда только пошел запрос когда мы [музыка] перед тем как положен данные в базу у нас прописывается ивент что был этот запрос запрос ну смотрим статус код соответственно этого запроса какой у нас пришел данные в правильном формате ли они реализовались или правильно будет сказать переформатировались в базу какой-то принимает там строка либо же
00:11:37 - 00:13:14
соответственно если пароль там все возможно допустимые значения Какие что у нас еще может быть не полетел нет логов [музыка] Ну не знаю из этого уже начинаешь копать возможно Кнопка не кликабельно посмотреть здесь вкладочку консоль может кидать какую-то ошибку непосредственно не хватает каких-то данных либо на какой-то у нас будет ошибка Отлично Что еще еще Ну я не знаю возможно они подгрузились какие-то файлы и не подтягивается действие которое у нас должно лететь с HTML на JS файл хорошо Файлик какой-то
00:12:31 - 00:14:14
не прилетел А почему кстати Файлик с GSM с экшенами можете не подтянуться Почему может не потянуться ну да А ну Элементарно может база упасть Может просто не докачаться во время загрузки страницы что-то я хотел хочу услышать кейс здесь смотри бывает что системные файлы какие-нибудь Для клиента располагают не на основном сервере А на сиденье ада и сервера которые которые как бы запрашиваются они могут быть заблокированы на территории страны в которой ты находишься да Да я понял что еще а что еще к вопросу почему кнопка
00:13:32 - 00:15:10
но Элементарно Я не знаю разработчик не сделал Trace Road на этот запрос хорошо хорошо даже не знаю просто написать Посмотри пожалуйста что куда зачем отлично этого достаточно расскажи мне тебе 405 статус код в каком случае прилетит 405 статус код это ошибка на стороне клиента нота лауд говорит нам о том что сервер знает об этом методе Но скажем так на сервере он уже не используется его скажем так заблочили возможно как-то так он пишется не в случае если метод был и его заблочен когда разрабатывается
00:14:36 - 00:16:14
тампонте указывается Каким методом принимает запросы и пишется http метод там Get постпута апдейт и вот если в inpoint указано методом пост только методом пост А ты спрашиваешь and Point методом Put то тебе сервер кинет 405 ошибку потому что не потому что заблокирована а потому что не поддерживает именно такой метод но перед этим же летит там options и можем узнать какие разрешеные не разрешены на этот не обязательно не обязательно общем этот еще запилить надо тебе все прилетело Ну да Хорошо Как ты думаешь у метода Get Body
00:15:38 - 00:17:16
есть Да если сделать то почему бы нет Хорошо хорошо а можно ли создать свой кастомный метод и отправлять в него запросы Да отлично можно урле сколько ты символов можешь отправить кадре в зависимости от браузера я не помню В основном стандарт там 2048 браузер там Плюс Минус 100 туда-сюда гуляет хорошо расскажи что будет случай если [музыка] Вот почему ты отправляешь запрос тебе клиент пишет runtime Exception это время и стекло не пишут кнопочку там отправил запрос Да а потом тебе Клиент не сервер клиент пишет
00:16:30 - 00:18:31
может быть что в каком случае такое может быть отвалился Элементарно интернет что-то сбой у нас приложение вот если отвалился интернет что тебе напишет браузер Ну браузер будет Connection DOS как ну там сразу тебе напишут что Connection там не будет рантам это тайм ау Ну возможно это непосредственно у нас от сервера что-то сервер подвис каким-то образом хорошо сервер подвис что еще Не ну это слогается все равно в любом случае Почему допустим сама причина по которой тебе падает это сообщение это миллиард может что-то
00:17:47 - 00:19:24
подвисла база подвисла короче подвисла но при этом сервер работает вот виртуальный сервак работает есть Ну порт есть Ну может не лежать Пусть порт есть айпишник есть может не лежать просто клиент еще об этом не знает ему не пришел какой-то А смотри Допустим Допустим разработчики запилили такой функционал который показывает клиенту какую-то знаешь внятную страницу ошибки при которой вы случается вот этот тайм-аут Exception чтобы Клиент не увидел тайм-аут эксепшен допустим увидел Извините ведутся технические работы так
00:18:53 - 00:20:27
так вот как тебе это проверить как тебе сымитировать такую ситуацию точно знаю это можно сделать в ходе непосредственно у нас идет Мы в ходе прописываем какую-то ими кстати недавно был примерно такой кейс искали ошибку и таким способом вот через Exception при клике на кнопку нашли куда надо смотреть из-за чего происходит Так из-за чего еще как проверить чтоб нам выпало эта ошибка затем возможно можно это через те же в Тулы через троттлинг попробовать какой-то сделать Хотя не уверен Но это просто мы через троттлинг
00:19:55 - 00:21:47
тормозим connection что что невозможно и отключить то есть отключить можно да да согласен смотри ну там Фишка в чем если ты выключаешь Интернет то блин надо вспомнить как отрабатывает выключение интернета это отсутствие конечно там тебе браузер сразу пишет что нет интернета так если Интернет есть но запрос долго идет другая ситуация [музыка] хорошо Так давай еще варианты троттлинг на браузере Я принимаю такое есть Давай дальше еще что-то может быть [музыка] давно А как тебе сымитировать ситуацию
00:21:06 - 00:22:39
вот сервер тебе кинул 500 ошибку как и разрабы отработали такой кейс на фронте что тоже вот Извините ведутся технические работы как тебе это сымитировать пятисотый кейс серваку но опять же через брак поинты через Чарли что-то там сделаешь статус ответа по мне когда будет возвращаться [музыка] [музыка] Расскажи тогда еще такую ситуацию [музыка] смотри у тебя сервер для отображения клиент клиент для отображения рекламного баннера отправляет запрос на какой-то там сервак который раздает вот эти рекламные баннеры
00:22:29 - 00:24:24
но этого рекламного баннера у тебя не появляется в чем может быть проблема летит запрос Я получаю баннер и отображаю Что может быть проблема а проблема ошибка вылетает запросы на сервер на получение непосредственно этой картинки или анимации Я не знаю проблема может ну ошибка может нам прилететь из-за Чего из-за Того что сервером который нам отдает эти картинки могут быть проблемы может упасть база Элементарно может допустим если выкатили какие-то обновления на картинке и должна новая подгрузиться Ну не подгружается
00:24:09 - 00:25:32
из-за каких-то приколов возможно формат не тот затем Как вариант на том сервере не подгрузилась затем Когда наш сервер принимает картинки у нас может не пропустить формат это получается у нас уже идет интеграция с каким-то сервисом не знаю это такие более-менее кейсы которые Можно прикрутить не знаю возможно еще что-то и выпускаю конечно просто был такой кейс когда мы запустим за показ баннера снимаем денежку и получалось так что баннер вы запрашиваем денежку мы снимаем Но наш фронт не отображает этот баннер по
00:25:05 - 00:26:41
причине именно фонтан блок надо зайти посмотреть что баннер забрался причем причем забирались баннеры сразу двоих рекламодателей и показывался баннер только одного то есть денег как бы платформа получает два раза больше за один за одно а одно отображение страницы клиенту но показывается баннер только одного рекламодателя Почему так по каким-то законодательным или сайт так такой бак отправляется запрос и в Один в один сервер отправляется там там Я не помню то ли двойной запрос отправлялся подряд да что-то у них там так Файлик
00:26:15 - 00:27:59
подкачивался что сначала один запрос улетает сразу второй запрос улетает сервер естественно просто отдает эти баннеры мы отправляем ивент на снятие денег за эти два показа но как бы вполне А в одну сессию пользователь видит только один баннер даже после обновления страницы все равно отправляется два запроса и показывается баннер конкурент конкурирующего рекламодателя это была хитрость то ли это была Случайность хорошо расскажи мне если баг при смолке ты будешь пускать релиз м считается нашим основным
00:27:10 - 00:28:47
основными тестами которые самое важное и пускать я буду что релиз или вообще так самый важный Смотря какой величины бак и сколько он у нас займет время на исправление Наверное от этого буду отталкиваться в первую очередь но непосредственно это будет сообщено менеджеру разрабом и так далее и уже скажем так непосредственно перекладывается на их плечи решать выпускаем не выпускаем как-то так все правильно абсолютно правильно здесь в этом ответить тебе надо развернуть Что такое величина то есть какой у него
00:28:00 - 00:29:24
сигареты и Конкретно где словился если бак при прохождении степов и бак дальнейшем мешает прохождению смолка тут что там естественно а если у тебя допустим ты смог проходишь тебе ничего не мешает просто попутно где-то в каких-то еще системах что-то падает а тут уже даты здесь Ты абсолютно прав идем К менеджеру уточняем спрашиваем живем с этим мы живем хорошо а что такое себя сидит Континент intecration Continuous Delivery есть еще сети Continuous testing это все так называемый один единственный жизненный цикл Когда у нас
00:28:54 - 00:30:25
непосредственно идет разработчик выкатывает новую фичу заливает ветку эта ветка сразу же отправляется на свои какие-то Юнит тесты затем у нас еще должно быть определено скажем так наш куда это будет в дальнейшем тестируется выливается возможно какой-то но это уже не будет немножко касаться Хотя непосредственно относится потом мануальщиками проходится какой-то минимальный тот же смог критикал пас И когда это уже когда уже мануальщиками это немножко не касается у нас идет просто выкатили это проверяется юнитами и
00:29:40 - 00:31:14
непосредственно выливается уже Ветку на определенный из проще А ты как бетон пользоваться умеешь хорошо умею как я вообще то есть для тебя фраза возьми мою ветку и проверь локальный Билд для тебя как бы не проблема вообще да мир жить сквошить пикать черепикать можешь конфликты фиксить тоже очень легко особенно когда гид помогает подсказывает что куда выделяет Какие строки где конфликты Красава Смотри как тебе сделать так чтобы откатить ветку на допустим два комета назад [музыка] точно могу не вспомнить Не помню особо
00:30:28 - 00:32:11
Какой флаг потом у нас пишется Тильда и мы указываем количество коммитов могу немножко ошибаться конечно у тебя предыдущая комит и через который ты перепрыгнул назад Они сохраняется или все истории теряется и Pace просто вот смотри ты перепрыгну на там два три комита назад а ты можешь потом обратно запрыгнуть там не на как не на твой реальный последний коммент а допустим на предыдущий то есть так вот попрыгать покамитам влево вперед вправо назад я точно не помню какая-то из команд есть уже и гидроверт и гид ресет если я не
00:31:24 - 00:32:51
ошибаюсь какая-то из них полностью удаляет и есть У нее флаги софт хард и так далее могу ошибаться Точно не помню но есть когда мы можем просто вернуться назад посмотреть как у нас было изменение попрыгать просто между комитами есть какая непосредственно удаляет без возврата скажем так хорошо изучаю активно что же умеешь именно Ну скажем так вот если ты спросишь какой-то вопрос я у тебя еще проходил домашки по Греку и так далее что-то помнится уже Изучая такие команды там как я не знаю как еще просто
00:32:08 - 00:33:43
создание файлов через сиквенс какие-то множество и так далее Ну как-то так а как тебе выглядит все содержимое файла или какой-то Первый кусок как все у нас дополнительные есть команды Хорошо хорошо сделать вывод реального изменения файла Как сделать хорошо хорошо скажи тебе допустим необходимо наполнить базу тестовыми данными через цикл Я помню как ты это делал через питончик нет Непосредственно в этом в чем у нас Майская Эль или дебитор какой-то тоже пишется цикл и заполняется база данных но они будут
00:33:01 - 00:34:36
нет тогда это не нам данные нужны разные или просто разных данных мог данный но когда мог данные но я не знаю через тот же GS можно запрос сделать на создание и так далее вообще спокойно через тест что угодно делать нагрузку А если тебе надо базу напихать здесь тебя правильный вариант именно в базе пишешь цикл просто рандомизируешь данные либо через какое-нибудь язык программирования тоже пиши базе Вот и Connection Basic Хорошо хорошо Как тебе Агент но непосредственно в подспофить не особо помню
00:34:12 - 00:35:50
подмена подмена через вкладывать Что что помнишь как где А нет сейчас нет во вкладочках там Tools и можно туда заходить хорошо помню что это а как еще через тот же Чарлик подмена хорошо [музыка] смотри что такое тестирование на основе рисков теории уже не помню хорошо даже сложно что-то как-то Окей хорошо риски риски риски а ну допустим мы Я не знаю возможно это относится к какому-то один из вариантов негативного тестирования и Хотя вряд не помню для тебя риск это что такие риски вообще могут риски это допустим непосредственно Когда
00:35:24 - 00:37:23
уже будет у нас провод Окей Хорошо давай с такой стороны зайдем Когда у нас уже Продакшен и непосредственно это будет взаимодействие с нашим железом с нашей базой данным данный а потом с нашей сетью [музыка] Ну и уже от этого скажем так мы идем на какие-то риски потому что у каждого клиента свое железо и так далее и по-разному на каждой системе с каждым соединением это будет по-разному получается и какие-то Exception либо отклонения в работе [музыка] конечно да согласен Есть такое Что разрешено В какой стране и так далее
00:37:09 - 00:39:00
какие-то символика еще что-то числа те же а затем Когда у нас точно знаю кейс когда тебе уже допустим СНГ Тебе исполнилось 18 в США допустим Ну показ какого-то контента с 18 лет в Японии это с 21 начинается в США там допустим это варьируется от 18 до 20 в разных из округа как-то хорошо А чем разница тестирование локализации и интернационализации тестирование локализации Блин когда-то я это знал прям локализация Ну это у нас проверяется непосредственно те же кейсы когда мы используем например различные форматы даты времени денежных
00:38:10 - 00:40:16
единиц опять же возвращаемся к тоже символике затем различные могут быть календари различные форматы [музыка] различные те же юридические нормы правовые насколько наши мы определяем насколько наше приложение готово нет это не в этом наверное в интернализации в интернализации у нас будет насколько программа готова работать к различным [музыка] блин хочется сказать как по книжечке оно красиво просто и четко Короче когда программа готова к работе с различными теми же форматами файлов и так далее Пусть так грубо говоря
00:39:24 - 00:41:11
локализация Это непосредственно Когда уже Идет работа с различных точек мира допустим пусть будет как-то сказано локализация также это относится к тексту Когда у нас есть иероглифы какие-то и тому подобное плюс написание самого текста справа налево слева направо еще какие-то были а затем время непосредственно у нас 012 либо 24 еще что-то есть время 012 Это зависит уже нет локаля от формата время у тебя это GMT + 1 + 2 + 3 это -2 -1 Я не знаю наверное все что как-то не очень ответил Согласен Это просто переключение между локами
00:40:24 - 00:42:10
[музыка] тебя напротив случился какой-то баг Ну и прям приняли решение делать хотфикс регрессию после хотфикса перед тем как залить народ hotfix делают Да вот ты будешь заливать народ проводить регресс регресс Нет я непосредственно проведу тесты того места где у нас был сделан фикс и какие-то допустим если у нас это какая-то формочка соседние Поля не поменялось ли чего лишнего и как такой любопытный тестировщик загляну в кот и посмотрю чего там еще разработчик В каком именно месте чего-то подправлял отправлял и так далее
00:41:52 - 00:43:32
как это эффект наши какие-то дополнительные функции и взаимодействия где-то с чем-то зависимости от того насколько у нас [музыка] как это говорится серьезный бак и Сколько времени уходит и времени усилий и затрагивает различные функции от этого И будет зависеть мои действия при тестировании после [музыка] так смотри хорошо допустим регресс проводить не будешь Но полностью то знаешь довериться что все пофикшена ты же не можешь опять же зависит от того что и где у нас фиксилось были такие кейсы где прилетала
00:43:03 - 00:44:46
и просто нужно прогнать хотя бы элементарный смог самый стандартный Flow документы какого-то или формы как она куда и так далее В любом случае это просто считается хорошей практикой даже если там ты вход фиксе проверил именно какой-то ретест сделал отдельное место после подвиса когда еще и зарегителей после твоих тестов все равно даже напротив прогнать хотя бы смог Да согласен да конечно но в любом случае смог же ты прогонишь не только этот ретест делаешь но и смог сделаешь да да ну и смотри последний тебе вопрос у тебя
00:43:56 - 00:45:23
на вебе есть [музыка] 20 вариантов оплатить понятно что кейсами техниками дизайна отрезать какие-то варианты ты не можешь тебе надо проверить все как-то это Мне нужно протестировать 20 вариантов оплаты как я это сделал Понятно Что сделаешь понятно что протестируешь просто вот каким Чтоб тебе было как-то профессиональнее это сделать правильнее наверное посмотрю на то на статистику картами какими сервисами в первую очередь проверю наверное как-то их Ну хотя что как правильно Ну наверное так пойдет в первую очередь
00:44:49 - 00:46:36
просто по важности по важности Оки Ну да вот то что ты сказал запрашиваем Сколько кто какими пользуется особенно есть А если еще есть разница по локалям даже берешь самую оплачиваемую локаль самая юзабельные сервисы сначала их тестируешь а потом уже по-настоящему Да хорошо добренько все давай заканчиваем Красава отличные знания сразу видно что парень Спасибо большое Добринка ребятушки все тогда на сегодня закончим Потому что сейчас уже надо бежать сегодня тоже планировал не более одного человека сделать все Всем спасибо
00:45:56 - 00:47:13
кто подключился есть еще хотите на курсы тестирования всех люблю целую Всем пока
00:46:35 - 00:46:51