SlideShare a Scribd company logo
1 of 21
Использование комбинаторного
тестирования
для мобильных приложений
Павлов Андрей
T-Systems RUS, Санкт-Петербург
About me
Ex-Developer
В IT более 10 лет
5 из них в тестировании
Test Team Lead @ T-Systems RUS
linkedin.com/in/qapavlov
ru.apavlov@gmail.com
Зачем качество мобильным приложениям?
Пользователю достаточно использовать приложение в течение всего пары
минут, чтобы полюбить или возненавидеть его.
Что следует дальше?
– Множество пользователей опубликуют плохой отзыв в appstore и
социальных сетях
– Это может засветиться в СМИ
– Приложение никто не использует
Для того, чтобы этого избежать, приложение должно быть качественным.
И нужно нам настоящее качество!
Attack-based Testing Patterns
Паттерн тестирования на основе общего поведения багов
– “Атаки” ищут баги и ошибки, которые могут быть в программном
обеспечении
– Могут использовать классические методы тестирования и тест-концепты
• Паттерн (больше, чем процесс), должен быть изменен определенным
образом для текущего контекста, чтобы быть результативным
• Тестировщики, работающие несколько лет, изучают паттерны и атаки,
зачастую не замечая того
Примеры атак
Attack 1: Static Code Analysis
Attack 2: Finding White–Box Data Computation Bugs
Attack 3: White–Box Structural Logic Flow Coverage
Attack 4: Finding Hardware–System Unhandled Uses
in Software
Attack 5: Hw-Sw and Sw-Hw signal Interface Bugs
Attack 6: Long Duration Control Attack Runs
Attack 7: Breaking Software Logic and/or Control
Laws
Attack 8: Forcing the Unusual Bug Cases
Attack 9 Breaking Software with Hardware and
System Operations
Attack 10: Finding Bugs in Hardware–Software
Communications
Attack 11: Breaking Software Error Recovery
Attack 12: Interface and Integration Testing
Attack 13: Finding Problems in Software–System
Fault Tolerance
Attack 14: Breaking Digital Software Communications
Attack 15: Finding Bugs in the Data
Attack 16: Bugs in System–Software Computation
Attack 17: Using Simulation and Stimulation to Drive
Software Attacks
Attack 18: Bugs in Timing Interrupts and Priority
Inversion
Attack 19: Finding Time Related Bug
Attack 20: Time Related Scenarios, Stories and Tours
Attack 21: Performance Testing Introduction
Attack 22: Finding Supporting Documentation Problems
Sub–Attack 22.1: Confirming Install–ability
Attack 23: Finding Missing or Wrong Alarms
Attack 24: Finding Bugs in Help Files
Attack 25: Finding Bugs in Apps
Attack 26: Testing Mobile and Embedded Games
Attack 27: Attacking App–Cloud Dependencies
Attack 28 Penetration Attack Test
Attack 28.1 Authentication —Password Attack
Attack 28.2 Sub–Attack Fuzz Test
Attack 29: Information Theft—Stealing Device Data
Attack 29.1 Sub Attack –Identity Social Engineering
Attack 30: Spoofing Attacks
Attack 30.1 Location and/or User Profile Spoof Sub–
Attack
Attack 30.2 GPS Spoof Sub–Attack
Attack 31: Attacking Viruses on the Run in Factories
or PLCs
Attack 32: Using Combinatorial Tests
Attack 33: Attacking Function Bugs
Комбинации для тестирования
мобильных приложений
Вопросы
Что такое мобильное (и IoT) устройство?
– Embedded
ПО “специализированного” железа
Минимальный уровень networking communication
– Mobile and handheld smart devices
Всем знакомые устройства, постоянно соединенные с сетью
– IoT
Интернет Вещей - новые и “традиционные” устройства с добавленной
коммуникацией
Пример комбинаций для
мобильного и IoT тестрования
Hardware Standards
• Raspberry Pi & Beaglebone
• Atheros AR9331: Arduino Yun, WeIO, Black
Swift, Onion
• TI CC3200 & CC310
• ESP8266
• Electric Imp
• Spark: Core, Photon, Electron
• Intel Edison
• … и многие другие …
Platform Patterns
• Electric Imp (Imp001, Imp002, Imp003)
• Spark (Core & Photon)
• Thingsee
• TinkerForge
• SmartThings
• WICED (Broadcom)
• Cosino
• littleBits
Protocols
• MQTT
• ZeroMQ
• Thread (6LoWPAN on 802.15.4)
• Protocol Buffers
• HTTP & Websockets, часто с JSON
• CoAP (RFC 7252)
Interface Patterns
• WiFi (802.11)
• 802.15.4: Zigbee, 6LoWPAN
• Bleutooth SMART
• Bleutooth
• Ethernet and PoE
Software Configurations
• Operation Systems – Mobile:
- iOS
o Разные версии
- Android
o Разные версии
- Другие OS
• Screens
Data configurations
• General:
• Boundary Values
• Equivalence Classes
• Decision Tables
• Other
• Interfacing Software
• App
• Other
Specialized:
• Risk points
• Fuzzing
• Data analytics
• Other
Вопрос: Как все это протестировать?
Как много требуется тестов?
Как определить покрытие комбинаций?
Как найти ошибки?
Математика комбинаторного тестирования
предлагает множество решений
Комбинаторное тестирование имеет долгую историю использования
Комбинаторное тестирование использует много инструментов
Комбинаторное тестирование все еще недооценивается
У комбинаторного тестирования имеется несколько крутых возможностей
Комбинаторное тестирование следует использовать как один из attack
паттернов
Подумайте (прямо сейчас), как комбинаторное тестирование
может помочь вашему тестированию
Math-based Testing
Перед тестированием всегда стоит проблема выборки!
Как может математический подход помочь тестированию?
• Систематизируйте количества устройств, конфигураций, сетей.
• Используйте выборку окружений
• Используйте выборку данных для тестирования
• Используйте возможности Big Data анализа
Pattern Attack 32: Combinatorial Tests
Когда применить?
– У вас есть большое количество переменных и связей между ними
– Тестирование по всему жизненному циклу и дальнейшем Maintenance
Какие ошибки метод может помочь нам найти?
– Непроверенные сочетания конфигураций
– Ошибки данных
Кто может применять?
– Тестировщик, аналитик
Где использовать?
– Как на подготовленном окружении (симулированном), так и “в поле”
Pattern Attack 32: Combinatorial Tests
Как провести атаку - основной шаблон:
– Определите ситуацию
– Определите инструмент
– Определите переменные
– Определите значения
– Определите ограничения на значения
– Введите в переменные и значения в инструмент, добавив ограничения
– Используйте полученные данные для написания тестов
– Проведите тестирование
Пример
Устройство (10) Железо (2)
Роутеры (6)
Интерфейсы (6)
Данные (7)
Сколько получается тестов?
10 х 2 х 7 х 6 х 6 х 13 = 65 520 тестов!
Соединение (13)
Как работает комбинаторное тестирование?
Вы можете избавиться от теста #2 (Т2)
{A, -, E} проверен в T1
{A, D, -} проверен в T4
{-, D, E} проверен в T6
ACTS Combinatorial Tools
А если использовать
ACTS Combinatorial Tool?
Test Case# Screen HW IoTDevices Routers Comm providers Data
0 Device 1 iOS Server1 1 WiFi 0
1 Device 2 Android Server1 2 Zigbee -1
2 Device 3 iOS Server1 3 Bleutooth 99999
3 Device 4 Android Server1 4 BS -99999
4 Device 6 iOS Server1 5 Bleutooth 100
5 Device 7 Android Server1 0 Ethernet -200
… … … … … … …
65520 Device10 Android Cloud3 3 WiFi 1
119 тестов
Вместо 65 520
Другие статистические инструменты,
на которые стоит обратить внимание
Инструмент Где можно использовать Примеры под-техник
Combinatorial Testing
ACT,
Hexawise
rdExpert
PICT
Medical, Automotive,
Aerospace, Information Tech,
avionics, controls, User interfaces
Pairwise, orthogonal arrays, 3-
way, and up to 6 way pairing
are
now available
Design of Experiments (DOE)
DOE
ProXL
DOE++
JMP
Hardware, systems, and
software testing where there are
"unknowns" needing to be evaluated
Taguchi
DOE
Random Testing
Random number
generator feature used from
most systems or languages
Chip makers, manufacturing quality
control in hardware selection
Testing with randomly
generated numbers includes:
fuzzing and use in model-based
simulations
Statistical Sampling SAS
Most sciences, engineering
experiments, hardware testing, and
manufacturing
Numerous statistical methods
are included with most
statistical tools
Software Black box Domain Testing
Mostly used in manual test
design, though some tools
are now coming available
All environments and types of
software tests. These are “classic”
test techniques, but still underused
Equivalence Class, Boundary
Value Analysis, decision
tables…
Выводы
Главная проблема мобильного тестирования
• Выборка данных для тестирования
Приходится мириться с кучей конфигураций
• Железо, ПО, протоколы, …
• Тестирование должно укладываться в сроки и бюджет
Как тут может помочь комбинаторное тестирование?
• Анализ данных и выборка
• Использование инструментов для облегчения работы
• Уменьшение комбинаций
Вопросы
linkedin.com/in/qapavlov
ru.apavlov@gmail.com

