Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Вакансии компании Петер-Сервис



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Вакансии компании Петер-Сервис
2016-08-10 10:43

Приглашаем в нашу команду инженеров по автоматизированному тестированию. Ищем настоящих QA, которые горят искренним желанием усовершенствовать процессы тестирования и улучшить качество продукта. Мы поддерживаем потенциал и саморазвитие, поэтому с интересом рассмотрим резюме, стремящихся к развитию Junior'ов. Если наши вакансии вас заинтересовали, смело отправляйте резюме.

 

Список вакансий:

 

QA automation engineer / Инженер по автоматизированному тестированию

Middle QA automation engineer / Старший инженер по автоматизированному тестированию

Senior QA automation engineer / Ведущий инженер по автоматизированному тестированию

 

О компании:

 

Петер-Сервис - лидер российского рынка программного обеспечения для телекома. Более 100 млн абонентов в 13 странах мира пользуются нашими решениями ежедневно, сегодня почти каждый звонок в стране обрабатывается с нашей помощью. А это значит – настоящий highload, системы находятся под действительно высокой нагрузкой, обрабатывая гигантские объемы данных. У нас одно из самых сложных производств ПО в России.

Более подробная информация на сайте компании: http://peter-service.com/

 

Условия работы:

 

Мы создаем максимально комфортную рабочую атмосферу для наших сотрудников, чтобы работа была для них местом вдохновения, обмена идеями и приятного общения.

 

У нас вы найдете:

  • Достойную оплату: полностью «белая» заработная плата, понятная премиальная система;
  • Центр обучения: повышение профессионального уровня, бесплатные курсы английского и испанского языков;
  • Интересные задачи: проекты федерального масштаба с уникальной структурой;
  • Сильную команду: работа в команде экспертов высокого уровня;
  • Заботу о здоровье: ДМС, страхование от несчастных случаев, компенсация затрат на питание, программы лояльности для страхования членов семьи;
  • Дополнительные материальные выплаты: пособие при рождении ребенка, свадьбе и др.;
  • Комфортные условия: гибкий график, свободный дресскод, бесплатные чай, кофе, горячий шоколад;
  • Еще много интересного: возможность отдохнуть с семьей в Риме, дни заботы о здоровье сотрудников, мероприятия для сплочения сотрудников и многое другое.


Онлайн-интенсив для начинающих тестировщиков, начало 15 августа
2016-08-10 11:04

Кроме описанного ниже недельного формата, доступен трехнедельный формат интенсива.

 

Минимум теории, максимум практики!

 

7 дней, 7 занятий. Это быстрый старт для тех, кто прочитал книжки и хочет применить знания. Вас закидывают на реальный проект и целую неделю вы оттачиваете на нем новые навыки под чутким присмотром тренера.

 

Легко? Нет!

 

Эффективно? Очень!

 

Курс создан ради того, чтобы переворачивать мышление. Занятия каждый день дают идеальный эффект погружения в тестирование на реальном проекте.

ВАЖНО!

 

Онлайн-интенсив хорош тем, что всего за неделю мы отрабатываем основные навыки, которые нужны тестировщику. При этом на целую неделю вы становитесь тестировщиком реального проекта, а не абстрактного карандаша. Каждое домашнее задание основано «на реальных событиях»!

 

Каждый день в течение недели у вас будет:

  • 15-25 минут теории (видеозапись)

  • 7 часов практики (домашние задания)

НО!

Это будет неделя интенсивной работы. Придется поднапрячься, но оно того стоит!

 

Подробности...



НЛО: найти, локализовать и оформить ошибку, начало 15 августа
2016-08-10 11:04

Новый онлайн тренинг от Ольги Киселевой.

Эта херня работает некорректно

Знакомое описание бага?
В разговоре такая фраза уместна, в баг-трекере — нет. Через месяц все забудут, что это за херня была, и как именно она не работала.
На курсе мы будем учиться писать баг-репорты так, чтобы их понял разработчик, вернувшийся после лоботомии. А при виде слов «некорректно», «неправильно»... к концу курса должен начать дергаться глаз.

Что. Практический онлайн-курс для тестировщиков по локализации и оформлению баг-репортов + советы по поиску багов.

 

