Я написал промежуточное программное обеспечение для API Python / Django. Теперь разрешения зависят от комбинации из 4 различных атрибутов, назовем их a b c and d
Далее c и d могут быть 1) пустыми 2) единичными или 3) множественными значениями, поэтому комбинации еще больше возрастают.
Первоначально я решил написать один контрольный пример, который бы генерировал комбинации и отображал ожидаемый результат, используя таблицы истинности.
# Generate all possible combinations
possible_combinations = list(itertools.product([0, 1], repeat=len(possible_values)))
for combination in possible_combinations:
# Get expected result for this combination
expected_result = get_expected_result(
test_type=test_type, combination=combination, possible_values=possible_values)
На основании значения комбинации, установленного в 0 или 1, я решил значения a b c and d
Сейчас я делаю это как часть новой команды, и члены команды вернулись с критикой подхода, поскольку он не гранулированный и не следует передовым практикам, когда тестовый пример выполняет одно действие.
Мой взгляд на лучшие практики заключается в том, что они должны очень четко и очевидно служить целям, а цель может зависеть от задачи или команды под рукой. В этом конкретном случае члены команды не смогли предположить, почему запись этого конкретного контрольного примера в отдельные детали поможет.
В итоге я написал до 30 тестовых случаев с 80% избыточным кодом.
Есть ли объективность в этой дискуссии или это очень субъективный призыв?