В момента правя тестове за производителност и натоварване на сложна многослойна система, изследвайки ефекта от различни промени, но имам проблеми с проследяването на всичко:
- There are many copies of different assemblies
- Orignally released assemblies
- Официално пуснати актуални корекции
- Сглобки, които съм създал, съдържащи допълнителни допълнителни поправки
- Сглобки, които съм изградил, съдържащи допълнително диагностично регистриране или проследяване
- Има много корекции на бази данни, някои от горните модули зависят от прилагането на определени корекции на база данни
- Съществуват много различни нива на регистриране в различни нива (регистриране на приложения, статистика за ефективността на приложението, профилиране на SQL сървър)
- Има много различни сценарии, понякога е полезно да тествам само 1 сценарий, друг път трябва да тествам комбинации от различни сценарии.
- Зареждането може да бъде разделено между няколко машини или само една машина
- Данните, присъстващи в базата данни, могат да се променят, например някои тестове могат да бъдат направени с генерирани данни, а по-късно с данни, взети от активна система.
- 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
- Регистри на събития
- DMVs
- Броячи на Perfmon
- Базата данни(ите) е с размер няколко Gb, така че там, където бих използвал резервни копия, за да се върна към предишно състояние, имам склонност да прилагам промени към всяка база данни, която е налице след последния тест, което ме кара бързо да губя проследяване на нещата.
Събирам възможно най-много информация за всеки тест, който правя (тествания сценарий, кои корекции се прилагат и какви данни има в базата данни), но все пак се налага да повтарям тестове поради противоречиви резултати. Например току-що направих тест, за който вярвах, че е точен дубликат на тест, който проведох преди няколко месеца, но с актуализирани данни в базата данни. Знам със сигурност, че новите данни трябва да причинят влошаване на производителността, но резултатите показват обратното!
В същото време установявам, че отделям непропорционално много време за записване на всички тези подробности.
Едно нещо, което обмислях, беше използването на скриптове за автоматизиране на събирането на данни за производителност и т.н., но не бях сигурен, че това е толкова добра идея - не само че отнема време за разработване на скриптове вместо за тестване, но грешките в моите скриптове могат да ме причинят за да изгубите представа още по-бързо.
Търся някои съвети/подсказки как по-добре да управлявам тестовата среда, по-специално как да намеря баланс между събирането на всичко и действителното извършване на някои тестове с риск да пропусна нещо важно?