Есть некоторые области приложений (например, GameDev), в которых необходимо создать множество функций с использованием случайных значений для вывода их результатов. Один из примеров приведен ниже:Как проверить правильность функций, которые используются случайным образом?
def generate_key(monster_key_drop_coef):
key_letters = string.ascii_uppercase
rand = random.random()
if monster_key_drop_coef < rand:
return None
button = {}
button["type"] = random.choice([1,2,3])
button["letter"] = random.choice(key_letters)
return button
Эта функция генерирует падение элемента на основе нескольких случайных операций. Проблема возникает, если вы хотите автоматически проверить правильность этой функции. Сгенерированные значения не являются детерминированными, и запись регрессионных тестов представляется невозможной.
Мои вопросы:
- Возможно ли это писать полезные тесты регрессии для этого типа функций?
- Есть ли общий подход для создания некоторых других типов тестов в этом случае?
На эту тему написаны целые книги. Пример: http://www.johndcook.com/Beautiful_Testing_ch10.pdf –
Излучение ГСЧ для доставки известных результатов (а затем тестирование с конкретными выходами, для которых известен желаемый результат) является одним из подходов. –