SlideShare a Scribd company logo
1 of 27
Курс по Java, 2016
Тестирование и Java
Юнит-тесты
Курс по Java, 2016
Виды тестирования
Курс по Java, 2016
Юнит-тесты
Курс по Java, 2016
Юнит-тестирование
Постоянно и непрерывно
Легко проверить всё повторно
Пишем конкретные тесты
Тесты запускают настоящий код
Тестируем каждый кусочек по-отдельности
Тестируем при каждом изменении кода
Проверяем, как оно функционирует
Автоматически
Курс по Java, 2016
Юнит-тесты — хорошо
Уверенность в коде, можно рефакторить
Тест — хорошая документация
Меньше отладки,
более продуктивная разработка
Получаются более независимые модули
Получаются правильные абстракции,
появляется тестовая реализация
Курс по Java, 2016
Юнит-тесты — сложно
Тесты нужно писать, трудно привыкнуть
Для каждой версии кода нужно отслеживать результаты тестов
Невозможно протестировать всё:
безопасность, функционал, UI плохо поддаются автоматическому
тестированию
Курс по Java, 2016
Юнит-тесты — опасно
Тесты могут быть ошибочными,
правильность модулей не означает правильность системы в целом,
заглушки — не настоящие
Создают ложное ощущение надежности
Есть соблазн отключения нерабочих тестов
Курс по Java, 2016
JUnit
<dependencies>
<dependency>
<scope>test</scope>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
Maven scopes:
● compile
● provided
● runtime
● test
Курс по Java, 2016
Тест
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
public class ArrayReverserTest {
private ArrayReverser reverser;
@Before
public void setUp() {
this.reverser = new ArrayReverser();
}
@Test
public void testReverse() {
int[] original = {1, 2, 3};
int[] reversed = this.reverser.reverse(original);
assertArrayEquals("wrong reverse", new int[] {3, 2, 1}, reversed);
}
}
Курс по Java, 2016
JUnit в IDEA
Курс по Java, 2016
JUnit в Maven
% mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building tdd 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
...
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running ArrayReverserTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.521s
[INFO] Finished at: Thu Mar 31 19:23:27 OMST 2016
Курс по Java, 2016
Maven lifecycle
Курс по Java, 2016
JUnit в Maven
% mvn test
% mvn -Dmaven.test.skip=true package
Курс по Java, 2016
Покрытие в IDEA
Курс по Java, 2016
Покрытие
в Maven
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
</plugins>
</build>
Курс по Java, 2016
Покрытие в Maven
% mvn jacoco:prepare-agent
% mvn test
% mvn jacoco:report
Курс по Java, 2016
Домашнее задание
Написать юнит-тесты для всех методов всех написанных в рамках проекта
классов.
Добиться 100% покрытия.
Курс по Java, 2016
Курс по Java, 2016
Курс по Java, 2016
Курс по Java, 2016
Курс по Java, 2016
Курс по Java, 2016
TDD buzzwords
keep it simple, stupid - KISS
you ain’t gonna need it - YAGNI
fake it till you make it
Курс по Java, 2016
Extreme Programming (XP)
Курс по Java, 2016
Agile Manifesto
Личности и их взаимодействия важнее,
чем процессы и инструменты;
Работающее программное обеспечение важнее,
чем полная документация;
Сотрудничество с заказчиком важнее,
чем контрактные обязательства;
Реакция на изменения важнее,
чем следование плану.
Курс по Java, 2016
Курс по Java, 2016

More Related Content

Viewers also liked

Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.7bits
 
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайнСтажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн7bits
 
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документированиеСтажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование7bits
 
Стажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложенияСтажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложения7bits
 
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.7bits
 
Спецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startupСпецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startup7bits
 
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworksСтажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks7bits
 
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данныхСтажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных7bits
 
Спецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startupСпецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startup7bits
 
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.7bits
 
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БДСтажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД7bits
 
Стажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practicesСтажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practices7bits
 
Спецкурс 2014, занятие 6. Базы данных
Спецкурс 2014, занятие 6. Базы данныхСпецкурс 2014, занятие 6. Базы данных
Спецкурс 2014, занятие 6. Базы данных7bits
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)7bits
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.7bits
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
Стажировка 2015. Разработка. Занятие 9. BEM
Стажировка 2015. Разработка. Занятие 9. BEMСтажировка 2015. Разработка. Занятие 9. BEM
Стажировка 2015. Разработка. Занятие 9. BEM7bits
 
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.7bits
 
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open sourceСпецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source7bits
 
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
Стажировка 2015. Разработка. Занятие 6. Адаптивная версткаСтажировка 2015. Разработка. Занятие 6. Адаптивная верстка
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка7bits
 

Viewers also liked (20)

Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
 
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайнСтажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
 
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документированиеСтажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
 
Стажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложенияСтажировка-2014, занятие 6 (часть 1). Web-приложения
Стажировка-2014, занятие 6 (часть 1). Web-приложения
 
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
 
Спецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startupСпецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startup
 
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworksСтажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
 
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данныхСтажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
Стажировка-2015. Разработка. Занятие 2. Основы реляционных баз данных
 
Спецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startupСпецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startup
 
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
 
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БДСтажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
 
Стажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practicesСтажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practices
 
Спецкурс 2014, занятие 6. Базы данных
Спецкурс 2014, занятие 6. Базы данныхСпецкурс 2014, занятие 6. Базы данных
Спецкурс 2014, занятие 6. Базы данных
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Стажировка 2015. Разработка. Занятие 9. BEM
Стажировка 2015. Разработка. Занятие 9. BEMСтажировка 2015. Разработка. Занятие 9. BEM
Стажировка 2015. Разработка. Занятие 9. BEM
 
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
 
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open sourceСпецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
 
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
Стажировка 2015. Разработка. Занятие 6. Адаптивная версткаСтажировка 2015. Разработка. Занятие 6. Адаптивная верстка
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
 

