Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
.NET 8

Что делать, если юнит-тесты выполняются все дольше?

13.07.2024, 21:12. Показов 1529. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например, у меня есть библиотеки Ares F, Ares I и Ares T, которые составляют части единой системы - Ares Tools, и имеют мало смысла в отрыве от этой системы, так что логично их проверять вместе. И вот, сначала тесты только для Ares T (который тогда включал в себя то, что позже стало Ares F) занимали до 8 минут. При добавлении проверок для Ares I уже стало до 19 минут. А сегодня длительность всех проверок на распаковку составила ровно 20 минут! И это - "чистое" время, без учета накладных расходов на работу самой системы тестирования, и также в это время не включен PPM, иначе страшно даже представить, каким будет время прохождения тестов. Что с этим можно сделать? Ответ "уменьшить количество проверок" не принимается. Если убрать тормоза в методах - то в Лемпеле-Зиве они и так убраны, а в BWT главный тормоз - сортировка, и я не знаю, как ее ускорить. Уже и так ускорена многократно. Есть ли какой-то выход?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.07.2024, 21:12
Ответы с готовыми решениями:

А что вообще такое юнит тесты?
Товарищи... А вот все говорят, юнит тесты, юнит тесты... Что дескать, оно тестирует отдельно каждый кусочек программы. А что это...

Юнит-тесты (к примеру, для слайдера). Что посоветуете?
Может есть какие-то ресурсы или это можно сделать прямиком в PhpStorm(подозреваю, что это там можно сделать) но можно ли тогда где-то...

Как сделать так , чтобы если все 3 условия не выполняются , то вывести что то
Задача на проверку : "принадлежат ли числа к " . Написал по одному , что принадлежит , что не принадлежит . А как сделать так , чтобы если...

21
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
13.07.2024, 22:01
Etyuhibosecyu, переписать тесты так чтобы они не занимали столько времени. Ответ в стиле Капитана Очевидность, но ничего другого тут нечего предложить. Если ваши юнит-тесты написаны так же как и бенчмарки, то просто уменьшите размеры данных. В юнит-тестах нет смысла использовать экстремально высокие значения.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
13.07.2024, 22:13  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
то просто уменьшите размеры данных.
А как быть, если эти данные - например, изображение, размер которого уменьшить нельзя?

Добавлено через 10 минут
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
изображение, размер которого уменьшить нельзя?
Добавлю: и если нужно протестировать на разных изображениях, чтобы убедиться, что успешная распаковка одного не является случайностью.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
13.07.2024, 22:22
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
размер которого уменьшить нельзя?
Почему нельзя?

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Добавлю: и если нужно протестировать на разных изображениях, чтобы убедиться, что успешная распаковка одного не является случайностью.
Тестируйте. Никто это не запрещает. Просто выберите данные так чтобы с одной стороны можно было проверить корректность алгоритма, а с другой не раздувать время выполнения тестов.
0
Эксперт .NET
 Аватар для Usaga
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,409
14.07.2024, 09:17
Etyuhibosecyu, по мимо озвученных выше советов еще добавлю, что долгое выполнение тестов не всегда является проблемой. Если тестов много, если данные большие и уменьшить их нельзя. Можно тесты выполнять параллельно. Оптимизировать тесты попробовать. Машину помощнее взять. Или смириться.

В твоем случае я почти наверняка уверен, что тесты адово сделаны и выполняют лишнюю работу, гоняя слишком много данных.
0
Эксперт .NET
 Аватар для Rius