More Related Content

What's hot

Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testing
Alexei Lupan
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нт
Alexei Lupan
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
Denis Petelin
 
Как развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CIКак развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CI
CEE-SEC(R)
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
 

What's hot (20)

SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
 
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
 
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
 
Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testing
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нт
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптов
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
 
Нагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOpsНагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOps
 
RUSSIA QUALITY REPORT 2015-16
RUSSIA QUALITY REPORT 2015-16RUSSIA QUALITY REPORT 2015-16
RUSSIA QUALITY REPORT 2015-16
 
Как развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CIКак развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CI
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
WPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testingWPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testing
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 

Viewers also liked

Viewers also liked (7)

End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 
Супер быстрая автоматизация тестирования на iOS
Супер быстрая автоматизация тестирования на iOSСупер быстрая автоматизация тестирования на iOS
Супер быстрая автоматизация тестирования на iOS
 
Автоматизация тестирования приёмников цифрового телевидения
Автоматизация тестирования приёмников цифрового телевиденияАвтоматизация тестирования приёмников цифрового телевидения
Автоматизация тестирования приёмников цифрового телевидения
 
Ядро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуруЯдро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуру
 
Соль мобильного тестирования
Соль мобильного тестированияСоль мобильного тестирования
Соль мобильного тестирования
 
