В компьютерном программировании и информатике , программисты и разработчики используют технологию , называемую автоматизирован модульного тестирования для улучшения качества программного обеспечения. Часто окончательная версия программного обеспечения состоит из сложного набора объектов или процедур, взаимодействующих друг с другом для создания окончательного результата. В автоматизированном модульном тестировании может возникнуть необходимость использовать объекты или процедуры, которые выглядят и ведут себя так же, как их аналоги, предназначенные для выпуска, но на самом деле являются упрощенными версиями, которые снижают сложность и облегчают тестирование. Двойной тест является общим (мета) термин , используемый для этих объектов или процедур.
Джерард Месарос [1] определил несколько различных терминов для того, что он называет «тестовые пары». Судя по его словарю, существует как минимум пять типов тестовых пар:
Тестовая заглушка - используется для обеспечения тестируемого кода «косвенным вводом».
Мок-объект - используется для проверки «косвенного вывода» тестируемого кода, сначала определяя ожидания перед выполнением тестируемого кода.
Тестовый шпион - используется для проверки «косвенного вывода» тестируемого кода, путем утверждения ожиданий впоследствии, без определения ожиданий перед выполнением тестируемого кода. Это помогает в записи информации о созданном косвенном объекте.
Поддельный объект - используется как более простая реализация, например, с использованием базы данных в памяти в тестах вместо реального доступа к базе данных.
Фиктивный объект - используется, когда параметр необходим для тестируемого метода, но без фактического использования параметра.
Другой формой тестового двойника является проверенная подделка, поддельный объект , поведение которого было проверено на соответствие поведению реального объекта с помощью набора тестов, которые выполняются как против проверенной подделки, так и против реальной реализации. [7]
Хотя открытого стандарта для тестовых двойников и различных типов нет, есть импульс для продолжения использования этих терминов таким образом. Мартин Фаулер использовал эти термины в своей статье Mocks Aren't Stubs [8], ссылаясь на книгу Месароша . Microsoft также использовала те же термины и определения в статье под названием Exploring The Continuum Of Test Doubles . [9]
^ Клемсон, Тоби «Стратегии тестирования в микросервисной архитектуре» , martinfowler.com , 18 ноября 2014 г. Проверено 7 декабря 2017 г.
^ Байрс, Брэндон. «Тестирование микросервисов с помощью Mountebank», Manning Publications , MEAP началось в марте 2017 г. ISBN 9781617294778 . Проверено 7 декабря, 2017.
^ Брайант, Дэниел «Инструмент API Mocking Tool WireMock v2, выпущенный с улучшенным сопоставлением запросов и управлением заглушками» , InfoQ , 16 августа 2016 г. Проверено 7 декабря 2017 г.
^ ThoughtWorks "Технология Radar, инструменты: шут" , ThoughtWorks , ноябрь 2015. Проверено 07 декабря 2017 года.
^ Bulaty, Wojciech «Различия в использовании заглушек, имитации и виртуализации сервисов для команд тестирования и разработки» , InfoQ , 19 февраля 2016 г. Проверено 7 декабря 2017 г.
^ Turner-Trauring, Итамар (2019). « Быстрые тесты для медленных сервисов: зачем использовать проверенные фейки » . Проверено 21 января 2019 .
^ Фаулер, Мартин (2007). « Моки - это не заглушки » . Проверено 29 декабря 2010 .
^ Seemann, Марк (2007). « Изучение континуума тестовых двойников » . Проверено 29 декабря 2010 .
внешние ссылки
Жерар Месарош:
Двойной тест
Тестирование двойных шаблонов
Моки, подделки, заглушки и манекены
Мартин Фаулер:
TestDouble , 17 января 2006 г.
Открытый исходный код:
ELF Spy - фейки и шпионы на C ++
FakeIt - Моки, фейки и шпионы на C ++
Google Mock - Mocking в C ++
jMock - Разработка через тестирование с использованием Mocks