2009-09-09 5 views
3

Я в настоящее время делаю работу и нагрузочное тестирование комплексной системы многоярусной расследуя влияние различных изменений, но у меня возникают проблемы, отслеживающие всего:Как отслеживать тестирование производительности

  • Есть много копий различных сборок
    • Orignally выпустил сборки
    • Официально выпущенные исправления
    • агрегатов, что я» Ве построили дополнительно содержащий дополнительные исправления
    • сборки, которые я сборку, содержащую дополнительную диагностическую регистрацию или кальку
  • Есть много патчей базы данных, некоторые из перечисленных выше узлов зависят от некоторых патчей базы данных применяется
  • Существует множество разных уровней ведения журнала, в разных уровнях (ведение журнала приложений, статистика производительности приложений, профилирование SQL-сервера)
  • Существует много разных сценариев, иногда полезно протестировать только 1 сценарий, в других случаях мне нужно проверить комбинации разных сценариев.
  • Нагрузка может быть разделена на несколько машин или только одна машина
  • Данные, имеющиеся в базе данных может изменить, например, некоторые тесты могут быть сделано с сгенерированных данных, а затем с данными, взятыми из живая система.
  • Существует огромное количество потенциальных данных о производительности, которые будут собраны после каждого теста, например:
    • Много различных типов приложений конкретного протоколирования
    • SQL Profiler прослеживает
    • журналов событий
    • DMVs
    • Счетчики для перфтонов
  • База данных (ов) - это несколько Gb размером, поэтому, если бы я использовал резервные копии, чтобы вернуться к предыдущему состоянию, я склонен применять изменения к любой базе данных после последнего теста, заставляя меня быстро потерять информацию о вещах.

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

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

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

Я следую советам/подсказкам о том, как лучше управлять тестовой средой, в частности, как балансировать между сбором всего и фактически получать некоторые тесты, сделанные с риском пропустить что-то важное?

ответ

0

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

Но вы обязаны сделать это ради себя, чтобы попробовать.

0

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

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

0

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

Если вам действительно нужна сложность, которую вы описываете, я бы рекомендовал создать простую базу данных, чтобы вы могли запрашивать многомерные результаты, которые у вас есть. Наличие столбца для каждого из важных факторов позволит вам запросить ответы на такие вопросы, как «у какой конфигурации тестирования была самая низкая дисперсия в латентности?» и «какая тестовая база данных позволила повысить количество ошибок?». Я использую sqlite3 (возможно, через оболочку Python или подключаемый модуль Firefox) для такого рода облегченной коллекции, потому что он сохраняет накладные расходы на обслуживание относительно низкими и позволяет избежать чрезмерного отклонения тестируемой системы, даже если вам нужно запустить тот же самый ящик.

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