SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Test Driven Development
#kranonit S11E01
13.07.2013
Andrey Ponomarev
linkedin.com/in/AndreyPonomarev
Andrey.Ponomarev@gmail.com
Обо мне
Андрей Пономарёв
● 11 лет программирую за деньги
● Sun Certified Java Programmer
● Team Lead
linkedin.com/in/AndreyPonomarev
Disclaimer #1
Это не тренинг по Java!
ЦЕЛЕВАЯ АУДИТОРИЯ
● Junior и Middle разработчики,
● с опытом работы с Java больше 1 года,
● с пониманием принципов ООП,
● уверенным владением IDE
● элементарным знанием английского.
Disclaimer #2
TRUE FALSE
Java разработчик
Опытный программист
Профессиональный тренер
Опытный докладчик
План
1. Болтовня для тех, кто пришел просто
послушать
2. Практический пример
3. Немного болтовни для разнообразия
4. Перерыв
5. Парное программирование до конца дня
для тех, кто пришел потренироваться
Немного Википедии
Разработка через тестирование - техника
разработки ПО, которая основывается на
повторении очень коротких циклов
разработки:
1. пишется тест, покрывающий желаемое
изменение,
2. пишется код, который позволит пройти
тест,
3. проводится рефакторинг нового кода к
соответствующим стандартам.
TDD мантра
● Красный
● Зеленый
● Рефакторинг
В интернетах пишут...
"Я делаю продукты 8 лет без всякого TDD, и не имею
особенных проблем"
"ТДД - это для теоретиков. В реальных проектах оно
не используется."
"Мне платят за функционал, а не за тесты"
"TDD - это мода. Как пришло - так и уйдёт."
Есть мнение что...
"Использование TDD увеличивает время
разработки"
Есть мнение что...
"Использование TDD увеличивает время
разработки"
Правда
Согласно исследованиям, время разработки
увеличивается на 15-30%.
("Evaluating the Efficacy of Test-Driven Development:
Industrial Case Studies", Microsoft)
● Бег по утрам
● Набор текста вслепую
● Езда на велосипеде
Потому что...
● Трудно начать
● Выгода не очевидна
● Требуется дисциплина
● Окупается в будущем
Применять TDD похоже на ...
Есть мнение что...
"Использование TDD улучшает качество
кода"
Есть мнение что...
"Использование TDD улучшает качество
кода"
Правда
Согласно исследованиям, количество
дефектов уменьшается на 40%.
(“Test-Driven Development as a Defect-Reduction
Practice”, IBM)
Результаты исследования
"Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies", Microsoft
Зачем TDD
● Лучше код
● Борьба со страхом
● Быстрая обратная связь
TDD ката
Самые важные принципы
Позволяющие радикально снизить
количество дефектов и ускорить разработку
Самые важные принципы
Позволяющие радикально снизить
количество дефектов и ускорить разработку
KISS
Keep it simple stupid
YAGNI
You aren't gonna need it
StringCalculator
Step 1
Create a simple String calculator with a method
int Add(String numbers)
● The method can take 0, 1 or 2 numbers, and
will return their sum (for an empty string it
will return 0) for example “” or “1” or “1,2”
● Start with the simplest test case of an empty
string and move to 1 and two numbers
StringCalculator
Step 2
Allow the Add method to handle an unknown
amount of numbers
StringCalculator
Step 3
Allow the Add method to handle new lines
between numbers (instead of commas).
● the following input is ok: "1n2,3" (will equal 6)
● the following input is NOT ok: "1,n" (not need
to prove it - just clarifying)
StringCalculator
Step 4
Support different delimiters
● to change a delimiter, the beginning of the
string will contain a separate line that looks like
this: "//[delimiter]n[numbers…]" for example
"//;n1;2" should return three where the default
delimiter is ';' .
● the first line is optional. All existing scenarios
should still be supported
StringCalculator
Step 5
Calling Add with a negative number will throw
an exception “negatives not allowed” - and the
negative that was passed.
If there are multiple negatives, show all of them
in the exception message
Тестирование функций без
побочных эффектов
assertEquals(0, Math.sqrt(0));
assertEquals(1, Math.sqrt(1));
assertEquals(10, Math.sqrt(100));
Тестирование состояния
// Given
HashSet<String> set = new HashSet<>();
// When
set.add("test");
// Then
assertEquals(1, set.size());
Тестирование взаимодействия
Тестирование взаимодействия
(продолжение)
// Setup
DocValidator validator = mock(DocValidator.class);
DocRepository repo = mock(DocRepository.class);
DocService service = new DocService(validator,
repo);
Document doc = new Document();
Тестирование взаимодействия
(продолжение)
// Given
when(validator.validate(doc)).thenReturn(true);
// When
service.register(doc);
// Then
verify(repo.save(doc));
Тестирование исключений
@Rule
public ExpectedException ex
= ExpectedException.none();
// Given
Document invalidDoc = createInvalidDoc();
// Expect
ex.expect(ValidationException.class);
// When
service.register(invalidDoc);
Перерыв
Conway's Game of Life
Домен
● Мир - двумерное пространство,
состоящее из клеток
● Клетка может быть «живой» или
«мёртвой»
● У каждой клетки есть 8 соседей
● В каждом поколении клетки умирают или
рождаются по особым правилам
Правила
1. Если у клетки меньше двух соседей, она
умирает
2. Если у клетки 2 или 3 соседа, она
продолжает жить
3. Если у клетки больше 3 соседей, она
умирает от перенаселения
4. Если у мёртвой клетки, рядом 3 живые
клетки, то в ней зарождается жизнь
Пример
1
поколение
2
поколение
3
поколение
Test case 1
Given
a live cell with fewer than 2 live neighbors
When
I calculate the next generation,
Then
the cell is dead.
Test case 2
Given
a live cell with more than 3 live neighbors
When
I calculate the next generation
Then
the cell is dead
Test case 3
Given
a live cell with 2 or 3 live neighbors
When
I calculate the next generation
Then
the cell is dead.
Test case 4
Given
a dead cell with exactly three live neighbors
When
I calculate the next generation
Then
the cell is alive.
Спасибо за внимание!
Литература:
● Working Effectively with Legacy Code, Michael Feathers
● Refactoring: Improving the Design of Existing Code, Martin Fowler
● Test Driven Development: By Example, Kent Beck
● Refactoring to Patterns, Joshua Kerievsky
Каты:
● String Calculator kata
● Conway's Game of Life kata
● Что такое Coding Dojo и другие каты
Исходный код:
github.com/kranonit/tdd-training
Вопросы?
Andrey.Ponomarev@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demandSQALab
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeDmytro Mindra
 
Евгений Сафронов "Тестирование. точка зрения разработчика"
Евгений Сафронов "Тестирование. точка зрения разработчика"Евгений Сафронов "Тестирование. точка зрения разработчика"
Евгений Сафронов "Тестирование. точка зрения разработчика"DataArt
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...Ontico
 
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»SpbDotNet Community
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиDotNetConf
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаSQALab
 
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDЭволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDCEE-SEC(R)
 
Масло масляное или Тестируем тестирование
Масло масляное или Тестируем тестированиеМасло масляное или Тестируем тестирование
Масло масляное или Тестируем тестирование2ГИС Технологии
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовSQALab
 
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Mad Devs
 
Github Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестированияGithub Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестированияSQALab
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with SeleniumSergey Shvets
 
Первый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных системПервый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных системSQALab
 
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...CEE-SEC(R)
 

Was ist angesagt? (20)

Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
Евгений Сафронов "Тестирование. точка зрения разработчика"
Евгений Сафронов "Тестирование. точка зрения разработчика"Евгений Сафронов "Тестирование. точка зрения разработчика"
Евгений Сафронов "Тестирование. точка зрения разработчика"
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
 
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDЭволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
 
Масло масляное или Тестируем тестирование
Масло масляное или Тестируем тестированиеМасло масляное или Тестируем тестирование
Масло масляное или Тестируем тестирование
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптов
 
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
 
Github Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестированияGithub Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестирования
 
Tdd in the world of big data
Tdd in the world of big dataTdd in the world of big data
Tdd in the world of big data
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
Первый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных системПервый шаг на пути к тестированию белого ящика для сложных систем
Первый шаг на пути к тестированию белого ящика для сложных систем
 
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
 

Andere mochten auch

kranonit S14E01 Эдуард Лобас Management & IT Industry
kranonit S14E01 Эдуард Лобас Management & IT Industrykranonit S14E01 Эдуард Лобас Management & IT Industry
kranonit S14E01 Эдуард Лобас Management & IT IndustryKrivoy Rog IT Community
 
kranonit S12E02 Артур Титов: Юзабилити форм
kranonit S12E02 Артур Титов: Юзабилити формkranonit S12E02 Артур Титов: Юзабилити форм
kranonit S12E02 Артур Титов: Юзабилити формKrivoy Rog IT Community
 
kranonit S05E01 Sergey Burma: Welcome to cloud!
kranonit S05E01 Sergey Burma: Welcome to cloud!kranonit S05E01 Sergey Burma: Welcome to cloud!
kranonit S05E01 Sergey Burma: Welcome to cloud!Krivoy Rog IT Community
 
kranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record Lockerkranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record LockerKrivoy Rog IT Community
 
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?Krivoy Rog IT Community
 
kranonit S04E02 Кирил Jstor: Hacking .NET applications
kranonit S04E02 Кирил Jstor: Hacking .NET applicationskranonit S04E02 Кирил Jstor: Hacking .NET applications
kranonit S04E02 Кирил Jstor: Hacking .NET applicationsKrivoy Rog IT Community
 
kranonit S03E01 Эдуард Лобас: Freelance
kranonit S03E01 Эдуард Лобас: Freelancekranonit S03E01 Эдуард Лобас: Freelance
kranonit S03E01 Эдуард Лобас: FreelanceKrivoy Rog IT Community
 
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информацииkranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информацииKrivoy Rog IT Community
 
kranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартапkranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартапKrivoy Rog IT Community
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "Krivoy Rog IT Community
 
Технологии в коммерческих закупках будущего
Технологии в коммерческих закупках будущегоТехнологии в коммерческих закупках будущего
Технологии в коммерческих закупках будущегоVladislav Mandryka
 

Andere mochten auch (16)

kranonit S14E01 Эдуард Лобас Management & IT Industry
kranonit S14E01 Эдуард Лобас Management & IT Industrykranonit S14E01 Эдуард Лобас Management & IT Industry
kranonit S14E01 Эдуард Лобас Management & IT Industry
 
kranonit S12E02 Артур Титов: Юзабилити форм
kranonit S12E02 Артур Титов: Юзабилити формkranonit S12E02 Артур Титов: Юзабилити форм
kranonit S12E02 Артур Титов: Юзабилити форм
 
kranonit S05E01 Sergey Burma: Welcome to cloud!
kranonit S05E01 Sergey Burma: Welcome to cloud!kranonit S05E01 Sergey Burma: Welcome to cloud!
kranonit S05E01 Sergey Burma: Welcome to cloud!
 
kranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record Lockerkranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record Locker
 
Kranonit s16 (python). dmitry furzenko
Kranonit s16 (python). dmitry furzenkoKranonit s16 (python). dmitry furzenko
Kranonit s16 (python). dmitry furzenko
 
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
 
kranonit S04E02 Кирил Jstor: Hacking .NET applications
kranonit S04E02 Кирил Jstor: Hacking .NET applicationskranonit S04E02 Кирил Jstor: Hacking .NET applications
kranonit S04E02 Кирил Jstor: Hacking .NET applications
 
kranonit S03E01 Эдуард Лобас: Freelance
kranonit S03E01 Эдуард Лобас: Freelancekranonit S03E01 Эдуард Лобас: Freelance
kranonit S03E01 Эдуард Лобас: Freelance
 
Kranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burmaKranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burma
 
Kranonit S18 Pavlov Evgeniy
Kranonit S18 Pavlov Evgeniy Kranonit S18 Pavlov Evgeniy
Kranonit S18 Pavlov Evgeniy
 
Kranonit S18 Lobova Elena
Kranonit S18 Lobova ElenaKranonit S18 Lobova Elena
Kranonit S18 Lobova Elena
 
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информацииkranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
kranonit S07E01 Евгений Василенко: Методы криптографической защиты информации
 
kranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартапkranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартап
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
Kranonit S18 Chernomorov Vasiliy "Как создать игру и не сойти с ума "
 
Технологии в коммерческих закупках будущего
Технологии в коммерческих закупках будущегоТехнологии в коммерческих закупках будущего
Технологии в коммерческих закупках будущего
 

Ähnlich wie kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java

Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.Roman Brovko
 
Оценка проектов тестирования
Оценка проектов тестированияОценка проектов тестирования
Оценка проектов тестированияRina Uzhevko
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)Smartling
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling eventViktoriya Pridatko
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0AlexeyParhomenko
 
