SlideShare a Scribd company logo
Тестирование ПО, основанного на
сторонних компонентах, на примере
дистрибутива ОС Linux
Тестирование ПО, основанного на
сторонних компонентах, на примере
дистрибутива ОС Linux
Денис Силаков
Sr. Software Architect
Дистрибутив LinuxДистрибутив Linux
• ~200 млн строк кода
• Оценочная стоимость разработки: $10 млрд
(оценка The Linux Foundation для Fedora 9)
• Доля собственных разработок каждого вендора – 0-5%
– Собственное уникальное ПО
– Доработка сторонних компонентов
1
Virtuozzo (ex-Parallels Cloud Server)Virtuozzo (ex-Parallels Cloud Server)
• Виртуализационное решение
– Модифицированное ядро Linux
– Инструменты управления контейнерами и ВМ
– …
• «Под капотом» готового продукта – дистрибутив Linux
2
Природа ошибок в Linux-based продуктеПрирода ошибок в Linux-based продукте
• Ошибки в собственном коде
• Ошибки upstream
• Интеграционные проблемы
Размер тестируемого кода превосходит размер
разрабатываемого
Нужна автоматизация и переиспользование существующих
решений
3
Модульные тестыМодульные тесты
Для библиотек и приложений
Библиотеки vs приложенияБиблиотеки vs приложения
• Использование API – обычно формализуется
• Использование интерактивного UI – обычно нет
5
Библиотека Приложение ПользовательAPI UI
Тестирование APIТестирование API
• Проработанный научный базис
• Хорошая инструментальная поддержка
• Относительно высокая степень автоматизации
6
РесурсоемкостьРесурсоемкость
Производительность человека при разработке тестов для Linux
Standard Base (~ 40.000 функций):
• Базовые (“shallow”) тесты – 10-50 тестов в день
• Обычные (“normal”) тесты – 2-3 функции в день
• Продвинутые (“deep”) – 0.5-1 функция в день
разрабатывать тесты для сторонних компонентов –
накладно
7
Существующие решенияСуществующие решения
• Self-tests, поставляемые с кодом приложения
– CentOS 7.1: тесты есть в ~750 из 2500 пакетов
• Открытые тестовые наборы
– Тесты Linux Standard Base
– Linux Test Project
– The Fuzzing Project
– TIS Interpreter – expected in 2016
8
Проблемы сторонних тестовПроблемы сторонних тестов
• Не всегда рассчитаны на запуск на сборочных фермах (ВМ
без доступа в сеть и программным таймером)
• Отставание от развития тестируемого кода
• У «продвинутых» тестов – ложные срабатывания
• Большое суммарное время работы (> 24 часов)
9
Тесты для приложений с графическим
интерфейсом
Тесты для приложений с графическим
интерфейсом
Особенности тестирования GUI-приложенийОсобенности тестирования GUI-приложений
• Технологические сложности воспроизведения действий
человека
• Интересны не атомарные воздействия, а сложные сценарии
работы
• Оценка корректности работы не всегда формализуема
11
Воздействие на GUIВоздействие на GUI
• AT-SPI – технологии для поддержки людей с ограниченными
возможностями
• Средства X11
– Xvfb – запуск графических приложений без X-сервера
• Средства виртуальных машин
12
AT-SPIAT-SPI
• Предоставляет доступ к внутренней структуре приложения
(a-la Form Designer)
• Возможность применения зависит от используемых
графических библиотек:
– OK: Qt, Gtk, Java, Mono
– Missing: Motif, FLTK, WxWidgets
13
X11X11
Расширения для эмуляции действий пользователя
• Не зависят от библиотек, только к X11
– ? Wayland, Mir ?
• Позволяют работать только с низкоуровневой структурой
окон
14
Средства виртуальных машин (QEMU)Средства виртуальных машин (QEMU)
Эмуляция пользовательских действий внутри окна ВМ
• Нет привязки к ПО, используемому внутри ВМ
• Ничего не знает об окнах, графических стеках и прочем
15
Проверка результатов GUI-тестовПроверка результатов GUI-тестов
• Снимок экрана
– Сравнение с эталоном
– Поиск заданного текста на картинке через OCR
• AT-SPI
– Анализ доступного меню, текстовых полей, …
• X11
– Анализ доступных окон и их заголовков
16
Интеграционные тестыИнтеграционные тесты
Runtime тестыRuntime тесты
• Модульные тесты приложения == интеграционные тесты для
внешних компонентов, которые оно использует
Установить все приложения и протестировать
Осталось написать тесты для всех приложений
18
Статические тестыСтатические тесты
• Конфликты по файлам
• Замкнутость репозиториев по зависимостям и бинарным
символам
• Права доступа к файлам приложения
• …
См.: SECR-2013 – Автоматизация поддержки репозиториев
ПО для Linux
19
ROSA FBAROSA FBA
20
http://fba.rosalinux.ru
Однотипные тесты для множества приложенийОднотипные тесты для множества приложений
• Возможность запустить сервис (при наличии service-файла)
• Возможность запустить программу (при наличии desktop-
файла с параметрами запуска)
21
Тестирование на соответствие требованиям
стороннего заказчика
Тестирование на соответствие требованиям
стороннего заказчика
Например, сертифицирующей лаборатории
ROSA Test SuiteROSA Test Suite
Пункт ПМИ  тест
• Разумное количество тестов
• Разумное время работы
• Возможно использование тестового набора в процессе
приемки
23
ИтогиИтоги
Процесс тестирования реального Linux-based продукта
Запуск тестовЗапуск тестов
• При сборке пакета
– Self-tests, возможность установки, Rpmlint, …
• Ежедневно
– Сборка ISO-образа и тестирование установки
– ROSA Test Suite, LTP, LSB (частично), избранные приложения
• Еженедельно
– LSB, тесты service- и desktop-файлов
25
Характеристики тестовХарактеристики тестов
Тестовый набор Число тестируемых пакетов Качество
Self-tests ~750 Normal
LSB ~50 From Shallow to Deep
LTP ~10 From Normal to Deep
Rosa Test Suite ~100 From Shallow to Normal
Desktop files ~500 Shallow
Service files ~100 Shallow
26
(для ~2.500 официально поддерживаемых пакетов)
Thank youThank you

