SlideShare una empresa de Scribd logo
1 de 20
Контроль качества и
сопровождение в
реальном времени
Антон Наумович
DPI Solutions / IASO Backup
Немного о себе
Антон Наумович
Более 10 лет опыта в разработке
● C++ тимлид и архитектор в IASO Backup
● Консультант в DPI Solutions
● В прошлом – разработчик в Microsoft, команда
Hyper-V (Windows Server 2008 R2/2012)
Специализируюсь в архитектуре, производительности,
отладке, техническом troubleshooting-е
О чем поговорим?
1. О качестве приложений с технической, а не
функциональной точки зрения
2. О построении автоматической системы
отслеживания “технического” качества
3. О максимально возможном дистанцировании
человека от построенной системы
В контексте нативных и .Net приложений под Windows
Что будем отслеживать?
Отклонения
● падения
● подвисания
● потребление памяти
● потребление процессора
● и прочее
Отчего возникают отклонения?
1. Ошибки разработчиков (чаще всего!)
2. Нюансы сторонних библиотек
3. Разнообразие окружения (и софта, и
железа)
Как разобраться в причине?
Дампы памяти!
1. Дамп – файл-слепок памяти процесса, который
можно снять в любой момент:
● при падении процесса
● с зависшего процесса
● с работающего процесса
2. Беглого анализа обычно достаточно чтобы понять
причину проблемы
3. Сам факт наличия дампа – уже сигнал “внимание,
что-то произошло”
Сбор дампов
Нужен сторонний процесс-контроллер для
независимости наблюдений
Также умеют снимать:
- Task Manager
- Process Explorer и
procdump (Sysinternals)
Что умеет отслеживать
procdump?
Много чего:
● Падения (-t -e)
● Потребление процессора (-c)
● Потребление памяти (-m)
● Зависшие окна (-h)
● Выход за пределы любых performance counters –
очень мощная вещь (-p)
Что еще умеет procdump?
● Ожидать старта процесса (-w)
● Писать дампы сериями (-n)
● Работать с таймаутами (-s)
● Делать полные дампы с минимальным
вмешательством в процесс (-r)
● Конфигурировать имена и расположение дампов
procdump: пример
Как извлечь информацию?
Анализ дампа – то же
самое, что и отладка,
только в статике
Можно и автоматически:
cdb.exe -y C:lab -i C:lab -z C:labSuperApp.dmp -c "~*k;q" > C:analysis.txt
Что в результате анализа?
Обычно достаточно стеков потоков чтобы найти причину проблемы
008afcf0 MSVCP120!std::_Xout_of_range+0x36
008fc86b SuperApp!WorkerProcessor::GetNextChunk+0x1e1
0061d914 SuperApp!WorkerProcessor::CalculateAverage+0x202
0062875c SuperApp!WorkerModule::ProcessQueueEvent+0xdf
0012877a SuperApp!WorkerModule::TakeSingleItem+0x373
004dc89a SuperApp!WorkerModule::Run+0x67
00bdc100 SuperApp!main+0x1955
Теперь свяжем все вместе
Существующие похожие решения
Windows Error Reporting
http://msdn.microsoft.com/en-
us/library/windows/desktop/bb513641(v=vs.85).aspx
Mozilla Crash Reporter
https://support.mozilla.org/en-US/kb/mozillacrashreporter
Символ-сервер
- Используется для хранения и быстрого доступа к
отладочной информации
- На символ-сервер выкладываются все отладочные
файлы предназначенные для анализа
- Значительно ускоряет отладку – не нужно искать
файлы вручную
Синие экраны смерти
При “падении” Windows пишется дамп системы в файл
C:WindowsMemory.dmp
Анализ тривиален:
1. Открываем дамп-файл в отладчике WinDbg или cdb
2. Указываем адрес Microsoft символ-сервера -
http://msdl.microsoft.com/download/symbols
3. Выполняем одну команду “analyze -v”
Инструментарий
• Набор отладчиков Debugging Tools for Windows
http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx
• Семейство утилит Sysinternals
http://technet.microsoft.com/en-us/sysinternals/bb545021.aspx
• Библиотека Google Breakpad
https://code.google.com/p/google-breakpad/
• Windows API: семейство Debug Help
http://msdn.microsoft.com/en-
us/library/windows/desktop/ms679309(v=vs.85).aspx
• Microsoft Symbols Server
http://en.wikipedia.org/wiki/Microsoft_Symbol_Server
1. Ускоряем нахождение и устранение
дефектов
2. Максимально автоматизируем и исключаем
человека из цепочки
3. Даем возможность мгновенно среагировать
на критическую проблему
4. Отслеживаем показатели качества от версии
к версии
5. Повышаем надежность программы
Какая выгода?
Антон Наумович
naumovich@dpi.solutions
DPI Solutions
www.dpi.solutions
Belarus QA Automation Community
www.comaqa.by
☺
Спасибо! Вопросы?

