SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Real life unit testsReal life unit tests
,Эмуляция БД,Эмуляция БД SOASOA .и т д.и т д..
Andrei SolntsevAndrei Solntsev
-Как показывают юнит-Как показывают юнит
тестытесты
 Очки в боулингОчки в боулинг
 КалькуляторКалькулятор
 ТреугольникТреугольник
assertEquals(5,
Triangle.hypotenuse(3, 4));
В реальной жизниВ реальной жизни
Я не программирую боулингЯ не программирую боулинг!!
Моё ПОМоё ПО другоедругое
 -Юнит тесты-Юнит тесты не подходятне подходят для моих проектовдля моих проектов
?В чём проблема?В чём проблема
 Базы данныхБазы данных
 -Веб сервисы-Веб сервисы
 EJBEJB
 ……
Внешние
зависимости
?Какое решение?Какое решение
int: 3, 4
int: 5
Client
code
code
db
jdbc
Юнит-тест
тестирует
только это А это надо
эмулировать
ЭмуляторыЭмуляторы
Требования:
• При скорости ветра 100 км/ч
• Подъёмная сила крыла должна быть 150 кН
Как бы вы стали это тестировать?
• Собрать и запустить ВЕСЬ самолёт
Тестируемый объект
Эмулятор ветра
(mocked wind)
• Протестировать крыло отдельно
• Дорого
• Долго
• Трудно найти причину проблемы
• Не всегда возможно!
ЭмуляторыЭмуляторы
Эмуляторы в кодеЭмуляторы в коде
Class Wing {
WindService wind = new WindServiceImpl();
public void run() {
…
wind.blow();
…
}
}
Wing wing = new Wing();
wing.wind = mock(WindService.class);
when(wind.getSpeed()).thenReturn(100);
wing.run();
assertThat(wing.getLift(), equalTo(150));
Код системы:
Юнит-тест:
В КОД !!!!!
НаблюдашкиНаблюдашки
• Не всегда тесты впереди кода
• В юнит-тестах НЕЛЬЗЯ использовать БД, SOA и т.д.
• Чтобы потестировать, иногда надо порефакторить
• Недостаточно одного вида тестирования
http://mockito.org
http://www.acgavin.com/hamcrest-and-junit4-4
Real-life unit tests

Weitere ähnliche Inhalte

Andere mochten auch

Functional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalFunctional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - final
Andrei Solntsev
 

Andere mochten auch (12)

Static website-generators
Static website-generatorsStatic website-generators
Static website-generators
 
The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16
 
50 оттенков play!
50 оттенков play!50 оттенков play!
50 оттенков play!
 
The fast and the continuous (SeleniumCamp 2014)
The fast and the continuous (SeleniumCamp 2014)The fast and the continuous (SeleniumCamp 2014)
The fast and the continuous (SeleniumCamp 2014)
 
Functional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalFunctional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - final
 
Android (Devclub.eu, 30.03.2010)
Android (Devclub.eu, 30.03.2010)Android (Devclub.eu, 30.03.2010)
Android (Devclub.eu, 30.03.2010)
 
Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)
 
Extreme banking
Extreme bankingExtreme banking
Extreme banking
 
Good test = simple test (with selenide)
Good test = simple test (with selenide)Good test = simple test (with selenide)
Good test = simple test (with selenide)
 
Liquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsLiquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOps
 
Bullshit driven development
Bullshit driven developmentBullshit driven development
Bullshit driven development
 
The Dangers of Cucumber
The Dangers of CucumberThe Dangers of Cucumber
The Dangers of Cucumber
 

Ähnlich wie Real-life unit tests

Confet&QA Обходные пути в автоматизированном тестировании
Confet&QA Обходные пути в автоматизированном тестированииConfet&QA Обходные пути в автоматизированном тестировании
Confet&QA Обходные пути в автоматизированном тестировании
Dmytro Zharii
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
Iosif Itkin
 
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Ontico
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QAFest
 
Особенности тестирования открытого ПО
Особенности тестирования открытого ПООсобенности тестирования открытого ПО
Особенности тестирования открытого ПО
Alexey Lyanguzov
 

Ähnlich wie Real-life unit tests (20)

Confet&QA Обходные пути в автоматизированном тестировании
Confet&QA Обходные пути в автоматизированном тестированииConfet&QA Обходные пути в автоматизированном тестировании
Confet&QA Обходные пути в автоматизированном тестировании
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
What Tests Are For?
What Tests Are For?What Tests Are For?
What Tests Are For?
 