More Related Content

What's hot

Тестирование (QA) в 1С:Предприятии 8
Тестирование (QA) в 1С:Предприятии 8Тестирование (QA) в 1С:Предприятии 8
Тестирование (QA) в 1С:Предприятии 8
Alexander Kuntashov
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Positive Development User Group
 
2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C
Alexey Lustin
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Ontico
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Positive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
Positive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
Positive Hack Days
 
Ross2013 rubanov
Ross2013 rubanovRoss2013 rubanov
Ross2013 rubanovRosaLab
 
Роман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизньРоман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизнь
_itcampus
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
Vitalii Morvaniuk
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опытОблегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Andrey Karpov
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
COMAQA.BY
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
COMAQA.BY
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Positive Hack Days
 
Python dependencies
Python dependenciesPython dependencies
Python dependencies
Ivan Kolodyazhny
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci
COMAQA.BY
 

What's hot (20)

Тестирование (QA) в 1С:Предприятии 8
Тестирование (QA) в 1С:Предприятии 8Тестирование (QA) в 1С:Предприятии 8
Тестирование (QA) в 1С:Предприятии 8
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C2014 ALM Summit - ALM and 1C
2014 ALM Summit - ALM and 1C
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Continuousdelivery
ContinuousdeliveryContinuousdelivery
Continuousdelivery
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Ross2013 rubanov
Ross2013 rubanovRoss2013 rubanov
Ross2013 rubanov
 
Роман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизньРоман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизнь
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опытОблегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Python dependencies
Python dependenciesPython dependencies
Python dependencies
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci
 

Viewers also liked

Locations
LocationsLocations
Locations
mollymeyer10
 
Dieg0867 copy
Dieg0867   copyDieg0867   copy
Dieg0867 copyGWROY
 
Assises des EnR en milieu urbain - Diaporama 14
Assises des EnR en milieu urbain - Diaporama 14Assises des EnR en milieu urbain - Diaporama 14
Assises des EnR en milieu urbain - Diaporama 14
Pôle Réseaux de Chaleur - Cerema
 