Más contenido relacionado

La actualidad más candente

Алексей Лавренюк - Организация нагрузочного тестирования
Алексей Лавренюк - Организация нагрузочного тестирования   Алексей Лавренюк - Организация нагрузочного тестирования
Алексей Лавренюк - Организация нагрузочного тестирования
Yandex
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Ontico
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)
Ontico
 
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсоновсервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
Ontico
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
Aleksandr Boichenko
 
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
it-people
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Ontico
 

La actualidad más candente (18)

Алексей Лавренюк - Организация нагрузочного тестирования
Алексей Лавренюк - Организация нагрузочного тестирования   Алексей Лавренюк - Организация нагрузочного тестирования
Алексей Лавренюк - Организация нагрузочного тестирования
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
Нагрузочное тестирование web-приложений с помощью Load Runner
Нагрузочное тестирование web-приложений с помощью Load RunnerНагрузочное тестирование web-приложений с помощью Load Runner
Нагрузочное тестирование web-приложений с помощью Load Runner
 
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
PostgreSQL worst practices / Илья Космодемьянский (Data Egret)
 
Sampling profiling
Sampling profilingSampling profiling
Sampling profiling
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)
 
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсоновсервис нагрузочного тестирования Ddosme.ru, иван самсонов
сервис нагрузочного тестирования Ddosme.ru, иван самсонов
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
JSQuest d:)
JSQuest   d:)JSQuest   d:)
JSQuest d:)
 
Continuous monitoring
Continuous monitoringContinuous monitoring
Continuous monitoring
 
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
 
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
 
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studioчто пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
 

Destacado

Destacado (11)

Тестируем графику силами Art QА
Тестируем графику силами Art QАТестируем графику силами Art QА
Тестируем графику силами Art QА
 
Инструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективныеИнструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективные
 
Ловушки восприятия в тестировании
Ловушки восприятия в тестированииЛовушки восприятия в тестировании
Ловушки восприятия в тестировании
 
Функциональное тестирование - тестируем функционально
Функциональное тестирование - тестируем функциональноФункциональное тестирование - тестируем функционально
Функциональное тестирование - тестируем функционально
 
Коммуникации в тестировании
Коммуникации в тестированииКоммуникации в тестировании
Коммуникации в тестировании
 
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
Формирование требований из хотелок заказчика
Формирование требований из хотелок заказчикаФормирование требований из хотелок заказчика
Формирование требований из хотелок заказчика
 
Как оценить команду тестирования и как направить их развитие в нужное русло
Как оценить команду тестирования и как направить их развитие в нужное руслоКак оценить команду тестирования и как направить их развитие в нужное русло
Как оценить команду тестирования и как направить их развитие в нужное русло
 
JMeter и OutOfMemory. Исследовательский доклад
JMeter и OutOfMemory. Исследовательский докладJMeter и OutOfMemory. Исследовательский доклад
JMeter и OutOfMemory. Исследовательский доклад
 
Улучшение процесса тестирования: контентные модели
Улучшение процесса тестирования: контентные моделиУлучшение процесса тестирования: контентные модели
Улучшение процесса тестирования: контентные модели
 

Similar a Контроль качества и сопровождение программ в реальном времени

Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
sportgid
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
Michael Karpov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting
Yandex
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
Computer Science Club
 

Similar a Контроль качества и сопровождение программ в реальном времени (20)

Антон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениАнтон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времени
 
Как перезапустить проблемное приложение и одновременно отладить его
Как перезапустить проблемное приложение и одновременно отладить егоКак перезапустить проблемное приложение и одновременно отладить его
Как перезапустить проблемное приложение и одновременно отладить его
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложениях
 
Load testing with Tsung
Load testing with TsungLoad testing with Tsung
Load testing with Tsung
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 

Más de SQALab

