Специалист по тестированию
Приветствуем будущих специалистов по тестированию программного обеспечения на тестовом задании в рамках конкурса OneDayOffer.
Что делать
- Публикуй ответы на GitHub/GitLab/etc в любом удобном виде.
- Присылай свое резюме и ссылку на решение hr@bi.zone с пометкой «OFFZONE 2019 QA»
- Мы отбираем самые интересные решения и отправляем авторам билеты на OFFZONE 2019 и подарки.
- На конференции подходи к стойке BI.ZONE.
- Пообщаемся, и по результатам сможешь присоединиться к нашей команде!
Кому будет интересно
- Начинающим QA (можно прислать даже часть выполненного задания, мы все отсмотрим).
- QA, интересующимся информационной безопасностью и продуктами вокруг нее.
Задача 1
На странице есть несколько элементов, один из них выглядит так:
<input class="Login _1f990qe" type="text">
Написать селектор, который найдет этот элемент. Что можно сделать с элементом, чтобы тест не падал на поиске данного элемента?
Задача 2
Чем этот тест плохой? Как его исправить?
# 1
def smfunc1(a, b):
return a + b
def test_func():
assert 0 == smfunc1(0, 0)
assert 4 == smfunc1(2, 2)
# 2
def smfunc2(a, b):
return a ** b
def test_func():
assert 1 == smfunc2(1, 1)
assert 4 == smfunc2(2, 2)
Задача 3
Тариф мобильного оператора — 30 коп. до 15 секунд, 40 коп. до 30 секунд и еще 10 коп. за каждые дополнительные 15 секунд до минуты. Первые 3 секунды разговора не тарифицируются. Выберите входные данные для проверки тарифа, используя классы эквивалентности с обьяснением почему.
1) 0,3,4,16,47,61
2) 2,11,15,30,44,123
3) 2,4,21,34,50,127
4) 15,30,40,50,60
Задача 4
Имеется следующий код на Python:
def tsum(in_list):
return in_list[-1] if len(in_list) == 1 else tsum(in_list[:-1]) + in_list[-1]
if __name__ == '__main__':
print(tsum(list(range(3))))
print(tsum(list(range(3000))))
Что будет напечатано в первой строке? Что во второй? (Предполагается решение без запуска кода, с пояснением, как получен результат.)
Задача 5
Вводная:
- имеется архив с исполняемыми файлами для разных платформ
- может быть использован любой из файлов в архиве, релевантный системе, на которой происходит выполнение задания
- выполнение бинарного файла приведет к запуску простого http-сервера, который ожидает соединения на localhost:8000
- для подключения к серверу необходимо использовать 2 аутентификационных заголовка
X-Auth-Name: admin
,X-Auth-Token: d82494f05d6917ba02f7aaa29689ccb444bb73f20380876cb05d1f37537b7892
Задачи:
- Подключиться к серверу и получить информацию о точках взаимодействия с ним (REST API).
- Создать основные тестовые сценарии и записать их в произвольном формате.
- Выявить проблемы (не только явные ошибки), записать и выставить каждой степень ее серьезности (severity) с пояснениями.
- Реализовать сценарии для автоматического тестирования с использованием Python + RobotFramework.
Задача 6[*]
Подготовить описание трех профилей нагрузки над "админской частью Grafana"
- Что тестируется и почему?
- Какие сложности в формировании профилей?
[*] Для специалистов, знакомых с нагрузочным тестированием
Идеальный кандидат QA
Обязанности
- Формировать и поддерживать стенды тестирования
- Тестировать разные микросервисные продукты
- Готовить документацию (тест-кейсы, тест-планы, ПМИ, инструкции, дефекты, отчеты)
- Работать с сотрудниками смежных подразделений (отделами разработки, технической поддержки, технической документации, инженерным отделом)
- Контролировать все этапы обеспечения качества (от требований до работы в продакшене)
- Контролировать работу продуктовой среды и быстро локализовать проблемы
- Автоматизировать тестирование при помощи WebDriver или схожих технологий
- Разрабатывать инфраструктуру автотестирования
Что нужно уметь
- Настраивать тестовые стенды (Linux (Centos) / Windows)
- Разрабатывать автотесты на Python — нужен опыт от 1 года
- Писать тестовую документацию (тест-кейсы, тест-планы, ПМИ, инструкции, отчеты)
- Понимать принципы DevOps и работать сообща для поддержания всех этапов разработки и тестирования
Желательно
- Опыт тестирования ПО от 1 года (функциональное, безопасности, нагрузочное, юзабилити, совместимости, кросс-браузерное и т. д.)
- Английский — чтобы читать техническую документацию
- Умение работать в команде
- Личная ответственность за качество продукта и стремление его улучшать
- Желание развиваться и совершенствоваться в области тестирования
- Знание технологий и продуктов (WebDriver / Python / Инструмент CI/CD / RestAPI / PostgreSQL)
- Умение читать код (Python / Java (scala) / JavaScript / HTML / C# / Go / bash / bat)
- Знание систем виртуализации и контейнеризации (VmWare ESX / Docker)
- Знание командной строки и стандартных утилит Linux
- Понимание процессов и инструментов DevOps