SlideShare a Scribd company logo
1 of 35
Download to read offline
“Outside In” подход к
тестированию веб-
приложения 🤘
Александр Вишняков
Full Stack Web Engineer
https://blog.maddevs.io
https://maddevs.io
Коротко о докладе
● Что такое Outside-In?
● Что такое Inside-Out?
● Какие + и - в Outside-In подходе
● Какие + и - в Inside-Out подходе
● F.I.R.S.T (бонус)
Что такое Outside-In?
✓ #London School
✓ #Top-Down
✓ #Mockist TDD
✓ #YAGNI
Outside-In и группы заинтересованных
✓ Principals - Люди, которые покупают ваше программное
обеспечение - самый важный участник.
✓ End Users (Конечные пользователи) - Люди, которые
взаимодействуют с вашим продуктом. Они испытывают ваше
программное обеспечение в реальном мире.
✓ Partners (Партнеры) - Люди, которые заставляют ваш продукт
работать в реальной жизни, такие как рабочие группы, а
также деловые партнеры и системные интеграторы.
✓ Insiders (Инсайдеры) - Люди в вашей компании, которые
имеют некоторое влияние на то, как ваша команда
разрабатывает программное обеспечение.
Mockist TDD (Mock Objects)
Термин «фиктивные объекты» (Mock Objects) стал популярным
для описания объектов особого случая, которые имитируют
реальные объекты для тестирования. Большинство языковых сред
теперь имеют каркасы, которые позволяют легко создавать
фиктивные объекты. Однако часто не осознают, что фиктивные
объекты - это всего лишь одна из форм объекта тестирования в
особом случае, которая позволяет использовать другой стиль
тестирования. Они поощряют тестирование, основанное на
проверке поведения.
© Мартин Фаулер
YAGNI - означает “Вам это не понадобится”
Архитектурная пирамида и Batman YAGNI
Поиск решений
✓ Определяемся с внешним видом нашей системы
✓ Выделяем ее каркас (очертания)
Outside-In
✓ Определяемся с зависимостями
Outside-In
Outside-In
✓ Реализуем самый минимум - это каркас
✓ Пишем Приемочные Тесты
✓ Все что не готово - мокается (все что заштриховано)
Outside-In
✓ Реализуем часть накрывающую багажник
○ (соблюдая требования потребителя)
✓ Пишем Приемочные тесты
Outside-In
✓ Добавляем основу на которую крепится каркас
✓ Пишем Приемочные Тесты
Outside-In
✓ Добавляем оси с колесами
✓ Знаем что нам нужно 4 колеса (2 слева и 2 справа) и опять
пишем Приемочные Тесты
Outside-In
✓ Добавляем 4 двери (2 слева и 2 справа)
✓ И пишем Приемочные Тесты
Outside-In
✓ Добавляем 8 стекл (лобовое, заднее, 3 лева и 3 справа)
✓ И пишем Приемочные Тесты
Outside-In
✓ Ну и так далее, с постепенной заменой замоканных
зависимостей на реальные реализации
✓ И пишем Приемочные Тесты для каждой новой реализации.
✓ И в итоге готовая система, которая соответствует
потребительским требованиям
Почему Приемочные тесты?
✓ Что вы делаете руками когда добавляете интерфейсные части?
○ Кликаете, скролите, вводите данные, скачиваете, загружаете
✓ Используя GHERKIN вы описываете тесты понятные Стек-
Холдерам
✓ В Web, разработке прежде всего вы взаимодействуете с
браузером!
✓ Так автоматизируйте рутинные ручные тесты!
✓ Это ваш QA на стероидах
Почему не Юнит и не Функциональные?
✓ Так как большая часть кода будет замокана
✓ Не ясны до конца требования по глубине функционала
✓ Все уточняется по мере движения в глубь
✓ Частые рефакторинги и изменение кода (замучаетесь менять все
три вида тестов). Увеличение времени внесения изменений.
+ и - Outside-In
Плюсы:
+ Быстрый и понятный для клиента результат (так как начинаете с UI)
+ Детектирование подходящей структуры данных для получения из API
+ Меньше переделок бекендерам
+ Быстрее вносятся изменения
+ Изменяются только приемочные тесты (QA-на стероидах)
Минусы:
﹣ Недостаточный опыт команды = появление 💩-Кода
﹣ Отсутствие первое время юнит и функциональных тестов
Плюсы:
+ Фронтенд диктует требования для бекенда
+ Меньше проблем для фронтендера
Минусы:
﹣ Бекенд может значительно отставать от фронтенда
﹣ Больше нагрузки на фронтенд
﹣ Злой бекендер
+ и - Outside-In
Что такое Inside-Out?
✓ #Classic School
✓ #Bottom-Up
✓ #Classic TDD
+ и - Inside-Out
Плюсы:
﹢ Следование практикам TDD
﹢ Наличие Юнит и Функциональных тестов
﹢ Применим в условиях, когда нет очертания системы
﹢ Работает когда не понятно взаимодействие компонента с системой
Минусы:
﹣ Проблема с согласованием UI и бекенда
﹣ Нет полной картины системы
﹣ Чревато твиками, переделками и так далее
 Inside-Out (плохой случай)
 Inside-Out (плохой случай)