Работа с требованиями в Интернет стартапе
Работа с требованиями в Интернет стартапеРабота с требованиями в Интернет стартапе
Работа с требованиями в Интернет стартапе
 
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
 
Gaperton - Software People 2012
Gaperton - Software People 2012Gaperton - Software People 2012
Gaperton - Software People 2012
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
 
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
 
Математика для тестировщиков
Математика для тестировщиковМатематика для тестировщиков
Математика для тестировщиков
 
Особенности тестирования открытого ПО
Особенности тестирования открытого ПООсобенности тестирования открытого ПО
Особенности тестирования открытого ПО
 
Continuous integration with TeamCity
Continuous integration with TeamCityContinuous integration with TeamCity
Continuous integration with TeamCity
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
Специфика тестирования проектов с открытым исходным кодом
Специфика тестирования проектов с открытым исходным кодомСпецифика тестирования проектов с открытым исходным кодом
Специфика тестирования проектов с открытым исходным кодом
 
Сергей Скроботов "Баннерокрутилка: разбираем на куски"
Сергей Скроботов "Баннерокрутилка: разбираем на куски"Сергей Скроботов "Баннерокрутилка: разбираем на куски"
Сергей Скроботов "Баннерокрутилка: разбираем на куски"
 

Mehr von Andrei Solntsev

Mehr von Andrei Solntsev (9)

Тройничок: Selenide для Web, Android и iOS
Тройничок: Selenide для Web, Android и iOSТройничок: Selenide для Web, Android и iOS
Тройничок: Selenide для Web, Android и iOS
 
Flaky tests. Метод.
Flaky tests. Метод. Flaky tests. Метод.
Flaky tests. Метод.
 
Батл: Тесты или не тесты?
Батл: Тесты или не тесты?Батл: Тесты или не тесты?
Батл: Тесты или не тесты?
 
Как получить чёрный пояс по программированию
Как получить чёрный пояс по программированиюКак получить чёрный пояс по программированию
Как получить чёрный пояс по программированию
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
 
Liquibase: Enterprise Edition
Liquibase: Enterprise EditionLiquibase: Enterprise Edition
Liquibase: Enterprise Edition
 
Kiss.devclub ee.est
Kiss.devclub ee.estKiss.devclub ee.est
Kiss.devclub ee.est
 
Evolutionary Database Design
Evolutionary Database DesignEvolutionary Database Design
Evolutionary Database Design
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In Java
 

Kürzlich hochgeladen

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 

Kürzlich hochgeladen (9)

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 

Real-life unit tests

  • 1. Real life unit testsReal life unit tests ,Эмуляция БД,Эмуляция БД SOASOA .и т д.и т д.. Andrei SolntsevAndrei Solntsev
  • 2. -Как показывают юнит-Как показывают юнит тестытесты  Очки в боулингОчки в боулинг  КалькуляторКалькулятор  ТреугольникТреугольник assertEquals(5, Triangle.hypotenuse(3, 4));
  • 3. В реальной жизниВ реальной жизни Я не программирую боулингЯ не программирую боулинг!! Моё ПОМоё ПО другоедругое  -Юнит тесты-Юнит тесты не подходятне подходят для моих проектовдля моих проектов
  • 4. ?В чём проблема?В чём проблема  Базы данныхБазы данных  -Веб сервисы-Веб сервисы  EJBEJB  …… Внешние зависимости
  • 5. ?Какое решение?Какое решение int: 3, 4 int: 5 Client code code db jdbc Юнит-тест тестирует только это А это надо эмулировать
  • 6. ЭмуляторыЭмуляторы Требования: • При скорости ветра 100 км/ч • Подъёмная сила крыла должна быть 150 кН Как бы вы стали это тестировать?
  • 7. • Собрать и запустить ВЕСЬ самолёт Тестируемый объект Эмулятор ветра (mocked wind) • Протестировать крыло отдельно • Дорого • Долго • Трудно найти причину проблемы • Не всегда возможно! ЭмуляторыЭмуляторы
  • 8. Эмуляторы в кодеЭмуляторы в коде Class Wing { WindService wind = new WindServiceImpl(); public void run() { … wind.blow(); … } } Wing wing = new Wing(); wing.wind = mock(WindService.class); when(wind.getSpeed()).thenReturn(100); wing.run(); assertThat(wing.getLift(), equalTo(150)); Код системы: Юнит-тест:
  • 10. НаблюдашкиНаблюдашки • Не всегда тесты впереди кода • В юнит-тестах НЕЛЬЗЯ использовать БД, SOA и т.д. • Чтобы потестировать, иногда надо порефакторить • Недостаточно одного вида тестирования