13161 / 7720 / 1679
Регистрация: 25.05.2015
Сообщений: 23,516
Записей в блоге: 14
14.07.2024, 09:50
Цитата Сообщение от Usaga Посмотреть сообщение
В твоем случае я почти наверняка уверен, что тесты адово сделаны
Не только тесты, но и тестируемый код.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
14.07.2024, 17:52
Цитата Сообщение от Usaga Посмотреть сообщение
В твоем случае я почти наверняка уверен, что тесты адово сделаны и выполняют лишнюю работу, гоняя слишком много данных.
У меня аналогичное ощущение после того как увидел примеры его бенчмарков (раз, два). Каждый раз большие объемы данных хотя явно можно было обойтись меньшими. Большие, если сильно хочется, можно оставить для стресс-тестов.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.07.2024, 17:10
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А как быть, если эти данные - например, изображение, размер которого уменьшить нельзя?
А почему его нельзя уменьшить?
Юнит-тесты же должны проверять корректность алгоритма. Какая алгоритму разница: 100500х100500 изображение или 20х20?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
17.07.2024, 17:17  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Какая алгоритму разница: 100500х100500 изображение или 20х20?
Причем тут 100500? Речь о проверке корректности на изображениях разной структуры. А изображений нужной структуры 20x20 я себе не представляю.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.07.2024, 17:35
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Причем тут 100500?
При том, что я не знаком с вашим алгоритмом, но видя слово "изображение" думаю об алгоритмах, работающих с изображениями. Всем знакомым мне алгоритмам без разницы какой размер изображения.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Речь о проверке корректности на изображениях разной структуры. А изображений нужной структуры 20x20 я себе не представляю.
Что за структура?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
17.07.2024, 17:56  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
При том, что я не знаком с вашим алгоритмом, но видя слово "изображение" думаю об алгоритмах, работающих с изображениями.
Это алгоритм сжатия изображений.
Цитата Сообщение от kolorotur Посмотреть сообщение
Что за структура?
Фотографии, скриншоты из игр, значки и т. д. - все это разные изображения, и сжимать их нужно тоже по-разному.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.07.2024, 18:06
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Это алгоритм сжатия изображений.
Зачем для тестирования огромные изображения?

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Фотографии, скриншоты из игр, значки и т. д. - все это разные изображения, и сжимать их нужно тоже по-разному.
Чем определяется конкретный способ сжатия?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
17.07.2024, 18:10  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Зачем для тестирования огромные изображения?
Они не огромные, просто некоторые такие, что программа над ними долго думает. По структуре неудобные для программы.
Цитата Сообщение от kolorotur Посмотреть сообщение
Чем определяется конкретный способ сжатия?
Обход, дельта, Лемпель-Зив или BWT...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.07.2024, 18:36
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Они не огромные, просто некоторые такие, что программа над ними долго думает.
Если данные небольшие и программа с ними висит, то это проблема не в юнит-тестах, а в алгоритме.
Т.е. тема не имеет смысла.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Обход, дельта, Лемпель-Зив или BWT
LZW — это же сжатие. Вы сжимаете изображение для того, чтобы определить какой способ сжатия использовать?
Хотя, это не важно: для этих методов тоже можно использовать небольшие данные — вы же корректность алгоритма проверяете, а не бенчмарк делаете.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
17.07.2024, 18:44  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Если данные небольшие и программа с ними висит, то это проблема не в юнит-тестах, а в алгоритме.
А вы не знали, что бывают файлы, неудобные для определенного алгоритма сжатия? Даже если они маленькие.
Цитата Сообщение от kolorotur Посмотреть сообщение
LZW — это же сжатие.
Очень слабое сжатие.
Цитата Сообщение от kolorotur Посмотреть сообщение
Вы сжимаете изображение для того, чтобы определить какой способ сжатия использовать?
Я сжимаю изображение, в случае юнит-теста, для того, чтобы проверить, не сломался ли алгоритм после внесенных изменений.
Цитата Сообщение от kolorotur Посмотреть сообщение
Хотя, это не важно: для этих методов тоже можно использовать небольшие данные — вы же корректность алгоритма проверяете, а не бенчмарк делаете.
Корректность алгоритма важно проверить на разных данных. Бывают случаи, когда на одних данных алгоритм корректен, а на других - нет.
0
628 / 392 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
17.07.2024, 18:47
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Я сжимаю изображение, в случае юнит-теста, для того, чтобы проверить, не сломался ли алгоритм после внесенных изменений.
здесь требуется пояснение

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Бывают случаи, когда на одних данных алгоритм корректен, а на других - нет.
это что же, ваше приложение может похерить фотографии человека, который решит воспользоваться вашим приложением?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14
17.07.2024, 18:49  [ТС]
Цитата Сообщение от Pilarentes Посмотреть сообщение
это что же, ваше приложение может похерить
Просто распаковка вылетит и все.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.07.2024, 10:29
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А вы не знали, что бывают файлы, неудобные для определенного алгоритма сжатия?
Вы не поверите, насколько хорошо я это знаю.
Однако, если алгоритм сжатия задыхается на неудобных для него паре сотен байтах, то что-то очень не так с алгоритмом сжатия.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Я сжимаю изображение, в случае юнит-теста, для того, чтобы проверить, не сломался ли алгоритм после внесенных изменений.
Это очевидно.
Вопрос был про способ выбора метода сжатия в зависимости от передаваемого изображения.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Корректность алгоритма важно проверить на разных данных. Бывают случаи, когда на одних данных алгоритм корректен, а на других - нет.
Совершенно верно. При этом данные для юнит-теста должны быть составлены так, чтобы тестируемый функционал работал (или ожидаемо падал) с минимальным количеством данных, необходимых для этого.
1
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
19.07.2024, 15:40
Ммм... если ваши алгоритмы не подразумевают разную логику для разрешений 100500х100500 и 1000х1000, возможно стоит сделать следующий финт ушами:
- флаг указывающий что тестируем "по максимум"
- на вход сделать как 1000х100, так и 100500х100500
- в процессе разработки проверять урезанным вариантом.
- по завершению запускать уже весь прогон.

