SlideShare une entreprise Scribd logo
1  sur  26
1
2
Кирилл Игнатьев
Software Developer in Test
Надежность ПО
Runtime Verification
3
О чем поговорим
• Необходимость надежности ПО
• Тестирование и его недостатки
• Что такое верификация
• Формальное определение
• Инструменты Runtime Verification
• Практическое применение
4
Ariane V88 Crash (1996)
P_M_DERIVE(T_ALG.E_BH) :=
UC_16S_EN_16NS
(TDB.T_ENTIER_16S
((1.0/C_M_LSB_BH) *
G_M_INFO_DERIVE(T_ALG.E_BH)))
direct cost 500.000.000 €
indirect cost 2.000.000.000
5
Важность проверки ПО
• Разработчики тратят от 50%
до 70% времени тестируя и
проверяя код
• Тем не менее, низкая
надежность – все еще
основная проблема ПО
• Недавнее исследование
показывает, что баги
отнимают от 60 миллиардов
долларов ежегодно
6
Что у нас есть: тестирование
Тестирование – это проверка подмножества сценариев
использования продукта.
Тестирование может обнаружить ошибки, но не может
доказать их отсутствие.
Большинство программ могут принимать
неограниченное множество входных данных.
7
Верификация
Верификация:
Соответствует ли программа спецификации?
Спецификация также может содержать ошибки.
8
Верификация во время выполнения
(Runtime Verification)
Runtime verification – техники верификации, которые
позволяют проверить, удовлетворяет ли выполнение (a
run) системы определенному условию корректности
(correctness property).
9
Прогон и выполнение
Выполнение – возможно, бесконечная
последовательность состояний системы.
Прогон – конечный префикс выполнения (trace).
Монитор проверяет, удовлетворяет ли прогон
определенному условию корректности.
10
Добавляем монитор
11
Testing Runtime Verification
Удовлетворяет ли входным/выходным данным? Удовлетворяет ли система монитору?
Входные/выходные данные задаются вручную Монитор генерируется из условий корректности
Проблема: создание входных/выходных данных Проблема: генерация монитора
Проверяется текущее выполнение Проверяется текущее выполнение
Сравнение
13
Кому нужен Runtime Verification?
• Когда цена ошибки высока (ракеты, самолеты,
процессоры, безопасность, репутация)
• Когда некая информация доступна только во время
выполнения
• Когда поведение приложения сильно зависит от
окружения
• Для доказательства корректности системы (ИИ?)
14
Шаг 1. Написать спецификацию
Для этого есть языки: LTL (Linear Temporal Logic), SALT и др.
Это регулярные языки, но включающие еще и время:
15
Шаг 1. Написать спецификацию
Открыто соединение, данные переданы, соединение закрыто.
16
Шаг 1. Написать спецификацию
Открыто соединение, данные переданы, соединение закрыто,
или выполнена отмена в любое время.
18
Шаг 2. Определить события (jUnitrv)
private static Event con_open = returned ( dataService , ”connect");
private static Event data = called ( dataService , ”transmit_data");
private static Event con_close = called ( dataService , "disconnect");
private static Event reset = called ( dataService , ”reset");
@Test
@Monitors ({”transmitData"})
public void test1 () {
// ...
}
19
Готово!
20
Фреймворки
21
time Reflection Pattern
Паттерн разработки
надежных систем
22
Runtime Reflection Pattern
Логирование ->
23
Runtime Reflection Pattern
Монитор ->
• Реализован с помощью RV
• Обнаруживает ошибки и
• Оповещает о них
24
Runtime Reflection Pattern
Диагностика ->
• Собирает вердикты монитора
• Объясняет текущее состояние
25
Runtime Reflection Pattern
Смягчение ->
• Пытается смягчить последствия
• Сохраняет детальную
диагностическую информацию
26
Конференция (2001––2015)
• 22-25 сентября, Вена, Австрия
• Билеты по 759/550€
27
Куда двигаться дальше?
• Уменьшение накладных расходов
• Упрощение спецификаций
• Изменение поведения
• Почему так долго?
28

Contenu connexe

Similaire à Надежность ПО и Runtime Verification

Работа с требованиями при создании программного обеспечения бортовой радиоэле...
Работа с требованиями при создании программного обеспечения бортовой радиоэле...Работа с требованиями при создании программного обеспечения бортовой радиоэле...
Работа с требованиями при создании программного обеспечения бортовой радиоэле...
Sergey Laletin
 
Телеканал Russia Today Splunk История успеха
Телеканал Russia Today Splunk История успехаТелеканал Russia Today Splunk История успеха
Телеканал Russia Today Splunk История успеха
Alexander Kulakov
 
Липский Павел
Липский ПавелЛипский Павел
Липский Павел
Ontico
 
Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)
Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)
Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)
Alexey Kachalin
 
Юрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границЮрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границ
sqadays8
 

Similaire à Надежность ПО и Runtime Verification (20)

Измерение эффективности SOC. 3 года спустя
Измерение эффективности SOC. 3 года спустяИзмерение эффективности SOC. 3 года спустя
Измерение эффективности SOC. 3 года спустя
 
Семинар ИБ ФНС-2013
Семинар ИБ ФНС-2013Семинар ИБ ФНС-2013
Семинар ИБ ФНС-2013
 
Работа с требованиями при создании программного обеспечения бортовой радиоэле...
Работа с требованиями при создании программного обеспечения бортовой радиоэле...Работа с требованиями при создании программного обеспечения бортовой радиоэле...
Работа с требованиями при создании программного обеспечения бортовой радиоэле...
 
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
Особенности проведения аудита безопасности корпоративной IT-инфраструктуры_PH...
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложений
 
Телеканал Russia Today Splunk История успеха
Телеканал Russia Today Splunk История успехаТелеканал Russia Today Splunk История успеха
Телеканал Russia Today Splunk История успеха
 
Липский Павел
Липский ПавелЛипский Павел
Липский Павел
 
MID_AppChangeContol_Andrey_Bezverkhiy_RU
MID_AppChangeContol_Andrey_Bezverkhiy_RUMID_AppChangeContol_Andrey_Bezverkhiy_RU
MID_AppChangeContol_Andrey_Bezverkhiy_RU
 
Лекция 1 введение в тестирование ПО, основные понятия и принципы
Лекция 1 введение в тестирование ПО, основные понятия и принципыЛекция 1 введение в тестирование ПО, основные понятия и принципы
Лекция 1 введение в тестирование ПО, основные понятия и принципы
 
PT ESC - кто полечит доктора?
PT ESC - кто полечит доктора?PT ESC - кто полечит доктора?
PT ESC - кто полечит доктора?
 
Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)
Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)
Решения и сервисы для обеспечения ИБ (ИБ Банков 2016)
 
