SlideShare a Scribd company logo
Антон Евдокимов (aevdokimov@devexperts.com)
Дмитрий Цителов (cit@devexperts.com)
Роман Елизаров (elizarov@devexperts.com)
Виталий Трифанов (trifanov@devexperts.com)
Автоматическое тестирование
линеаризуемости реализаций
многопоточных структур
данных
В чем проблема?
─ Процессоры многоядерные
─ Нужно писать многопоточный код
─ Это не так просто
─ В многопоточной среде появляются
специфические проблемы
─ Одновременный доступ к разделяемым
ресурсам
В чем проблема?
В чем проблема?
─ Стандартные подходы к тестированию
не работают
─ Но проверять корректность
реализации все равно хочется
Линеаризуемость
─ Любое параллельное исполнение эквивалентно
некоторому последовательному
Метод
─ Взять небольшое количество потоков
─ В каждом несколько операций над
структурой данных
─ Запустить много-много раз и
попытаться объяснить результаты
последовательной перестановкой
─ Повторить
Метод
Границы применимости метода
─ Подходит для популярных структур
данных
─ Очереди, множества, хеш-таблицы…
─ Но
─ Структура данных не зависит от
внешней среды
─ Не блокируется
─ Метод точен, но не полон
Очередь
Генерация тестовых наборов
─ Наивно?
─ Операции
─ Изменяют структуру данных
─ Не изменяют
─ Аргументы
─ Влияют на логику поведения
структуры данных
─ Не влияют
Генерация тестовых наборов
Генерация тестовых наборов
Генерация тестовых наборов
P Q
offer(1);
offer(2);
poll();
poll();
Последовательные исполнения
─ Перестановки исходного набора
операций
─ С сохранением порядка операций для
каждого потока
Последовательные исполнения
P Q
offer(1);
offer(2);
poll();
poll();
offer(1); poll() {1}; offer(2); poll() {2};
Последовательные исполнения
offer(1); offer(2); poll() {1}; poll() {2};
offer(1); poll() {1}; offer(2); poll() {2};
offer(1); poll() {1}; poll() {Exception}; offer(2);
poll() {Exception}; poll() {Exception}; offer(1); offer(2);
poll() {Exception}; offer(1); offer(2); poll() {1};
poll() {Exception}; offer(1); poll() {1}; offer(2);
Параллельные исполнения
─ Множественные запуски
─ Синхронизация старта
─ Все служебные структуры создаем
вне многопоточной системы
─ Можно вызывать методы через
Reflection API, но используется ASM
─ Две фазы запусков (без/с задержками)
Проверка
─ Ищем последовательное исполнение,
соответствующее по результатам
параллельному
─ Если не нашли, то структура
нелинеаризуема!
offer(1); poll() {1}; offer(2); poll() {1};
Результаты
─ Синтетические примеры
─ Очередь, счетчик, некоторые другие
─ Потеря synchronized, volatile,
ошибочное использование
неатомарных переменных
─ Нашлись наборы операций,
приводящие к ошибке
Результаты
─ java.util.concurrent ✓
─ Google Guavа ✓
Результаты
─ jctools [1]
─ MpmcArrayQueue ✗
─ zchannel [2]
─ GenericMPMCQueue ✗
─ high_scale_lib [3]
─ NonBlockingHashMap ✗
[1] https://github.com/JCTools/JCTools
[2] http://landz.github.io/
[3] https://github.com/stephenc/high-scale-lib
Результаты
─ zchannel – GenericMPMCQueue
P Q
offer(9); {true}
poll(); {null}
offer(1); {true}
poll(1); {1}
Результаты
Структура данных Время (мс); мин-макс (средн.)
Counter 4 – 110 (33)
Queue 5 – 38786 (8635)
Accounts 3 – 50606 (18697)
NonBlockingSetInt 52 – 10414 (4291)
NonBlockingHashSet 5 – 66975 (16111)
MpmcArrayQueue(2) 2352 – 45628 (19974)
MPMCQueue(2) 1814 – 33958 (19714)
MPMCQueue(16) 1877 – 33858 (8651)
LockFreeQueue 8825 – 342199 (135202)
Что дальше?
─ Генерация параллельных исполнений
с помощью управляемого
переключения между потоками
─ Конкретная последовательность
инструкций
─ Лучшее покрытие состояний
Где посмотреть
─ Lincheck
─ https://github.com/Devexperts/lin-check
─ E-mail
─ dxlab@devexperts.com
Вопросы?
Спасибо