На фронтенде ожидаешь ……………………. а бекендер тебе выдает
Инструменты тестирования node.js проекта
● Cucumber.js
● Puppeteer
○ Chrome
○ Firefox
○ Microsoft Edge
Puppeteer + Chrome
Puppeteer + Microsoft Edge
Puppeteer + Firefox github.com/puppeteer/juggler
F.I.R.S.T (Алфавит успешных тестов)
F- (Fast as Possible)
Тест должен проходить настолько быстро,
насколько это возможно
F.I.R.S.T (Алфавит успешных тестов)
I- (Independent)
Тест никаким образом не должен зависеть от:
● Порядка запуска тестов/сценариев
● От других тестов, что подготавливают “почву”
F.I.R.S.T (Алфавит успешных тестов)
R- (Repeatable)
Тест можно запускать столько раз, сколько нужно,
не переживая за:
● кол-ва запусков
● исчерпанные ресурсы
● наличие каких либо данных
● от ручного запуска каких либо моковых и не очень сервисов
F.I.R.S.T (Алфавит успешных тестов)
S- (Self-validating)
Тест должен быть зеленым по срабатыванию одного условия проверки
Условие не должно:
● Выдавать false-позитивы при изменении кода или компонентов на
странице
● Однозначно гарантировать корректность условия. Если все ОК - то
действительно все ОК.
● Быть постоянным при запуске несколько раз
F.I.R.S.T (Алфавит успешных тестов)
T- (Timely)
Тесты нужно писать вовремя
● Тест/Сценарий написанный позже, чем надо, будет давать
результаты тоже позже.
● Без одного из видов тестов, вы однозначно допустите ошибку.
○ Как бы вы не проверяли и какие бы вы ни были бы внимательными.
Шпасибо! 🙏
github.com/CyberLight
https://medium.com/@cyberlight
maddevs.io
blog.maddevs.io
Александр Вишняков
Full Stack Web Engineer
C

More Related Content

What's hot

Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Mail.ru Group
 
Бесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoITБесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoITGoIT
 
Тестируем развитие тестировщика
Тестируем развитие тестировщикаТестируем развитие тестировщика
Тестируем развитие тестировщикаSQALab
 
Как аналитика помогает тестировщику
Как аналитика помогает тестировщикуКак аналитика помогает тестировщику
Как аналитика помогает тестировщикуSQALab
 
ITBrunch: неполиткорректный рассказ про поиск тестировщиков
ITBrunch: неполиткорректный рассказ про поиск тестировщиковITBrunch: неполиткорректный рассказ про поиск тестировщиков
ITBrunch: неполиткорректный рассказ про поиск тестировщиковNatalya Rukol
 
Скандалы, расследования, тестирование
Скандалы, расследования, тестированиеСкандалы, расследования, тестирование
Скандалы, расследования, тестированиеSQALab
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какSQALab
 
Подводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияПодводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияSQALab
 
Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?SQALab
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Serhiy Kalinets
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированиюAPostovalova
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированиюAPostovalova
 
QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?
QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?
QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?QAFest
 
Оптимизируем тест кейсы
Оптимизируем тест кейсыОптимизируем тест кейсы
Оптимизируем тест кейсыSQALab
 
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...QAFest
 
