Меня часто спрашивают, за что я не люблю в тестах Page Objects, TestNG, ReportPortal, try/catch, циклы и условия, неявные ожидания, явные ожидания, Dependency injection, Spring и т.д.
Расскажу коротко и быстро. На каждую тему 5 минут.
Опора і рух. Види скелетів і способи пересування безхребетних тварин.labinskiir-33
Презентація до уроку зоології 7 клас (нова програма) за темою "Опора і рух тварин" + самостійна робота по темам: "Дихання тварин", "Кровоносні системи тварин", "Виділення тварин"
Presentation from https://heisenbug-piter.ru/en/talks/2018/spb/kkw6oivsoywayacggksmk/
Once upon a time, we got a requirement to finish all testing in 2 days despite the number of tests to run. That number grew, and grew, and grew, and now there are tens of millions of them. So this is a story about building a dam against the never-ending flood which turned out to be not that scary. You are very welcome to join and see it for yourself.
Презентация на комплексную тему Continious integration-Automated Testing-Agile, показывается связи между этими темам, обоснование автоматического тестирования , и вложения ресурсов для развертывания автоматического тестирования и непрерываной интеграциия. Все темы тесно связаны между собой , хотя бы появились независимос друг от друга.
Опора і рух. Види скелетів і способи пересування безхребетних тварин.labinskiir-33
Презентація до уроку зоології 7 клас (нова програма) за темою "Опора і рух тварин" + самостійна робота по темам: "Дихання тварин", "Кровоносні системи тварин", "Виділення тварин"
Presentation from https://heisenbug-piter.ru/en/talks/2018/spb/kkw6oivsoywayacggksmk/
Once upon a time, we got a requirement to finish all testing in 2 days despite the number of tests to run. That number grew, and grew, and grew, and now there are tens of millions of them. So this is a story about building a dam against the never-ending flood which turned out to be not that scary. You are very welcome to join and see it for yourself.
Презентация на комплексную тему Continious integration-Automated Testing-Agile, показывается связи между этими темам, обоснование автоматического тестирования , и вложения ресурсов для развертывания автоматического тестирования и непрерываной интеграциия. Все темы тесно связаны между собой , хотя бы появились независимос друг от друга.
Comaqa 2017 Presentation in Russian. Can we have some more quality? Who is responsible for QA on a project? Visionary talk on what direction testing (as a profession) should develop nowdays.
Любите ли вы велосипеды? Все разработчики любят свои ненаколеночныерешения велосипеды! И мы не исключение. В нашем докладе мы покажем как собирать, сколачивать, вылепливать собственный велосипед так, чтобы на нем потом могла ездить без слёз вся команда, компания, или может весь мир.
Что в докладе будет:
- много Spring Boot-а;
- live coding;
- создание собственного Spring Boot Starter-а;
- Apache Thrift в качестве подопытного кролика.
Чего не будет:
- бенчмарков и сравнений Thrift vs REST vs gRPC vs XXX.
Ты узнаешь 10 конкретных шагов, которые помогут тебе стать качественным тестировщиком. А еще получишь ответы на вопросы:
- Must-have skills Junior`а
- Что учить самостоятельно?
- Нужны ли курсы?
- Что поможет получить работу?
- Как может развиваться карьера?
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
Стратегия тестирования крупного проекта в условиях Agile разработки v2Magneta AI
Евгений Тян, Аскон (Санкт-Петербург)
Ведущий разработкчик компании Аскон г. Санкт-Петербург. В течении 5 лет занимаюсь разработкой ПО для проектирования в области архитектуры и строительства. Обычно это крупные проекты в которых сроки разработки от 1 года. Сферы интересов: гибкие методологии разработки, контроль качества, 3D графика, алгоритмы, хранение данных, data mining, diving =)
В крупном проекте со временем начинает ломаться то, что раньше работало. На текущей итерации исправляем баги внесенные на прошлых, проект буксует. Необходимо постоянно поддерживать качество продукта, ведь он отдается заказчику на каждом Demo. Существует множество программных средств для регрессионного тестирования, но у всех свои ограничения. Мой доклад об опыте разработки и внедрения системы регрессионного тестирования в компании "Аскон", о том как она встроилась в agile процесс, какие проблемы возникали в ее использовании. Приходите!
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQAFest
Поговоримо про найпопулярніші помилки, яких припускаються розробники веб додатків, та як зловмисник може використати їх на свою користь. Охопимо максимальну кількість матеріалу за короткий проміжок часу.
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQAFest
Мы уже разговаривали о self-healing автоматизации, как она работает, какие есть подходы, чем они хороши, плохи и о новом инструменте, который мы разрабатываем в EPAM. Наш продукт завершает стадию POC и настало время поделиться результатами и понять, насколько self-healing автоматизация поможет вашим тестам стать стабильнее? Или наоборот, навредит?... Приходи и узнаешь!
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QAFest
Mobile apps and websites are now the predominant ways that users interact with brands. Research has shown that slow sites and apps lose customer engagement. Despite this, most mobile sites and apps have performance issues that can be easily resolved once diagnosed. In this talk, we will walk through steps to diagnose network performance bottlenecks in mobile services. We'll discuss real-world examples and how they were resolved. Attendees will leave this talk armed with the tools to test, diagnose and resolve the top network performance issues that affect mobile today.
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QAFest
Раньше мы в Badoo фокусировались в основным на ручном тестировании. Получался этакий дедлок мануальной регрессии: не было времени, чтоб писать тесты, потому что много тестировали руками, а много тестировали руками, потому что не было автотестов.
Но мы смогли наладить свою систему автоматизации и процессы, разорвали этот порочный круг и начали писать годные тесты.
В своем докладе я расскажу, как нам удалось сократить ручную регрессию с 90% до 30% рабочего времени, при этом сохранить достойный уровень качества и профессионально вырасти!
QA Fest 2019. Никита Галкин. Как зарабатывать большеQAFest
Вам знаком термин mindshift? Именно его вы испытаете от этого доклада. Он будет не о QA процессах или инструментах, он будет о деньгах и бизнесе, о рисках и коммуникациях. Все это с примерами из Украинского и мировом IT в формате живого общения с аудиторией.
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQAFest
In this talk, I will cover the pain points of the Test Automation process. We will discuss traps, mistakes and crazy decisions that lead to test automation failure and lost budgets.
QA Fest 2019. Сергей Новик. Между мотивацией и выгораниемQAFest
Поговорим о мотивации простым языком, проясним, что стимулирует нас работать лучше. Поисследуем обратную сторону мотивации – выгорание. Выясним, как диагностировать выгорание и не допустить неприятных последствий.
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...QAFest
Для разработки современных программных решений необходимо обеспечить эффективную систему тестирования, которая состоит из большого количества компонентов и задает требования ко всем этапам разработки.
Владимир Никонов, руководитель департамента разработки платформы в Terrasoft, эксперт в области проектирования приложений с опытом работы более 10 лет, поделится экспертным мнением с участниками QA Fest и расскажет:
- об инструментах и процессах на каждом этапе создания и поставки функциональности: от unit-тестов до нефункционального тестирования;
- о требования к инструментам тестирования и компетенциям команды QA-инженеров, которые необходимо выдвигать на каждом этапе тестирования;
- как внедрять современные подходы в существующий проект с минимальными затратами;
- как развивать команду и процессы тестирования в целом.
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...QAFest
Доклад посвящен автоматизации тестирования WEB-приложений с SVG-графикой. В 1-ой части доклада даны короткое описание процессов разрабатываемого приложения и обоснование необходимости применения SVG-графики. Во 2-ой части сделан короткий обзор SVG-графики, показаны основные преимущества/недостатки такого типа графики, сделан обзор основных SVG-поверхностей и рассмотрен процесс их трансформации с помощью матрицы преобразования с разбором ее основных типов. В 3-ей части обозначены основные проблемы автоматизации действий с SVG-графикой, такие как drag’n’drop графических объектов (SVG на SVG), их масштабирование при помощи колесика мышки и выделение ломаный линий. В 4-ой части показаны решения обозначенных проблем с использованием JavaScript.
QA Fest 2019. Иван Крутов. Bulletproof Selenium ClusterQAFest
Browser tests are known to be the flakiest ones. This is partly because browser infrastructure is complicated to maintain. But the second reason is – mainstream browser automation tools such as Selenium server are far from being efficient.
A year ago I have shown Selenoid - a truly efficient replacement of the standard Selenium server. This year I would like to demonstrate how to organize a fault-tolerant and easily scalable Selenium cluster using virtual machines in the cloud. I will start by setting up several Selenoid nodes and configure them to send logs and recorded videos to S3-compatible storage. Then I will run multiple Ggr load balancer instances allowing to use all running Selenoid nodes and organize a single entry point to the cluster. Finally, we'll discuss how to work with VNC and video recording in such a cluster.
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...QAFest
Случалось ли вам запускать автоматизацию на проекте? Испытывать непревзойденное удовольствие от необходимости собеседовать технического специалиста, когда сам не имеешь технического опыта? Если да, то этот доклад для вас.
Мы научимся анализировать сеньорность кандитата, его технический уровень и способность к организации команд. Но самое главное - все это мы сможем достичь без серьезного технического опыта. Будет интересно, заходи на огонек!
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...QAFest
Це буде огляд підходів до побудови програми безпеки програмного забезпечення в команді розробки або кампанії загалом, доповнений висновками з мого власного досвіду виконання практичних та консультаційних проектів в сфері Application Security.
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automationQAFest
Веб-приложения и технологии стремительно развиваются. Мы уже вступили в эру Single Page Application и идем к Progressive Web Application. В большинстве современных проектов идет разделение команд на front-end и back-end, и не только команд, но идет раздельная релизная политика. Это требует более детальных подходов к тестированию front-end. В этом докладе мы рассмотрим кейсы, который есть на практике при тестировании задач front-end и инструменты автоматизации, которые могут решать задачи описанные в этих кейсах: чтение request/response browser network и соответственно мокирование response.
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...QAFest
Проектирование и производство медицинских устройств — это регулируемый бизнес. Государственные органы во всем мире призваны гарантировать безопасность и эффективность медицинских устройств. Несоответствие нормативным требованиям ставит под угрозу жизнь и здоровье человека. Как медицинское регулирование влияет на рабочий процесс компании производителя? Мы поговорим о том, какие вызовы стоят перед тестировщиком медицинского софта, а также какие возможности при этом открываются.
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...QAFest
Про «тестабилити» в последнее время говорят часто, зачастую говорят в рамках способности тестировать тот или иной функционал. А иногда и ограничиваются только возможностью автоматизировать. Существует техника “10P тестируемости”, которая используется для оптимизации процесса разработки, как инструмент анализа и настройки процессов для достижения успеха на проекте в целом. Вот об этом и поговорим.
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях ITQAFest
Твою гениальность не замечает никто кроме мамы? Идеи и проекты нравятся только твоему коту? Одногруппники уже руководители подразделений, а ты завис между middle и senior? Пришло время найти баги не только на проекте, но и в своей голове! Прокачаем коммуникативные навыки:)
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложенииQAFest
С каждым годом мобильных приложений становится все больше, но мало кто обращает внимание на безопасность этого приложения, когда оно находится в процессе разработки. Так как бизнес нацелен только на то, чтобы оторвать большую часть пользователей, которые будут использовать это приложение, они обращают внимание на конфиденциальность своих клиентов в последнюю очередь. В своем докладе я расскажу как мануал QA может проверить мобильное приложение на уязвимости и найти топовые дыры по рейтингу OWASP. В презентации будут использованы такие тулзы Santoku Linux + Genymotion.
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...QAFest
Маючи досвід роботи з іноземними замовниками і колегами, а також вивчаючи культурні особливості жителів інших країн, ми якось поставили собі за мету з'ясувати, якими українців бачать іноземці, чи потрібно їм підлаштовуватись під нашу манеру спілкування, чи є щось, що вони зовсім не можуть прийняти.
Поділимося з вами результатами цієї затії, а також поговоримо про:
- те, що потрібно знати українцям про свої софт скіли,
- то, як відрізняються софт скіли українців і жителів кількох інших країн,
- важливість софт скілів для успішних комунікацій з іноземними колегами,
- важливість софт скілів для просування по кар'єрі.
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...QAFest
Обычно в процессе нагрузочного тестирование необходимые app-side метрики(response time, throughput, ..) можно получить прямо в генераторе нагрузки. Мы шлем запрос, получаем респонс и зачастую время выполнения запроса это и есть то что нам нужно.
Но что если после того как сервер отдал вам ответ происходит еще ряд асинхронных операций, время выполнения которых нам необходимо проверить? Как замерить время выполнения этих запросов? Какая часть системы является узким местом в производительности?
В докладе рассмотрим какие челенжи появляются в такой ситуации и как их можно решить.
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22QAFest
Хотели бы вы, чтобы в Украине происходило больше QA ивентов? Чувствуете, что их не хватает?
Знаете, кто может это изменить? - Вы!
Я поделюсь подходами, которые мы использовали при организации QA хакатонов в Wix, которыми завтра вы сможете воспользоваться для создания вашего крутого ивента!
10. Чем плох @FindBy?
public class MyPage {
@FindBy(xpath = "//div[1]/div[2]/input[@name=bd]")
public WebElement birthday;
}
@Test {
MyPage page = new MyPage(webdriver);
birthday.sendKeys("19.03.1955");
}
12. Что, если изменится не это:
public class MyPage {
@FindBy(xpath = "//div[1]/div[2]/input[@name=bd]")
public WebElement birthday;
}
@Test {
MyPage page = new MyPage(webdriver);
birthday.sendKeys("19.03.1955");
}
13. А вот это:
public class MyPage {
@FindBy(xpath = "//div[1]/div[2]/input[@name=bd]")
public WebElement birthday;
}
@Test {
MyPage page = new MyPage(webdriver);
birthday.sendKeys("19.03.1955");
}
1. Открыть календарь
2. Выбрать год
3. Выбрать месяц...
Упс! Придётся
менять кучу тестов.
14. данные и операции с ними.
Объект - это поведение.
Объект - это НЕ
Настоящие пэдж-объекты
15. Решение: поля -> методы
public class MyPage {
public void selectBirthday(String date) {
...
}
}
@Test {
page.selectBirthday("19.03.1955");
}
● Публичный только метод
● Внутри - делай что хочешь
Это инкапсуляция, братан!
16. Можно приватное поле с @FindBy:
public class MyPage {
@FindBy(xpath = "//div[1]/div[2]/input[@name=bd]")
private WebElement birthday;
public void selectBirthday(String date) {
...
}
}
17. Можно приватное поле By:
public class MyPage {
private By birthday = By.xpath(“...”);
public void selectBirthday(String date) {
$(birthday).sendKeys(date);
}
}
18. Можно приватное поле String:
public class MyPage {
private String birthday = “input[name=bday]”;
public void selectBirthday(String date) {
$(birthday).sendKeys(date);
}
}
20. public class MyPage {
public void selectBirthday(String date) {
$(“#birthday”).sendKeys(date);
}
}
А что,
так можно было?
21. Какие проблемы должен решать ПО
Плохие локаторы1.
public class MyPage {
@FindBy(xpath = "//div[1]/div[2]/input[@name=bd]")
private WebElement birthday;
}
24. Плохой процесс:
● Разрабы не пишут тесты
○ Нет юнит-тестов
● Через UI тестируется много кейсов
○ (но далеко не все!)
● Тесты медленные & нестабильные
○ (хотим отчёты и рипортпорталы)
● QA не сотрудничают с разрабами
Экономически эффективный процесс тестирования
28. Поговори с разрабом!
В чём он заинтересован?
● Он не любит получать по рукам
● Он не хочет, чтобы его фича сломалась
● Он не мечтает фиксить багу все выходные
29. Поговори с разрабом!
В чём он заинтересован?
● Он не любит получать по рукам
● Он не хочет, чтобы его фича сломалась
● Он не мечтает фиксить багу все выходные
Крошка Енот
Вы можете
помочь
друг другу!
32. Снова плохой процесс
● Нет юнит-тестов
● UI-тестами покрываются многие комбинации
○ Сложные сценарии
○ Медленные сценарии
○ Трудновоспроизводимые сценарии
● Testability на дне
○ Медленный тестовый стенд
● Тесты бегут 12 часов
33. ●
Снова плохой процесс
● Нет юнит-тестов
● UI-тестами покрываются многие комбинации
○ Сложные сценарии
○ Медленные сценарии
○ Трудновоспроизводимые сценарии
● Testability на дне
○ Медленный тестовый стенд
● Почему бы не запустить
параллельно?
● В 100500 потоков?
● Ферма, йопта!
● Клауд, йопта!
● TestNG, йопта!
● Я теперь SDET, йопта!
34.
35. При правильном процессе:
● Юнит-тестов много
● UI-тестов мало
● Они бегут быстро
Экономически эффективный
процесс тестирования
Test Pyramid
47. Это не про отчёты
Это про взаимодействие
с заказчиком
BDD
Bullshit driven development
48. BDD обещает Красивые отчёты
Менеджер надеется
решить
Отсутствие доверия к команде.
Непрозрачный рабочий процесс.
Решает ли BDD
эту проблему?
Нет.
Доверия как не было, так и нет.
BDD: Болезни vs. симптомы
49. BDD обещает Красивые отчёты
Менеджер надеется
решить
Показать своему боссу /
заказчику, что "у нас всё круто",
работа кипит.
Какая проблема
на самом деле
Этот менеджер - промежуточный
человек, ничего полезного в
проект не привносит.
Решает ли BDD
эту проблему?
Нет.
Гнать таких в шею - вот решение.
50. BDD обещает
тесты смогут писать даже
нетехнические люди
Менеджер надеется
решить
Технарей мало, они всё не
успевают. Хочется часть работы
переложить на гуманитариев.
Решает ли BDD
эту проблему?
Нет.
Вся работа по поддержке степов
и прочей БелиБерДы по-любому
ложится на плечи технарей.P.S. Кстати, толковых гуманитариев тоже мало.
А бестолковые только мешают.
60. Разница между JUnit и TestNG
JUnit TestNG
Новый инстанс перед
каждым тестом
Один инстанс на все
тест-методы
JUnit pain
61. JUnit TestNG
Created MyTest
Created MyTest
Created MyTest
public class MyTest {
public MyTest() {
System.out.println(“Created MyTest”);
}
@Test public void testA() {}
@Test public void testB() {}
@Test public void testC() {}
}
Created MyTest
62. JUnit TestNG
public class MyTest {
Foo foo = mock(Foo.class);
Counter cnt = new Counter(0);
}
public class MyTest {
Foo foo;
Counter cnt;
@BeforeEach
public void setUp() {
foo = mock(Foo.class);
cnt = new Counter(0);
}
}
Почему это важно?
Риск зависимых тестов!
63. Фичи TestNG
● Конфигурация в XML
● Порядок тестов
● Зависимые тесты
(которых нет в JUnit)
Эти фичи - ЗЛО!
Не используй их, братан!
65. Бог с вами, хотите - используйте TestNG.
Но не называйте его “тулом для продвинутого
интеграционного тестирования”.
Он для неэффективного, неуправляемого,
медленного, нестабильного
интеграционного тестирования.
Arrange, mazafaka!