Вопрос

Какой смысл использовать Fit / FitNesse вместо интеграционных тестов в стиле xUnit?На мой взгляд, у него действительно странный и очень непонятный синтаксис.

Действительно ли это только для того, чтобы заставить владельцев продуктов писать тесты?Они этого не сделают!Это слишком сложно для них.Так почему кто-то должен Соответствовать / FitNesse?

Обновить Значит, это полностью подходит только для тестов бизнес-правил?

Это было полезно?

Решение

Весь смысл в том, чтобы работать с непрограммистам, часто даже совершенно нетехническим людям, нравятся потенциальные пользователи бизнес-приложения, рассказывающие о том, что приложение должно делать, а затем запускающие его в тесты.Хотя заставить тесты работать, безусловно, слишком сложно для них, они должны иметь возможность обсуждать таблицы с образцами данных, заполненные, например, вСлово.И самое замечательное, что, в отличие от традиционных спецификаций, эти документы работают с вашим приложением, потому что автоматизированные тесты заставляют вас обновлять их.

Видишь Введение в Fit и Подходящий рабочий процесс Джеймсом Шором и перейдите по ссылкам на остальную документацию, если хотите.


Обновить: Зависит от того, что вы подразумеваете под бизнес-правилами?;-) Некоторые люди понимали бы это очень узко (например, в движках бизнес-правил и т.д.), другие - очень широко.

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

Важно то, что приложение будет делать, а не как.Это форма функциональной спецификации.Как таковой, он довольно широкий и на самом деле организован не по модулям, а скорее по сценариям использования.

Тесты, которые выходят из примеров, будут проверять внешнее поведение приложения в аспектах, важных с точки зрения бизнеса.Да, вы могли бы назвать это бизнес-правилами.Но давайте посмотрим на пример кредитного скоринга Диего Янчича, только с небольшой изюминкой.Что, если частью документа fit является 1) перечисление атрибутов и их оценок, а затем 2) предоставление клиентских данных и результатов проверки, тогда каковы фактические бизнес-правила:таблица подсчета очков (атрибуты и их оценки) или логика приложения, вычисляющая оценку для каждого клиента (на основе таблицы подсчета очков)?А какие из них проходят тестирование?

Тесты на пригодность кажутся более подходящими для приемочных испытаний.Другие тесты (когда вы не заботитесь о сотрудничестве с клиентами, пользователями, экспертами в предметной области и т.д., вы просто хотите автоматизировать тестирование), вероятно, будет проще писать и поддерживать более традиционными способами.xUnit хорош для модульного тестирования и тестов api.Каждая веб-платформа должна иметь некоторый инструмент для тестирования веб-приложений / сервисов, интегрированный в ее цикл изменения-сборки-тестирования-развертывания, например.у django есть свой маленький тестовый клиент.Тебе есть из чего выбирать.

И вы всегда можете написать свой собственный инструмент (или предпочтительно настроить какой-нибудь существующий), чтобы лучше соответствовать (каламбур) некоторым тестированиям в вашей конкретной области интересов.


Еще одна общая мысль.Часто (не всегда !!!) лучше кодировать свои тесты, "бизнес-правила" и практически все остальное в какой-то форме четко определенных данных, которые интерпретируются каким-то простым, универсальным фрагментом кода.Тогда легко использовать данные каким-либо другим способом:создайте документацию, перейдите на новую платформу тестирования, перенесите приложение в новую среду / язык программирования, используйте для проверки соответствия некоторым внешним правилам или другой системе (просто используйте свое воображение).Гораздо сложнее извлечь такую информацию из кода, например.простые жестко запрограммированные модульные тесты или бизнес-правила.

Fit хранит тестовые примеры в виде данных.В очень специфическом формате из-за того, как он предназначен для использования, но все же.Тесты, специфичные для вашего домена, могут использовать различные форматы, такие как простой CSV, JSON или YAML.

Другие советы

Идея заключается в том, что вы (программист) определяете простой для понимания формат, такой как лист Excel.Затем владелец продукта вводит информацию, которую трудно понять людям, не занятым в бизнесе...и вы просто проверяете, что ваш код работает так, как ПО ожидает от running Fit.Способ, используемый в xUnit, может быть использован программистами в качестве входных данных для получения понятной или несложной информации.Если вам нужно будет ввести много странных примеров с несколькими полями в ваш тест xUnit, это будет трудно читать.

Представьте себе случай, когда вам нужно решить, предоставлять ли кредит клиенту, исходя из возраста, Женат / не женат, количества детей, заработной платы, вида деятельности...Как программист, вы не можете записать эту информацию;и риск-менеджер не может написать тест xUnit.

Помогает уменьшить избыточность при регрессионном тестировании и тестировании на ошибки.Создайте управляемый репозиторий тестовых примеров.Это все равно что построить один раз и использовать вечно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top