SlideShare a Scribd company logo
1 of 40
Unit тестирование
Виталий Унгурян
unguryan@itstep.org
Тестирование
Качество программного обеспечения
КПО можно определить как совокупную
характеристику исследуемого ПО с
учётом следующих составляющих:
 надёжность,
 сопровождаемость,
 практичность,
 эффективность,
 мобильность,
 функциональность.
Классификация видов тестирования
По объекту тестирования:
Функциональное тестирование
Тестирование производительности
 Нагрузочное тестирование
 Стресс-тестирование
 Тестирование стабильности
Конфигурационное тестирование
Юзабилити-тестирование
Тестирование интерфейса пользователя
Тестирование безопасности
Тестирование локализации
Тестирование совместимости
Классификация видов тестирования
По знанию системы:
Тестирование чёрного ящика
Тестирование белого ящика
Тестирование серого ящика
Классификация видов тестирования
По степени автоматизации
Ручное тестирование
Автоматизированное
тестирование
Полуавтоматизированное
тестирование
Классификация видов тестирования
По степени изолированности
компонентов
Модульное тестирование
Интеграционное
тестирование
Системное тестирование
Классификация видов тестирования
По времени проведения
тестирования
Альфа-тестирование
 Дымовое тестирование (англ. smoke testing)
 Тестирование новой функции (new feature testing)
 Подтверждающее тестирование
 Регрессионное тестирование
 Приёмочное тестирование
Бета-тестирование
Классификация видов тестирования
По признаку позитивности
сценариев
Позитивное тестирование
Негативное тестирование
JUnit 4
Test-case это методы,
которые помечаются
аннотациям.
@Test
Аннотация @Test помечает метод, 
делая его тестовым. 
Тестовые методы должны 
начинаться с public void. 
В тестовых методах размещается 
код проверки. 
@Test
Кроме того, у данной аннотации 
есть два параметра, 
expected — задаёт ожидаемое 
исключение и 
timeout — задаёт время, по 
истечению которого тест считается 
провалившимся.
Утверждения
Сами тесты состоят из выполнения 
некоторого кода и методов 
утверждений. 
Утверждения чаще всего 
выполняются с помощью 
класса Assert хотя иногда 
используют ключевое слово assert.
Утверждения
fail(String)  Указывает на то что бы 
тестовый метод упадет при этом 
выводя текстовое сообщение об 
ошибке.
Утверждения
assertSame([String], expected,
actual) 
Проверяет, что обе переменные 
относятся к одному объекту 
(имееют одинаковые ссылки).
Утверждение эквивалентности
assertsEquals([String message],
expected, actual) 
expected - ожидаемое значение 
контролируемого аргумента.
actual - действительное значение.
Проверяет, что два значения 
совпадают по содержимому. 
Утверждения
assertTrue([message], boolean
condition) Проверяет, что 
логическое условие истинно
assertFalse([message], boolean
condition) Проверяет, что 
логическое условие ложно
Утверждения
assertNull([message], object)
Проверяет, что объект является 
пустым null.
assertNotNull(([message], object)
Проверяет, что объект не является 
пустым null.[message], object)
Фикстуры
Сценарии тестов могут нуждаться в 
некоторых действиях, 
предшествующих тесту (наполнение 
БД) или выполняющихся после него 
(очистка БД). 
Для этого существуют так 
называемые фикстуры.
@Before
Аннотация @Before обозначает 
методы, которые будут вызваны до 
исполнения теста, методы должны 
быть public void. Здесь обычно 
размещаются предустановки для 
теста.
@After
Аннотация @After обозначает 
методы, которые будут вызваны 
после выполнения теста, методы 
должны быть public void. Здесь 
размещаются операции 
освобождения ресурсов после 
теста.
@BeforeClass
Аннотация @BeforeClass обозначает 
методы, которые будут вызваны до 
создания экземпляра тест-класса, 
методы должны быть public static void. 
Имеет смысл размещать предустановки 
для теста в случае, когда класс содержит 
несколько тестов использующих 
различные предустановки.
@AfterClass
Аннотация @AfterClass связана по 
смыслу с @BeforeClass, но 
выполняет методы после теста, 
методы должны быть public static
void.
Правила @Rule
@Rule - это некое подобие утилит 
для тестов, которые добавляют 
функциональность до и после 
выполнения теста.
Запускалки @RunWith
Запуск теста может быть 
сконфигурирован с помощью@RunWith. 
При этом класс, указанный в аннотации 
должен наследоваться от Runner. 
JUnit4 — запускалка по умолчанию, как понятно из 
названия, предназначена для запуска JUnit 4 тестов.
JUnit38ClassRunner предназначен для запуска тестов, 
написанных с использованием JUnit 3.
Запускалки @RunWith
JUnit4 — запускалка по умолчанию, как 
понятно из названия, предназначена 
для запуска JUnit 4 тестов.
JUnit38ClassRunner - предназначен для 
запуска тестов, написанных с 
использованием JUnit 3.
Запускалки @RunWith
@SuiteMethod либо @AllTests тоже 
предназначены для запуска JUnit 3 
тестов. В отличие от предыдущей 
запускалки, в эту передается класс 
со статическим методом suite 
возвращающим тест 
(последовательность всех тестов).
Запускалки @RunWith
@Suite — эквивалент предыдущего, 
только для JUnit 4 тестов. Для 
настройки запускаемых тестов 
используется аннотация @SuiteClasses.
@Enclosed — то же, что и предыдущий 
вариант, но вместо настройки с 
помощью аннотации используются все 
внутренние классы.
Запускалки @RunWith
@Categories — попытка 
организовать тесты в 
категории(группы). Для этого 
тестам задается категория с 
помощью @Category, затем 
настраиваются запускаемые 
категории тестов в сюите. 
Запускалки @RunWith
@Parameterized — довольно 
интересная запускалка, позволяет 
писать параметризированные тесты. 
Для этого в тест-классе объявляется 
статический метод возвращающий 
список данных, которые затем будут 
использованы в качестве аргументов 
конструктора класса.
Запускалки @RunWith
@Theories — чем-то схожа с
предыдущей, но параметризирует
тестовый метод, а не конструктор.
Данные помечаются с помощью
@DataPoints и @DataPoint,
тестовый метод — с
помощью @Theory.
Порядок запуска тестов
Важно!
В JUnit предполагается, что все
тестируемые методы могут быть
выполнены в произвольном
порядке. Поэтому тесты не должны
зависеть от других тестов.
Разработка через тестирование
Разработка через тестирование
(test-driven development, TDD) —
техника разработки программного
обеспечения, которая
основывается на повторении очень
коротких циклов разработки.
Разработка через тестирование
Цикл разработки:
В начале пишется тест,
покрывающий желаемое
изменение, затем пишется код,
который позволит пройти тест.
Разработка через тестирование
Разработка по TDD требует от
разработчика создания
автоматизированных модульных
тестов, определяющих требования
к коду непосредственно перед
написанием самого кода.
Разработка через тестирование
Тест содержит:
Проверки условий, которые могут
либо выполняться, либо нет.
Когда они выполняются, говорят, что
тест пройден. Прохождение теста
подтверждает, предполагаемое
поведение кода написанного
программистом.
Разработка через тестирование
Автор подхода TDD Кент Бек
выделяет пять основных этапов при
использовании методологии на
практике.
Разработка через тестирование
1.Написать новый тест-кейс;
2.Убедиться, что запуск нового теста
приведет к сбою;
3.Написать новый или модифицировать
код так, чтобы тест прошел успешно;
4.Перезапустить все остальные тесты и
подтвердить успешное их прохождение;
5.Сделать рефакторинг кода, устранив
избыточность.
Разработка через тестирование
Разработка через тестирование

