Различия между тестом и спецификацией

12

У меня возникла проблема с концепцией, и я не могу найти информацию о различиях между Test (UnitTest и т. Д.) И Spec (Rspec и т. Д.).

Насколько я знаю, спецификации - это интеграционные тесты, а тесты - в UnitTest, но только это.

Можете ли вы объяснить, в чем различия?

DFOXpro
источник

Ответы:

12

Посмотрите на следующую диаграмму. Он иллюстрирует взаимосвязь между разработкой на основе тестирования (TDD) и разработкой на основе приемочных испытаний (ATDD):

Диаграмма развития, основанная на приемочных тестах

Обратите внимание, что внутренний цикл, TDD, окружен внешним циклом, ATDD. Требования (показанные в графе Acceptance Criteria) определяют создание автоматических приемочных тестов, которые, в свою очередь, стимулируют создание модульных тестов для реализации.

В целом, RSpec будет использоваться в тех ситуациях, когда вы хотите выразить тесты в удобной для бизнес-аналитики форме, а именно при создании автоматических приемочных тестов (коричневый круг); тогда как платформы модульных тестов, такие как nUnit, более специализированы для такого рода модульных тестов, написанных с точки зрения TDD разработчика на уровне реализации (желтый круг).

Роберт Харви
источник
Хорошим примером является хеш-таблица, которая требует подробных модульных тестов, поскольку ожидается, что она будет работать для всех возможных входных данных, а не только для небольшого набора примеров в приемочных тестах. Однако код, который рассчитывает скидку для «хорошего» покупателя, вероятно, будет хорошо охвачен приемочными тестами, поэтому может потребоваться отсутствие или несколько юнит-тестов.
Ян
3

Хорошо, у нас есть несколько различных терминов, так что вот что происходит

  • У нас есть модульное тестирование. Другими уровнями являются интеграционное тестирование, тестирование производительности и т. Д.
  • rspec может использоваться для многих из вышеперечисленных уровней тестирования, например, в отношении моделей, контроллеров и представлений через тесты функций Capybara.
  • Слово «спецификация» происходит от спецификации, которая лежит в основе теста - она ​​что-то указывает.
  • rspec - платформа, используемая для тестирования браузеров agaist, часто используемая в приложениях Ruby on Rails.
  • spec-файлы - rspec-файл обычно заканчивается на _spec.rb и часто называется spec-файлами.
Майкл Даррант
источник