Автоматизированное тестирование и СМС

Post on 20-Jun-2015

422 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

DESCRIPTION

Презентация доклада Ильи Евлампиева на конференции SQADays-14, Львов 8-9 ноября 2013

TRANSCRIPT

Автоматизированное тестирование и СМС

Илья Евлампиев

CMC

•Web + SMS• Получение кодов, ключей, ссылок

• Уникальность пользователя• Роботозащищенность

•Обмен устройствами информацией через SMS• Телеметрия• Команды

•VAS• Всевозможные приложения с SMS

интерфейсом (геолокация, обмен сообщениями с внешними системами)

Web + SMS: SMS gate

•SMS-гейты:• HTTP GET• HTTP POST• SMPP

•На что обратить внимание:• HTTP ограничения

• Длина http запроса• GSM ограничения

• Максимальный размер текста принимаемого гейтом SMS

Web + SMS: SMS gate•Как проверить SMS-гейт:

• Посылать HTTP запросы (curl, etc)• Принять соответствующие смс• Текст: с нулевым байтом, с переносами

строки, со всеми служебными символами• Текст: длина текста на несколько

мультиСМС, учесть разные кодировки•Как проверить приложение:

• “Замокать” http ответы на контролируемом http сервере

• Вернуть все возможные и невозможные http ответы

Web + SMS: GSM

•Встраиваемый компонент:• Отправка http-запроса на авторизацию• Приходит SMS на реальный номер• Присланный код доступа вводится и

отправляется по http

Альтернативных способов получения кода доступа нет. Но надо автоматизировать процесс получения кода и отправки запроса.

Как быть?

Шлем SMS с PC•Подключаем устройство к PC через USB (устанавливаем драйвера если надо)•Устройство подключается через виртуальный COM порт, начинает общаться с ним•Можно подключиться к порту через любую терминальную программу, посылать запросы к модему и получать ответы•Команды имеют определенный формат, AT+..., поэтому называются AT-команды

• Пример специфичен для конкретного устройства. Нет единого стандарта, который производитель обязан имплементировать, но большинство функций общие:

https://www.sparkfun.com/datasheets/Cellular%20Modules/AT_Commands_Reference_Guide_r0.pdf •Можно написать свое приложение, которое будет слать запросы (SMS, USSD). Примеры на различных языках и средах:

• http://habrahabr.ru/post/133085/• http://habrahabr.ru/post/58348/ • http://habrahabr.ru/post/98837/

Шлем SMS с PC

Шлем SMS с PC: PDU•Непосредственно через отправку текста сообщений в той же кодировке, что и AT-команды можно выполнить не в любой среде•Более универсально передать модему сообщение в уже кодированном формате, он передаст его далее (собственно в этом формате данные и передаются в центр SMS и далее получателю)•Основные части SMS_DELIVER PDU согласно спецификации http://www.etsi.org/deliver/etsi_ts/123000_123099/123040/11.05.00_60/ts_123040v110500p.pdf :

• SCA – номер SMSC, центра СМС, куда будет отправлена СМС• TPDU – основное сообщение (служебные блоки и само сообщение)

• PDU-Type – тип сообщения; определяет структуру данных• TP-MR – номер текущей СМС• TP-DA – номер получателя• TP-PID – индикатора протокола• TP-DSC – схема кодирования данных (7-bit, 8-bit, USC)• TP-VP – время действия сообщения (в течении которого будет доставка)• TP-UDH – длина сообщения• TP-UD – само сообщение

Шлем SMS с PC: TP-UD

•TP-UD• UDHL – длина • UDH – хедер с информационными элементами

• IEI – тип информационного элемента• IEDL - длина• IED - содержание

• Заполнение до октетов• SM – кодированный текст сообщения

• Типы информационных элементов: музыка, изображение, порт сообщения.

• Особый случай: мультиСМС http://hardisoft.ru/soft/otpravka-dlinnyx-sms-soobshhenij-v-formate-pdu/

Шлем SMS с PC: API

•Кодирование PDU трудоемкий процесс, т.к. учесть все особенности спецификации сложно.•По возможности используйте существующие API.•SMSLib для Java/.NET http://smslib.org/•Данное API позволяет кодировать валидные SMS имея на входе текст смс любой длины•API само делит большие тексты на раздельные SMS, само задает SMSC.•API не позволяет посылать невалидные SMS, для внесения неверного формата необходимо редактировать исходный код API•API легко интегрируется в браузерную автоматизацию (Selenium)

Шлем SMS с PC: API

PDU: что тестируем•Любая система, воспринимающая SMS получает TP-UD без изменений

• Мобильное приложение• Embedded устройство с GSM-чипом• VAS-системы

•Умение склеивать мультиСМС (IEI 00), воспринимать как единое сообщение

• “3 поросенка № 1,2 и 4”: никогда не приходящая часть• Общее число частей меньше текущего номера

•Умение правильно понимать и правильно игнорировать прочие информационные элементы (музыку, картинки, порты)•Умение обработать СМС спец.типов (флэш, смс-пинг)•Умение обработать СМС с кодировкой SM не соответствующей заявленной•Текст содержит управляющие символы (\r, \n, \t, \u0000, \u001A)

PDU: генерируемlПриложение, позволяющее сформировать или декодировать PDU:lhttp://www.nobbi.com/pduspy.html

SMS: безопасность•Мобильные устройства

• Silent sms (0x40 (TP-PID) )• Актуализирует запись о вас в HLR регистре

(уточняет местоположение)• Может разрядить вам телефон, т.к. не заметно• Должен подменяться оператором

• SMS-spoofing• SMS-гейт подменяет имя отправителя на любое• Оператор подменяет если имя отправителя из

его сети•Embedded•VAS и другие системы, передающие тест SMS в web

• XSS

SMS: outsource тестирование•outsource разработка/тестирование заграничного функционала

• Ограничение на регистрацию иностранных номеров• Невозможность получать СМС на местные номера

•Необходим виртуальный номер СМС для получения (ручное и автоматизированное тестирование)•Google Voice: регистрируем (для пользователей из России необходимо авторизоваться через прокси, хотя бы украинское)•Получаем американский номер•На этот номер получаем сообщения; текст сообщения дублируется как почтовое сообщение на gmail•Автоматизация: неофициальное API https://code.google.com/p/google-voice-java/ , любое почтовое API

Спасибо за внимание!

Вопросы?eljah@mail.ru

top related