Зачем. Описывать баг-репорты так, чтобы их понял даже вернувшийся после лоботомии разработчик.

 

Проблемы оформления задач:

— Нашел, завел, она не воспроизводится.

— Разработчик говорит "не воспроизводится".Подходишь, показываешь — воспроизвелось!

— Коллеги дергают с вопросами "А что ты хочешь видеть в результате? Что такое корректная работа?"

 

Если оформить задачу плохо — ее не исправят. Если не найти «корень зла», ее не смогут повторить и не будут исправлять. Мы будем учиться писать баг-репорты доступно и понятно.

 

К концу курса у вас должен дергаться глаз каждый раз при виде слова "корректно" в описании бага.

 

Подробная программа и условия участия



Что делать после того, как баг найден, и до того, как приступать к баг
2016-08-10 11:56

Автор: Эрик Хан (Erik Hun)

Оригинал статьи: https://promptest.wordpress.com/2016/07/27/ever-noticed-what-do-you-do-between-finding-and-reporting-a-bug/

Перевод: Ольга Алифанова

 

Возможно, немедленно уведомить о баге сразу же после того, как вы его обнаружили – не самая удачная идея. Сильное заявление? Возможно. Я попробую обосновать его при помощи реальной истории, которая недавно произошла со мной, а дальше перейду к теории.

 

Мы проводили рефакторинг одной из частей нашего приложения. Там использовался Javascript, и присутствовала корзина интернет-магазина. Я решил проверить, как она среагирует на максимально большие числа, и нашел баг. Перемножение очень больших чисел приводило, судя по всему, к фризу всей корзины. Я нажал F12, чтобы проверить, что происходит конкретно. Виноваты оказались не большие числа как таковые. Виновно было переполнение, возникающее из-за ошибки точности в Javascript (я быстро выяснил все про эту ошибку: http://www.w3schools.com/js/tryit.asp?filename=tryjs_inaccurate2). Ага, вот в чем дело! Как еще можно вызвать эту проблему? Я попробовал ввести совершенно обычные числа, которые спровоцируют ту же самую ошибку – и фриз повторился. Призванный на помощь разработчик даже не нуждался в подробных разъяснениях.

 

Почему бы не сообщить о баге сразу? Потому что баг, возникающий при перемножении 999999999999.99 на 99 вызовет реакцию "Какой нормальный человек так сделает", или "Ну засунь ее в бэклог, где-нибудь в 2038 году мы разберемся" – и такая реакция может быть вполне оправданной. Но демонстрация, что баг воспроизводится и на вполне обычных числах, вроде умножения 25,89 на 3, приведет к мгновенному исправлению проблемы.

 

Читать статью полностью...



Хочу многократно использовать сценарий в Cucumber, по аналогии с проце
2016-08-10 21:56

Как в 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(
                null,
                (CucumberScenario) features.get(0).getFeatureElements().get(0),
                new JUnitReporter(null, null, false)
        );
        runner.getRunnerSteps();
}
 
Как решали Вы данную проблему? Или может посоветуете что-нибудь...


Selenium дамп куки и загрузка из дампа в Chrome - Python
2016-08-11 09:24

Добрый день! 
Только начинаю разбираться с selenium'om из возник вопрос: как при работе с Chrome оставаться авторизованым на каком-то сайте?

Гугл привел меня на эту ссылку:
http://stackoverflow.com/questions/1...nium-webdriver

Решил зайти, авторизоваться, сделать дамп этой куки и впоследствии загружать куку из дампа.

Написал такой скрипт для авторизации на ya.ru:

import pickle
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")#инициализирую вебдрайвер
driver.get("https://ya.ru/")
#вхход в почту
elem = driver.find_element_by_xpath("/html/body/table/tbody/tr[1]/td/div[2]/a") 
elem.click()
#ищу поля логин-пароль
elem = driver.find_element_by_xpath('''//*[@id="nb-1"]/span/input''')
elem.send_keys("туточки логин")
elem = driver.find_element_by_xpath('''//*[@id="nb-2"]/span/input''')
elem.send_keys("туточки пароль")
#кнопка авторизации
elem = driver.find_element_by_xpath('''//*[@id="js"]/body/div[1]/div[1]/div[1]/form/div[4]/span/button''')
elem.click()
#cookies dump
pickle.dump(driver.get_cookies(), open("cookies.pkl","wb"))
#закрываю браузер  - куки в браузере не сохраняются
driver.close()
#открываю браузер заново
driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
#загружаю куки из дампа
cookies = pickle.load(open("cookies.pkl","rb"))
print(cookies) #смотрю что я загрузил из дампа
driver.delete_all_cookies()#выпилю старые прежде чем загрузить новые
for cookie in cookies:
    driver.add_cookie(cookie)
 
