Как сохранить автоматизированные тесты быстро?

Один из способов взглянуть на это - переместить ссылочный знак с

int &R = x;

на

int& R = x;

R - это int& - это ссылка на [116 ], что означает, что R не освободит память, выделенную x, когда R выйдет из области видимости, но это будет ссылка на x, пока x живет. Настоящим объявляется R, и его объявление не может быть изменено, поэтому, если вы попытаетесь:

<type declaration> R = <value>

, оно должно завершиться неудачей - поскольку R уже объявлено.

Но вы можете присвоить что-либо для того, что R является ссылкой на

R = <value>

... до тех пор, пока тип value равен преобразуется в тип, на который ссылается R (0-1 операторы преобразования).

6
задан Ken 5 December 2008 в 15:50
поделиться

6 ответов

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

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

У Вас есть два варианта:

  1. Оптимизируйте тесты или развертывание тестов.
  2. Не делайте их как часто.

По моему опыту, лучше иметь среду интеграции, которая корректна, и находит ошибки и представляет заключительную продуктивную среду соответственно. Я обычно выбираю опцию 2 (1).

Очень заманчиво сказать, что мы протестируем все все время, но в realilty Вам нужна стратегия.

(1) Кроме того, если существуют загрузки ошибок, которые только найдены в интеграции, в этом случае, забудьте все, что я сказал :-)

5
ответ дан 9 December 2019 в 20:51
поделиться

Я предложил бы иметь несколько высоких уровней, вплотную тестирует, и если кто-либо из тех сбоев, запускает 'более высокое разрешение' тесты.

Думайте о выполнении технической поддержки по телефону...

Ваш компьютер работает? если да, сделанный. Если не, Ваш компьютер включает вообще?...

Для моего поблочного тестирования у меня есть несколько быстрых тестов как "мой компьютер, работает?" если они передают, я не выполняю остальную часть моего комплекта. Если какой-либо из тех тестовых сбоев, я выполняю связанный комплект более низких тестов уровня, которые высказывают мне более высокое мнение разрешения в тот отказ.

Мое представление состоит в том, что выполнение всестороннего комплекта высокоуровневых тестов должно занять меньше чем половину секунды.

Этот подход дает мне и скорость и деталь.

1
ответ дан 9 December 2019 в 20:51
поделиться

Мы используем.NET и NUnit, который поддерживает категории (атрибут, можно поставить тест). Затем мы берем длительные тесты и помещаем их в NightlyCategory так, чтобы они только были выполнены во время ночных сборок а не в непрерывных сборках, которые мы хотим выполнить быстро.

3
ответ дан 9 December 2019 в 20:51
поделиться

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

В основном это имеет дело с методами для ускорения использования базы данных в наборах тестов и запущения тестов в единственном процессе для предотвращения постоянной перезагрузки библиотек.

1
ответ дан 9 December 2019 в 20:51
поделиться

то, что среда должна быть настроена, который НАМНОГО медленнее (банкомат ~1000 секунд)!

Хорошо, по крайней мере, Вы знаете, где сфокусироваться... Вы знаете, где то время проводится?

Очевидно, любое решение собирается зависеть от специфических особенностей здесь.

Существует три решения, которые я использовал в этом виде ситуации:

  1. используйте больше машин. Возможно, Вы могли разделить свои сервисы на две машины? Это позволило бы Вам отбросить свое время установки в 1/2?

  2. использовать более быстрые машины? В одной ситуации я знаю о в команде, сокращает их интеграционный тест, выполняющийся от чего-то как 18 часов к 1 часу путем обновления аппаратных средств (несколько центральных процессоров, быстрого устройства хранения данных RAID, больше RAM, работы). Уверенный это стоило им на порядке $10 тысяч, но это стоило того.

  3. используйте в базе данных памяти для интеграционного теста. Да я знаю, что Вы захотите иметь тесты против реальной базы данных также, но возможно Вы могли запустить тесты первоначально против в версии памяти для получения быстрой обратной связи.

1
ответ дан 9 December 2019 в 20:51
поделиться

Buildbot: http://buildbot.net/trac, который я не могу рекомендовать этому достаточно, если Вы делаете Непрерывную Интеграцию (автоматизированное тестирование). С быстрой конфигурацией все наши модульные тесты выполняются каждый раз, когда существует фиксация, и более длительные интеграционные тесты выполняются периодически в течение дня (3 раза в последний раз, я проверил, но это может быть легко изменено).

0
ответ дан 9 December 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: