Следите за блогом (а еще лучше подпишитесь на мою ленту в Telegram, где все, что касается оценщиков, будет появляться сразу после публикации на сайте), скоро я напишу полный отчет о работе оценщиком-испытателем. Тем временем вы можете попытаться найти работу. Это несложно сделать.
Зачем нужно нагрузочное тестирование
Недавно мы говорили о том, почему они тестируют веб-сайты и как они это делают. В основном тестирование заключается в проверке верстки, отзывчивости, работы ссылок и скриптов, а также поведения страницы в нестабильном интернете. Но есть еще один тест, который иногда включается в обычное тестирование, но обычно проводится отдельно — это нагрузочное тестирование.
Представим себе ситуацию: Мы пишем внутреннее программное обеспечение для компании — оно будет находиться на сервере в нашем здании, и все в офисе будут использовать его для бронирования встреч, билетов для гостей, отпусков и других задач по планированию. Все работают в офисе, удаленных работников почти нет, а сервис предназначен для внутреннего пользования. Некоторые удаленные работники иногда используют эту услугу для бронирования отпусков.
Начинается пандемия, все расходятся и работают по домам. Внезапно выясняется, что программное обеспечение, которое прекрасно работало внутри компании в течение многих лет, больше не работает должным образом. И стало невозможно даже пользоваться им из офиса.
Самое главное, что изменилось в нашем сценарии, — это точка входа, из которой пользователь попадает в сервис: из офиса или из дома. В результате количество тех, кто пытается воспользоваться услугой извне, изменилось — нагрузка на эту часть возросла многократно.
Если бы компания провела нагрузочные тесты, она могла бы устранить уязвимости в своем коде и заранее подготовить сервис к подобным ситуациям.
Что такое нагрузочное тестирование
Нагрузочное тестирование — это способ обнаружения уязвимостей при перегрузке сервиса. В зависимости от цели теста моделируются различные ситуации:
- количество пользователей растёт плавно, но каждую минуту;
- количество пользователей растёт резко и непредсказуемо;
- пришло много пользователей с медленным интернетом;
- поступило много запросов с одного IP-адреса;
- все пользователи выбрали одну и ту же услугу;
- случился наплыв новых пользователей, которые пытаются зарегистрироваться.
Проще говоря, в нагрузочных тестах мы задаем определенный тип нагрузки и смотрим, как наше приложение справляется с ней.
Цели и задачи
Поскольку нагрузка может пониматься по-разному, испытатели договариваются о том, что они хотят проверить, до начала испытания. Это может быть нагрузочный тест:
- посмотреть расход памяти и нагрузку процессора;
- измерить среднее время отклика сайта, если посетителей станет в 10 раз больше;
- проверить, не перегреется ли сервер, если им постоянно будут пользоваться все зарегистрированные пользователи;
- проверить время отклика базы данных при постоянном росте количества запросов;
- посмотреть, что будет, если все пользователи одновременно начнут загружать на сервер объёмные видеофайлы;
- убедиться, что сайт не ляжет, если на него зайдёт 3 миллиона человек одновременно.
Идея заключается в том, что существует множество возможностей для тестирования, но вы должны выбрать что-то конкретное, одно или несколько. Вы не можете тестировать все сразу — для этого нужны разные инструменты и тесты.
Кто такие асессоры и чем они занимаются в Яндексе?
Оценщики — это люди, которые оценивают результаты поиска. Пример: вы получаете пакет в виде запроса, сделанного пользователем, и страницы
Изначально оценщики никак не подразделялись, но с появлением различных департаментов чиновники стали специализироваться по типам задач и проектов, которыми они занимались. Существуют отдельные позиции для специалистов по оценке тестов, которые помимо оценки данных занимаются тестированием приложений и различных продуктов Яндекса. Это более сложная, но разнообразная работа.
Иногда Яндекс нанимает рецензентов, которые должны знать определенные языки, например, украинский, узбекский, казахский или другие. По нашим наблюдениям, им платят немного больше, чем другим специалистам на той же должности. Ниже приводится информация о заработной плате оценщиков.
В 2014 году Яндекс запустил сервис «Толока», который позволяет любому человеку найти подработку. Там вы можете выполнять задания по оценке и анализу данных и получать за это деньги. Многие обнаружили, что оплата за услугу невысока — обычно от 1 до 5 центов за задание. Иногда бывают более сложные задания — до 15-30 минут на задание.
Какие бывают асессоры?
Толока необходима для того, чтобы Яндекс мог получить больше оценок для обучения алгоритмов для своих сервисов. Однако сотрудники «Толока» не являются оценщиками в прямом смысле этого слова. Служба оценщиков продолжается внутри компании, в ней работают другие люди. Их зарплаты, по данным сети, выше, чем зарплаты за работу в «популярной» Толоке.
Они могут работать в нужное время и по гибкому графику. Вам не обязательно работать полный рабочий день. Минимальная рабочая нагрузка составляет 10 часов в неделю. Эту работу можно рассматривать как вариант для студентов, пенсионеров или матерей в декретном отпуске.
«Народные» асессоры Толоки
Прежде чем перейти к тесту, небольшое напоминание о том, кто такие тестеры Яндекса. Также узнайте, чем занимаются тестировщики и сколько им платят в Яндекс.
У Яндекса есть отдельные вакансии в отделе тестирования. Мы не будем разбираться с ними (по крайней мере, сегодня), поскольку они требуют определенного опыта тестирования. Для оценщика, с другой стороны, не требуется никакого опыта, а оценщик-тестер обещает научить вас всему.
Требования к асессорам и условия работы
- Изначально среди требований было знание английского языка, но сейчас оно отсутствует в вакансиях. Этим работа в Яндексе отличается от работы асессором в Google, где отличное знание английского – обязательное требование.
- Кандидатам в асессоры не обязательно иметь высшее образование или какую-то специальную подготовку. Главное быть внимательным, ответственным, иметь широкий кругозор, уметь выполнять монотонную работу. Также необходимо иметь компьютер и мобильное устройство, подключенное к Интернету, чтобы выполнять на них задания.
- Работа удаленная, посещать офис Яндекса не требуется. Работать асессором можно из любого города.
Оценщик-тестировщик тестирует продукты Яндекса с помощью готовых скриптов, а также создает собственные скрипты и проводит исследовательские тесты новых функций. Так написано на сайте Яндекса. Работа удаленная, программа бесплатная. Оплата за игру. Один человек пожаловался мне лично на то, что ему платят слишком мало. Однако нет четкой информации о зарплате оценщика-проверяющего в государственном секторе.
Кто такие асессоры-тестировщики
Именно поэтому я подал заявку на эту работу в Яндекс. Оставайтесь со мной и давайте вместе узнаем, сколько им платят. Но сначала вам нужно найти работу, а для этого нужно сдать экзамен
Но, как говорится, яйцо еще в гнезде. Итак, давайте посмотрим, насколько хорошо я справился со всеми заданиями. Я отправил анкету с заполненным тестом в Яндекс и ждал ответа.
Следите за новостями, чтобы узнать, смогу ли я получить работу в Яндексе в качестве тестировщика.
И вот продолжение. Я сообщу вам, получил ли я работу или нет.
Как пройти тест асессора-тестировщика Яндекс
Новый интервьюер — вы можете наблюдать — вы можете делать заметки — да, я знаю, как заставить ваш яндекс.блокнот работать лучше, чем вы уже делаете, давайте, наконец, начнем
Пример ввода «eat», «tea», «tan», «ate», «nat», «bat» Пример вывода «ate», «eat», «tea», «nat», «tan», «bat».
То есть, группируйте слова на основе «общих букв».
Возникло смутное ощущение дежа вю. Нет, это должно было быть что-то. Так, они хотят проверить свои знания некоторых базовых вещей.
Задача простая: они хотят убедиться, что я помню, как пользоваться словарем, пока находился в отеле. Это небезосновательно! Давайте бросим что-нибудь простое.
ListListstr: groups = defaultdict(list) for words in words: # O(n) key = sorted(word) groupskey.append(word) return sorted(words) for words in groups.values() # O(n*log(n))
Интервью 3
Здесь меня спросили, насколько сложна сортировка, и я получил похвалу. Проблема в том, что все интервью проводятся разными людьми, которые совершенно не знают вашего контента — например, о чем я говорил в предыдущих сериях и сколько алгоритмических проблем я решил в прошлом. На предыдущем собеседовании меня спросили, в чем сложность сортировки, я не знал, и мне сказали — а на этом собеседовании я уже ответил.
Задача 6
Слияние департаментов:
Входящие: 1, 3 100, 200 2, 4 Исходящие: 1, 4 100, 200
Честно говоря, в какой-то момент мне стало плевать на интервью, Яндекс и все эти алгоритмы, и на самом деле я бы уже давно отправил их все в /dev/null, но я хотел знать, чем все это закончится, ведь должен же быть конец, верно? Будет испытание, когда я сломаюсь, и все закончится. Что-то вроде эвтаназии, но в интервью.
Ну, хорошо, они хотят проверить знание некоторых базовых вещей.
def group_words(words: Liststr) ->ListTupleint, int: if not ranges: return result_ranges = last_range = None # последний просмотренный участок for rng in sorted(ranges): # убедитесь в сортировке if not last_range: last_range = rng continue # если начало текущей секции меньше конца предыдущей секции if rng0
Разговор подходит к концу, но мы все еще можем поговорить о программировании и задать практические вопросы, например, о Django или SqlAlchemy:
Задача 7
Дана таблица точек с целочисленными координатами (x, y). Определите, существует ли вертикальная линия, которая делит точки на 2 группы,
Тут я понял, что мой собеседник ожидал чего-то другого, и он нашел меня. Ну, такое бывает. И я ожидал интервью.
Честно говоря, в этот момент я теряю контроль, потому что жду, когда начнется интервью, знаете, человеческое интервью, но вместо этого я превращаюсь в алгоритм.
Мне кажется, что я достиг какого-то мини-архонта и что я должен сразиться в какой-то битве самых общих вопросов в предстоящем интервью. И рекрутер пишет мне: Вы знаете, Яндекс настоятельно рекомендует практиковаться на заданиях leetcode. И здесь тоже есть свои алгоритмы. О, это нехорошо.
def merge(ranges: ListTupleint, int) ->Ну, наконец-то я добрался до них, потому что они так настойчиво предлагали мне свои услуги. В общем, есть сложные вопросы, и было весело думать над ними и решать их в голове, но я до сих пор не понимаю, как это поможет мне на собеседовании. Задач слишком много, и, что еще важнее, они чертовски разные, и когда я решаю одну из них, я решаю не класс задач, а одну проблему. Следовательно, я либо решаю их все, и тогда зачем мне потом нужен ваш Яндекс, либо. короче говоря, я опять не подготовился. Ответственный человек, помните?
Задача 8
Кстати, в какой-то момент я обнаружил, что использую что-то вроде Tor, но для собеседований: я связываюсь с рекрутером, рекрутер связывается с рекрутером Яндекса, а рекрутер Яндекса связывается с интервьюерами, и, возможно, цепочка еще длиннее. Мне это показалось простым: вы вычитаете меня для O(n^2) решений, так почему бы не измерить длину цепочки от кандидата до интервьюера и не спросить: "Можете ли вы сделать лучше?"! "
Так началось четвертое (да, ей-богу) интервью. Интервьюер спрашивает меня, какой язык я буду использовать для решения задач. Йоптаскрипт, конечно же. Кстати, я обнаружил, что интервьюер больше разбирается в языке Си, чем в Python, и это хорошо. Итак: после того, как компания решает нанять python-разработчика за 200 тысяч и 3 часа долбать его говнозадачами, они посылают на собеседование человека на C и спрашивают, на каком языке кандидат будет долбать говнозадачи. L - это разумно!
Мне кажется, что я достиг какого-то мини-архонта и что я должен сразиться в какой-то битве самых общих вопросов в предстоящем интервью. И рекрутер пишет мне: Вы знаете, Яндекс настоятельно рекомендует практиковаться на заданиях leetcode. И здесь тоже есть свои алгоритмы. О, это нехорошо.
Даны две строки.
from statistics import mean def is_vertical_symmetry(points: ListPoint) ->Напишите функцию, которая возвращает True, если первая строка может быть получена из второй путем внесения не более одного изменения (== удаление/замена символов).
Погоди-ка, вот оно. Ну, хорошо, они хотят проверить свои знания некоторых базовых вещей. Сссссссссссссуууу. пер.
Интервью 4
Если вы хотите решить проблему иначе, чем предполагал собеседник, посмотрите вверх:
# string1: a b c d # string2: a b c None # идем слева направо в обеих строках.
На самом деле, это настолько глупо, что даже смешно, и я не мог удержаться, чтобы не поделиться этим с вами. Неизвестные люди тестируют меня с помощью однотипных заданий, которые максимально далеки от реальности, все это занимает часы, сложность заданий не поддается классификации, все контролируется в моей голове, и нет обратной связи.
Сколько чертовых вопросов можно задать о http, rest, django orm, sql, python, stdlib, docker, multithreading/multiprocessing/async, whatever - что вы делаете в магазине - спросите о головной боли, но зачем 4 часа алгоритмов? Что это показывает - что я сопротивляюсь глупости? Честно говоря, я уже не уверен.
Возможно, кому-то нравятся задачи на анализ, если вы любитель таких задач, хотя о качестве решений я уже говорил 🙂
И если вам нужен вывод, вот несколько, берите любой:
Задание 9
И да, если вы ищете работу в Python, приходите к нам. Мы не Яндекс.
Мой канал в Telegram: Блог погромиста.
def no_more_than_one_change(string1: str, string2: str) ->bool: # string1: a b c d # string2: a b c max_length = max(len(string1), len(string2)) # наибольшая длина строк diff = abs(len(string1) - len(string2)) # разница в длине строк # дополняем строки до максимальной длины при помощи zip_longest, # то есть на место "недостающих" элементов ставим None, и строки # теперь одинаковой длины; # ---->
К чему всё это
- Тестировать кандидатов нужно на реальных задачах, а не синтетических
- Нужно уважать время кандидатов
- Кто-то в яндексе пересмотрел "день сурка"
- Знаете, когда целое не равно сумме частей? Вот тут так же: люди тебя собеседуют хорошие и встречи приятные, а в целом всё гавно.
- Открыто новое достижение: ругательство "да пошёл ты в яндекс!"
- Большие компании ай-яй-яй
- Какой-то чувак написал смешную статью