More Related Content

What's hot

GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияGRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
Alexander Nemanov
 
Шаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLШаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UML
Sergey Nemchinsky
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
guest11106b
 

What's hot (20)

Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Java collections notes
Java collections notesJava collections notes
Java collections notes
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
2015-StarWest presentation on REST-assured
2015-StarWest presentation on REST-assured2015-StarWest presentation on REST-assured
2015-StarWest presentation on REST-assured
 
Collections - Maps
Collections - Maps Collections - Maps
Collections - Maps
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection framework
 
Spring Web MVC
Spring Web MVCSpring Web MVC
Spring Web MVC
 
Introduction to Java 8
Introduction to Java 8Introduction to Java 8
Introduction to Java 8
 
Java 8 presentation
Java 8 presentationJava 8 presentation
Java 8 presentation
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияGRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Java and XML
Java and XMLJava and XML
Java and XML
 
Collections framework in java
Collections framework in javaCollections framework in java
Collections framework in java
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Шаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLШаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UML
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Gradle
GradleGradle
Gradle
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 

Similar to Модульное тестирование.

Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
seleznev_stas
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
etyumentcev
 
Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1
Technopark
 
очир абушинов
очир абушиновочир абушинов
очир абушинов
Alexei Lupan
 
основы тестирования лекция 2
основы тестирования лекция 2основы тестирования лекция 2
основы тестирования лекция 2
Yashina Galina
 

Similar to Модульное тестирование. (20)

Software testing foundations_ilya_pluzhnikov
Software testing foundations_ilya_pluzhnikovSoftware testing foundations_ilya_pluzhnikov
Software testing foundations_ilya_pluzhnikov
 
2.1 Тестирование: основные определения
2.1 Тестирование: основные определения2.1 Тестирование: основные определения
2.1 Тестирование: основные определения
 
Тестирование ПО (лекция 2)
Тестирование ПО (лекция 2)Тестирование ПО (лекция 2)
Тестирование ПО (лекция 2)
 
Тестирование ПО (лекция 3)
Тестирование ПО (лекция 3)Тестирование ПО (лекция 3)
Тестирование ПО (лекция 3)
 
02ka-nov
02ka-nov02ka-nov
02ka-nov
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
Test levels
Test levelsTest levels
Test levels
 
Теория тестирования, часть 1
Теория тестирования, часть 1 Теория тестирования, часть 1
Теория тестирования, часть 1
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиков
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1
 
02-lection-ka
02-lection-ka02-lection-ka
02-lection-ka
 
очир абушинов
очир абушиновочир абушинов
очир абушинов
 
QA и тестирование игр
QA и тестирование игрQA и тестирование игр
QA и тестирование игр
 
основы тестирования лекция 2
основы тестирования лекция 2основы тестирования лекция 2
основы тестирования лекция 2
 
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
 
Процесс тестирования
Процесс тестированияПроцесс тестирования
Процесс тестирования
 
Тестирование ПО (лекция 1)
Тестирование ПО (лекция 1)Тестирование ПО (лекция 1)
Тестирование ПО (лекция 1)
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
Who is a functional tester
Who is a functional testerWho is a functional tester
Who is a functional tester
 

More from Unguryan Vitaliy

Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
Unguryan Vitaliy
 

More from Unguryan Vitaliy (20)

Stream API
Stream APIStream API
Stream API
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
JSTL
JSTLJSTL
JSTL
 
JSP
JSPJSP
JSP
 
JDBC
JDBCJDBC
JDBC
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 
XML
XMLXML
XML
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
Аннотации в java
Аннотации в javaАннотации в java
Аннотации в java
 
java 8
java 8java 8
java 8
 

Модульное тестирование.