Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

571 views

Published on

Доклад Андрея Павлова на конференции SQA Days-21
www.sqadays.com

Published in: Education
  • Be the first to comment

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

  1. 1. Использование комбинаторного тестирования для мобильных приложений Павлов Андрей T-Systems RUS, Санкт-Петербург
  2. 2. About me Ex-Developer В IT более 10 лет 5 из них в тестировании Test Team Lead @ T-Systems RUS linkedin.com/in/qapavlov ru.apavlov@gmail.com
  3. 3. Зачем качество мобильным приложениям? Пользователю достаточно использовать приложение в течение всего пары минут, чтобы полюбить или возненавидеть его. Что следует дальше? – Множество пользователей опубликуют плохой отзыв в appstore и социальных сетях – Это может засветиться в СМИ – Приложение никто не использует Для того, чтобы этого избежать, приложение должно быть качественным. И нужно нам настоящее качество!
  4. 4. Attack-based Testing Patterns Паттерн тестирования на основе общего поведения багов – “Атаки” ищут баги и ошибки, которые могут быть в программном обеспечении – Могут использовать классические методы тестирования и тест-концепты • Паттерн (больше, чем процесс), должен быть изменен определенным образом для текущего контекста, чтобы быть результативным • Тестировщики, работающие несколько лет, изучают паттерны и атаки, зачастую не замечая того
  5. 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
  6. 6. Комбинации для тестирования мобильных приложений
  7. 7. Вопросы
  8. 8. Что такое мобильное (и IoT) устройство? – Embedded ПО “специализированного” железа Минимальный уровень networking communication – Mobile and handheld smart devices Всем знакомые устройства, постоянно соединенные с сетью – IoT Интернет Вещей - новые и “традиционные” устройства с добавленной коммуникацией
  9. 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. 10. Вопрос: Как все это протестировать? Как много требуется тестов? Как определить покрытие комбинаций? Как найти ошибки?
  11. 11. Математика комбинаторного тестирования предлагает множество решений Комбинаторное тестирование имеет долгую историю использования Комбинаторное тестирование использует много инструментов Комбинаторное тестирование все еще недооценивается У комбинаторного тестирования имеется несколько крутых возможностей Комбинаторное тестирование следует использовать как один из attack паттернов Подумайте (прямо сейчас), как комбинаторное тестирование может помочь вашему тестированию
  12. 12. Math-based Testing Перед тестированием всегда стоит проблема выборки! Как может математический подход помочь тестированию? • Систематизируйте количества устройств, конфигураций, сетей. • Используйте выборку окружений • Используйте выборку данных для тестирования • Используйте возможности Big Data анализа
  13. 13. Pattern Attack 32: Combinatorial Tests Когда применить? – У вас есть большое количество переменных и связей между ними – Тестирование по всему жизненному циклу и дальнейшем Maintenance Какие ошибки метод может помочь нам найти? – Непроверенные сочетания конфигураций – Ошибки данных Кто может применять? – Тестировщик, аналитик Где использовать? – Как на подготовленном окружении (симулированном), так и “в поле”
  14. 14. Pattern Attack 32: Combinatorial Tests Как провести атаку - основной шаблон: – Определите ситуацию – Определите инструмент – Определите переменные – Определите значения – Определите ограничения на значения – Введите в переменные и значения в инструмент, добавив ограничения – Используйте полученные данные для написания тестов – Проведите тестирование
  15. 15. Пример Устройство (10) Железо (2) Роутеры (6) Интерфейсы (6) Данные (7) Сколько получается тестов? 10 х 2 х 7 х 6 х 6 х 13 = 65 520 тестов! Соединение (13)
  16. 16. Как работает комбинаторное тестирование? Вы можете избавиться от теста #2 (Т2) {A, -, E} проверен в T1 {A, D, -} проверен в T4 {-, D, E} проверен в T6
  17. 17. ACTS Combinatorial Tools
  18. 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. 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. 20. Выводы Главная проблема мобильного тестирования • Выборка данных для тестирования Приходится мириться с кучей конфигураций • Железо, ПО, протоколы, … • Тестирование должно укладываться в сроки и бюджет Как тут может помочь комбинаторное тестирование? • Анализ данных и выборка • Использование инструментов для облегчения работы • Уменьшение комбинаций
  21. 21. Вопросы linkedin.com/in/qapavlov ru.apavlov@gmail.com

×