1

При разработке крупных систем нефункциональные требования часто имеют значение , и их реализация занимает большую часть времени разработки. Нефункциональные тесты являются дорогостоящими и часто требуется много времени для запуска. Нефункциональные тесты часто не могут выполняться в нормальном цикле непрерывной интеграции, потому что они могут занять слишком много времени - тест на стабильность может занять две недели. Любой может предложить любую хорошую стратегию тестирования для достижения ручное выполнение нефункционального тестирования в процессе непрерывной интеграции, где автоматическая сборка создается каждые 2 часастратегия тестирования для нефункциональных тестовых примеров при непрерывной интеграции

ответ

3

Некоторые длительные испытания могут (и если да, то они должны) быть разделены на несколько строк которые могут выполняться параллельно.

В некоторых случаях может быть предпочтительнее потратить немного денег на увеличение количества испытательных стендов, таким образом, общая тестовая полоса пропускания/пропускная способность, которая позволила бы нескольким испытаниям перекрываться друг с другом, уменьшая или даже устраняя влияние длительной продолжительности теста - вы все равно можете использовать его в некоторых (некоторых) системах CI - никто не говорит, что если CI-конвейеры начинаются каждые 2 часа, они также должны заканчиваться в течение 2 часов - они могут продолжаться и перекрываться (в шахматном порядке) до тех пор, пока способность ресурса позволяет это (или при по крайней мере, достойная система CI должна поддерживать такое перекрытие).

В качестве альтернативы системы CI могут быть сконфигурированы для выборочного запуска более длительных задач в зависимости от их емкости: скажем, типичный материал для каждого трубопровода (всего 2 часа), но только запустите тест с емкостью 1 в день один раз каждые 12 трубопроводов или когда доступны ресурсы для длительного теста (возможно, выбирая один конвейер, который уже прошел более короткие проверки -> более высокие шансы пройти более длительный тест, более значимые результаты) (это можно было бы сделать даже «вручную», уволив длинные тесты с артефактами из подмножества CI-казней).

В некоторых случаях длительная продолжительность является побочным эффектом ограничений инфраструктуры тестирования или фактического тестового кодирования, например невозможность выполнения задач в паралели, даже если это не повлияет на результат теста. В таких случаях переключение на более подходящую инфраструктуру или, соответственно, повторное составление тестов для разрешения/улучшения параллелизма могло бы сократить (иногда значительно) продолжительность теста.

0

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

Вы упомянули текущие тесты в течение 2 недель - это кажется слишком длинным для меня. Непрерывная интеграция связана с немедленной обратной связью. Если какой-либо тест длится так долго, вы можете получить уведомление о серьезной проблеме только через 2 недели после его введения. Я бы подумал дважды, если это будет так.

Следует избегать как можно большего ручного выполнения нефункционального тестирования при непрерывной интеграции. Тесты должны запускаться автоматически сразу после развертывания. Если по каким-то причинам определенные тесты не могут выполняться таким образом (например, поскольку они занимают больше времени для выполнения), они должны запускаться периодически - автоматически, конечно.

Есть несколько вариантов, чтобы ускорить NFT время выполнения:

  1. уменьшают испытания - например, вместо 1000 потоков с рампой вверх = x, запустите 100 потоков с нарастанием вверх = x/10. Если вы правильно масштабируете все необходимые параметры, вы можете получить точную обратную связь намного раньше.

  2. Выполнение параллельного выполнения NFT в нескольких тестовых средах после прохождения функциональных тестов. Если вы используете платформу Amazon, это должно быть совершенно возможно.И если вы заплатите за время, когда машина была готова, это не должно значительно повысить стоимость - общее время выполнения теста может быть аналогичным.