Menú escolar abril_2013
Menú escolar abril_2013Menú escolar abril_2013
Menú escolar abril_2013
lasanejas
 
Mi gran presentación sin video
Mi gran presentación sin videoMi gran presentación sin video
Mi gran presentación sin video
IUPSM, UFT
 
Presentation plataforma mais 10
Presentation plataforma mais 10Presentation plataforma mais 10
Presentation plataforma mais 10
Pedro Neto
 
Thoughts on vitrue and buddy media | buzzient
Thoughts on vitrue and buddy media | buzzientThoughts on vitrue and buddy media | buzzient
Thoughts on vitrue and buddy media | buzzient
TBJ Investments, LLC
 
Cebu CPI英語学校パンフレット 201511 full.ver
Cebu CPI英語学校パンフレット 201511 full.verCebu CPI英語学校パンフレット 201511 full.ver
Cebu CPI英語学校パンフレット 201511 full.ver
フィリピン留学会社 フィルイングリッシュ
 
Sensor Node Plugin System
Sensor Node Plugin SystemSensor Node Plugin System
Sensor Node Plugin System
Francesco Pantano
 
PHPNW2015 Keynote: Stealing People Lessons from Artificial Intelligence
PHPNW2015 Keynote: Stealing People Lessons from Artificial IntelligencePHPNW2015 Keynote: Stealing People Lessons from Artificial Intelligence
PHPNW2015 Keynote: Stealing People Lessons from Artificial Intelligence
Meri Williams
 
Netradičné skupiny vo vzdelávaní dospelých
Netradičné skupiny vo vzdelávaní dospelýchNetradičné skupiny vo vzdelávaní dospelých
Netradičné skupiny vo vzdelávaní dospelých
Brano Frk
 
Xero bank feeds with UOB now live!
Xero bank feeds with UOB now live!Xero bank feeds with UOB now live!
Xero bank feeds with UOB now live!
Namita Sethi CPA
 
Apresentação sistema JIF-MT 2016
Apresentação sistema JIF-MT 2016Apresentação sistema JIF-MT 2016
Apresentação sistema JIF-MT 2016
Pedro Neto
 
Body parts
Body partsBody parts
Body parts
Ana Maestra
 

Viewers also liked (17)

Locations
LocationsLocations
Locations
 
2003 NLP-Diplom
2003 NLP-Diplom2003 NLP-Diplom
2003 NLP-Diplom
 
Dieg0867 copy
Dieg0867   copyDieg0867   copy
Dieg0867 copy
 
Assises des EnR en milieu urbain - Diaporama 14
Assises des EnR en milieu urbain - Diaporama 14Assises des EnR en milieu urbain - Diaporama 14
Assises des EnR en milieu urbain - Diaporama 14
 
Menú escolar abril_2013
Menú escolar abril_2013Menú escolar abril_2013
Menú escolar abril_2013
 
Mi gran presentación sin video
Mi gran presentación sin videoMi gran presentación sin video
Mi gran presentación sin video
 
Presentation plataforma mais 10
Presentation plataforma mais 10Presentation plataforma mais 10
Presentation plataforma mais 10
 
Hola profe
Hola profeHola profe
Hola profe
 
Thoughts on vitrue and buddy media | buzzient
Thoughts on vitrue and buddy media | buzzientThoughts on vitrue and buddy media | buzzient
Thoughts on vitrue and buddy media | buzzient
 
Cebu CPI英語学校パンフレット 201511 full.ver
Cebu CPI英語学校パンフレット 201511 full.verCebu CPI英語学校パンフレット 201511 full.ver
Cebu CPI英語学校パンフレット 201511 full.ver
 
Sensor Node Plugin System
Sensor Node Plugin SystemSensor Node Plugin System
Sensor Node Plugin System
 
PHPNW2015 Keynote: Stealing People Lessons from Artificial Intelligence
PHPNW2015 Keynote: Stealing People Lessons from Artificial IntelligencePHPNW2015 Keynote: Stealing People Lessons from Artificial Intelligence
PHPNW2015 Keynote: Stealing People Lessons from Artificial Intelligence
 
