Файл: Функциональное тестирование программного обеспечения на примере мобильных приложений (Oснoвныe понятия прoцeссoв тeстирoвaния).pdf
Добавлен: 28.03.2023
Просмотров: 134
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Oснoвныe пoнятия прoцeссoв тeстирoвaния
2.1 Особенности мобильного тестирования
2.2. Автоматизирование тестирование мобильных приложений
2.3. Приложения для автоматизации мобильного тестирования
2.4. Процесс тестирования мобильных приложений на базе ОС Android
При этoм eгo сoвсeм (или пoчти сoвсeм) нe интeрeсуют спeцификaции.
Ни oднa из этих крaйнoстeй нe являeтся хoрoшeй стрaтeгиeй. Рaссмoтрим пoпытку тeстирoвaния тривиaльнoй прoгрaммы, пoлучaющeй нa вхoдe три числa и вычисляющeй их срeднee aрифмeтичeскoe.
Тeстирoвaниe этoй прoгрaммы для всeх знaчeний вхoдных дaнных нeвoзмoжнo. Дaжe для мaшины с oтнoситeльнo низкoй тoчнoстью вычислeний кoличeствo тeстoв исчислялoсь бы миллиaрдaми.
В рeзультaтe прихoдим кo втoрoму фундaмeнтaльнoму принципу тeстирoвaния: тeстирoвaниe - прoблeмa в знaчитeльнoй стeпeни экoнoмичeскaя. Пoскoльку исчeрпывaющee тeстирoвaниe нeвoзмoжнo, мы дoлжны oгрaничиться чeм-тo мeньшим.
Кaждый тeст дoлжeн дaвaть мaксимaльную oтдaчу пo срaвнeнию с нaшими зaтрaтaми. Этa oтдaчa измeряeтся вeрoятнoстью тoю, чтo тeст выявит нe oбнaружeнную прeждe oшибку.
Зaтрaты измeряются врeмeнeм и стoимoстью пoдгoтoвки, выпoлнeния и прoвeрки рeзультaтoв тeстa.
Считaя, чтo зaтрaты oгрaничeны бюджeтoм и грaфикoм, мoжнo утвeрждaть, чтo искусствo тeстирoвaния, пo сущeству, прeдстaвляeт сoбoй искусствo oтбoрa тeстoв с мaксимaльнoй oтдaчeй.
Бoлee тoгo, кaждый тeст дoлжeн быть прeдстaвитeлeм нeкoтoрoгo клaссa вхoдных знaчeний, тaк чтoбы eгo прaвильнoe выпoлнeниe сoздaвaлo у нaс нeкoтoрую убeждeннoсть в тoм, чтo для oпрeдeлeннoгo клaссa вхoдных дaнных прoгрaммa будeт выпoлняться прaвильнo.
Этo oбычнo трeбуeт нeкoтoрoгo знaния aлгoритмa и структуры прoгрaммы, и мы, тaким oбрaзoм, смeщaeмся к прaвoму кoнцу спeктрa.
Глава 2. Тестирование мобильных приложений
Рис 1. Тестирование мобильных приложений
Тестирование мобильных приложений проводится по тем же принципам, что и тестирование десктопных систем. Оно так же состоит из функционального тестирования, нагрузочного, тестирования производительности и стабильности и прерывания, простоты использования. Однако, в тестировании мобильных приложений есть много нюансов, о которых мы поговорим ниже.
2.1 Особенности мобильного тестирования
Для пользователя любое мобильное приложение должно быть простым и интуитивно понятным, иначе такой пользователь выберет другие приложение, так как конкуренция на этом рынке очень высока. В меньшей степени это можно отнести к корпоративному сегменту, хотя и тут эргономика и стабильность работы имеют решающие значение. Таким образом, на ряду с функциональности крайне важно значение для успеха продукта имеют все виды юзабилити-тестирования.
С технической точки зрения, важными отличиям является специфичность мобильных платформ и широкий спектр устройств, которые необходимо поддерживать.
Частые обновления операционной системы вынуждают так же часто обновлять само приложение, ведь зачастую после обновления системы меняется не только часть функционала но и дизайн ОС и разработчики должны иметь возможность выпускать своевременные обновления для своего детища. Поскольку сейчас большинство операционных систем поддерживают функцию обновления через встроенный магазин приложений, проблем с дистрибьюцией таких обновлений вроде бы нет, но с другой стороны, встает вопрос о совместимости новой версии с предыдущей, ведь пользователю будет неудобно сначала удалять старую версию, теряя все свои настройки, и, затем, устанавливая обновленную версию приложения.
Так же, важным является поддержка мультиязычности. Она позволяет сравнительно легко и дешево значительно увеличить охват целевой аудитории программы. Однако, важно, чтобы продукт был локализован корректно, не содержал в себе «машинного» перевода. Некачественный перевод может сыграть с разработчиками еще более злую шутку, чем его отсутствие.
Удобство пользования. Тестирование и оптимизация интерфейса является одной из важнейших частей тестирования мобильного программного обеспечения, так как в условиях большой конкуренции именно удобный дизайн и безотказность во время работы может дать решающие преимущество над конкурентами.
Нагрузочное тестирование. Наблюдение за потребление системных ресурсов. Так же необходимо отслеживать утечки памяти и проверять работоспособность и устойчивость серверной части приложения. Следует принимать во внимание, что передача данных в мобильных сетях может идти с потерей пакетов а так же следует проверить механизмы шифрования трафика на предмет его перехвата и использования сторонними пользователями.
Тестирование обработки случайных событий — разрабатываемое приложение должно корректно вести себя во время случайных и непредсказуемых событий, так как телефон часто попадает в условия, кода происходит хаотичное нажатие клавиш.
Мультиплатформенное тестирование. Мобильный рынок обладает большим количеством типов устройств и конфигураций. Очевидно, что тем больше устройств будет поддерживать приложение, тем большей будет база его клиентов
Основные моменты, на которые стоит обращать внимание при тестировании:
- Интерфейс
- Элементы интерфейса должны быть легко доступны пользователю, он должен иметь возможность однозначно попасть по ним
- Приложение не должно содержать пустых или ведущих в никуда экранов. Пользователь всегда должен иметь возможность вернуть приложение к предыдущему рабочему состоянию
- Приложение должно стабильно обрабатывать многократное и быстрое нажатие одной кнопки
- Если заявлена поддержка жестов, то следует проверить, применимы ли те или иные жесты в тех или иных рабочих областях приложения и как это согласуется с требованиями
- Производительность:
- Утечки памяти. Следует проверять потребление памяти при длительной работе или при появлении окон с большим количеством информации.
- Обработка ситуации нехватки ресурсов. Проверка стабильности работы приложения в условиях нехватки системных ресурсов
- Отсутствие поддержки устройством части функционала приложения
- Работы с различными экранами и разрешениями:
- Ретина и обычные экраны. На ретине элементы интерфейса отображаются мельче
- Работа с портретной и альбомной ориентацией устройства
- Приложение должно работать только на заявленных версиях операционной системы
- Соответствие дизайна приложения общей концепции дизайна платформы.
- Обработка внешних событий:
- Звонки/СМС, оповещения других приложений
- Выключение устройства
- Отключение устройства от сети, режим «в самолете»
- Подключение/отключение карты памяти
Так же в приложении обязательно должна присутствовать форма обратной связи с разработчиком.
Все эти пункты легко поддаются ручному тестированию и сейчас для проверки работоспособности приложений оно особенно актуально. Но так же существуют системы автоматизированного тестирования, разработанные специально для тестирования мобильных приложений под различные платформы.
2.2. Автоматизирование тестирование мобильных приложений
Для автоматизированного тестировании мобильных приложений справедливы те же подходы, что и актуальны для тестирования десктопных систем, а именно:
- Запись и воспроизведение. Данные утилиты записывают действия тестировщика во время ручного тестирования и затем воспроизводят их в заданные моменты. Такие тесты помогают оптимизировать время тестировщика, убрав из процесса монотонные действия. Но если тестируемое претерпит изменения — тесты придется переписывать с нуля.
- Сценарии. Является формой программирования на специализированных скриптовых языках. Обычно написанием таких скриптов занимаются сам программисты. Скрипты хорошо подходят для тестирования пользовательского интерфейса, но так же имеют недостаток, связанный с их устареванием вместе с изменением внутри самой программы.
- Data-driven testing. Вид скриптов, которые оперирует непосредственно потоками данных и сами тестовые скрипты верифицируются с помощью этих данных.
-Метод координат. В этом методе каждый элемент графического интерфейса ищется по координатам на экране. Минусом является большая зависимость от настроек платформы (разрешение, шрифт и тп) и невозможность отслеживать состояние объекта.
-Распознавание объектов. В основе этого метода лежит поиск элементов пользовательского интерфейса с использованием распознавание и взаимодействие с заданными образцами. Минусы такие же, как и в методе координат.
Продукты, используемые для автоматизированного тестирования мобильных приложений, как правило предназначены для тестирования пользовательского интерфейса программы.
2.3. Приложения для автоматизации мобильного тестирования
Appium
Рис 2. Пример интерфейса программы
Пакет приложений с открытым исходным кодом, предназначенный для автоматизации процесса тестирования приложений под Android и iOS. Поддерживает как тестирования нативных приложений так и веб-решений.
Базовыми принципами данного проекта являются:
- Возможность сохранить базу тестовых сценариев после обновления версии приложения
- Возможность использовать различные языки для создание тестовых скриптов
По сути, appium является веб-сервером, работающим под управлением REST API. Он отправляет команды на мобильные устройства по HTTP и ожидает их выполнения. Сами сценарии создаются на любом известном языке программирования и скриптинга и затем преобразуются в команды, понятные машине. Сами команды отправляются на установленный на мобильном устройстве клиент, который и инициирует их выполнение.
Calabash
Рис 3. Структура программы
Calabash —кросплатформеная тестовая утилита с открытым исходным кодом, разработанная для автоматизации процесса тестирования на iOS и Android.
Calabash это по сути набор библиотек, которые позволяет через клиент взаимодействовать тестовому приложению с HTTP сервером тестового окружения. Команды могут передавать следующие действия:
- жесты
- проверки
- снятие скриншота
Calabash поддерживает работу Cucumbe, что позволяет создавать тестовые сценарии автоматизации на естественном языке.
Testdroid
Рис 4. Пример интерфейса программы
Это набор программных утилит, разработанных компанией Bitbar Technologies.
Он включает в себя:
Testdroid Cloud - база реальных android и ios устройств, которые доступны для запуска симуляционых тестов на основе cloud-based сервисов
Testdroid Recorder- утилита для создания тестовых сценариев путем записи пользовательских действий и последующего воспроизведения их на тестируемом приложении
Testdroid Enterprise — серверное программное обеспечение для управления процессом автоматизированного тестирования на множестве устройств на android и ios.
Perfecto Mobile
Рис 5. Пример интерфейса программы
Еще одна утилита, предназначения для облачного тестирования на реальных устройствах. Поддерживает больше количество устройств, в том числе платформу Blackberry. Имеет в своем распоряжении возможность получить доступ к множеству девайсов как к одному — действия, совершенные на одном устройстве будут автоматически продублированы на все другие выбранные устройства.
SOASTA TouchTest
Рис 6. Пример интерфейса программы
Многофункциональное решение для автоматизации и тестирования мобильных приложений. Основной особенностью является поддержка автоматизации тестирования путем интеграции визуального метода создания тестовых сценариев, который объединяет в себе запись и координатное распознавание объектов. Этот метод обеспечивает быстрое и точно прохождение тестовых сценариев, но так же подвержен всем тем недостаткам, что характерны для автоматизации тестирования.
Так же имеется поддержка облачного тестирования на реальных мобильных устройствах.
Testin
Рис 7. Пример интерфейса программы
Специально разработанная утилита для автоматизированного поиска падений в тестируемых приложений. Специализируется на тестировании игр. Одной из особенностей продукта является то, что он функционирует после релиза программы, собираю информацию по падениям и отправляя подробный отчет разработчикам. Встраивается в код программы путем добавления пары строк в исходный код приложения.
Так же имеет возможность проводить тестирование на облачных устройствах со всеми стандартными функциями автоматизации тестирования интерфейса.
Ranorex
Рис 8. Пример интерфейса программы
Утилита для тестирования нативных и web-based приложений на android и ios.
Поддерживает широкий спектр возможностей, таких как:
- Распознавание объектов интерфейса. С помощью установленного на мобильное устройство способен распознать все элементы интерфейса, даже в данный момент не активны.
- Объектное- ориентированная функция записи/воспроизведения
- Библиотеки для автоматизации процесса тестирования
- Гибкий интерфейс автоматизации процесса тестирования
Программный пакет поддерживает следующие типы тестирования:
- Приемочное тестирование
- Автоматизирование тестирование
- Тестирование методом черного ящика
- Функциональное тестирование
- Тестирование пользовательского интерфейса
- Веб тестирование
- Тестирование мобильных приложений
- Тестирование JAVA приложений
- Регрессионное тестирование
- Keyword-driven тестирование
-Data-driven тестирование
- мультиплатформенное тестирование
eggPlant
Рис 9. Пример интерфейса программы