Построение процессов тестирования на новом проекте: как выбрать правильный путь
Построение процессов тестирования на новом проекте: как выбрать правильный путьПостроение процессов тестирования на новом проекте: как выбрать правильный путь
Построение процессов тестирования на новом проекте: как выбрать правильный путьSQALab
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрикRoman Ivliev
 
SQA Days 10: Фишки просветлённых тест-менеджеров
SQA Days 10: Фишки просветлённых тест-менеджеровSQA Days 10: Фишки просветлённых тест-менеджеров
SQA Days 10: Фишки просветлённых тест-менеджеровNatalya Rukol
 

What's hot (20)

Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
 
Бесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoITБесплатный вебинар по QA Александра Кузняка от проекта GoIT
Бесплатный вебинар по QA Александра Кузняка от проекта GoIT
 
Тестируем развитие тестировщика
Тестируем развитие тестировщикаТестируем развитие тестировщика
Тестируем развитие тестировщика
 
Как аналитика помогает тестировщику
Как аналитика помогает тестировщикуКак аналитика помогает тестировщику
Как аналитика помогает тестировщику
 
ITBrunch: неполиткорректный рассказ про поиск тестировщиков
ITBrunch: неполиткорректный рассказ про поиск тестировщиковITBrunch: неполиткорректный рассказ про поиск тестировщиков
ITBrunch: неполиткорректный рассказ про поиск тестировщиков
 
Скандалы, расследования, тестирование
Скандалы, расследования, тестированиеСкандалы, расследования, тестирование
Скандалы, расследования, тестирование
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и как
 
Подводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияПодводные камни при построении процесса тестирования
Подводные камни при построении процесса тестирования
 
Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
Why it is not working
Why it is not workingWhy it is not working
Why it is not working
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированию
 
Обучение тестированию
Обучение тестированиюОбучение тестированию
Обучение тестированию
 
QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?
QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?
QA Fest 2017. Игорь Хрол. Кто должен писать автоматические тесты?
 
Оптимизируем тест кейсы
Оптимизируем тест кейсыОптимизируем тест кейсы
Оптимизируем тест кейсы
 
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
 
Построение процессов тестирования на новом проекте: как выбрать правильный путь
Построение процессов тестирования на новом проекте: как выбрать правильный путьПостроение процессов тестирования на новом проекте: как выбрать правильный путь
Построение процессов тестирования на новом проекте: как выбрать правильный путь
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрик
 
SQA Days 10: Фишки просветлённых тест-менеджеров
SQA Days 10: Фишки просветлённых тест-менеджеровSQA Days 10: Фишки просветлённых тест-менеджеров
SQA Days 10: Фишки просветлённых тест-менеджеров
 

Similar to "Outside In". Web application testing.

Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17OdessaFrontend
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
Тест-план и исследовательское тестирование
Тест-план и исследовательское тестированиеТест-план и исследовательское тестирование
Тест-план и исследовательское тестированиеVasiliy Burov
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Fwdays
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для MacКонстантин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac404fest
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проектаMagneta AI
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проектаMagneta AI
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenchesGleb Rybalko
 

Similar to "Outside In". Web application testing. (20)

Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
Тест-план и исследовательское тестирование
Тест-план и исследовательское тестированиеТест-план и исследовательское тестирование
Тест-план и исследовательское тестирование
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
BDD
BDDBDD
BDD
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для MacКонстантин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Black box testing
Black box testingBlack box testing
Black box testing
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проекта
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проекта
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 

More from Mad Devs

Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Mad Devs
 
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество Mad Devs
 
Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Devs
 
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Devs
 
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy FedorenkoMad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy FedorenkoMad Devs
 
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Devs
 
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMaв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMad Devs
 
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоЛайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоMad Devs
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Devs
 
Flutter vs Native App Development
Flutter vs Native App DevelopmentFlutter vs Native App Development
Flutter vs Native App DevelopmentMad Devs
 
Mad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companiesMad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companiesMad Devs
 
The paradox of choice in design
The paradox of choice in designThe paradox of choice in design
The paradox of choice in designMad Devs
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners Mad Devs
 
How to hire freelancers
How to hire freelancersHow to hire freelancers
How to hire freelancersMad Devs
 
