Подтемы
- TDD
- Unit Testing / JUnit
- Hamcrest
- Mockito
- Continious Intergration (CI)
Модульное тестирование (unit testing) направлено на всестороннее тестирование наименьших "цельных" / "осмысленных" / ''самостоятельных" / "законченных" частей кода. Это могут быть отдельные методы (Math.sin(..)), классы (ArrayList) или группы классов (?).
TDDXP
Code testability
red/green/refactor cycle
Given [initial context], when [event occurs], then [ensure some outcomes].
Test Case
Test Suite
Fixture
SUT
Mock
Unit / Acceptance / Functional / Integration / Smoke / Stress test
assertion
BDD (Behavior-driven development)
--
Fragile test
Test coverage
Use case
Acceptance criteria
JUnit - реально крут, если пишешь свой runner
Под законченностью подразумевается способность использовать эту группу методов/классов как единое целое. Преследование этой группой единой цели. В этом смысле единичный метод List.size() не закончен. так как его поведение зависит от вызовов методов List.add(), List.add(,), List.remove(), List.clear(), но в целом поведение ArrayList не зависит от других классов.
Терминология модульного тестирования: Fixture, Test case, Corner case, Test double, SUT
Описание
Тестирование различают:
- по способу
- мануальное
- автоматизированное
- по целям и методам
- юнит-тестирование (модульное тестирование)
- функциональное
- приемочное
- нагрузочное
- smoke тест
- интеграционный тест
- BDD (Behavioral Driven Development)
Материалы
Кратко и сжато описан TDD:
- Robert Martin "Clean Code", Роберт Мартин, "Чистый код", Глава 9 "Модульные тесты" стр 150-163. (обязательно)
JUnit идиомы и концепции:
- @Test, @RunWith, TestCase
- Test case lifecicle: @BeforeClass, constructor, @Before, @Test, @After, @AfterClass
- exception testing: @Test(expected=...)
- @Ignore
- Assertions: ???
- Test suite: @SuiteClasses
- Parameterized test: @RunWith(Parameterized.class), @Parameters
Оригинальные книги от автора TDD и JUnit Кента Бека:
- Kent Beck "Test-driven Development by Example", Кент Бек "Экстремальное программирование: разработка через тестирование".
- Kent Beck "JUnit Pocket Guide", русского перевода не видел.
Попытка всесторонне описать TDD в виде набора шаблонов:
- Meszaros "xUnit Test Patterns". Месарош "Шаблоны тестирования xUnit" (обязательно главы: 3 Цели ..., 4 Философия ..., 5 Принципы ...)
- Сайт книги "xUnit Test Patterns" с каталогом и кратким описанием всех шаблонов
Mocking:
- Fowler article "Mocks Aren't Stubs" (Dummy, Fake, Stub, Mock) (обязательно)
У начинающих QA считается классикой:
- Роман Савин "Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах".
- Сэм Канер, Джек Фолк, Енг Кек Нгуен "Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений."
Литература по процессам (Agile, Scrum, RUP, XP, CI, ...):
- Дюваль, Матиас, Гловер, "Непрерывная интеграция". Duvall, Matyas, Glover "Continuous Integration"
- Хамбл, Фарли "Непрерывное развертывание ПО". Humble, Farley "Continuous Delivery"
Словарь
Материалы для углубленного изучения