Уникальное тестирование Заметка
The Daily WTF на русском

Уникальное тестирование

Команда Николая столкнулась с периодическими сбоями сборки в своем конвейере CI/CD, при этом тесты падали примерно в 0,5% случаев. Это раздражение побудило Николая самостоятельно разобраться в проблеме. Неудачный тест был связан с реализацией GUID от Microsoft, которая является оберткой для алгоритмов UUID. Конкретное утверждение было Assert.DoesNotContain("000", transactionId.ToString());, которое проверяло, содержит ли строка GUID "000". Это было сделано для обнаружения пустого UUID, но предположение, что "000" никогда не появится в строке допустимого GUID, оказалось неверным. Николай обнаружил, что такое строковое представление встречалось в 0,5527% случаев, примерно один раз из каждых 181 экземпляра. Тест был плохо спроектирован и мог быть улучшен более надежной проверкой. Лучшим подходом было бы использование встроенной константы GUID.Empty, которая представляет собой UUID со всеми битами, установленными в ноль. Автор выражает разочарование тем, что разработчики могут не использовать такие очевидные константы, предполагая, что обращение к документации, вероятно, выявит их существование. Статья содержит рекламу руководства по NuGet.