Más de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Контроль качества и сопровождение программ в реальном времени

  • 1. Контроль качества и сопровождение в реальном времени Антон Наумович DPI Solutions / IASO Backup
  • 2. Немного о себе Антон Наумович Более 10 лет опыта в разработке ● C++ тимлид и архитектор в IASO Backup ● Консультант в DPI Solutions ● В прошлом – разработчик в Microsoft, команда Hyper-V (Windows Server 2008 R2/2012) Специализируюсь в архитектуре, производительности, отладке, техническом troubleshooting-е
  • 3. О чем поговорим? 1. О качестве приложений с технической, а не функциональной точки зрения 2. О построении автоматической системы отслеживания “технического” качества 3. О максимально возможном дистанцировании человека от построенной системы В контексте нативных и .Net приложений под Windows
  • 4. Что будем отслеживать? Отклонения ● падения ● подвисания ● потребление памяти ● потребление процессора ● и прочее
  • 5. Отчего возникают отклонения? 1. Ошибки разработчиков (чаще всего!) 2. Нюансы сторонних библиотек 3. Разнообразие окружения (и софта, и железа)
  • 7. Дампы памяти! 1. Дамп – файл-слепок памяти процесса, который можно снять в любой момент: ● при падении процесса ● с зависшего процесса ● с работающего процесса 2. Беглого анализа обычно достаточно чтобы понять причину проблемы 3. Сам факт наличия дампа – уже сигнал “внимание, что-то произошло”
  • 8. Сбор дампов Нужен сторонний процесс-контроллер для независимости наблюдений Также умеют снимать: - Task Manager - Process Explorer и procdump (Sysinternals)
  • 9. Что умеет отслеживать procdump? Много чего: ● Падения (-t -e) ● Потребление процессора (-c) ● Потребление памяти (-m) ● Зависшие окна (-h) ● Выход за пределы любых performance counters – очень мощная вещь (-p)
  • 10. Что еще умеет procdump? ● Ожидать старта процесса (-w) ● Писать дампы сериями (-n) ● Работать с таймаутами (-s) ● Делать полные дампы с минимальным вмешательством в процесс (-r) ● Конфигурировать имена и расположение дампов
  • 12. Как извлечь информацию? Анализ дампа – то же самое, что и отладка, только в статике Можно и автоматически: cdb.exe -y C:lab -i C:lab -z C:labSuperApp.dmp -c "~*k;q" > C:analysis.txt
  • 13. Что в результате анализа? Обычно достаточно стеков потоков чтобы найти причину проблемы 008afcf0 MSVCP120!std::_Xout_of_range+0x36 008fc86b SuperApp!WorkerProcessor::GetNextChunk+0x1e1 0061d914 SuperApp!WorkerProcessor::CalculateAverage+0x202 0062875c SuperApp!WorkerModule::ProcessQueueEvent+0xdf 0012877a SuperApp!WorkerModule::TakeSingleItem+0x373 004dc89a SuperApp!WorkerModule::Run+0x67 00bdc100 SuperApp!main+0x1955
  • 15. Существующие похожие решения Windows Error Reporting http://msdn.microsoft.com/en- us/library/windows/desktop/bb513641(v=vs.85).aspx Mozilla Crash Reporter https://support.mozilla.org/en-US/kb/mozillacrashreporter
  • 16. Символ-сервер - Используется для хранения и быстрого доступа к отладочной информации - На символ-сервер выкладываются все отладочные файлы предназначенные для анализа - Значительно ускоряет отладку – не нужно искать файлы вручную
  • 17. Синие экраны смерти При “падении” Windows пишется дамп системы в файл C:WindowsMemory.dmp Анализ тривиален: 1. Открываем дамп-файл в отладчике WinDbg или cdb 2. Указываем адрес Microsoft символ-сервера - http://msdl.microsoft.com/download/symbols 3. Выполняем одну команду “analyze -v”
  • 18. Инструментарий • Набор отладчиков Debugging Tools for Windows http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx • Семейство утилит Sysinternals http://technet.microsoft.com/en-us/sysinternals/bb545021.aspx • Библиотека Google Breakpad https://code.google.com/p/google-breakpad/ • Windows API: семейство Debug Help http://msdn.microsoft.com/en- us/library/windows/desktop/ms679309(v=vs.85).aspx • Microsoft Symbols Server http://en.wikipedia.org/wiki/Microsoft_Symbol_Server
  • 19. 1. Ускоряем нахождение и устранение дефектов 2. Максимально автоматизируем и исключаем человека из цепочки 3. Даем возможность мгновенно среагировать на критическую проблему 4. Отслеживаем показатели качества от версии к версии 5. Повышаем надежность программы Какая выгода?
  • 20. Антон Наумович naumovich@dpi.solutions DPI Solutions www.dpi.solutions Belarus QA Automation Community www.comaqa.by ☺ Спасибо! Вопросы?