Netradičné skupiny vo vzdelávaní dospelých
Netradičné skupiny vo vzdelávaní dospelýchNetradičné skupiny vo vzdelávaní dospelých
Netradičné skupiny vo vzdelávaní dospelých
 
Podstawy bhp 1
Podstawy bhp 1Podstawy bhp 1
Podstawy bhp 1
 
Xero bank feeds with UOB now live!
Xero bank feeds with UOB now live!Xero bank feeds with UOB now live!
Xero bank feeds with UOB now live!
 
Apresentação sistema JIF-MT 2016
Apresentação sistema JIF-MT 2016Apresentação sistema JIF-MT 2016
Apresentação sistema JIF-MT 2016
 
Body parts
Body partsBody parts
Body parts
 

Similar to Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015

Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
Fwdays
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
Denis Tuchin
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
Andrey Kazarinov
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
SQALab
 
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
SQADays_2009_Piter
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
Aliaksandr Ikhelis
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
Mikhail Payson
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
Анастасия Асеева
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex
 
Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...
Ivan Ruchkin
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
SQALab
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as Code
Igor Kurochkin
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
COMAQA.BY
 
IXIA IxChariot
IXIA IxChariotIXIA IxChariot
IXIA IxChariot
MUK Extreme
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
SQALab
 
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Ivan Piskunov
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
Denis Chistyakov
 

Similar to Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015 (20)

Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as Code
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
IXIA IxChariot
IXIA IxChariotIXIA IxChariot
IXIA IxChariot
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 

More from OpenVZ

PFcache - LinuxCon 2015
PFcache - LinuxCon 2015PFcache - LinuxCon 2015
PFcache - LinuxCon 2015
OpenVZ
 
Speeding up ps and top
Speeding up ps and topSpeeding up ps and top
Speeding up ps and top
OpenVZ
 
Live migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel EmelyanovLive migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel Emelyanov
OpenVZ
 
Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov
Live migrating a container: pros, cons and gotchas -- Pavel EmelyanovLive migrating a container: pros, cons and gotchas -- Pavel Emelyanov
Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov
OpenVZ
 
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
CRIU: time and space travel for Linux containers -- Kir KolyshkinCRIU: time and space travel for Linux containers -- Kir Kolyshkin
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
OpenVZ
 
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел ЕмельяновЖивая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
OpenVZ
 
What's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey BronnikovWhat's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey Bronnikov
OpenVZ
 
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий МонаховПроблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
OpenVZ
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
OpenVZ
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
OpenVZ
 
LibCT и контейнеры на уровне приложений -- Александр Бурлука
	LibCT и контейнеры на уровне приложений -- Александр Бурлука	LibCT и контейнеры на уровне приложений -- Александр Бурлука
LibCT и контейнеры на уровне приложений -- Александр Бурлука
OpenVZ
 
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир ДавыдовУправление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
OpenVZ
 
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновЖивая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
OpenVZ
 
LibCT: one lib to rule them all -- Andrey Vagin
LibCT: one lib to rule them all -- Andrey VaginLibCT: one lib to rule them all -- Andrey Vagin
LibCT: one lib to rule them all -- Andrey Vagin
OpenVZ
 
Denser containers with PF cache - Pavel Emelyanov
Denser containers with PF cache - Pavel EmelyanovDenser containers with PF cache - Pavel Emelyanov
Denser containers with PF cache - Pavel Emelyanov
OpenVZ
 
CGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel EmelyanovCGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel Emelyanov
OpenVZ
 
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
OpenVZ
 
Not so brief history of Linux Containers - Kir Kolyshkin
Not so brief history of Linux Containers - Kir KolyshkinNot so brief history of Linux Containers - Kir Kolyshkin
Not so brief history of Linux Containers - Kir Kolyshkin
OpenVZ
 
Openvz booth
Openvz boothOpenvz booth
Openvz booth
OpenVZ
 
Управление ресурсами в Linux и OpenVZ
Управление ресурсами в Linux и OpenVZ Управление ресурсами в Linux и OpenVZ
Управление ресурсами в Linux и OpenVZ
OpenVZ
 

