TDD - Какие тесты я должен написать для этой функции? - PullRequest
4 голосов
/ 12 июля 2010

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

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

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

1 Ответ

8 голосов
/ 12 июля 2010

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

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

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

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

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

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

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

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

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