Ethereum blockchain
Ethereum blockchainEthereum blockchain
Ethereum blockchainMad Devs
 
Asynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use itAsynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use itMad Devs
 
Ethereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактовEthereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактовMad Devs
 
Why we sleep. Michael Ivashenko
Why we sleep. Michael IvashenkoWhy we sleep. Michael Ivashenko
Why we sleep. Michael IvashenkoMad Devs
 
Удаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитикаУдаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитикаMad Devs
 
Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
 Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к... Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...Mad Devs
 

More from Mad Devs (20)

Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
 
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество
 
Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101.
 
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
 
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy FedorenkoMad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
 
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
 
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMaв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
 
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоЛайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrain
 
Flutter vs Native App Development
Flutter vs Native App DevelopmentFlutter vs Native App Development
Flutter vs Native App Development
 
Mad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companiesMad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companies
 
The paradox of choice in design
The paradox of choice in designThe paradox of choice in design
The paradox of choice in design
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners
 
How to hire freelancers
How to hire freelancersHow to hire freelancers
How to hire freelancers
 
Ethereum blockchain
Ethereum blockchainEthereum blockchain
Ethereum blockchain
 
Asynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use itAsynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use it
 
Ethereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактовEthereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактов
 
Why we sleep. Michael Ivashenko
Why we sleep. Michael IvashenkoWhy we sleep. Michael Ivashenko
Why we sleep. Michael Ivashenko
 
Удаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитикаУдаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитика
 
Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
 Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к... Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
 