Анализ ИБ и расследование инцидентов ИБ (учебный семинар)
Анализ ИБ и расследование инцидентов ИБ (учебный семинар)Анализ ИБ и расследование инцидентов ИБ (учебный семинар)
Анализ ИБ и расследование инцидентов ИБ (учебный семинар)
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
ITSF 2014 ICS Security
ITSF 2014 ICS SecurityITSF 2014 ICS Security
ITSF 2014 ICS Security
 
Security Testing - Polazhenko Sergey
Security Testing - Polazhenko SergeySecurity Testing - Polazhenko Sergey
Security Testing - Polazhenko Sergey
 
Юрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границЮрий Ковалев -- Нагрузочное тестирование без границ
Юрий Ковалев -- Нагрузочное тестирование без границ
 
Требования ISO к защите информации и украинские реали. Оценка защищенности ин...
Требования ISO к защите информации и украинские реали. Оценка защищенности ин...Требования ISO к защите информации и украинские реали. Оценка защищенности ин...
Требования ISO к защите информации и украинские реали. Оценка защищенности ин...
 
Upd pci compliance
Upd pci compliance Upd pci compliance
Upd pci compliance
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
 

Plus de ru_Parallels

2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation2013 WHD.local Istanbul Presentation
2013 WHD.local Istanbul Presentation
ru_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_numbers
ru_Parallels
 