More Related Content

PDF
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
PPTX
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
PPTX
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
PDF
Approaches to the Fragmentation of a Paravirtualization System
PPTX
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
PDF
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
PDF
Test Set Generation Based on a Management Stream Model
PPTX
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
Approaches to the Fragmentation of a Paravirtualization System
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
Test Set Generation Based on a Management Stream Model
TMPA-2013 Itsykson: Java Program Analysis

What's hot (20)

PDF
TMPA-2015: Formal Methods in Robotics
PPT
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
PPTX
TMPA-2015: Automated process of creating test scenarios for financial protoco...
PDF
Static Analysis of Transactions Management in Applications for Java EE Platform
PPTX
Внедрение автоматизации тестирования на Сервисной Шине
PDF
Testing of a Risk Control System Implementation for High-Load Exchange and Br...
PPTX
TMPA-2013: Shipin System-C Control Points
PPTX
Быстрое прототипирование системы управления БПЛА
PPTX
Тестирование систем процессинга банковских карт. Особенности и сложности
PPTX
ковалев нестандатное нт
PPTX
Внедрение автоматизации тестирования в highload проекте с непрерывной выкладкой
PDF
Dev collaboration
PDF
A runtime verification system for Software Defined Networks
PDF
Тестирование осень 2013 лекция 4
PDF
Chebit 12-10. Использование Ruby & r spec для тестирования нерубишного проекта
PPTX
Один за всех, или как помочь тестированию многих компонентов одной системы
PPT
TMPA-2015: Information Support System for Autonomous Spacecraft Control Macro...
PDF
Формальная верификация кода на языке Си
PPTX
Sqadays 2010 burmistrov_fomin_20101120(2)
PDF
Как Cluster Membership Software может помочь QA
TMPA-2015: Formal Methods in Robotics
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
TMPA-2015: Automated process of creating test scenarios for financial protoco...
Static Analysis of Transactions Management in Applications for Java EE Platform
Внедрение автоматизации тестирования на Сервисной Шине
Testing of a Risk Control System Implementation for High-Load Exchange and Br...
TMPA-2013: Shipin System-C Control Points
Быстрое прототипирование системы управления БПЛА
Тестирование систем процессинга банковских карт. Особенности и сложности
ковалев нестандатное нт
Внедрение автоматизации тестирования в highload проекте с непрерывной выкладкой
Dev collaboration
A runtime verification system for Software Defined Networks
Тестирование осень 2013 лекция 4
Chebit 12-10. Использование Ruby & r spec для тестирования нерубишного проекта
Один за всех, или как помочь тестированию многих компонентов одной системы
TMPA-2015: Information Support System for Autonomous Spacecraft Control Macro...
Формальная верификация кода на языке Си
Sqadays 2010 burmistrov_fomin_20101120(2)
Как Cluster Membership Software может помочь QA
Ad

Viewers also liked (20)

