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
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. Выводы
Главная проблема мобильного тестирования
• Выборка данных для тестирования
Приходится мириться с кучей конфигураций
• Железо, ПО, протоколы, …
• Тестирование должно укладываться в сроки и бюджет
Как тут может помочь комбинаторное тестирование?
• Анализ данных и выборка
• Использование инструментов для облегчения работы
• Уменьшение комбинаций