Pavel Ershov on WHD.Moscow
Pavel Ershov on WHD.MoscowPavel Ershov on WHD.Moscow
Pavel Ershov on WHD.Moscow
ru_Parallels
 

Plus 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
 
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
 

Надежность ПО и Runtime Verification

  • 1. 1
  • 2. 2 Кирилл Игнатьев Software Developer in Test Надежность ПО Runtime Verification
  • 3. 3 О чем поговорим • Необходимость надежности ПО • Тестирование и его недостатки • Что такое верификация • Формальное определение • Инструменты Runtime Verification • Практическое применение
  • 4. 4 Ariane V88 Crash (1996) P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH))) direct cost 500.000.000 € indirect cost 2.000.000.000
  • 5. 5 Важность проверки ПО • Разработчики тратят от 50% до 70% времени тестируя и проверяя код • Тем не менее, низкая надежность – все еще основная проблема ПО • Недавнее исследование показывает, что баги отнимают от 60 миллиардов долларов ежегодно
  • 6. 6 Что у нас есть: тестирование Тестирование – это проверка подмножества сценариев использования продукта. Тестирование может обнаружить ошибки, но не может доказать их отсутствие. Большинство программ могут принимать неограниченное множество входных данных.
  • 7. 7 Верификация Верификация: Соответствует ли программа спецификации? Спецификация также может содержать ошибки.
  • 8. 8 Верификация во время выполнения (Runtime Verification) Runtime verification – техники верификации, которые позволяют проверить, удовлетворяет ли выполнение (a run) системы определенному условию корректности (correctness property).
  • 9. 9 Прогон и выполнение Выполнение – возможно, бесконечная последовательность состояний системы. Прогон – конечный префикс выполнения (trace). Монитор проверяет, удовлетворяет ли прогон определенному условию корректности.
  • 11. 11 Testing Runtime Verification Удовлетворяет ли входным/выходным данным? Удовлетворяет ли система монитору? Входные/выходные данные задаются вручную Монитор генерируется из условий корректности Проблема: создание входных/выходных данных Проблема: генерация монитора Проверяется текущее выполнение Проверяется текущее выполнение Сравнение
  • 12. 13 Кому нужен Runtime Verification? • Когда цена ошибки высока (ракеты, самолеты, процессоры, безопасность, репутация) • Когда некая информация доступна только во время выполнения • Когда поведение приложения сильно зависит от окружения • Для доказательства корректности системы (ИИ?)
  • 13. 14 Шаг 1. Написать спецификацию Для этого есть языки: LTL (Linear Temporal Logic), SALT и др. Это регулярные языки, но включающие еще и время:
  • 14. 15 Шаг 1. Написать спецификацию Открыто соединение, данные переданы, соединение закрыто.
  • 15. 16 Шаг 1. Написать спецификацию Открыто соединение, данные переданы, соединение закрыто, или выполнена отмена в любое время.
  • 16. 18 Шаг 2. Определить события (jUnitrv) private static Event con_open = returned ( dataService , ”connect"); private static Event data = called ( dataService , ”transmit_data"); private static Event con_close = called ( dataService , "disconnect"); private static Event reset = called ( dataService , ”reset"); @Test @Monitors ({”transmitData"}) public void test1 () { // ... }
  • 19. 21 time Reflection Pattern Паттерн разработки надежных систем
  • 21. 23 Runtime Reflection Pattern Монитор -> • Реализован с помощью RV • Обнаруживает ошибки и • Оповещает о них
  • 22. 24 Runtime Reflection Pattern Диагностика -> • Собирает вердикты монитора • Объясняет текущее состояние
  • 23. 25 Runtime Reflection Pattern Смягчение -> • Пытается смягчить последствия • Сохраняет детальную диагностическую информацию
  • 24. 26 Конференция (2001––2015) • 22-25 сентября, Вена, Австрия • Билеты по 759/550€
  • 25. 27 Куда двигаться дальше? • Уменьшение накладных расходов • Упрощение спецификаций • Изменение поведения • Почему так долго?
  • 26. 28

Notes de l'éditeur

  1. Timeline for app store approval