Академический Документы
Профессиональный Документы
Культура Документы
16. Builder
17. Prototype
18. Iterator
19. Command
20. Observer
21. Template Method
22. Visitor
23. Chain of responsibility
24. Mediator
25. Adapter
26. Composite
27. Decorator
28. Facade
29. Proxy
30. Что такое автономный тест?
Автономный тест – это часть кода (обычно метод), которая вызывает другую часть кода и затем
проверяет правильность некоторых предположений. Если предположения не подтверждаются,
считается, что автономный тест завершился неудачно. Автономной единицей (unit) является
метод или функция.
31. Что такое «единица работы»? Какие формы может иметь конечный результат
единицы работы?
Единица работы — это совокупность действий от момента вызова какого-то открытого метода в
системе до единственного конечного результата, заметного тесту системы.
Конечный результат может принимать следующие формы:
• Вызванный открытый метод возвращает значение (т. е. является функцией, возвращающей не
void);
• Существует видимое изменение состояния или поведения системы до и после вызова, которое
можно обнаружить, не опрашивая внутреннее состояние т.е. через открытые методы/свойства и
т.д. (примеры: в систему может войти ранее не существовавший пользователь или, если система
представляет собой конечный автомат, то изменились ее свойства). Данный подход называется
тестирование по состоянию;
• Имеет место обращение к сторонней системе (объекту), над которой у теста нет контроля, и эта
сторонняя система не возвращает никакого значения, либо возвращенное значение системой
игнорируется (пример: обращение к сторонней системе протоколирования, которая была
написана не вами и исходный код которой вам недоступен. Данный подход называется -
тестирование взаимодействий);
• Создано управляемое или неуправляемое исключение.
32. Шаблон arrange/act/assert
При написании тестов используется паттерн (шаблон) Arrange/Act/Assert (A/A/A):
• Arrange относится к созданию условий для теста или тестовых объектов;
• Act относится к выполнению теста – тестовые объекты задействуются;
• Assert относится к проверке того, что получен требуемый результат.
33. Преимущества и недостатки модульного тестирования
Модульное тестирование заключается в написании небольших тестов для каждой нетривиальной
функции или метода исходного кода программы в отдельности. Это дает следующие
преимущества:
• Уверенность в работоспособности модулей в отдельности;
• Проверка старой функциональности при внесении новой (регрессионное тестирование);
Регрессионное тестирование – тестирование ранее проверенных функций с целью проверки
отсутствия новых ошибок в программе (регрессии). Регрессией называют одну или несколько
единиц работы, которые когда-то работали, а теперь перестали.
• Спецификация по использованию классов и методов основной программы (косвенная
документация);
• Поощрение изменений и рефакторинга. Уверенность, что после внесения изменений код будет
продолжать работать;
• Архитектурная правильность. Специфика модульного тестирования приводит к тому, что
функции оказываются относительно маленькими (атомарными), а классы слабо зависимы от
других. Дизайн программы базируется на использовании множества сильно связанных
компонентов, которые слабо сцеплены друг с другом, благодаря чему тестирование упрощается
34. Что такое внешняя зависимость?
Внешней зависимостью называется объект в системе, с которым тестируемый код
взаимодействует, но над которым у него нет контроля (типичные примеры: файловая система,
потоки, память, время и т. д.).
35. Что такое заглушка в терминах автономного тестирования? Какие бывают виды
заглушек?
Заглушка - управляемая замена существующей зависимости в системе. Используя заглушку, мы
можем протестировать код, не взаимодействуя с зависимостью непосредственно.
Выделяются 3 разновидности заглушек:
• подставные объекты, или подставки (mocks), изменение состояние которых можно
контролировать. Они используются для того, чтобы определить, прошел тест или нет;
• заглушки (stubs) - класс, который мы можем контролировать. Используются, чтобы прошел тест.
Заглушки – вспомогательные объекты для выполнения теста;
• поддельные объекты, или подделки (fakes) – общее название объекта, который может
выступать в обеих ролях
36. Что такое рефакторинг? Примеры
Рефакторинг – изменение части кода, без изменения его функциональности. Как правило, с целью
улучшения. Примером улучшений может быть облегчение понимания кода, либо устранение
дублирования. В основе рефакторинга лежат небольшие эквивалентные изменения (например,
перенос кода в функцию или перенос метода в базовый класс).
37. Что такое каркас тестирования?
Каркас тестирования – набор библиотек, модулей и т.п. помогающий проводить тестирование
кода и обеспечивающий прогон тестов в составе автоматизированной сборки.
38. Что такое разработка через тестирование? Основные принципы, достоинства и
недостатки
Разработка через тестирование (TDD, test-driven development) — техника программирования, при
которой модульные тесты для программы или её фрагмента пишутся до самой программы
(testfirst development) и, по существу, управляют её разработкой.
Основной метод работы:
• Пишется новый код, когда автоматический тест не сработал;
• Удаляется дублирование.