Notas del editor

  1. Я расскажу о контроле качества в реальном времени - то есть не в “лабораторных” условиях, а во время того, как приложение выполняет свою реальную работу на машинах конечных пользователей. Фактически, речь пойдет о построении системы обратной связи из продакшена в “Центр Управления Полетами” :) Такая система находится в сфере интересов и на стыке компетенции многих отделов - Development, QA+Automation, Support
  2. Я отвечаю за разработку серверной части бэкап-системы в компании IASO Backup Работаю консультантом в DPI.Solutions 2 года проработал в компании Microsoft, в команде Hyper-V, которая является частью подразделения Windows Раньше было модно язвительно отзывать о Windows в плане качества, однако неудача с Windows Vista, года пришлось просто “потерять” результаты годовой работу тысяч человек, многому научила руководство. Сейчас там очень серьезные подходы к качеству, в том числе благодаря развитию автоматизированного тестирования - соотношение разработчиков и автоматизаторов в Windows - примерно 1:1 В мире совсем немного софта, который успешно работает на сотнях миллионов различных компьютеров, и стоит присмотреться к подходам к качеству, которые используются в его разработке.
  3. Понятие качества в моем докладе рассматривается с чисто “технической” точки зрения - то есть фактически это понятие о том, насколько рационально приложение использует ресурсы компьютера, не касаясь того, насколько оно корректно с функциональной стороны. Мы поговрим, как строится автоматическая система мониторинга и обратной связи, в которой человек выступает только как эксперт на самой финальной стадии. Предлагаемое решение в основном релевантно для нативных приложений и .Net
  4. Нас будут интересовать такие показатели качества как: падения (выполнение недопустимой операции) - все видели такое окошечко, скоро мы узнаем что происходит за кулисами когда мы соглашаемся отправить отчет подвисания - когда приложение перестает отвечать на внешние раздражители потребление памяти - либо утечки, либо просто нерациональное ее использование потребление процессора и дугие - специфические для предметной области, или комбинированные перечисленные выше.
  5. Причина как правило в 90% случаев - это человеческий фактор, т.е. ошибки разработчиков. Мы все люди, мы все делаем ошибки, и будем их делать. Нюансы сторонних библиотек и разнообразие окружения - это зачастую тоже человеческий ошибки, только других людей.
  6. Что же нам поможет разобраться в причинах “неправильного” поведения? Причем нам, людям, желательно сидеть перед Центром Управления Полетами и наблюдать, можно сильно задумавшись, реагируя на форс-мажоры, а не лезть засуча рукава в работающий ядерный реактор :)
  7. В Windows, как и в других операционных системах, есть встроенная возможность снимать с процесса слепок памяти в любой момент времени Причем беглого анализа достаточно чтобы найти причину того или иного отклонения Более того, очень важно, параметры отклонений можно подобрать так, что сам факт наличия дампа - уже сигнал “Внимание”
  8. Поговорим о том, как же снимать дампы В докладе приводится сквозной пример - приложение SuperApp. Обычно если приложение должно работать в фоне, то в связке с ним идет и приложение-контроллер SuperController, который отвечает за то чтобы его подопечный жил и функционировал. Так вот, это приложение-контроллер можно нагрузить дополнительной работой и заставить мониторить важные показатели жизнедеятельности реального работника, и в случае отклонений этих показателей от нормы снимать дамп с наблюдаемого. Также, дампы умеют снимать Task Manager (встроенный в Windows) и очень мощная утилита procdump из sysinternals - на ней мы остановимся подробнее для демонстрации спектра возможностей.
  9. В качестве примеров Performance Counter - ов можно привести количество открытых файлов, количество прочитанных с диска или отосланных в сеть байт, и так далее.
  10. Фактически, обвешимаем приложение-работник “инспекторами” и следим, чтобы приложение находилось в заданном “коридоре качества”. Как только происходит отклонение - мгновенно получаем об этом нотификацию фактом наличия дампа.
  11. Немного технических деталей об анализе дампов. Для анализа нужны три компонента - отладочная информация, исполняемый файл и отладочные символы Анализ - это очень просто, то же самое что и отладка, то есть любой программист априори умеет это делать Это элементарно автоматизируемо, например с помощью отладчика cdb
  12. Пример - проблема обычно кроется в самых последних фреймах - вот выход за границы вектора
  13. Мы знаем как собирать и как анализировать дампы - если связать все вместе, получится такая картина. На клиенте На клиентской стороне SuperApp и SuperController работают в паре - SuperApp делает свою работу, SuperController следит за ним Как только происходит отклонение - SuperController снимает дамп и отсылает его на сервер (например, по протоколу FTP или HTTP) вместе со вспомогательной информацией. На сервере Присланный дамп попадает в хранилище, например на файловой системе или в базе данных В фоне процесс-аналитик SuperAnalyst запускает анализ дампов, извлекая нужную эксперту информацию О самых критичных проблемах процесс-аналитик сообщает эксперту например через почту или SMS. Иногда надо среагировать мгновенно.
  14. Любое более-менее серьезное приложение имеет похожую систему обратной связи - например Windows, Mozilla и т.п.
  15. Технология для облегчения доступа к отладочной информации разных версий. Не нужно тратить время на поиск символов, достаточно просто указать один адрес, остальное сделает отладчик.
  16. С помощью бесплатных Debugging Tools for Windows и SysInternals можно организовать подобную систему в тестовой лаборатории - причем за считанные дни, причем практически без дополнительных усилий со стороны программистов.