SECR 2012 завершил работу. Получить информацию о текущей конференции можно на www.secr.ru.
SECR 2012 is over. You can learn about our current event at www.secr.ru.

Тестирование изменений в программной системе на основе покрытия исходного кода


Скачать презентацию

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

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

Подходы к сокращению объемов тестирования, основанные на сопоставлении изменений в исходном коде с данными о тестовом покрытии, описаны в литературе и хорошо изучены с теоретической стороны. Их основная идея состоит в исключении из тестового прогона тестов, не покрывающих изменившиеся части программы. Внедрение подобных методик в процесс разработки больших программных систем сталкивается с рядом трудностей, которые во многом определены объемами данных о тестовом покрытии. Наибольшую проблему представляет поддержание этих данных в актуальном состоянии, так как тестирование инструментированных сборок идет в несколько раз (как правило в 3-5 раз) дольше обычных тестирований. Таким образом, возрастающая нагрузка на тестирующую систему может свести на нет выигрыш, достигнутый сокращением объемов тестирования. Передача, хранение и оперативный анализ данных о тестовом покрытии также вызывает затруднения, так как их объем может достигать сотен гигабайт.

В данном докладе будет рассказано об опыте внедрения этой технологии в процесс разработки существующего программного продукта. Описанные выше проблемы были решены при помощи снижения детализации данных о тестовом покрытии. Вместо традиционного покрытия базовых блоков используется покрытие процедур (модулей, классов либо других крупных частей программы). Данный подход позволяет инструментировать только точки входа в процедуры, что существенно (до 80%) сокращает стоимость обновления данных о покрытии. Вместо отдельных тестов рассматриваются логические группы тестов (в предположении, что тестовая база имеет некоторую структуру), что сокращает объемы данных и повышает прозрачность работы алгоритма. Общее снижение детализации данных о тестовом покрытии влечет их меньшую изменчивость, что позволяет обновлять эти данные не для каждой правки в исходном коде, а на периодической основе. Также в докладе будут освещены другие вопросы, связанные с практическим внедрением данной методики, такие как разработка алгоритма анализа изменений в исходном коде и проверка семантической корректности программы для фиксированных входных данных.

Алексей Салмин

Алексей СалминАлексей Салмин

Алексей Салмин работает в Intel Corporation инженером по разработке ПО в отделе контроля качества Intel Compiler. Его опыт включает проектирование, разработку и поддержку систем непрерывной интеграции и автоматического тестирования. Алексей имеет степень магистра прикладной математики и информатики.

 

Александр Стасенко

Александр СтасенкоАлександр Стасенко

Александр Стасенко работает в “ЗАО Интел А/O” инженером по контролю качества компилятора фирмы Интел. Область интересов Александра включает в себя автоматическую генерацию тестов и автоматическое уменьшение тестовых случаев. Александр имеет ученую степень кандидата физико-математических наук в области, связанной с конструированием компиляторов переднего плана и функциональными языками программирования.

 


Оставить комментарий

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© CEE-SECR 2012 • Email: contact@secr.ru
Powered by WordPress. • Hosted by Hosting Community • Developed by i-Help