#открываю страничку для которой делал дамп куки
driver.get("https://ya.ru/")

на строке

driver.add_cookie(cookie)

Получаю ошибку, вот вывод на консоль, включая вывод принта куки:

Скрытый текст
[{'path': '/', 'name': 'sessionid2', 'httpOnly': True, 'expiry': 2147483645.330977, 'secure': True, 'domain': '.yandex.ua', 'value': '3:1470815140.5.0.1470815140000:3Kc5JQ:51.1|409677877.0.2|4:116873.561329.8iR9P3HktRQ5kkTbzODuYAP2QY0'}, {'path': '/', 'name': 'L', 'httpOnly': False, 'expiry': 1786434338.329975, 'secure': False, 'domain': '.yandex.ua', 'value': 'AVNJUUJYfVxeX3FTWGBtZwUABVdFX1hAARMCEnkJFmsgLh0QS2BeRQ==.1470815140.12577.36627.483c1be92920e00ebfecf6c94e4dd006'}, {'path': '/', 'name': 'ni', 'httpOnly': False, 'expiry': 1478763936.208975, 'secure': False, 'domain': 'mail.yandex.ua', 'value': '1'}, {'value': 'udn.cDp0ZXN0LnlhLXRlc3QyMDE3', 'name': 'ys', 'httpOnly': False, 'path': '/', 'secure': False, 'domain': '.yandex.ua'}, {'path': '/', 'name': 'Session_id', 'httpOnly': True, 'expiry': 2147483645.329976, 'secure': False, 'domain': '.yandex.ua', 'value': '3:1470815140.5.0.1470815140000:3Kc5JQ:51.0|409677877.0.2|4:116873.668027.7Fx7qsHBaV8qSSc9GByFMl9HYVs'}, {'path': '/', 'name': '_ym_uid', 'httpOnly': False, 'expiry': 1533023136, 'secure': False, 'domain': '.yandex.ua', 'value': '14708151371009373363'}, {'path': '/', 'name': '_ym_isad', 'httpOnly': False, 'expiry': 1470887136, 'secure': False, 'domain': '.yandex.ua', 'value': '2'}, {'path': '/', 'name': 'yandexuid', 'httpOnly': False, 'expiry': 1786434338.330982, 'secure': False, 'domain': '.yandex.ua', 'value': '4053422991470815136'}, {'path': '/', 'name': 'yandex_login', 'httpOnly': False, 'expiry': 1786434338.330979, 'secure': False, 'domain': '.yandex.ua', 'value': 'test.ya-test2017'}, {'path': '/', 'name': 'yp', 'httpOnly': False, 'expiry': 1786434338.330983, 'secure': False, 'domain': '.yandex.ua', 'value': '1786175136.yrts.1470815136#1786175140.udn.cDp0ZXN0LnlhLXRlc3QyMDE3'}, {'path': '/', 'name': 'stngs', 'httpOnly': False, 'expiry': 1786347938.635979, 'secure': True, 'domain': 'mail.yandex.ua', 'value': 'colorful::on:'}]

Traceback (most recent call last):
  File "C:\Users\Cach\Desktop\Auto test\ya.ru mail\test.py", line 29, in <module>
    driver.add_cookie(cookie)
  File "C:\Users\Cach\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 671, in add_cookie
    self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
  File "C:\Users\Cach\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Cach\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: <unknown>: Failed to set the 'cookie' property on 'Document': Cookies are disabled inside 'data:' URLs.
  (Session info: chrome=52.0.2743.116)

  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 10.0.10240 x86_64)

 

Как мне это исправить? Гугл ответа, увы, не дал. Заранее спасибо.



© 2010 | Software-Testing.Ru


В избранное