как правильно организовать тесты для этого кода TDD? - PullRequest
0 голосов
/ 06 августа 2020

Например, в вопросе leetcode есть следующие тесты или примеры:

Input: pattern = "abba", str = "dog cat cat dog"
Output: true
Example 2:

Input:pattern = "abba", str = "dog cat cat fish"
Output: false
Example 3:

Input: pattern = "aaaa", str = "dog cat cat dog"
Output: false
Example 4:

Input: pattern = "abba", str = "dog dog dog dog"
Output: false

Я написал функцию f, и теперь мне нужно протестировать ее, используя приведенные выше примеры:

pattern = "abba"
s = "dog dog dog dog"

pattern = "abba"
s = "dog cat cat dog"

pattern = "abba"
s = "dog cat cat fish"

pattern = "aaaa"
s = "dog cat cat dog"

pattern = "abba"
s = "dog dog dog dog"

Я мог бы просто написать утверждения assert:

assert( f(pattern,s)) == False 

Но каков другой «правильный способ написания тестов с использованием методологии разработки через тестирование?»

1 Ответ

0 голосов
/ 07 августа 2020

с использованием методологии разработки через тестирование

Подход «по книге» будет выглядеть примерно так:

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

  2. Выберите один из "маленькие" тесты для начала с

  3. Реализуйте этот тест

3a) Добавьте производственный код, необходимый для получения теста для компиляции 3b ) Добавьте производственный код, чтобы получить "правильный" неправильный ответ

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

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

Выберите следующий тест и повторяйте шаги 3–6, пока все элементы на вашем чек-лист готов.

assert( f("abba","dog cat cat fish")) == False 

Ага - это нормально. В зависимости от местных соглашений вы можете предпочесть

assert ! f("abba","dog cat cat fish")

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

...