More from OpenVZ (20)

PFcache - LinuxCon 2015
PFcache - LinuxCon 2015PFcache - LinuxCon 2015
PFcache - LinuxCon 2015
 
Speeding up ps and top
Speeding up ps and topSpeeding up ps and top
Speeding up ps and top
 
Live migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel EmelyanovLive migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel Emelyanov
 
Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov
Live migrating a container: pros, cons and gotchas -- Pavel EmelyanovLive migrating a container: pros, cons and gotchas -- Pavel Emelyanov
Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov
 
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
CRIU: time and space travel for Linux containers -- Kir KolyshkinCRIU: time and space travel for Linux containers -- Kir Kolyshkin
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
 
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел ЕмельяновЖивая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
 
What's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey BronnikovWhat's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey Bronnikov
 
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий МонаховПроблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
LibCT и контейнеры на уровне приложений -- Александр Бурлука
	LibCT и контейнеры на уровне приложений -- Александр Бурлука	LibCT и контейнеры на уровне приложений -- Александр Бурлука
LibCT и контейнеры на уровне приложений -- Александр Бурлука
 
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир ДавыдовУправление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
 
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновЖивая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
 
LibCT: one lib to rule them all -- Andrey Vagin
LibCT: one lib to rule them all -- Andrey VaginLibCT: one lib to rule them all -- Andrey Vagin
LibCT: one lib to rule them all -- Andrey Vagin
 
Denser containers with PF cache - Pavel Emelyanov
Denser containers with PF cache - Pavel EmelyanovDenser containers with PF cache - Pavel Emelyanov
Denser containers with PF cache - Pavel Emelyanov
 
CGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel EmelyanovCGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel Emelyanov
 
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
 
Not so brief history of Linux Containers - Kir Kolyshkin
Not so brief history of Linux Containers - Kir KolyshkinNot so brief history of Linux Containers - Kir Kolyshkin
Not so brief history of Linux Containers - Kir Kolyshkin
 
Openvz booth
Openvz boothOpenvz booth
Openvz booth
 