p.s. в идеале юнит тесты должны проверять граничные значения, и мне слабо понятно как это колериюет с объемом. Т.е. сжать полностью одноцветное изображение, из разных пикселей, градиент, шахматным порядком -- кажись это имеет смысл. А скармливать большие объемы уже ближе к бенчмаркам.
1
HF
 Аватар для HF
1316 / 895 / 200
Регистрация: 09.09.2011
Сообщений: 2,689
Записей в блоге: 2
19.07.2024, 18:27
Цитата Сообщение от Wolfdp Посмотреть сообщение
p.s. в идеале юнит тесты должны проверять граничные значения, и мне слабо понятно как это колериюет с объемом. Т.е. сжать полностью одноцветное изображение, из разных пикселей, градиент, шахматным порядком -- кажись это имеет смысл. А скармливать большие объемы уже ближе к бенчмаркам.
Тоже так считаю.
Тесты - проверяют логику и какие-то критичные моменты.

Если блин есть желание проверить огромный файл, то просто нужно взять и скомпилировать консольную программу. Запустить в командной строке, сгенерить огромный файл, потом прочитать из результата (файла) нужные параметры (размеры, заголовки, куски байт и т.п.). Ну а если результат должен быть всегда идентичный, то вообще можно два файла сравнивать. В чём проблема не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2024, 18:27
Помогаю со студенческими работами здесь

Подскажите новичку что делать дольше
Добрый день не судите строго, суть такова, решил я по собственной инициативе облегчить жизнь себе и товарищам по работе создав электронный...

Решение транспортной задачи методом потенциалов: не все тесты выполняются
Всем доброго времени суток! У меня проблема в следующем. Нашел прогу в интернете по решению транспортной задачи с помощью методов...

Что делать если удалил все разделы дисков?
Здравствуйте. Попал в очень смешную и глупую ситуацию. Хотел поставить Windows 7 вместо десятки. Загрузился с флешки. Потом очистил все...

Что делать, если с сайта воруют все статьи?
Всем доброго времени суток. Столкнулась с проблемой полного копирования моего сайта http://bestcure.org.ua/ на сайте...

Что если запрос обрабатывается дольше, чем длина сессии?
Допустим у нас есть сессия, которая стухает через 5 минут (maxInactiveInterval) а запрос обрабатывается 10 минут Вопрос - сможет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru