SlideShare a Scribd company logo
Технические и «нетехнические»
проблемы автоматизации тестирования
Пакулин Николай Витальевич,
Петренко Александр Константинович,
Институт системного программирования РАН (ИСП РАН)
www.ispras.ru
http://ispras.ru/ru/se
TMPA, Кострома, 2013
«Автоматизация тестирования» и
«Тестирование на основе моделей» (MBT)
• Что общего?
• В чем разница?
• Что думают классики?
2
Bob Binder.
Автор Testing Object-Oriented
Software
Любое автоматизированное
тестирование это
тестирование на основе моделей
Примеры моделей в
Model Based Testing (MBT)
3
RSL
MSC
FSM /
FA
Грамматика
<assign> ::= <id> “:=” <expr>
<expr> ::= <intexp> | <boolexp>
Программный контракт
(UniTESK, SpecExplorer)
class ArrayList { public virtual void
Insert(int index , object value)
requires 0 <= index && index <= Count;
requires !IsReadOnly && !IsFixedSize;
ensures Count == old(Count) + 1;
ensures value == this[index ];
ensures Forall{int i in 0 : index ; old(this[i])
== this[i]};
ensures Forall{int i in index : old(Count);
old(this[i]) == this[i + 1]};
{ . . . }
axiom  s : S, e : Nat :-
first(add(s, e)) ≡
if e > 10 then 2 * first(s)
elsif e > 5 then first(s)
else 0 end
State 2
State1
State 4
State 3
op2
op3
op3
op3
op2
op1
op3
Венский метод
Vienna Development Method – VDM (1)
Шаг 0-ой: объявление сорт-типов и определение сигнатур операций
Шаг 1-ый: структуры данных и спецификации для каждой операции
(имплицитные и эксплицитные),
доказательство корректности спецификаций
. . .
Шаг i-й: модификация сигнатур и структур данных и расширение
спецификаций предыдущего шага, доказательство корректности и
согласованности с предыдущим шагом.
В конце возможна трансляция в код на языке программирования.
Операционная семантика языка программирования, синтез
программ
4
Модели
Идея
Код
Венский метод
Vienna Development Method – VDM (2)
Имея имплицитную спецификацию <pre-Op, post-Op> и
эксплицитную спецификацию Op нужно доказывать, что
 Input
pre-Op(input) => post-Op(input, Op(input))
Это надо доказывать на каждом уровне детализации.
5
Венский метод
Vienna Development Method – VDM (3)
Доказательство соответствия моделей разного уровня детализации
Обозначения:
• Op_mod - операция в модельном (спецификационном) пространстве
• Op_impl - операция в реализационном пространстве
• in, out- входные и выходные данные в реализационном пространстве
• IN, OUT - входные и выходные данные в модельном пространстве
• retr - восстанавливающая функция (функция абстракции)
Op_mod
Op_impl
retr retr
in out
OUTIN
6
Модельное пространство
Реализационное пространство
Функция абстракции
• Пред-условия абстрактного уровня (далее будем говорить
модели и использовать суффикс _mod) не слабее пред-
условий уточненного уровня (далее будем говорить
реализации и использовать суффикс _impl):
pre-Op_mod(retr(in)) => pre-Op_impl(in)
• При условии, что предусловия не нарушены, результат
выполнения функции Op_mod эквивалентен результату
функции Op_impl, преобразованного функцией retr:
pre-Op_mod(retr(in)) =>
eq(retr(Op_impl(in)), Op_mod(retr(in))),
где eq – функция, задающая определение эквивалентности
значений из области значений функции Op_mod.
7
Постановка задачи верификации.
Модель и реализация заданы явно
В этом случае для доказательства соответствия нужно убедиться,
что для каждой уточненной функции:
• Пред-условия модели функции не слабее пред-условий
реализации
pre-Op_mod(retr(in)) => pre-Op_impl(in)
• пост-условие модели выполняется по отношению к
входным данным, полученным трансформацией входных
данных реализации и результатам, полученным
трансформацией выходных данных реализации (при
условии, что пред-условие для модели выполняется)
 in: pre-Op_mod(retr(in)) =>
post-Op_mod(retr(in), retr(Op_impl(in)))
8
Постановка задачи верификации.
Модель неявная, реализация явная
Требуется показать соответствие на тестовых примерах :
pre-Op_mod(retr(in)) =>
post-Op_mod(retr(in), retr(Op_impl(in)))
или
pre-Op_mod(retr(in)) =>
eq(retr(Op_impl(in)), Op_mod(retr(in)))
При этом надо ответить на вопрос – сколько и каких входных данных
будет достаточно для выполнения качественного тестирования.
9
Постановка задачи верификации при
помощи тестирования на основе
моделей
Общая схема генерации тестов в
UniTESK и SpecExplorer
10
Критерий полноты
Модель поведения
Структуры
данных
Инварианты
Пред- и
постусловия
Операции и
события
Варианты исполнения
Виды
состояний
Модель
состояния
Обходчик
автоматов
Оракулы
Виды
параметров
Генератор
Итераторы
данных
Описание автомата
ДействияСостояния
Метрика
покрытия
Тестируемая
система
Генерация тестовой
последовательности на
лету
Предусловия
Постусловия
Примеры приложений UniTESK
 OS Kernel Verification (Nortel Networks) - 1994–1999
 CleanDocs – Requirements management
based on formalization (Nortel Networks) - 1999
 UniTESK origination - 1999
 IPv6 implementation testing (Microsoft Research) - 2001-2003
 Compiler testing (Intel) - 2001–2004
 Billing system infrastructure (VimpelCom) - 2005-2011
 Linux Standard Base – OLVER (Ministry of Science RF) - 2005-2006
 ARINC-653 testing (NIISI et al) - 2007-2013
 CRM system testing (Luxoft/Deutsche Bank) - 2003
 Tiny OS testing (Luxoft) - 2004
 Simulink optimizer (Daimler Chrysler) - 2005
 LSB Infrastructure (Linux Foundation, Nokia) - 2007-2011
 Hardware design testing (NIISI, MCST) - 2005-2013
 IPsec formalization and testing (RFBR) - 2007-2009
 Math library testing (NIISI) - 2007-2011
 Linux driver verification (RFBR, Ministry of Science RF) - 2007-2013
 Avionics tool chain (GosNIIAS) - 2009-2013
 Critical avionics testing (Rusys, Lasex) - 2010-2012
 DOM formalization and testing (Microsoft) - 2009-2011
 Race detection in Linux kernel – KEDR (Google) - 2011-2012
Примеры моделей программного обеспечения
встроенных систем управления
12
SCADE (Esterel Technologies) Диаграмма последовательностей
(IBM/Rhapsody)
Средства моделирования логики и
поведения микропроцессоров
13
Модель системы на языке AADL
(SAE Architecture Analysis & Design Language)
14
ИСП РАН AADL инструмент MASIW
15
Правила безопасного программирования
(safety rules)
16
ID 0029: Memory cannot be allocated from an
unexisted memory pool
GOALS:
To avoid potential crashes related to incorrect usage
of pool functions: dma_pool_alloc() cannot be
called before a successful creation of pool using
dma_pool_create().
Неформальное описание правила
Формальная модель
запрещенного поведения
Общая идея: формализация описания
«анти-паттернов» корректного программирования
Современные проблемы
• Возможности инструментов пока не позволяют
проводить точный анализ систем реальной
сложности и реальных размеров
– Поиск возможностей помодульного анализа
• Реальные программно-аппаратные системы
представляют собой «стек» платформ
– Задача «межплатформенного» анализа
• Разработка спецификаций/моделей требований,
правил корректности и безопасности
17
Ближайшие перспективы
• Освоение больших вычислительных
мощностей для решения задач
верификации
• Комбинация различных подходов к
анализу программ, включая техники
на основе provers и solvers
18
Каковы плюсы тестирования на
основе моделей?
• Разработка моделей подталкивает к скрупулезному анализу
проекта (многие ошибки выявляются еще на фазе
проектирования)
• MBT достаточно легко позволяет распараллеливать
выполнение тестов (легко загрузить кластер)
• Достаточно просто строить рандомизированные тесты
• Поддерживать и сопровождать большую систему MBT
проще традиционных пакетов регрессионных тестов
• Трудоемкость разработки MBT тестов в большом проекте
меньше по сравнению с традиционными технологиями
19
«НЕТЕХНИЧЕСКИЕ»
ПРОБЛЕМЫ
Минусы тестирования на основе моделей
20
«Медленный старт»
• Тесты только после модели
– Недели и месяцы работы без видимой отдачи
– «Дублирование кода»
– Отсутствие документации. «Читайте код, там всѐ
написано»
– Модификации в коде. Незафиксированные интерфейсы!
• «Где ошибки?»
– Разработка модели должна начинаться на этапе
проектирования
– Ко-верификация
– Непонятная модель
21
Проблема планирования
• Выбор уровня качества
– MBT – недешевая активность
– Анализ и выбор возможностей
– Постановка бизнес-целей
• «Они нас отвлекают!» vs «Молчат как
партизаны!»
– Построение политики взаимодействия спецификаторов и
программистов
– Построение процесса разработки
– Выделение ресурсов
22
Сложность обучения
• «… и много других страшных слов»
– иерархический расширенный конечный автомат, пред- и
постусловия, темпоральная логика, алгебра термов,
переписывание, обход автомата, …
– В Индии человек с необходимым набором компетенций
занимает позицию Research Director в крупной компании
• Результат или процесс?
– Специалист по MBT и программист мыслят по-разному!
– Модель != реализация
• Подготовка персонала
– Отсутствие подготовки в ВУЗе
– Трехдневный тренинг (???)
23
Сложность удержания
обученных кадров
• Как сохранять мотивацию высокоуровнего
тестирования?
– Тестировщик – «человек второго сорта»
– Относительно легко говорить о мотивации разработчиков
инструментов
• Важно, чтобы каждый видел перспективу роста:
– Варианты карьерного роста в компании
– Высокий уровень компетенций – переход в ведущие
разработчики, архитекторы, дизайнеры, …
• Ограниченность рынка
– Большая потребность в специалистах
24
Спасибо!

More Related Content

PPTX
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
PPT
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
PPTX
TMPA-2013: Shipin System-C Control Points
PDF
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
PDF
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
PPTX
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
PDF
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
PPTX
TMPA-2013 Tsytelov Trifanov Devexperts
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
TMPA-2013: Shipin System-C Control Points
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
TMPA-2013 Tsytelov Trifanov Devexperts

What's hot (20)

PDF
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
PDF
Static Analysis of Transactions Management in Applications for Java EE Platform
PDF
Быстрое прототипирование алгоритмов управления
PDF
A Method of Building Extended Finite State Machines According to HDL-Descript...
PDF
Физическое моделирование объекта управления
PDF
Полунатурная модель управляемой ракеты с пассивной ГСН
PDF
Разработка систем управления
PDF
20100314 virtualization igotti_lecture06
PDF
Разработка систем управления для отечественных АКПП
PDF
Развертывание алгоритмов на ПЛИС
PDF
TMPA-2015: Lexical analysis of dynamically formed string expressions
PDF
Работа с Big Data
PDF
Approaches to the Fragmentation of a Paravirtualization System
PPTX
Основы и применение статического анализа кода при разработке лекция 1
PDF
Работа с платами ИНСИС из MATLAB
PDF
Проектирование систем связи
PPTX
Всё о статическом анализе кода для Java программиста
PPT
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
PDF
Проектирование радиолокационных систем
PPTX
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Static Analysis of Transactions Management in Applications for Java EE Platform
Быстрое прототипирование алгоритмов управления
A Method of Building Extended Finite State Machines According to HDL-Descript...
Физическое моделирование объекта управления
Полунатурная модель управляемой ракеты с пассивной ГСН
Разработка систем управления
20100314 virtualization igotti_lecture06
Разработка систем управления для отечественных АКПП
Развертывание алгоритмов на ПЛИС
TMPA-2015: Lexical analysis of dynamically formed string expressions
Работа с Big Data
Approaches to the Fragmentation of a Paravirtualization System
Основы и применение статического анализа кода при разработке лекция 1
Работа с платами ИНСИС из MATLAB
Проектирование систем связи
Всё о статическом анализе кода для Java программиста
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Проектирование радиолокационных систем
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Ad

Viewers also liked (6)

PPT
TMPA-2013 Sharov: Client Certification
PDF
TMPA-2013 Zhuravlev: Data Migration between DBMS Using Cryptographic Hash Fun...
PPT
TMPA-2013 Smirnov
PDF
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
PDF
TMPA-2013 Keynote: Zakharov Obfuscation
PPTX
TMPA-2015: Automated process of creating test scenarios for financial protoco...
TMPA-2013 Sharov: Client Certification
TMPA-2013 Zhuravlev: Data Migration between DBMS Using Cryptographic Hash Fun...
TMPA-2013 Smirnov
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Keynote: Zakharov Obfuscation
TMPA-2015: Automated process of creating test scenarios for financial protoco...
Ad

Similar to TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges of Test Automation (20)

PDF
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
PPTX
Современный статический анализ кода: что умеет он, чего не умели линтеры
PDF
[jeeconf-2011] Java Platform Performance BoF
PPTX
Повышение качества тестов и автоматическая валидация REST API документации
POTX
Как жить в согласии с SOLID?
PPTX
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
PDF
IT-инфраструктура. FAQ для разработчика
PPTX
Java Ahead-Of-Time compilation
PPTX
А.Левенчук -- управление жизненным циклом актива
PPTX
Sqadays 8-barancev
PPTX
2014.12.23 Александр Андреев, Parallels
PDF
PPTX
Вебинар «Диагностика типовых узких мест скорости работы 1С»
PDF
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
PDF
Формальная верификация кода на языке Си
PDF
Формальная верификация кода на языке Си
PDF
Formal verification of C code
PDF
Автоматическая генерация C кода и тестирование на целевых вычислителях
PDF
Formal Verification of a Linux Security Module
PPTX
Автоматическая сборка и развертывание на платформе 1C
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Современный статический анализ кода: что умеет он, чего не умели линтеры
[jeeconf-2011] Java Platform Performance BoF
Повышение качества тестов и автоматическая валидация REST API документации
Как жить в согласии с SOLID?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
IT-инфраструктура. FAQ для разработчика
Java Ahead-Of-Time compilation
А.Левенчук -- управление жизненным циклом актива
Sqadays 8-barancev
2014.12.23 Александр Андреев, Parallels
Вебинар «Диагностика типовых узких мест скорости работы 1С»
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
Формальная верификация кода на языке Си
Формальная верификация кода на языке Си
Formal verification of C code
Автоматическая генерация C кода и тестирование на целевых вычислителях
Formal Verification of a Linux Security Module
Автоматическая сборка и развертывание на платформе 1C

More from Iosif Itkin (20)

PDF
Foundations of Software Testing Lecture 4
PPTX
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
PDF
Exactpro FinTech Webinar - Global Exchanges Test Oracles
PDF
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
PDF
Operational Resilience in Financial Market Infrastructures
PDF
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
PDF
Testing the Intelligence of your AI
PDF
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
PDF
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
PPTX
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
PDF
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
PDF
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
PPTX
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
PDF
QA Community Saratov: Past, Present, Future (2019-02-08)
PDF
Machine Learning and RoboCop Testing
PDF
Behaviour Driven Development: Oltre i limiti del possibile
PDF
2018 - Exactpro Year in Review
PPTX
Exactpro Discussion about Joy and Strategy
PPTX
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
PDF
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
Foundations of Software Testing Lecture 4
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Operational Resilience in Financial Market Infrastructures
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
Testing the Intelligence of your AI
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QA Community Saratov: Past, Present, Future (2019-02-08)
Machine Learning and RoboCop Testing
Behaviour Driven Development: Oltre i limiti del possibile
2018 - Exactpro Year in Review
Exactpro Discussion about Joy and Strategy
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)

TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges of Test Automation

  • 1. Технические и «нетехнические» проблемы автоматизации тестирования Пакулин Николай Витальевич, Петренко Александр Константинович, Институт системного программирования РАН (ИСП РАН) www.ispras.ru http://ispras.ru/ru/se TMPA, Кострома, 2013
  • 2. «Автоматизация тестирования» и «Тестирование на основе моделей» (MBT) • Что общего? • В чем разница? • Что думают классики? 2 Bob Binder. Автор Testing Object-Oriented Software Любое автоматизированное тестирование это тестирование на основе моделей
  • 3. Примеры моделей в Model Based Testing (MBT) 3 RSL MSC FSM / FA Грамматика <assign> ::= <id> “:=” <expr> <expr> ::= <intexp> | <boolexp> Программный контракт (UniTESK, SpecExplorer) class ArrayList { public virtual void Insert(int index , object value) requires 0 <= index && index <= Count; requires !IsReadOnly && !IsFixedSize; ensures Count == old(Count) + 1; ensures value == this[index ]; ensures Forall{int i in 0 : index ; old(this[i]) == this[i]}; ensures Forall{int i in index : old(Count); old(this[i]) == this[i + 1]}; { . . . } axiom  s : S, e : Nat :- first(add(s, e)) ≡ if e > 10 then 2 * first(s) elsif e > 5 then first(s) else 0 end State 2 State1 State 4 State 3 op2 op3 op3 op3 op2 op1 op3
  • 4. Венский метод Vienna Development Method – VDM (1) Шаг 0-ой: объявление сорт-типов и определение сигнатур операций Шаг 1-ый: структуры данных и спецификации для каждой операции (имплицитные и эксплицитные), доказательство корректности спецификаций . . . Шаг i-й: модификация сигнатур и структур данных и расширение спецификаций предыдущего шага, доказательство корректности и согласованности с предыдущим шагом. В конце возможна трансляция в код на языке программирования. Операционная семантика языка программирования, синтез программ 4 Модели Идея Код
  • 5. Венский метод Vienna Development Method – VDM (2) Имея имплицитную спецификацию <pre-Op, post-Op> и эксплицитную спецификацию Op нужно доказывать, что  Input pre-Op(input) => post-Op(input, Op(input)) Это надо доказывать на каждом уровне детализации. 5
  • 6. Венский метод Vienna Development Method – VDM (3) Доказательство соответствия моделей разного уровня детализации Обозначения: • Op_mod - операция в модельном (спецификационном) пространстве • Op_impl - операция в реализационном пространстве • in, out- входные и выходные данные в реализационном пространстве • IN, OUT - входные и выходные данные в модельном пространстве • retr - восстанавливающая функция (функция абстракции) Op_mod Op_impl retr retr in out OUTIN 6 Модельное пространство Реализационное пространство Функция абстракции
  • 7. • Пред-условия абстрактного уровня (далее будем говорить модели и использовать суффикс _mod) не слабее пред- условий уточненного уровня (далее будем говорить реализации и использовать суффикс _impl): pre-Op_mod(retr(in)) => pre-Op_impl(in) • При условии, что предусловия не нарушены, результат выполнения функции Op_mod эквивалентен результату функции Op_impl, преобразованного функцией retr: pre-Op_mod(retr(in)) => eq(retr(Op_impl(in)), Op_mod(retr(in))), где eq – функция, задающая определение эквивалентности значений из области значений функции Op_mod. 7 Постановка задачи верификации. Модель и реализация заданы явно
  • 8. В этом случае для доказательства соответствия нужно убедиться, что для каждой уточненной функции: • Пред-условия модели функции не слабее пред-условий реализации pre-Op_mod(retr(in)) => pre-Op_impl(in) • пост-условие модели выполняется по отношению к входным данным, полученным трансформацией входных данных реализации и результатам, полученным трансформацией выходных данных реализации (при условии, что пред-условие для модели выполняется)  in: pre-Op_mod(retr(in)) => post-Op_mod(retr(in), retr(Op_impl(in))) 8 Постановка задачи верификации. Модель неявная, реализация явная
  • 9. Требуется показать соответствие на тестовых примерах : pre-Op_mod(retr(in)) => post-Op_mod(retr(in), retr(Op_impl(in))) или pre-Op_mod(retr(in)) => eq(retr(Op_impl(in)), Op_mod(retr(in))) При этом надо ответить на вопрос – сколько и каких входных данных будет достаточно для выполнения качественного тестирования. 9 Постановка задачи верификации при помощи тестирования на основе моделей
  • 10. Общая схема генерации тестов в UniTESK и SpecExplorer 10 Критерий полноты Модель поведения Структуры данных Инварианты Пред- и постусловия Операции и события Варианты исполнения Виды состояний Модель состояния Обходчик автоматов Оракулы Виды параметров Генератор Итераторы данных Описание автомата ДействияСостояния Метрика покрытия Тестируемая система Генерация тестовой последовательности на лету Предусловия Постусловия
  • 11. Примеры приложений UniTESK  OS Kernel Verification (Nortel Networks) - 1994–1999  CleanDocs – Requirements management based on formalization (Nortel Networks) - 1999  UniTESK origination - 1999  IPv6 implementation testing (Microsoft Research) - 2001-2003  Compiler testing (Intel) - 2001–2004  Billing system infrastructure (VimpelCom) - 2005-2011  Linux Standard Base – OLVER (Ministry of Science RF) - 2005-2006  ARINC-653 testing (NIISI et al) - 2007-2013  CRM system testing (Luxoft/Deutsche Bank) - 2003  Tiny OS testing (Luxoft) - 2004  Simulink optimizer (Daimler Chrysler) - 2005  LSB Infrastructure (Linux Foundation, Nokia) - 2007-2011  Hardware design testing (NIISI, MCST) - 2005-2013  IPsec formalization and testing (RFBR) - 2007-2009  Math library testing (NIISI) - 2007-2011  Linux driver verification (RFBR, Ministry of Science RF) - 2007-2013  Avionics tool chain (GosNIIAS) - 2009-2013  Critical avionics testing (Rusys, Lasex) - 2010-2012  DOM formalization and testing (Microsoft) - 2009-2011  Race detection in Linux kernel – KEDR (Google) - 2011-2012
  • 12. Примеры моделей программного обеспечения встроенных систем управления 12 SCADE (Esterel Technologies) Диаграмма последовательностей (IBM/Rhapsody)
  • 13. Средства моделирования логики и поведения микропроцессоров 13
  • 14. Модель системы на языке AADL (SAE Architecture Analysis & Design Language) 14
  • 15. ИСП РАН AADL инструмент MASIW 15
  • 16. Правила безопасного программирования (safety rules) 16 ID 0029: Memory cannot be allocated from an unexisted memory pool GOALS: To avoid potential crashes related to incorrect usage of pool functions: dma_pool_alloc() cannot be called before a successful creation of pool using dma_pool_create(). Неформальное описание правила Формальная модель запрещенного поведения Общая идея: формализация описания «анти-паттернов» корректного программирования
  • 17. Современные проблемы • Возможности инструментов пока не позволяют проводить точный анализ систем реальной сложности и реальных размеров – Поиск возможностей помодульного анализа • Реальные программно-аппаратные системы представляют собой «стек» платформ – Задача «межплатформенного» анализа • Разработка спецификаций/моделей требований, правил корректности и безопасности 17
  • 18. Ближайшие перспективы • Освоение больших вычислительных мощностей для решения задач верификации • Комбинация различных подходов к анализу программ, включая техники на основе provers и solvers 18
  • 19. Каковы плюсы тестирования на основе моделей? • Разработка моделей подталкивает к скрупулезному анализу проекта (многие ошибки выявляются еще на фазе проектирования) • MBT достаточно легко позволяет распараллеливать выполнение тестов (легко загрузить кластер) • Достаточно просто строить рандомизированные тесты • Поддерживать и сопровождать большую систему MBT проще традиционных пакетов регрессионных тестов • Трудоемкость разработки MBT тестов в большом проекте меньше по сравнению с традиционными технологиями 19
  • 21. «Медленный старт» • Тесты только после модели – Недели и месяцы работы без видимой отдачи – «Дублирование кода» – Отсутствие документации. «Читайте код, там всѐ написано» – Модификации в коде. Незафиксированные интерфейсы! • «Где ошибки?» – Разработка модели должна начинаться на этапе проектирования – Ко-верификация – Непонятная модель 21
  • 22. Проблема планирования • Выбор уровня качества – MBT – недешевая активность – Анализ и выбор возможностей – Постановка бизнес-целей • «Они нас отвлекают!» vs «Молчат как партизаны!» – Построение политики взаимодействия спецификаторов и программистов – Построение процесса разработки – Выделение ресурсов 22
  • 23. Сложность обучения • «… и много других страшных слов» – иерархический расширенный конечный автомат, пред- и постусловия, темпоральная логика, алгебра термов, переписывание, обход автомата, … – В Индии человек с необходимым набором компетенций занимает позицию Research Director в крупной компании • Результат или процесс? – Специалист по MBT и программист мыслят по-разному! – Модель != реализация • Подготовка персонала – Отсутствие подготовки в ВУЗе – Трехдневный тренинг (???) 23
  • 24. Сложность удержания обученных кадров • Как сохранять мотивацию высокоуровнего тестирования? – Тестировщик – «человек второго сорта» – Относительно легко говорить о мотивации разработчиков инструментов • Важно, чтобы каждый видел перспективу роста: – Варианты карьерного роста в компании – Высокий уровень компетенций – переход в ведущие разработчики, архитекторы, дизайнеры, … • Ограниченность рынка – Большая потребность в специалистах 24