Управление ресурсами в Linux и OpenVZ
Управление ресурсами в Linux и OpenVZ Управление ресурсами в Linux и OpenVZ
Управление ресурсами в Linux и OpenVZ
 

Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015

  • 1. Тестирование ПО, основанного на сторонних компонентах, на примере дистрибутива ОС Linux Тестирование ПО, основанного на сторонних компонентах, на примере дистрибутива ОС Linux Денис Силаков Sr. Software Architect
  • 2. Дистрибутив LinuxДистрибутив Linux • ~200 млн строк кода • Оценочная стоимость разработки: $10 млрд (оценка The Linux Foundation для Fedora 9) • Доля собственных разработок каждого вендора – 0-5% – Собственное уникальное ПО – Доработка сторонних компонентов 1
  • 3. Virtuozzo (ex-Parallels Cloud Server)Virtuozzo (ex-Parallels Cloud Server) • Виртуализационное решение – Модифицированное ядро Linux – Инструменты управления контейнерами и ВМ – … • «Под капотом» готового продукта – дистрибутив Linux 2
  • 4. Природа ошибок в Linux-based продуктеПрирода ошибок в Linux-based продукте • Ошибки в собственном коде • Ошибки upstream • Интеграционные проблемы Размер тестируемого кода превосходит размер разрабатываемого Нужна автоматизация и переиспользование существующих решений 3
  • 5. Модульные тестыМодульные тесты Для библиотек и приложений
  • 6. Библиотеки vs приложенияБиблиотеки vs приложения • Использование API – обычно формализуется • Использование интерактивного UI – обычно нет 5 Библиотека Приложение ПользовательAPI UI
  • 7. Тестирование APIТестирование API • Проработанный научный базис • Хорошая инструментальная поддержка • Относительно высокая степень автоматизации 6
  • 8. РесурсоемкостьРесурсоемкость Производительность человека при разработке тестов для Linux Standard Base (~ 40.000 функций): • Базовые (“shallow”) тесты – 10-50 тестов в день • Обычные (“normal”) тесты – 2-3 функции в день • Продвинутые (“deep”) – 0.5-1 функция в день разрабатывать тесты для сторонних компонентов – накладно 7
  • 9. Существующие решенияСуществующие решения • Self-tests, поставляемые с кодом приложения – CentOS 7.1: тесты есть в ~750 из 2500 пакетов • Открытые тестовые наборы – Тесты Linux Standard Base – Linux Test Project – The Fuzzing Project – TIS Interpreter – expected in 2016 8
  • 10. Проблемы сторонних тестовПроблемы сторонних тестов • Не всегда рассчитаны на запуск на сборочных фермах (ВМ без доступа в сеть и программным таймером) • Отставание от развития тестируемого кода • У «продвинутых» тестов – ложные срабатывания • Большое суммарное время работы (> 24 часов) 9
  • 11. Тесты для приложений с графическим интерфейсом Тесты для приложений с графическим интерфейсом
  • 12. Особенности тестирования GUI-приложенийОсобенности тестирования GUI-приложений • Технологические сложности воспроизведения действий человека • Интересны не атомарные воздействия, а сложные сценарии работы • Оценка корректности работы не всегда формализуема 11
  • 13. Воздействие на GUIВоздействие на GUI • AT-SPI – технологии для поддержки людей с ограниченными возможностями • Средства X11 – Xvfb – запуск графических приложений без X-сервера • Средства виртуальных машин 12
  • 14. AT-SPIAT-SPI • Предоставляет доступ к внутренней структуре приложения (a-la Form Designer) • Возможность применения зависит от используемых графических библиотек: – OK: Qt, Gtk, Java, Mono – Missing: Motif, FLTK, WxWidgets 13
  • 15. X11X11 Расширения для эмуляции действий пользователя • Не зависят от библиотек, только к X11 – ? Wayland, Mir ? • Позволяют работать только с низкоуровневой структурой окон 14
  • 16. Средства виртуальных машин (QEMU)Средства виртуальных машин (QEMU) Эмуляция пользовательских действий внутри окна ВМ • Нет привязки к ПО, используемому внутри ВМ • Ничего не знает об окнах, графических стеках и прочем 15
  • 17. Проверка результатов GUI-тестовПроверка результатов GUI-тестов • Снимок экрана – Сравнение с эталоном – Поиск заданного текста на картинке через OCR • AT-SPI – Анализ доступного меню, текстовых полей, … • X11 – Анализ доступных окон и их заголовков 16
  • 19. Runtime тестыRuntime тесты • Модульные тесты приложения == интеграционные тесты для внешних компонентов, которые оно использует Установить все приложения и протестировать Осталось написать тесты для всех приложений 18
  • 20. Статические тестыСтатические тесты • Конфликты по файлам • Замкнутость репозиториев по зависимостям и бинарным символам • Права доступа к файлам приложения • … См.: SECR-2013 – Автоматизация поддержки репозиториев ПО для Linux 19
  • 22. Однотипные тесты для множества приложенийОднотипные тесты для множества приложений • Возможность запустить сервис (при наличии service-файла) • Возможность запустить программу (при наличии desktop- файла с параметрами запуска) 21
  • 23. Тестирование на соответствие требованиям стороннего заказчика Тестирование на соответствие требованиям стороннего заказчика Например, сертифицирующей лаборатории
  • 24. ROSA Test SuiteROSA Test Suite Пункт ПМИ  тест • Разумное количество тестов • Разумное время работы • Возможно использование тестового набора в процессе приемки 23
  • 26. Запуск тестовЗапуск тестов • При сборке пакета – Self-tests, возможность установки, Rpmlint, … • Ежедневно – Сборка ISO-образа и тестирование установки – ROSA Test Suite, LTP, LSB (частично), избранные приложения • Еженедельно – LSB, тесты service- и desktop-файлов 25
  • 27. Характеристики тестовХарактеристики тестов Тестовый набор Число тестируемых пакетов Качество Self-tests ~750 Normal LSB ~50 From Shallow to Deep LTP ~10 From Normal to Deep Rosa Test Suite ~100 From Shallow to Normal Desktop files ~500 Shallow Service files ~100 Shallow 26 (для ~2.500 официально поддерживаемых пакетов)