В настоящее время я занимаюсь производительностью и нагрузочным тестированием сложной многоуровневой системы, исследуя влияние различных изменений, но у меня возникают проблемы с отслеживанием всего:
- There are many copies of different assemblies
- Orignally released assemblies
- Официально выпущенные исправления
- Сборки, которые я создал, содержащие дополнительные дополнительные исправления
- Сборки, которые я создал, содержащие дополнительное ведение журнала диагностики или трассировку
- Существует множество исправлений базы данных, некоторые из вышеперечисленных сборок зависят от применения определенных исправлений базы данных.
- Существует множество различных уровней ведения журнала на разных уровнях (ведение журнала приложений, статистика производительности приложений, профилирование SQL-сервера).
- Существует много разных сценариев, иногда полезно протестировать только один сценарий, в других случаях мне нужно протестировать комбинации разных сценариев.
- Нагрузка может быть разделена между несколькими машинами или только одной машиной.
- Данные, присутствующие в базе данных, могут изменяться, например, некоторые тесты могут быть выполнены с использованием сгенерированных данных, а затем с данными, взятыми из действующей системы.
- There is a massive amount of potential performance data to be collected after each test, for example:
- Many different types of application specific logging
- Трассировки SQL Profiler
- Журналы событий
- DMV
- Счетчики производительности
- База данных имеет размер в несколько гигабайт, поэтому там, где я использовал бы резервные копии для возврата к предыдущему состоянию, я обычно применяю изменения к любой базе данных после последнего теста, что приводит к быстрой потере отслеживать вещи.
Я собираю как можно больше информации о каждом тесте, который я делаю (проверяемый сценарий, какие исправления применяются, какие данные находятся в базе данных), но мне все еще приходится повторять тесты из-за противоречивых результатов. Например, я только что провел тест, который, по моему мнению, был точной копией теста, который я провел несколько месяцев назад, но с обновленными данными в базе данных. Я точно знаю, что новые данные должны вызвать снижение производительности, однако результаты показывают обратное!
В то же время я ловлю себя на том, что трачу непропорционально много времени на запись всех этих подробностей.
Одна вещь, которую я рассматривал, заключалась в использовании сценариев для автоматизации сбора данных о производительности и т. Д., Но я не был уверен, что это такая уж хорошая идея - это не только время, потраченное на разработку сценариев вместо тестирования, но и ошибки в моих сценариях, которые могут привести к тому, что я чтобы еще быстрее потерять след.
Мне нужен совет / подсказка о том, как лучше управлять тестовой средой, в частности, как найти баланс между сбором всего и фактическим проведением некоторого тестирования, рискуя упустить что-то важное?