Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 14
.NET 8

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

13.07.2024, 21:12. Показов 1575. Ответов 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 1
13.07.2024, 22:01
Etyuhibosecyu, переписать тесты так чтобы они не занимали столько времени. Ответ в стиле Капитана Очевидность, но ничего другого тут нечего предложить. Если ваши юнит-тесты написаны так же как и бенчмарки, то просто уменьшите размеры данных. В юнит-тестах нет смысла использовать экстремально высокие значения.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 14
13.07.2024, 22:13  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
то просто уменьшите размеры данных.
А как быть, если эти данные - например, изображение, размер которого уменьшить нельзя?

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

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

В твоем случае я почти наверняка уверен, что тесты адово сделаны и выполняют лишнюю работу, гоняя слишком много данных.
0
Эксперт .NET
 Аватар для Rius
13205 / 7733 / 1681
Регистрация: 25.05.2015
Сообщений: 23,577
Записей в блоге: 14
14.07.2024, 09:50
Цитата Сообщение от Usaga Посмотреть сообщение
В твоем случае я почти наверняка уверен, что тесты адово сделаны
Не только тесты, но и тестируемый код.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 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
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 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
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 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
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 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
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,777
Записей в блоге: 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
1317 / 897 / 200
Регистрация: 09.09.2011
Сообщений: 2,692
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru