SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Тестирование ПО, основанного на
сторонних компонентах, на примере
дистрибутива ОС 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

Más contenido relacionado

La actualidad más candente

Тестирование (QA) в 1С:Предприятии 8
Тестирование (QA) в 1С:Предприятии 8Тестирование (QA) в 1С:Предприятии 8
Тестирование (QA) в 1С:Предприятии 8Alexander 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 1CAlexey 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 DockerPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive 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
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci COMAQA.BY
 

La actualidad más candente (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
 

Destacado

BSBG SLIDESHARE PRESENTATION
BSBG SLIDESHARE PRESENTATIONBSBG SLIDESHARE PRESENTATION
BSBG SLIDESHARE PRESENTATIONMej Valencia
 
Estácio: Apresentação sobre Aquisição FUFS
Estácio: Apresentação sobre Aquisição FUFSEstácio: Apresentação sobre Aquisição FUFS
Estácio: Apresentação sobre Aquisição FUFSEstácio Participações
 
Flyer.mb.vbh cand outcome.slideshare
Flyer.mb.vbh cand outcome.slideshareFlyer.mb.vbh cand outcome.slideshare
Flyer.mb.vbh cand outcome.slideshares0023655
 
Módulo 1 reflexion mabel montes
Módulo 1 reflexion mabel montesMódulo 1 reflexion mabel montes
Módulo 1 reflexion mabel montesMabel Montes Torres
 
Carta all sub.general de coord.de sanidad penitenciaria
Carta all sub.general de coord.de sanidad penitenciariaCarta all sub.general de coord.de sanidad penitenciaria
Carta all sub.general de coord.de sanidad penitenciariaganivama
 
Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...
Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...
Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...Mohamed El-Demerdash
 
IaaS - облачная инфраструктура
IaaS - облачная инфраструктураIaaS - облачная инфраструктура
IaaS - облачная инфраструктураVadim Gabel
 
Corsexit, réappropriation indépendance économique mondialisation
Corsexit, réappropriation indépendance  économique mondialisationCorsexit, réappropriation indépendance  économique mondialisation
Corsexit, réappropriation indépendance économique mondialisationPhilippe Crevel
 
Comercio Electrónico B2B, B2C & B2Me
Comercio Electrónico B2B, B2C & B2MeComercio Electrónico B2B, B2C & B2Me
Comercio Electrónico B2B, B2C & B2MeGCG
 
[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설
[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설
[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설MINWHO Law Group
 
Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...
Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...
Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...IBS
 
jcd presentation text
jcd presentation textjcd presentation text
jcd presentation textJoseph Duda
 
Enfoque cualitativo uce-psicología educativa
Enfoque cualitativo uce-psicología educativaEnfoque cualitativo uce-psicología educativa
Enfoque cualitativo uce-psicología educativaFlor Morales
 

Destacado (20)

Pr1
Pr1Pr1
Pr1
 
Reflexión módulo 4 mabel
Reflexión módulo 4 mabelReflexión módulo 4 mabel
Reflexión módulo 4 mabel
 
BSBG SLIDESHARE PRESENTATION
BSBG SLIDESHARE PRESENTATIONBSBG SLIDESHARE PRESENTATION
BSBG SLIDESHARE PRESENTATION
 
Estácio: Apresentação sobre Aquisição FUFS
Estácio: Apresentação sobre Aquisição FUFSEstácio: Apresentação sobre Aquisição FUFS
Estácio: Apresentação sobre Aquisição FUFS
 
4402 001
4402 0014402 001
4402 001
 
Flyer.mb.vbh cand outcome.slideshare
Flyer.mb.vbh cand outcome.slideshareFlyer.mb.vbh cand outcome.slideshare
Flyer.mb.vbh cand outcome.slideshare
 
October-WD
October-WDOctober-WD
October-WD
 
Navegadores
NavegadoresNavegadores
Navegadores
 
Módulo 1 reflexion mabel montes
Módulo 1 reflexion mabel montesMódulo 1 reflexion mabel montes
Módulo 1 reflexion mabel montes
 
Carta all sub.general de coord.de sanidad penitenciaria
Carta all sub.general de coord.de sanidad penitenciariaCarta all sub.general de coord.de sanidad penitenciaria
Carta all sub.general de coord.de sanidad penitenciaria
 
Kary enero´12
Kary enero´12Kary enero´12
Kary enero´12
 
Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...
Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...
Suggested Enrichment Program Using Cinderella (DGS) in Developing Geometric C...
 
IaaS - облачная инфраструктура
IaaS - облачная инфраструктураIaaS - облачная инфраструктура
IaaS - облачная инфраструктура
 
Corsexit, réappropriation indépendance économique mondialisation
Corsexit, réappropriation indépendance  économique mondialisationCorsexit, réappropriation indépendance  économique mondialisation
Corsexit, réappropriation indépendance économique mondialisation
 
Comercio Electrónico B2B, B2C & B2Me
Comercio Electrónico B2B, B2C & B2MeComercio Electrónico B2B, B2C & B2Me
Comercio Electrónico B2B, B2C & B2Me
 
ευαγγελισμος
ευαγγελισμοςευαγγελισμος
ευαγγελισμος
 
[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설
[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설
[법무법인 민후] 부정청탁 및 금품 등 수수금지법(일명 김영란법) 언론사 대상 해설
 
Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...
Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...
Сети, связи и коммуникации – заговорить на русском. Владимир Дубинкин (IBS) н...
 
jcd presentation text
jcd presentation textjcd presentation text
jcd presentation text
 
Enfoque cualitativo uce-psicología educativa
Enfoque cualitativo uce-psicología educativaEnfoque cualitativo uce-psicología educativa
Enfoque cualitativo uce-psicología educativa
 

Similar a Тестирование ПО, основанного на сторонних компонентах, на примере дистрибутива ОС Linux

Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...
Алексей Кабанов, Автоматизируем Rich Internet Applications с нуля на примере ...SQADays_2009_Piter
 
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 practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыMikhail Payson
 
Юрий Василевский "Автоматизация в 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 CodeIgor Kurochkin
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовCOMAQA.BY
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовSQALab
 
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...Ivan Piskunov
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеDenis Chistyakov
 

Similar a Тестирование ПО, основанного на сторонних компонентах, на примере дистрибутива ОС Linux (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 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
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Промышленная разработка ПО. Лекция 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: работа над проектом в Яндексе
 

Más de ru_Parallels

OpenStack лучше с Virtuozzo
OpenStack лучше с VirtuozzoOpenStack лучше с Virtuozzo
OpenStack лучше с Virtuozzoru_Parallels
 
Расширяем горизонты с помощью iCloud
Расширяем горизонты с помощью iCloudРасширяем горизонты с помощью iCloud
Расширяем горизонты с помощью iCloudru_Parallels
 
Цифровой суверенитет для российских облачных систем
Цифровой суверенитет для российских облачных системЦифровой суверенитет для российских облачных систем
Цифровой суверенитет для российских облачных системru_Parallels
 
Виртуализация инфраструктуры ЦОД российской разработки
Виртуализация инфраструктуры ЦОД российской разработкиВиртуализация инфраструктуры ЦОД российской разработки
Виртуализация инфраструктуры ЦОД российской разработкиru_Parallels
 
Resource management in the cloud
Resource management in the cloudResource management in the cloud
Resource management in the cloudru_Parallels
 
Передача состояния с iPhone на Apple Watch
Передача состояния с iPhone на Apple WatchПередача состояния с iPhone на Apple Watch
Передача состояния с iPhone на Apple Watchru_Parallels
 
Надежность ПО и Runtime Verification
Надежность ПО и Runtime VerificationНадежность ПО и Runtime Verification
Надежность ПО и Runtime Verificationru_Parallels
 
Vagrant Plugin development
Vagrant Plugin developmentVagrant Plugin development
Vagrant Plugin developmentru_Parallels
 
Управление рисками в разработке программного обеспечения
Управление рисками в разработке программного обеспеченияУправление рисками в разработке программного обеспечения
Управление рисками в разработке программного обеспеченияru_Parallels
 
Virtuozzo platform
Virtuozzo platformVirtuozzo platform
Virtuozzo platformru_Parallels
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программистru_Parallels
 
Доклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDaysДоклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDaysru_Parallels
 
Доклад Якова Зубарева на конференции MBLT15
Доклад Якова Зубарева на конференции MBLT15Доклад Якова Зубарева на конференции MBLT15
Доклад Якова Зубарева на конференции MBLT15ru_Parallels
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Pythonru_Parallels
 
2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentationru_Parallels
 
Инновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнесаИнновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнесаru_Parallels
 
Kolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbersKolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbersru_Parallels
 
Pavel Ershov on WHD.Moscow
Pavel Ershov on WHD.MoscowPavel Ershov on WHD.Moscow
Pavel Ershov on WHD.Moscowru_Parallels
 
KAnisimov riw2011-hosting-future
KAnisimov riw2011-hosting-futureKAnisimov riw2011-hosting-future
KAnisimov riw2011-hosting-futureru_Parallels
 

Más de ru_Parallels (19)

OpenStack лучше с Virtuozzo
OpenStack лучше с VirtuozzoOpenStack лучше с Virtuozzo
OpenStack лучше с Virtuozzo
 
Расширяем горизонты с помощью iCloud
Расширяем горизонты с помощью iCloudРасширяем горизонты с помощью iCloud
Расширяем горизонты с помощью iCloud
 
Цифровой суверенитет для российских облачных систем
Цифровой суверенитет для российских облачных системЦифровой суверенитет для российских облачных систем
Цифровой суверенитет для российских облачных систем
 
Виртуализация инфраструктуры ЦОД российской разработки
Виртуализация инфраструктуры ЦОД российской разработкиВиртуализация инфраструктуры ЦОД российской разработки
Виртуализация инфраструктуры ЦОД российской разработки
 
Resource management in the cloud
Resource management in the cloudResource management in the cloud
Resource management in the cloud
 
Передача состояния с iPhone на Apple Watch
Передача состояния с iPhone на Apple WatchПередача состояния с iPhone на Apple Watch
Передача состояния с iPhone на Apple Watch
 
Надежность ПО и Runtime Verification
Надежность ПО и Runtime VerificationНадежность ПО и Runtime Verification
Надежность ПО и Runtime Verification
 
Vagrant Plugin development
Vagrant Plugin developmentVagrant Plugin development
Vagrant Plugin development
 
Управление рисками в разработке программного обеспечения
Управление рисками в разработке программного обеспеченияУправление рисками в разработке программного обеспечения
Управление рисками в разработке программного обеспечения
 
Virtuozzo platform
Virtuozzo platformVirtuozzo platform
Virtuozzo platform
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
Доклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDaysДоклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDays
 
Доклад Якова Зубарева на конференции MBLT15
Доклад Якова Зубарева на конференции MBLT15Доклад Якова Зубарева на конференции MBLT15
Доклад Якова Зубарева на конференции MBLT15
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
 
2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation
 
Инновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнесаИнновационные решения для роста облачного бизнеса
Инновационные решения для роста облачного бизнеса
 
Kolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbersKolerov parallels cloud_market_in_numbers
Kolerov parallels cloud_market_in_numbers
 
Pavel Ershov on WHD.Moscow
Pavel Ershov on WHD.MoscowPavel Ershov on WHD.Moscow
Pavel Ershov on WHD.Moscow
 
KAnisimov riw2011-hosting-future
KAnisimov riw2011-hosting-futureKAnisimov riw2011-hosting-future
KAnisimov riw2011-hosting-future
 

Тестирование ПО, основанного на сторонних компонентах, на примере дистрибутива ОС Linux

  • 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 официально поддерживаемых пакетов)