Testing is magic!
Testing is magic!Testing is magic!
Testing is magic!
 
50 оттенков тестирования
50 оттенков тестирования50 оттенков тестирования
50 оттенков тестирования
 

Similar to Использование комбинаторного тестирования для мобильных приложений

Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
yaevents
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
etyumentcev
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
Rauan Ibraikhan
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
Rauan Ibraikhan
 
Маргарита Сафарова - Аудит процессов тестирования при смене проектной команды
Маргарита Сафарова - Аудит процессов тестирования при смене проектной командыМаргарита Сафарова - Аудит процессов тестирования при смене проектной команды
Маргарита Сафарова - Аудит процессов тестирования при смене проектной команды
SQALab
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
Denis Petelin
 

Similar to Использование комбинаторного тестирования для мобильных приложений (20)

Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Анализ ИБ и расследование инцидентов ИБ (учебный семинар)
Анализ ИБ и расследование инцидентов ИБ (учебный семинар)Анализ ИБ и расследование инцидентов ИБ (учебный семинар)
Анализ ИБ и расследование инцидентов ИБ (учебный семинар)
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщикаРоль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Test design print
Test design printTest design print
Test design print
 
Маргарита Сафарова - Аудит процессов тестирования при смене проектной команды
Маргарита Сафарова - Аудит процессов тестирования при смене проектной командыМаргарита Сафарова - Аудит процессов тестирования при смене проектной команды
Маргарита Сафарова - Аудит процессов тестирования при смене проектной команды
 
Тимур Шевляков
Тимур ШевляковТимур Шевляков
Тимур Шевляков
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
TestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщикаTestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщика
 
Семинар ИБ ФНС-2013
Семинар ИБ ФНС-2013Семинар ИБ ФНС-2013
Семинар ИБ ФНС-2013
 
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalЛучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 

