У мене є клас, призначений для генерування випадкового пароля довжини, яка також є випадковою, але обмежена між визначеним мінімумом та максимальною довжиною.
Я будував одиничні тести і наткнувся на цікавий маленький корч з цим класом. Вся ідея одиничного тесту полягає в тому, що він повинен бути повторюваним. Якщо ви запускаєте тест сто разів, він повинен давати однакові результати сто разів. Якщо ви залежите від певного ресурсу, який може бути, а може і не бути, або не бути в початковому стані, який ви очікуєте, тоді ви маєте на меті знущатися над відповідним ресурсом, щоб переконатися, що ваш тест справді завжди повторюється.
Але що робити у випадках, коли SUT повинен генерувати невизначений вихід?
Якщо я зафіксую мінімальну та максимальну довжину до одного і того ж значення, я можу легко перевірити, чи створений пароль має очікувану довжину. Але якщо я вкажу діапазон прийнятної довжини (скажімо, 15 - 20 символів), то у вас зараз виникає проблема, що ви могли пройти тест сто разів і отримати 100 пропусків, але на 101-му запуску ви можете повернути рядок з 9 символів.
Що стосується класу паролів, який є досить простим по своїй суті, він не повинен виявляти величезної проблеми. Але це змусило мене задуматися про загальний випадок. Яка стратегія, яку зазвичай приймають як найкращу, має бути застосована під час роботи з SUT, які проектують невизначений вихід?