Перевод статьи «Mobile Application Testing: 10-Steps Approach».
Тестирование мобильных приложений – важнейшая часть их жизненного цикла. Однако из-за того, что на полную проверку приложения уходит много времени и сил, разработчики часто ее пропускают. Но чтобы создать надежное и качественное приложение, которым будет приятно пользоваться, его нужно протестировать на всех возможных этапах.
В этой статье мы пошагово рассмотрим весь процесс тестирования мобильных приложений. Наш опыт в этой области поможет вам избежать ловушек и подводных камней.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Процесс тестирования мобильных приложений
Растущая конкуренция на рынке мобильных приложений заставляет разработчиков создавать план тестирования еще до начала спринта. Типичный процесс сквозного тестирования состоит из нескольких этапов. Рассмотрим их подробнее.
Шаг 1. Описание процесса
Прежде чем разработчик решит, какие сценарии использования приложения он будет тестировать вручную, а какие – с использованием инструментов автоматизации, лучше заранее составить список всех возможных сценариев, которые необходимо протестировать.
Создайте план тестирования мобильного приложения, включив в него все случаи использования, которые нужно проверить, а затем кратко опишите тесты, которые собираетесь провести, и ожидаемый результат спринта.
Шаг 2. Выбор типа мобильных тестов
Решение о том, будет ли тестирование ручным или автоматизированным, является следующим шагом в плане тестирования. Это непростой выбор. Мы рекомендуем использовать автоматизированное тестирование в следующих случаях:
- Вы часто запускаете какой-либо сценарий использования. Если у вас есть рутинные тесты, которые вы регулярно выполняете для проверки базовой функциональности приложения, автоматизируйте их. В долгосрочной перспективе это оправдает себя, поскольку позволит сэкономить много времени и избежать возможных ошибок, вызванных постоянными повторами.
- Тест имеет предсказуемый результат. Автоматизация тестирования – это оптимальный выбор для любого условного тестирования (“если пользователь нажмет на кнопку, то откроется вкладка”). Когда результат теста заранее предсказуем, разработчику нет необходимости активно следить за ним и контролировать процесс тестирования.
- Автоматизация тестов для разных устройств. Существует огромное разнообразие устройств и размеров экранов. Чтобы обеспечить совместимость приложения с таким разнообразием аппаратных средств, необходимо провести большое количество тестов. Проводить их вручную слишком сложно, поэтому лучше написать автотесты для разных операционных систем или размеров экрана.
Следует помнить, что небольшие тесты проще и эффективнее автоматизировать. Например, для экономии времени можно использовать автоматизированное модульное тестирование, но при последовательном тестировании системы все же лучше использовать ручное.
Шаг 3. Подготовка тест-кейсов для различных функций
Следующим шагом в тестировании мобильных приложений является определение случаев, для которых будут написаны тесты. Существует два подхода к этому этапу:
- тестирование на основе требований: проверяется работоспособность конкретного функционала приложения;
- тестирование на основе бизнес-сценариев: оценка системы проводится с точки зрения бизнеса.
Определение тест-кейсов для мобильного приложения зависит также от типа теста, который необходимо провести. Все тесты приложений делятся на две большие группы: функциональные и нефункциональные.
Функциональное тестирование включает в себя:
- модульное тестирование
- интеграционное тестирование
- системное тестирование
- тестирование интерфейсов
- регрессионное тестирование
- бета-тестирование/приемочное
К нефункциональному тестированию относятся:
- тестирование безопасности
- стресс-тестирование
- объемное тестирование
- тестирование производительности
- нагрузочное тестирование
- тестирование надежности
- тестирование удобства использования
- тестирование на соответствие требованиям
- тестирование локализации
После того как вы определились с типом тестирования приложения, пора переходить к самому процессу.
Этап 4. Ручное тестирование
Хотя есть разработчики, предпочитающие автоматическое тестирование ручному, в рамках Agile-тестирования рекомендуется использовать комбинацию обоих видов.
Когда разработчик начинает спринт тестирования в соответствии с планом, лучше начать с исследовательского ручного тестирования. К тому же оно не требует первоначальных инвестиций, что является еще одной причиной приступить к нему как можно раньше.
Обязательно ведите последовательные журналы всех сеансов тестирования в документах Word или Excel. Если у вас есть возможность задействовать несколько тестировщиков одновременно, рассмотрите возможность одновременного проведения сеансов ручного тестирования, чтобы сэкономить время на последующих этапах.
Этап 5. Автоматизированное тестирование
После того как вы провели несколько сеансов ручного тестирования и определили закономерности результатов и частоту выполнения тестов, подумайте об автоматизации наиболее рутинных или предсказуемых тестов.
Кроме того, когда речь идет о тестировании производительности, нагрузочном, стресс-тестировании или спайк-тестировании, автоматизация является обычной практикой.
Для автоматизации тестирования очень важно выбрать правильный инструмент. На рынке представлено множество вариантов, поэтому ниже приведены некоторые моменты, которые следует учитывать при поиске наиболее подходящего:
- Выбранный вами инструмент тестирования должен поддерживать широкий спектр платформ. Возможно, вам потребуется протестировать приложение на платформах iOS или Android или выполнить тесты для различных языков программирования – .NET, C# и т.д. Ограниченность в инструментах тестирования может стать помехой для всего проекта, поэтому лучше иметь в наличии широкий спектр платформ, даже если кажется, что в данный момент они все вам не нужны.
- Он должен иметь широкие возможности. Для разработчика очень удобны инструменты, поддерживающие запись и воспроизведение тестов. При этом убедитесь, что вы можете писать автоматические тесты вручную, поскольку иногда это единственный вариант, который позволяет вам точно определить область применения приложения.
- Возможность создания многоразовых и устойчивых к изменениям тестов. Инструменты, позволяющие разработчикам создавать многократно используемые и легко поддерживаемые тесты, очень полезны, поскольку позволяют сэкономить массу времени при тестировании новых проектов.
Шаг 6. Юзабилити и бета-тестирование
Существует распространенное заблуждение, что бета-тестирование может заменить тестирование удобства использования, поскольку выявляет те же проблемы. Наш опыт показывает, что целесообразно проводить и то, и другое.
- Начните спринт с сеанса юзабилити-тестирования. На этапе проектирования очень полезно получить информацию от реальных пользователей. С помощью этого вида тестирования разработчики могут продемонстрировать потенциальные функции и сузить их список до тех, которые были хорошо приняты пользователями.
- С другой стороны, бета-тестирование лучше проводить, когда продукт уже готов, и вы хотите получить отзывы обо всей системе перед ее запуском. Аналогично тестированию удобства использования, бета-тестирование позволяет разработчикам понять, какие функции будут востребованы у пользователей. Это полезно для принятии решения о том, в каком направлении приложение должно развиваться в будущем.
В целом, стоит проводить и юзабилити-, и бета-тестирование. Однако между ними есть разница: первое в основном показывает, работает ли функция, а второе позволяет разработчику понять, как часто будут люди использовать ту или иную функцию приложения.
Этап 7. Тестирование производительности
После того как вы проверили функциональные возможности своих приложений, пришло время оценить производительность всей системы. Вот тут-то и приходит на помощь мобильное тестирование производительности. Оно позволяет оценить скорость работы, масштабируемость, стабильность при большом объеме трафика, а также проверить приложение на наличие системных ошибок и несоответствий.
Прежде чем приступить к тестированию производительности приложения, определите возможности, которые оно должно предлагать, а также предполагаемые варианты использования и благоприятные условия, при которых система будет работать.
Хотя тестирование производительности обычно проводится на более позднем этапе, стоит начинать его как можно раньше и проводить спринты тестирования производительности вместе с модульным тестированием.
Чтобы оценить эффективность тестирования производительности, обязательно установите реалистичные контрольные показатели. Хотя весьма заманчиво оценивать приложение с точки зрения разработчика, постарайтесь максимально дистанцироваться от этого и посмотреть на работу программы со стороны её пользователя.
Шаг 8. Тестирование безопасности и соответствия требованиям
Существует множество правил безопасности, которым должны соответствовать мобильные приложения. В зависимости от особенностей приложения необходимо соблюдать различные стандарты безопасности данных. Вот наиболее распространенные из них:
- PCI DSS – набор требований к безопасности данных для мобильных приложений, принимающих платежи
- HIPAA – правила безопасности для мобильных приложений, собирающих, хранящих или обрабатывающих медицинские данные
- FFIEC – набор рекомендаций, требующих от банковских и финансовых учреждений установки мер контроля и безопасности для защиты конфиденциальных финансовых данных.
При проведении тестирования безопасности важно обращать внимание на отраслевые стандарты и воплощать эти рекомендации в практические меры. Кроме того, тестировщик должен быть готов к исключениям и непредсказуемым ситуациям. Каждое действие по обеспечению безопасности должно быть тщательно задокументировано на тот случай, если оно будет рассмотрено контролирующим органом.
Шаг 9. Выпуск финальной версии
После того, как все будет сделано, разработчики запускают комплексное тестирование, чтобы убедиться, что приложение работает правильно на внутреннем и серверном уровне и готово к выгрузке. Если серьезных ошибок не выявлено, разработчики выпускают приложение в магазины приложений. В случае обнаружения каких-либо проблем в программе они устраняют их, и спринт сквозного тестирования повторяется заново.
Заключение
Тестирование мобильных приложений является неотъемлемой частью всего их жизненного цикла. Успешное тестирование обеспечивает эффективную и слаженную работу всей системы, а также соответствие требованиям безопасности.