More from SQALab

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Использование комбинаторного тестирования для мобильных приложений

  • 1. Использование комбинаторного тестирования для мобильных приложений Павлов Андрей T-Systems RUS, Санкт-Петербург
  • 2. About me Ex-Developer В IT более 10 лет 5 из них в тестировании Test Team Lead @ T-Systems RUS linkedin.com/in/qapavlov ru.apavlov@gmail.com
  • 3. Зачем качество мобильным приложениям? Пользователю достаточно использовать приложение в течение всего пары минут, чтобы полюбить или возненавидеть его. Что следует дальше? – Множество пользователей опубликуют плохой отзыв в appstore и социальных сетях – Это может засветиться в СМИ – Приложение никто не использует Для того, чтобы этого избежать, приложение должно быть качественным. И нужно нам настоящее качество!
  • 4. Attack-based Testing Patterns Паттерн тестирования на основе общего поведения багов – “Атаки” ищут баги и ошибки, которые могут быть в программном обеспечении – Могут использовать классические методы тестирования и тест-концепты • Паттерн (больше, чем процесс), должен быть изменен определенным образом для текущего контекста, чтобы быть результативным • Тестировщики, работающие несколько лет, изучают паттерны и атаки, зачастую не замечая того
  • 5. Примеры атак Attack 1: Static Code Analysis Attack 2: Finding White–Box Data Computation Bugs Attack 3: White–Box Structural Logic Flow Coverage Attack 4: Finding Hardware–System Unhandled Uses in Software Attack 5: Hw-Sw and Sw-Hw signal Interface Bugs Attack 6: Long Duration Control Attack Runs Attack 7: Breaking Software Logic and/or Control Laws Attack 8: Forcing the Unusual Bug Cases Attack 9 Breaking Software with Hardware and System Operations Attack 10: Finding Bugs in Hardware–Software Communications Attack 11: Breaking Software Error Recovery Attack 12: Interface and Integration Testing Attack 13: Finding Problems in Software–System Fault Tolerance Attack 14: Breaking Digital Software Communications Attack 15: Finding Bugs in the Data Attack 16: Bugs in System–Software Computation Attack 17: Using Simulation and Stimulation to Drive Software Attacks Attack 18: Bugs in Timing Interrupts and Priority Inversion Attack 19: Finding Time Related Bug Attack 20: Time Related Scenarios, Stories and Tours Attack 21: Performance Testing Introduction Attack 22: Finding Supporting Documentation Problems Sub–Attack 22.1: Confirming Install–ability Attack 23: Finding Missing or Wrong Alarms Attack 24: Finding Bugs in Help Files Attack 25: Finding Bugs in Apps Attack 26: Testing Mobile and Embedded Games Attack 27: Attacking App–Cloud Dependencies Attack 28 Penetration Attack Test Attack 28.1 Authentication —Password Attack Attack 28.2 Sub–Attack Fuzz Test Attack 29: Information Theft—Stealing Device Data Attack 29.1 Sub Attack –Identity Social Engineering Attack 30: Spoofing Attacks Attack 30.1 Location and/or User Profile Spoof Sub– Attack Attack 30.2 GPS Spoof Sub–Attack Attack 31: Attacking Viruses on the Run in Factories or PLCs Attack 32: Using Combinatorial Tests Attack 33: Attacking Function Bugs
  • 8. Что такое мобильное (и IoT) устройство? – Embedded ПО “специализированного” железа Минимальный уровень networking communication – Mobile and handheld smart devices Всем знакомые устройства, постоянно соединенные с сетью – IoT Интернет Вещей - новые и “традиционные” устройства с добавленной коммуникацией
  • 9. Пример комбинаций для мобильного и IoT тестрования Hardware Standards • Raspberry Pi & Beaglebone • Atheros AR9331: Arduino Yun, WeIO, Black Swift, Onion • TI CC3200 & CC310 • ESP8266 • Electric Imp • Spark: Core, Photon, Electron • Intel Edison • … и многие другие … Platform Patterns • Electric Imp (Imp001, Imp002, Imp003) • Spark (Core & Photon) • Thingsee • TinkerForge • SmartThings • WICED (Broadcom) • Cosino • littleBits Protocols • MQTT • ZeroMQ • Thread (6LoWPAN on 802.15.4) • Protocol Buffers • HTTP & Websockets, часто с JSON • CoAP (RFC 7252) Interface Patterns • WiFi (802.11) • 802.15.4: Zigbee, 6LoWPAN • Bleutooth SMART • Bleutooth • Ethernet and PoE Software Configurations • Operation Systems – Mobile: - iOS o Разные версии - Android o Разные версии - Другие OS • Screens Data configurations • General: • Boundary Values • Equivalence Classes • Decision Tables • Other • Interfacing Software • App • Other Specialized: • Risk points • Fuzzing • Data analytics • Other
  • 10. Вопрос: Как все это протестировать? Как много требуется тестов? Как определить покрытие комбинаций? Как найти ошибки?
  • 11. Математика комбинаторного тестирования предлагает множество решений Комбинаторное тестирование имеет долгую историю использования Комбинаторное тестирование использует много инструментов Комбинаторное тестирование все еще недооценивается У комбинаторного тестирования имеется несколько крутых возможностей Комбинаторное тестирование следует использовать как один из attack паттернов Подумайте (прямо сейчас), как комбинаторное тестирование может помочь вашему тестированию
  • 12. Math-based Testing Перед тестированием всегда стоит проблема выборки! Как может математический подход помочь тестированию? • Систематизируйте количества устройств, конфигураций, сетей. • Используйте выборку окружений • Используйте выборку данных для тестирования • Используйте возможности Big Data анализа
  • 13. Pattern Attack 32: Combinatorial Tests Когда применить? – У вас есть большое количество переменных и связей между ними – Тестирование по всему жизненному циклу и дальнейшем Maintenance Какие ошибки метод может помочь нам найти? – Непроверенные сочетания конфигураций – Ошибки данных Кто может применять? – Тестировщик, аналитик Где использовать? – Как на подготовленном окружении (симулированном), так и “в поле”
  • 14. Pattern Attack 32: Combinatorial Tests Как провести атаку - основной шаблон: – Определите ситуацию – Определите инструмент – Определите переменные – Определите значения – Определите ограничения на значения – Введите в переменные и значения в инструмент, добавив ограничения – Используйте полученные данные для написания тестов – Проведите тестирование
  • 15. Пример Устройство (10) Железо (2) Роутеры (6) Интерфейсы (6) Данные (7) Сколько получается тестов? 10 х 2 х 7 х 6 х 6 х 13 = 65 520 тестов! Соединение (13)
  • 16. Как работает комбинаторное тестирование? Вы можете избавиться от теста #2 (Т2) {A, -, E} проверен в T1 {A, D, -} проверен в T4 {-, D, E} проверен в T6
  • 18. А если использовать ACTS Combinatorial Tool? Test Case# Screen HW IoTDevices Routers Comm providers Data 0 Device 1 iOS Server1 1 WiFi 0 1 Device 2 Android Server1 2 Zigbee -1 2 Device 3 iOS Server1 3 Bleutooth 99999 3 Device 4 Android Server1 4 BS -99999 4 Device 6 iOS Server1 5 Bleutooth 100 5 Device 7 Android Server1 0 Ethernet -200 … … … … … … … 65520 Device10 Android Cloud3 3 WiFi 1 119 тестов Вместо 65 520
  • 19. Другие статистические инструменты, на которые стоит обратить внимание Инструмент Где можно использовать Примеры под-техник Combinatorial Testing ACT, Hexawise rdExpert PICT Medical, Automotive, Aerospace, Information Tech, avionics, controls, User interfaces Pairwise, orthogonal arrays, 3- way, and up to 6 way pairing are now available Design of Experiments (DOE) DOE ProXL DOE++ JMP Hardware, systems, and software testing where there are "unknowns" needing to be evaluated Taguchi DOE Random Testing Random number generator feature used from most systems or languages Chip makers, manufacturing quality control in hardware selection Testing with randomly generated numbers includes: fuzzing and use in model-based simulations Statistical Sampling SAS Most sciences, engineering experiments, hardware testing, and manufacturing Numerous statistical methods are included with most statistical tools Software Black box Domain Testing Mostly used in manual test design, though some tools are now coming available All environments and types of software tests. These are “classic” test techniques, but still underused Equivalence Class, Boundary Value Analysis, decision tables…
  • 20. Выводы Главная проблема мобильного тестирования • Выборка данных для тестирования Приходится мириться с кучей конфигураций • Железо, ПО, протоколы, … • Тестирование должно укладываться в сроки и бюджет Как тут может помочь комбинаторное тестирование? • Анализ данных и выборка • Использование инструментов для облегчения работы • Уменьшение комбинаций