- Покрытие операторов кода (statement coverage)
- Намеренное добавление дефекта (defect insertion)
Паттерны разработки основанной на тестах
- Тест. Отговорка что на тесты нет времени не совсем коректна, так как приложение все равно тестируется, но руками. Но автоматические тесты намного быстрее! Кроме того тесты снижают уровень стресса
- Изолированный тест (Isolated Test) - основная причина производительность
- Список тестов (Test List)
- Вначале тест (Test First)
- Вначале оператор assert (Assert First)
- Тестовые данные (Test Data)
- Понятные данные (Evident Data). Иногда, если данные используются только в одном методе, для лучшей читабельности можно использовать магические числа
Паттерны красной полосы
- One Test Step
- Starter Test (Начальный тест)
- Explanation Test (Объясняющий тест). Тесты могут служить для объяснения кода
- Learning Test (Тест для обучения)
- Another Test
- Regression Test
- Break
- Do Over (Начать сначала). Иногда лучше начать заново, чем пытаться довести до ума кривой код
- Cheap Desk, Nice Chear. Ну, в общем, хорошее кресло решает..
Паттерны тестирования
- Дочерний тест (Child Test)
- Mock Object
- Self Shunt (Самошунтирование). Как можно убедиться что один объект корректно взаимодействует с другим? Можно заставить тестируемый объект взаимодействовать не с целевым объектом, а с тестом.
def testNotification(self): self.count = 0 result = TestResult() result.addListener(self) WasRun('testMethod').run(result) self.assertEqual(1, self.count) def startTest(self): self.count = self.count + 1
- Log String (Строка журнал). Полезен когда важен порядок операций. Хорошо сочетается с Self Shunt. Объект-тест реализует методы шунтируемого интерфейса таким образом, что каждый из них добавляет строку в журнал, затем проверяется корректность этих записей.
- Crush Test Dummy (Тестирование обработки ошибок). Применяется когда надо протестировать как отрабатывает код по обработке ошибки, возникновение которой маловероятно. Для этого создается фэйковый объект который вместо реальной работы генерирует исключение.
- Broken Test
- Clean Check-In
Паттерны зеленой полосы
- Fake It (Подделка)
- Triangulate
- Obvious Implemetnation (Очевидная реализация)
- One To Many (От одного ко многим). Как реализовать работу с коллекцией объектов? Сначала реализуется для одного объекта, затем модернизируется для работы с коллекцией.
Паттерны xUnit
- Assertion
- Fixture
- External Fixture. Ресурсы освобождаются в tearDown()
- Test Method
- Exception Test
- All Tests
No comments:
Post a Comment