Удаление "мошеннических тестов интеграции" - Понимание совместной работы и контрактных тестов - PullRequest
7 голосов
/ 14 февраля 2012

Я недавно смотрел Интеграционные тесты - это афера от JB Rainsberger, и сейчас я ищу больше материалов по этому вопросу.Я должен сказать, что я потрясен тем, как много мы делаем неправильно (то есть интеграционное тестирование, когда мы должны проводить модульное тестирование), заинтригован концепциями, описанными Rainsberger, но также смущен тем, как их применять.Мне бы хотелось иметь больше описанных тестов для совместной работы и контрактных тестов , но я не знаю, с чего начать.

Единственное, что застряло в моей памяти, - это 4 вопросаТесты нужно спросить:

Сторона A:

Do I ask the right question?
Can I deal with the answer?

Сторона B:

Can I answer a question?
Do I answer correctly?

Но как сделатьПрименить это к некоторому случайному методу в моем стеке приложений?

Существует ли книга, учебное пособие или пример, в котором взят пример из реального мира и применяются эти идеи изолированных микротестов?В идеале пример использует Java, C # или C ++.

Любая литература, которая имеет дело с этими концепциями в целом и помогает мне лучше понять их, будет принята с благодарностью.

Также, если есть форумы, где я могу задать более подробные вопросы о том, как правильно выполнить модульное тестирование и, возможно, даже рефакторинг существующего кода и опубликовать примеры, было бы неплохо.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

Я бы порекомендовал xUnitTestPatterns - рефакторинг тестового кода Джеральда Месароша , который дает некоторое представление о ваших вопросах и много подробностей о хороших и плохих различных практиках при тестировании на уровне отдельных методов.

Если вы читали Рефакторинг Фаулера, вы увидите, что ответ на ваши вопросы не обязательно черно-белый, а основан на эвристике из вашего опыта и опыта других людей.

1 голос
/ 25 октября 2015

Rainsberger преувеличивает, насколько неэффективным является интеграционное тестирование, чтобы доказать свою точку зрения в достижении 100% -ного качества (базовой правильности) в коде

DbC сосредоточен на формализации ответственности и выгод за пределами сторон A и B,Это как расширение интерфейса.Таким образом, основной акцент делается на сам контракт, слой посередине, который сообщит обеим сторонам, могут ли они взаимодействовать друг с другом.

Рейнсбергер ясно говорит, что до сих пор нет явной поддержки библиотек или языков, и имитируют вводы А и В, чтобы задать один и тот же вопрос, намекая на то, что это может быть работа кандидата наук.

Однако у Джима Вейрича есть хороший пример, когда контракт является ОО-шаблоном для тестирования и для обеих сторон, которые соглашаются использовать его https://www.youtube.com/watch?v=7Yw744FMqTY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...