PDF
TMPA-2015: Towards a Usable Defect Prediction Tool: Crossbreeding Machine Lea...
PDF
TMPA-2015: The Verification of Functional Programs by Applying Statechart Dia...
PDF
TMPA-2015: Lexical analysis of dynamically formed string expressions
PPT
TMPA-2015: ClearTH: a Tool for Automated Testing of Post Trade Systems
PDF
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
PDF
TMPA-2015: Software Engineering Education: The Messir Approach
PDF
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
PDF
TMPA-2015: Implementing the MetaVCG Approach in the C-light System
PPT
TMPA-2015: FPGA-Based Low Latency Sponsored Access
PDF
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
PDF
TMPA-2015: A Need To Specify and Verify Standard Functions
PPTX
TMPA-2015: Generation of Test Scenarios for Non Deterministic and Concurrent ...
PDF
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
PDF
TMPA-2017: Functional Parser of Markdown Language Based on Monad Combining an...
PDF
TMPA-2017: Layered Layouts for Software Systems Visualization
PDF
TMPA-2017: A Survey of High-Performance Computing for Software Verification
PDF
TMPA-2017: The Quest for Average Response Time
PDF
TMPA-2017: Stemming Architectural Decay in Software Systems
PDF
TMPA-2017: Evolutionary Algorithms in Test Generation for digital systems
PDF
TMPA-2017: Modeling of PLC-programs by High-level Coloured Petri Nets
TMPA-2015: Towards a Usable Defect Prediction Tool: Crossbreeding Machine Lea...
TMPA-2015: The Verification of Functional Programs by Applying Statechart Dia...
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: ClearTH: a Tool for Automated Testing of Post Trade Systems
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
TMPA-2015: Software Engineering Education: The Messir Approach
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Implementing the MetaVCG Approach in the C-light System
TMPA-2015: FPGA-Based Low Latency Sponsored Access
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: A Need To Specify and Verify Standard Functions
TMPA-2015: Generation of Test Scenarios for Non Deterministic and Concurrent ...
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2017: Functional Parser of Markdown Language Based on Monad Combining an...
TMPA-2017: Layered Layouts for Software Systems Visualization
TMPA-2017: A Survey of High-Performance Computing for Software Verification
TMPA-2017: The Quest for Average Response Time
TMPA-2017: Stemming Architectural Decay in Software Systems
TMPA-2017: Evolutionary Algorithms in Test Generation for digital systems
TMPA-2017: Modeling of PLC-programs by High-level Coloured Petri Nets
Ad

Similar to TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Linerializability (20)

PDF
Victor Kuliamin.CSEDays
PDF
Тестирование весна 2013 лекция 2
PDF
ук 03.007.02 2011
PPTX
Разработка и сопровождении авто-тестов (Selenium)
PDF
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
PPT
JavaTalks.Unit Testing.Part 1
PPT
ВВЕДЕНИЕ В NODE.JS
PDF
Автоматическое тестирование. Моя система
PDF
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
PPTX
разработка бизнес приложений (8)
PPTX
Тест-дизайн в тестировании ПО. Задача "Треугольник"
ODP
анализ кода: от проверки стиля до автоматического тестирования
PDF
Как построить свой фреймворк для автотестов?
PPTX
Automation Functional Testing in Agile Projects
PDF
10M tests per day
PDF
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
PDF
C++ STL & Qt. Занятие 10.
PDF
PostgreSQL performance recipes
PPTX
Михаил Боднарчук Современное функциональное тестирование с Codeception
PPT
Автоматизация тестирования на крупных проектах
Victor Kuliamin.CSEDays
Тестирование весна 2013 лекция 2
ук 03.007.02 2011
Разработка и сопровождении авто-тестов (Selenium)
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
JavaTalks.Unit Testing.Part 1
ВВЕДЕНИЕ В NODE.JS
Автоматическое тестирование. Моя система
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
разработка бизнес приложений (8)
Тест-дизайн в тестировании ПО. Задача "Треугольник"
анализ кода: от проверки стиля до автоматического тестирования
Как построить свой фреймворк для автотестов?
Automation Functional Testing in Agile Projects
10M tests per day
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
C++ STL & Qt. Занятие 10.
PostgreSQL performance recipes
Михаил Боднарчук Современное функциональное тестирование с Codeception
Автоматизация тестирования на крупных проектах

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-2015: Automated Testing of Multi-thread Data Structures Solutions Linerializability