У меня есть довольно сложное приложение, которое поддерживается большой базой данных около 50-60 таблиц. Я пытаюсь получить максимально возможное количество тестовых программ для кода, но я действительно борюсь с издевательством по набору данных и некоторым ключевым понятиям. На самом деле я испытываю тревогу при мысли о попытке реализовать полное тестирование тестовых блоков, потому что я не уверен, как это сделать:Предложения по тестированию модулей
1) Проверьте все возможные сценарии и комбинацию данных для каждой функции. И.Е. Одна из наших функций возвращает значение, основанное на примерно 20 входах с 3 различными возможными значениями для каждого входа. Как можно проверить все значения для чего-то подобного? И если бы я смог проверить все эти комбинации, мне пришлось бы написать тот же логический код в тесте, чтобы определить, должно ли оно пройти или нет (не является ли это избыточным?).
2) Данные и результаты меняются со временем! Например, если я запустил запрос для числа сотрудников, которые арендовали автомобиль на прошлой неделе, я всегда буду возвращать другой результат по мере продвижения вперед. Как я могу написать модульный тест, который знает, сколько результатов ожидать, если результаты будут отличаться от одного дня к другому?
Люди говорят, что если вы боретесь с модульным тестированием, что вы делаете это неправильно, пожалуйста, просветите меня о том, как лучше всего справляться с этими ситуациями.
Я ценю голосование. Я был бы признателен, если бы это было повод для этого. Мне бы хотелось узнать, какие лучшие методы для переменных тестирования модулей изменяются со временем и имеют x^n возможных входов. –
Причина в том, что нет конкретного вопроса. Вы в основном просите «консультацию по единому тестированию», которую вы можете найти с помощью простого поиска в Google (хотя я рекомендую конкретно искать рекомендации BDD). Другими словами: какая конкретная проблема у вас есть и что вы пробовали? –
1) Проверьте краевые шкафы; и, мы надеемся, используя структуру тестирования, которая позволяет проводить тесты, управляемые данными. 2) Результаты испытаний не должны меняться со временем, а только данные. Примите параметр времени (только данные сейчас) для таких тестов * и * используйте DI/IoC для получения объектов времени, чтобы их можно было насмехаться в тестах! Запрошенная тестовая база данных также должна быть не меняющейся (для ожидаемых данных/результатов). – user2864740