2010-07-12 2 views
4

Я читал, что сначала должен писать простые базовые тесты и постепенно переходить к более сложным. Какие тесты (по порядку) я должен писать для следующей функции?TDD - Какие тесты следует использовать для этой функции?

функция List.syncWithList(lst)

  • следует добавлять элементы в список, которые не в списке, но находятся в lst
  • должны удалить все элементы в списке, которые не являются в lst
  • должен заменить любого элементы в списке, которые имеют разные теги версии, чем те, что указаны в lst
  • не следует заменять элементы в списке, которые имеют те же теги версии, что и те, что указаны в lst
+2

Вы предоставили список вещей для тестирования. Что вы еще хотите? –

ответ

8

У вас есть ваш основной список тестов. Вы просто предоставили их нам. На минимальном уровне вы должны проверить, что выполнены все функциональные требования (например, четыре вопроса, которые вы дали нам в вопросе).

К этому относятся кромки, такие как пустые списки (с одной и с обеих сторон), идентичные списки и т. Д.

Самый простой способ начать добавить следующее:

  • пустой список с обеих сторон.
  • идентичные списки.
  • пустой левый список с правым списком с одним элементом для добавления.
  • одноэлементный список слева с пустым правым списком для удаления.
  • предыдущие два теста, но с пятиэлементными списками с одной стороны.
  • замена одного элемента в одноэлементном левом списке.
  • замена одного элемента в виде списка из пяти элементов.
  • замена трех элементов в виде списка из пяти элементов.
  • проверка того, что замены не выполняются с идентичными тегами версии.

, а затем добавить больше, как вы затрагиваете отдельные проблемы.

И я не могу этого достаточно подчеркнуть: автоматизировать тестирование! Вы обнаружите, что тестирование намного проще, если вы можете просто нажать кнопку и посмотреть результаты. Каждый раз, когда вы нажимаете на ошибку, добавьте тест, который поймал бы эту ошибку в тестовом наборе выше и нажмите кнопку, чтобы проверить ее.

У нас есть наши испытания вплоть до изобразительного искусства. С одной командой внедряется целый процесс, который сдувает базы данных, загружает их известными данными, запускает наши тесты, сравнивает результаты с предыдущими успешными тестами и так далее.

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

+3

Это отличный ответ. Я просто хотел бы добавить, что маркеры, которые написал автор, на самом деле являются хорошими именами тестов. Ваши тестовые имена должны читать как описание того, что делает класс, и каково его ожидаемое поведение. – kyoryu

+1

+1 для автоматизированного тестирования –

+1

+1: У вас уже есть свой список. Проверьте это. –

Смежные вопросы