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

Preview:

DESCRIPTION

Презентация Татьяны Зинченко на SQA Days-16 14-15 ноября 2014, Санкт-Петербург, Россия www.sqadays.com

Citation preview

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

реальном времениАнтон Наумович

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:\lab\SuperApp.dmp -c "~*k;q" > C:\analysis.txt

Что в результате анализа?

Обычно достаточно стеков потоков чтобы найти причину проблемы

008afcf0 MSVCP120!std::_Xout_of_range+0x36008fc86b SuperApp!WorkerProcessor::GetNextChunk+0x1e10061d914 SuperApp!WorkerProcessor::CalculateAverage+0x2020062875c SuperApp!WorkerModule::ProcessQueueEvent+0xdf0012877a SuperApp!WorkerModule::TakeSingleItem+0x373004dc89a SuperApp!WorkerModule::Run+0x6700bdc100 SuperApp!main+0x1955

Теперь свяжем все вместе

Существующие похожие решения

Windows Error Reportinghttp://msdn.microsoft.com/en-us/library/windows/desktop/bb513641(v=vs.85).aspx

Mozilla Crash Reporterhttps://support.mozilla.org/en-US/kb/mozillacrashreporter

Символ-сервер

- Используется для хранения и быстрого доступа к отладочной информации

- На символ-сервер выкладываются все отладочные файлы предназначенные для анализа

- Значительно ускоряет отладку – не нужно искать файлы вручную

Синие экраны смерти

При “падении” Windows пишется дамп системы в файл C:\Windows\Memory.dmp

Анализ тривиален:1. Открываем дамп-файл в отладчике WinDbg или cdb2. Указываем адрес Microsoft символ-сервера -

http://msdl.microsoft.com/download/symbols3. Выполняем одну команду “analyze -v”

Инструментарий

• Набор отладчиков Debugging Tools for Windowshttp://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx• Семейство утилит Sysinternalshttp://technet.microsoft.com/en-us/sysinternals/bb545021.aspx• Библиотека Google Breakpadhttps://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 Serverhttp://en.wikipedia.org/wiki/Microsoft_Symbol_Server

1. Ускоряем нахождение и устранение дефектов2. Максимально автоматизируем и исключаем

человека из цепочки3. Даем возможность мгновенно среагировать

на критическую проблему4. Отслеживаем показатели качества от версии

к версии5. Повышаем надежность программы

Какая выгода?

Антон Наумовичnaumovich@dpi.solutions

DPI Solutionswww.dpi.solutions

Belarus QA Automation Communitywww.comaqa.by

Спасибо! Вопросы?

Recommended