Similar to Курс Java-2016. Занятие 05. Тестирование и Java

Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practicenikolay_vasiliev
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...
SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...
SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...Andrey Ladutko
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1sgdread
 
Оптимизируем тест кейсы
Оптимизируем тест кейсыОптимизируем тест кейсы
Оптимизируем тест кейсыSQALab
 
Softengi тестирование программного обеспечения
Softengi тестирование программного обеспеченияSoftengi тестирование программного обеспечения
Softengi тестирование программного обеспеченияAlisa Kyryliuk
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаSQALab
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проектаMagneta AI
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проектаMagneta AI
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья КудиновCodeFest
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Dmitry Andreev
 
Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Hub-IT-School
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятMarina Peregud
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Yandex
 

Similar to Курс Java-2016. Занятие 05. Тестирование и Java (20)

10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practice
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...
SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...
SQA Days 19 - Self-dependent QA Assessment - how to start (Самостоятельная оц...
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
Оптимизируем тест кейсы
Оптимизируем тест кейсыОптимизируем тест кейсы
Оптимизируем тест кейсы
 
Softengi тестирование программного обеспечения
Softengi тестирование программного обеспеченияSoftengi тестирование программного обеспечения
Softengi тестирование программного обеспечения
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три года
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проекта
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проекта
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
What Tests Are For?
What Tests Are For?What Tests Are For?
What Tests Are For?
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
 
Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едят
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»
 

More from 7bits

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? 7bits
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта7bits
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать7bits
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи 7bits
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE 7bits
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT7bits
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring7bits
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC7bits
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP7bits
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock7bits
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web7bits
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность7bits
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции7bits
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub7bits
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics7bits
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения7bits
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию7bits
 
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версийСпецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версий7bits
 
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...7bits
 

More from 7bits (20)

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию
 
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версийСпецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версий
 
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
 

Курс Java-2016. Занятие 05. Тестирование и Java

  • 1. Курс по Java, 2016 Тестирование и Java Юнит-тесты
  • 2. Курс по Java, 2016 Виды тестирования
  • 3. Курс по Java, 2016 Юнит-тесты
  • 4. Курс по Java, 2016 Юнит-тестирование Постоянно и непрерывно Легко проверить всё повторно Пишем конкретные тесты Тесты запускают настоящий код Тестируем каждый кусочек по-отдельности Тестируем при каждом изменении кода Проверяем, как оно функционирует Автоматически
  • 5. Курс по Java, 2016 Юнит-тесты — хорошо Уверенность в коде, можно рефакторить Тест — хорошая документация Меньше отладки, более продуктивная разработка Получаются более независимые модули Получаются правильные абстракции, появляется тестовая реализация
  • 6. Курс по Java, 2016 Юнит-тесты — сложно Тесты нужно писать, трудно привыкнуть Для каждой версии кода нужно отслеживать результаты тестов Невозможно протестировать всё: безопасность, функционал, UI плохо поддаются автоматическому тестированию
  • 7. Курс по Java, 2016 Юнит-тесты — опасно Тесты могут быть ошибочными, правильность модулей не означает правильность системы в целом, заглушки — не настоящие Создают ложное ощущение надежности Есть соблазн отключения нерабочих тестов
  • 8. Курс по Java, 2016 JUnit <dependencies> <dependency> <scope>test</scope> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> Maven scopes: ● compile ● provided ● runtime ● test
  • 9. Курс по Java, 2016 Тест import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertArrayEquals; public class ArrayReverserTest { private ArrayReverser reverser; @Before public void setUp() { this.reverser = new ArrayReverser(); } @Test public void testReverse() { int[] original = {1, 2, 3}; int[] reversed = this.reverser.reverse(original); assertArrayEquals("wrong reverse", new int[] {3, 2, 1}, reversed); } }
  • 10. Курс по Java, 2016 JUnit в IDEA
  • 11. Курс по Java, 2016 JUnit в Maven % mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building tdd 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] ... ------------------------------------------------------- T E S T S ------------------------------------------------------- Running ArrayReverserTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.521s [INFO] Finished at: Thu Mar 31 19:23:27 OMST 2016
  • 12. Курс по Java, 2016 Maven lifecycle
  • 13. Курс по Java, 2016 JUnit в Maven % mvn test % mvn -Dmaven.test.skip=true package
  • 14. Курс по Java, 2016 Покрытие в IDEA
  • 15. Курс по Java, 2016 Покрытие в Maven <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.6.201602180812</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>prepare-package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <configuration> <argLine>${argLine}</argLine> </configuration> </plugin> </plugins> </build>
  • 16. Курс по Java, 2016 Покрытие в Maven % mvn jacoco:prepare-agent % mvn test % mvn jacoco:report
  • 17. Курс по Java, 2016 Домашнее задание Написать юнит-тесты для всех методов всех написанных в рамках проекта классов. Добиться 100% покрытия.
  • 23. Курс по Java, 2016 TDD buzzwords keep it simple, stupid - KISS you ain’t gonna need it - YAGNI fake it till you make it
  • 24. Курс по Java, 2016 Extreme Programming (XP)
  • 25. Курс по Java, 2016 Agile Manifesto Личности и их взаимодействия важнее, чем процессы и инструменты; Работающее программное обеспечение важнее, чем полная документация; Сотрудничество с заказчиком важнее, чем контрактные обязательства; Реакция на изменения важнее, чем следование плану.

Editor's Notes

  1. 2001