Документация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйДокументация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйDataArt
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest
 
Тест-план и исследовательское тестирование
Тест-план и исследовательское тестированиеТест-план и исследовательское тестирование
Тест-план и исследовательское тестированиеVasiliy Burov
 
C# Desktop. Занятие 17.
C# Desktop. Занятие 17.C# Desktop. Занятие 17.
C# Desktop. Занятие 17.Igor Shkulipa
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureAnton Katkov
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1sgdread
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 

Ähnlich wie kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java (20)

Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
UI+unit testing in iOS
UI+unit testing in iOSUI+unit testing in iOS
UI+unit testing in iOS
 
Оценка проектов тестирования
Оценка проектов тестированияОценка проектов тестирования
Оценка проектов тестирования
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
 
TAP
TAPTAP
TAP
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
Документация тестировщика - Александр Трибушный
Документация тестировщика - Александр ТрибушныйДокументация тестировщика - Александр Трибушный
Документация тестировщика - Александр Трибушный
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Тест-план и исследовательское тестирование
Тест-план и исследовательское тестированиеТест-план и исследовательское тестирование
Тест-план и исследовательское тестирование
 
C# Desktop. Занятие 17.
C# Desktop. Занятие 17.C# Desktop. Занятие 17.
C# Desktop. Занятие 17.
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architecture
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 