"Outside In". Web application testing.

  • 1. “Outside In” подход к тестированию веб- приложения 🤘 Александр Вишняков Full Stack Web Engineer https://blog.maddevs.io https://maddevs.io
  • 2. Коротко о докладе ● Что такое Outside-In? ● Что такое Inside-Out? ● Какие + и - в Outside-In подходе ● Какие + и - в Inside-Out подходе ● F.I.R.S.T (бонус)
  • 3. Что такое Outside-In? ✓ #London School ✓ #Top-Down ✓ #Mockist TDD ✓ #YAGNI
  • 4. Outside-In и группы заинтересованных ✓ Principals - Люди, которые покупают ваше программное обеспечение - самый важный участник. ✓ End Users (Конечные пользователи) - Люди, которые взаимодействуют с вашим продуктом. Они испытывают ваше программное обеспечение в реальном мире. ✓ Partners (Партнеры) - Люди, которые заставляют ваш продукт работать в реальной жизни, такие как рабочие группы, а также деловые партнеры и системные интеграторы. ✓ Insiders (Инсайдеры) - Люди в вашей компании, которые имеют некоторое влияние на то, как ваша команда разрабатывает программное обеспечение.
  • 5. Mockist TDD (Mock Objects) Термин «фиктивные объекты» (Mock Objects) стал популярным для описания объектов особого случая, которые имитируют реальные объекты для тестирования. Большинство языковых сред теперь имеют каркасы, которые позволяют легко создавать фиктивные объекты. Однако часто не осознают, что фиктивные объекты - это всего лишь одна из форм объекта тестирования в особом случае, которая позволяет использовать другой стиль тестирования. Они поощряют тестирование, основанное на проверке поведения. © Мартин Фаулер
  • 6. YAGNI - означает “Вам это не понадобится”
  • 9. ✓ Определяемся с внешним видом нашей системы ✓ Выделяем ее каркас (очертания) Outside-In
  • 10. ✓ Определяемся с зависимостями Outside-In
  • 11. Outside-In ✓ Реализуем самый минимум - это каркас ✓ Пишем Приемочные Тесты ✓ Все что не готово - мокается (все что заштриховано)
  • 12. Outside-In ✓ Реализуем часть накрывающую багажник ○ (соблюдая требования потребителя) ✓ Пишем Приемочные тесты
  • 13. Outside-In ✓ Добавляем основу на которую крепится каркас ✓ Пишем Приемочные Тесты
  • 14. Outside-In ✓ Добавляем оси с колесами ✓ Знаем что нам нужно 4 колеса (2 слева и 2 справа) и опять пишем Приемочные Тесты
  • 15. Outside-In ✓ Добавляем 4 двери (2 слева и 2 справа) ✓ И пишем Приемочные Тесты
  • 16. Outside-In ✓ Добавляем 8 стекл (лобовое, заднее, 3 лева и 3 справа) ✓ И пишем Приемочные Тесты
  • 17. Outside-In ✓ Ну и так далее, с постепенной заменой замоканных зависимостей на реальные реализации ✓ И пишем Приемочные Тесты для каждой новой реализации. ✓ И в итоге готовая система, которая соответствует потребительским требованиям
  • 18. Почему Приемочные тесты? ✓ Что вы делаете руками когда добавляете интерфейсные части? ○ Кликаете, скролите, вводите данные, скачиваете, загружаете ✓ Используя GHERKIN вы описываете тесты понятные Стек- Холдерам ✓ В Web, разработке прежде всего вы взаимодействуете с браузером! ✓ Так автоматизируйте рутинные ручные тесты! ✓ Это ваш QA на стероидах
  • 19. Почему не Юнит и не Функциональные? ✓ Так как большая часть кода будет замокана ✓ Не ясны до конца требования по глубине функционала ✓ Все уточняется по мере движения в глубь ✓ Частые рефакторинги и изменение кода (замучаетесь менять все три вида тестов). Увеличение времени внесения изменений.
  • 20. + и - Outside-In Плюсы: + Быстрый и понятный для клиента результат (так как начинаете с UI) + Детектирование подходящей структуры данных для получения из API + Меньше переделок бекендерам + Быстрее вносятся изменения + Изменяются только приемочные тесты (QA-на стероидах) Минусы: ﹣ Недостаточный опыт команды = появление 💩-Кода ﹣ Отсутствие первое время юнит и функциональных тестов
  • 21. Плюсы: + Фронтенд диктует требования для бекенда + Меньше проблем для фронтендера Минусы: ﹣ Бекенд может значительно отставать от фронтенда ﹣ Больше нагрузки на фронтенд ﹣ Злой бекендер + и - Outside-In
  • 22. Что такое Inside-Out? ✓ #Classic School ✓ #Bottom-Up ✓ #Classic TDD
  • 23. + и - Inside-Out Плюсы: ﹢ Следование практикам TDD ﹢ Наличие Юнит и Функциональных тестов ﹢ Применим в условиях, когда нет очертания системы ﹢ Работает когда не понятно взаимодействие компонента с системой Минусы: ﹣ Проблема с согласованием UI и бекенда ﹣ Нет полной картины системы ﹣ Чревато твиками, переделками и так далее
  • 25.  Inside-Out (плохой случай) На фронтенде ожидаешь ……………………. а бекендер тебе выдает
  • 26. Инструменты тестирования node.js проекта ● Cucumber.js ● Puppeteer ○ Chrome ○ Firefox ○ Microsoft Edge
  • 29. Puppeteer + Firefox github.com/puppeteer/juggler
  • 30. F.I.R.S.T (Алфавит успешных тестов) F- (Fast as Possible) Тест должен проходить настолько быстро, насколько это возможно
  • 31. F.I.R.S.T (Алфавит успешных тестов) I- (Independent) Тест никаким образом не должен зависеть от: ● Порядка запуска тестов/сценариев ● От других тестов, что подготавливают “почву”
  • 32. F.I.R.S.T (Алфавит успешных тестов) R- (Repeatable) Тест можно запускать столько раз, сколько нужно, не переживая за: ● кол-ва запусков ● исчерпанные ресурсы ● наличие каких либо данных ● от ручного запуска каких либо моковых и не очень сервисов
  • 33. F.I.R.S.T (Алфавит успешных тестов) S- (Self-validating) Тест должен быть зеленым по срабатыванию одного условия проверки Условие не должно: ● Выдавать false-позитивы при изменении кода или компонентов на странице ● Однозначно гарантировать корректность условия. Если все ОК - то действительно все ОК. ● Быть постоянным при запуске несколько раз
  • 34. F.I.R.S.T (Алфавит успешных тестов) T- (Timely) Тесты нужно писать вовремя ● Тест/Сценарий написанный позже, чем надо, будет давать результаты тоже позже. ● Без одного из видов тестов, вы однозначно допустите ошибку. ○ Как бы вы не проверяли и какие бы вы ни были бы внимательными.