Приглашаем в нашу команду инженеров по автоматизированному тестированию. Ищем настоящих QA, которые горят искренним желанием усовершенствовать процессы тестирования и улучшить качество продукта. Мы поддерживаем потенциал и саморазвитие, поэтому с интересом рассмотрим резюме, стремящихся к развитию Junior'ов. Если наши вакансии вас заинтересовали, смело отправляйте резюме.
Петер-Сервис - лидер российского рынка программного обеспечения для телекома. Более 100 млн абонентов в 13 странах мира пользуются нашими решениями ежедневно, сегодня почти каждый звонок в стране обрабатывается с нашей помощью. А это значит – настоящий highload, системы находятся под действительно высокой нагрузкой, обрабатывая гигантские объемы данных. У нас одно из самых сложных производств ПО в России.
Мы создаем максимально комфортную рабочую атмосферу для наших сотрудников, чтобы работа была для них местом вдохновения, обмена идеями и приятного общения.
У нас вы найдете:
Достойную оплату: полностью «белая» заработная плата, понятная премиальная система;
Центр обучения: повышение профессионального уровня, бесплатные курсы английского и испанского языков;
Интересные задачи: проекты федерального масштаба с уникальной структурой;
Сильную команду: работа в команде экспертов высокого уровня;
Заботу о здоровье: ДМС, страхование от несчастных случаев, компенсация затрат на питание, программы лояльности для страхования членов семьи;
Дополнительные материальные выплаты: пособие при рождении ребенка, свадьбе и др.;
Еще много интересного: возможность отдохнуть с семьей в Риме, дни заботы о здоровье сотрудников, мероприятия для сплочения сотрудников и многое другое.
7 дней, 7 занятий. Это быстрый старт для тех, кто прочитал книжки и хочет применить знания. Вас закидывают на реальный проект и целую неделю вы оттачиваете на нем новые навыки под чутким присмотром тренера.
Легко? Нет!
Эффективно? Очень!
Курс создан ради того, чтобы переворачивать мышление. Занятия каждый день дают идеальный эффект погружения в тестирование на реальном проекте.
ВАЖНО!
Онлайн-интенсив хорош тем, что всего за неделю мы отрабатываем основные навыки, которые нужны тестировщику. При этом на целую неделю вы становитесь тестировщиком реального проекта, а не абстрактного карандаша. Каждое домашнее задание основано «на реальных событиях»!
Каждый день в течение недели у вас будет:
15-25 минут теории (видеозапись)
7 часов практики (домашние задания)
НО!
Это будет неделя интенсивной работы. Придется поднапрячься, но оно того стоит!
В разговоре такая фраза уместна, в баг-трекере — нет. Через месяц все забудут, что это за херня была, и как именно она не работала.
На курсе мы будем учиться писать баг-репорты так, чтобы их понял разработчик, вернувшийся после лоботомии. А при виде слов «некорректно», «неправильно»... к концу курса должен начать дергаться глаз.
Что. Практический онлайн-курс для тестировщиков по локализации и оформлению баг-репортов + советы по поиску багов.
Зачем. Описывать баг-репорты так, чтобы их понял даже вернувшийся после лоботомии разработчик.
Проблемы оформления задач:
— Нашел, завел, она не воспроизводится.
— Разработчик говорит "не воспроизводится".Подходишь, показываешь — воспроизвелось!
— Коллеги дергают с вопросами "А что ты хочешь видеть в результате? Что такое корректная работа?"
Если оформить задачу плохо — ее не исправят. Если не найти «корень зла», ее не смогут повторить и не будут исправлять. Мы будем учиться писать баг-репорты доступно и понятно.
К концу курса у вас должен дергаться глаз каждый раз при виде слова "корректно" в описании бага.
Возможно, немедленно уведомить о баге сразу же после того, как вы его обнаружили – не самая удачная идея. Сильное заявление? Возможно. Я попробую обосновать его при помощи реальной истории, которая недавно произошла со мной, а дальше перейду к теории.
Мы проводили рефакторинг одной из частей нашего приложения. Там использовался Javascript, и присутствовала корзина интернет-магазина. Я решил проверить, как она среагирует на максимально большие числа, и нашел баг. Перемножение очень больших чисел приводило, судя по всему, к фризу всей корзины. Я нажал F12, чтобы проверить, что происходит конкретно. Виноваты оказались не большие числа как таковые. Виновно было переполнение, возникающее из-за ошибки точности в Javascript (я быстро выяснил все про эту ошибку: http://www.w3schools.com/js/tryit.asp?filename=tryjs_inaccurate2). Ага, вот в чем дело! Как еще можно вызвать эту проблему? Я попробовал ввести совершенно обычные числа, которые спровоцируют ту же самую ошибку – и фриз повторился. Призванный на помощь разработчик даже не нуждался в подробных разъяснениях.
Почему бы не сообщить о баге сразу? Потому что баг, возникающий при перемножении 999999999999.99 на 99 вызовет реакцию "Какой нормальный человек так сделает", или "Ну засунь ее в бэклог, где-нибудь в 2038 году мы разберемся" – и такая реакция может быть вполне оправданной. Но демонстрация, что баг воспроизводится и на вполне обычных числах, вроде умножения 25,89 на 3, приведет к мгновенному исправлению проблемы.
Как в Cucumber выполнять сценарий из шага другого сценария?
Т.е. хочется иметь такое:
Сценарий: Создал заказ
Допустим пользователь зашёл в приложение
Если нажал 1,2,3
То ...
Сценарий: Создал жалобу
Допустим пользователь зашёл в приложение
Если нажал 4,5,6
То ...
Сценарий: Создал жалобу используя данные заказа
Допустим пользователь зашёл в приложение
Если выполнил сценарий "Создал заказ"
и выполнил сценарий "Создал жалобу"
и сделал ещё какое нибудь действие
то ...
Просто у меня получается очень много сценариев (причём в разных feature файлах), в которых надо создавать одинаковые сущности, и копировать код не хочется, его же потом ещё и поддерживать придется.
Про background знаю, но как использовать его здесь не придумал. Хотелось бы чтобы можно было вызывать сценарий, вне зависимости от его расположения в файлах.
До чего дошёл, но не заработало, почему то не находятся вообще никакие сценарии (features всегда пустой):
@Then("^выполнить сценарий$")
public void runScenario() throws Throwable {
List<CucumberFeature> features = CucumberFeature.load(
new ClasspathResourceLoader(this.getClass().getClassLoader()),
asList("feature"),
Collections.emptyList(),
System.out
);
ExecutionUnitRunner runner = new ExecutionUnitRunner(