Mehr von Krivoy Rog IT Community

kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDKrivoy Rog IT Community
 
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушекkranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушекKrivoy Rog IT Community
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadKrivoy Rog IT Community
 
kranonit S07E02 nixoid: Будущее электронных денег
kranonit S07E02 nixoid: Будущее электронных денегkranonit S07E02 nixoid: Будущее электронных денег
kranonit S07E02 nixoid: Будущее электронных денегKrivoy Rog IT Community
 
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игрkranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игрKrivoy Rog IT Community
 
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальностиkranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальностиKrivoy Rog IT Community
 
kranonit S01E02 Игорь Цинько: Как искать работу
kranonit S01E02 Игорь Цинько: Как искать работуkranonit S01E02 Игорь Цинько: Как искать работу
kranonit S01E02 Игорь Цинько: Как искать работуKrivoy Rog IT Community
 
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1Krivoy Rog IT Community
 

Mehr von Krivoy Rog IT Community (9)

Kranonit sponsorskoe predlozhenie
Kranonit sponsorskoe predlozhenieKranonit sponsorskoe predlozhenie
Kranonit sponsorskoe predlozhenie
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
 
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушекkranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
kranonit S06E02 Артём Юрков: Как все успеть и не слететь с катушек
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
kranonit S07E02 nixoid: Будущее электронных денег
kranonit S07E02 nixoid: Будущее электронных денегkranonit S07E02 nixoid: Будущее электронных денег
kranonit S07E02 nixoid: Будущее электронных денег
 
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игрkranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
 
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальностиkranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
kranonit S02E01 Дмитрий Свириденко- HTML5: Поздравляю, ты в новой реальности
 
kranonit S01E02 Игорь Цинько: Как искать работу
kranonit S01E02 Игорь Цинько: Как искать работуkranonit S01E02 Игорь Цинько: Как искать работу
kranonit S01E02 Игорь Цинько: Как искать работу
 
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
 

kranonit S11E01 Андрей Пономарёв: Тренинг по TDD в Java