В частности, у меня есть метод, который выбирает n элементов из списка таким образом, что% из них удовлетворяют одному критерию, а b% соответствуют секунде и так далее. Упрощенным примером будет выбор 5 элементов, у которых 50% имеют заданное свойство со значением «true» и 50% «false»; В 50% случаев метод вернет 2 true/3 false, а остальные 50%, 3 true/2 false.Каков наилучший способ модульного тестового кода, который генерирует случайный выход?
Статистически говоря, это означает, что более 100 пробегов, я должен получить около 250 true/250 false, но из-за случайности 240/260 вполне возможно.
Каков наилучший способ тестирования устройства? Я предполагаю, что, хотя технически 300/200 возможен, вероятно, это должно завершиться неудачно, если это произойдет. Существует ли общепринятая толерантность к таким случаям, и если да, то как вы определяете, что это такое?
Редактировать: В коде, над которым я работаю, у меня нет роскоши использовать генератор псевдослучайных чисел или механизм принуждения его к балансу с течением времени, поскольку списки, которые выбраны генерируются на разных машинах. Мне нужно продемонстрировать, что со временем среднее количество элементов, соответствующих каждому критерию, будет иметь тенденцию к требуемому проценту.
в примере, вы хотите, по крайней мере, 50% или примерно 50%? Чтобы быть более конкретным, какова случайность в этом тесте? – Gishu
Я подозреваю, что вы на самом деле не пишете модульные тесты. Если вы тестируете серверы, работающие на разных компьютерах, вы фактически находитесь в системном тесте. Я просто могу сказать вам: если у вас есть модульные тесты для классов, запущенных на этих серверах, вам больше не нужно многое (подробное) тестирование системы. –
Нет, нужно убедиться, что алгоритм действительно выбирает 2/3 50% времени, а 3/2 остальные 50% (в этом простом примере), независимо от того, где он используется. Это не одна система, которая будет производить это; Запуск его 1000 раз на одной машине считается адекватным тестом, чтобы продемонстрировать, что если он будет запущен 10 раз на 100 машинах по всему миру, он будет выровняться соответствующим образом, поэтому я планирую его модульное тестирование. – Flynn1179