1   2   3
Ім'я файлу: шевцова.pdf
Розширення: pdf
Розмір: 747кб.
Дата: 31.05.2021
скачати

ФГБОУ ВО «ПЕТРОЗАВОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ИНСТИТУТ МАТЕМАТИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАТИКИ И МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ
Отчет по дисциплине «Верификация программного обеспечения»
Тестирование мобильного приложения для системы лояльности в сфере туризма
Выполнила: студентка 6-го курса группы №22608
Шевцова Кристина Олеговна
Преподаватель: к.ф-м.н., доцент К. А. Кулаков
Петрозаводск – 2018

Оглавление
Объект тестирования
3
................................................................................................
Функциональные требования к объекту тестирования
6
....................................
Описание модулей
8
.....................................................................................................
Объект и стратегия тестирования
11
........................................................................
Общая информация
11
Стратегия блочного тестирования
11
Стратегия интеграционного тестирования
11
Этапы интеграции
12
Стратегия конфигурационного тестирования
14
Стратегия аттестационного тестирования
14
Описание тестов
15
.......................................................................................................
Корректность возвращаемых данных
15
Описание блочных тестов
15
Описание интеграционных тестов
22
Описание аттестационных тестов
30
Описание конфигурационного тестирования
39
Примеры реализации тестов
40
.................................................................................
Отчёт о проведении первоначального тестирования
42
.......................................
Отчеты об ошибках
44
................................................................................................
Отчёт о проведении повторного тестирования
45
..................................................
Заключение
47
...............................................................................................................
X2

Объект тестирования
В рамках курса «Верификация программного обеспечения» будет рассматри- ваться мобильный сервис для системы лояльности в сфере туризма. Целью серви- са является предоставление персонализированных предложений для пользовате- лей, основываясь на их перемещении.
Отслеживание перемещений пользователя осуществляется с использованием следующих технологий:
1. Geofencing – технология, позволяющая установить некоторую область (за- ранее заданный радиус) вокруг точки на карте города (по её географическим координатам), во время входа или выхода из которой мобильное приложение будет получать сигнал на выполнение заранее предопределенных действий. Та- кие географические области будем называть geofence.
2. iBeacon – технология, уведомляющая мобильное приложение о попадании/
выходе из радиуса действия Bluetooth-маяка (beacon). В отличие от geofencing чаще используется для навигации внутри помещений.
3. ImageTargets – изображения, которые можно отсканировать с помощью ка- меры смартфона.
Когда пользователь попадает в радиус действия geofence/beacon или сканирует
ImageTarget, мобильное приложение получает сообщение о произошедшем собы- тии и предоставляет пользователю предложение, соответствующее данному собы- тию.
Сервис состоит из сервера и мобильного приложения. Объектом тестирования является мобильное приложение, разработанное для операционной системы iOS версии 11.0 и выше, написанное на языке Swift 4.0.
Основными экранами приложения являются:
1. Главный экран приложения.
Экран представляет собой список карточек, где каждая карточка – это некото- рое персональное предложение, предоставленное пользователю. Карточки могут
X3
быть разных типов. В зависимости от типа карточки определяется действие, про- исходящее по нажатию на карточку: открытие ссылки в браузере, открытие ссыл- ки в WebView, воспроизведение видео.
С экрана возможен переход на экран выбора города, экран карты и экран ска- нирования изображений.
2. Экран выбора города.
При первом запуске приложения пользователь попадает на экран выбора горо- да и выбирает интересующий его город. После этого выбранный город сохраняет- ся в памяти устройства. При последующих запусках приложения экран выбора го- рода автоматически пропускается, и пользователь сразу попадает на главный экран приложения.
В зависимости от выбранного города приложение загружает список всех geofences, beacons и ImageTargets для данного города, а также сценарии к ним.
С экрана возможен переход на главный экран.
3. Экран сканирования.
Экран-камера. При наведении камеры на ImageTarget, происходит распознава- ние изображения. Если есть совпадение с ImageTarget, доступных в выбранном городе, то в список карточек добавится новая карточка, соответствующая отскани- рованному ImageTarget.
С экрана возможен переход на главный экран.
4. Экран карты.
В приложении доступен экран карты с обозначением расположения всех geofences, beacons и ImageTargets, доступных в выбранном городе. На экране кар- ты пользователь может построить маршрут от текущего местоположения до како- го-либо маркера посредством навигации, предоставляемой сервисом Google Maps.
С экрана возможен переход на главный экран, приложение или сайт Google
Maps.
Помимо основных экранов важными модулями приложения являются:
1. APIDataManager.
X4

Класс, отвечающий за взаимодействие с сервером. Функции класса вызывают- ся из контроллеров. Класс получает или отправляет данные на сервер. В случае получения данных с сервера, APIDataManager передаёт их в класс соответствую- щей модели для того, чтобы перевести полученные данные в модель. Итоговую модель данных APIDataManager возвращает в вызывающий контроллер.
2. LocationManager.
Класс, работающий с геопозицией пользователя. В классе устанавливаются geofences и beacons для мониторинга. Также класс работает в фоновом режиме и отвечает за дальнейшие действия после получения события о входе/выходе поль- зователя в зону geofence или beacon.
3. CoreDataManager.
Класс, осуществляющий основные операции (CRUD – Create, Read, Update,
Delete) по взаимодействию с базой данных.
Архитектура приложения представлена на рисунке 1.
Рисунок 1 – Архитектура приложения
X5

Функциональные требования к объекту тестиро-
вания
Тестируемое приложение должно реализовывать следующий набор функцио- нальных требований:
1. Главный экран приложения:
1.1. Отображение списка карточек, полученных из базы данных, для вы- бранного города.
1.2. Удаление карточки из списка и базы данных по свайпу влево.
1.3. По нажатию на карточку осуществление сценария для данной карточ- ки (открытие ссылки в браузере/открытие ссылки в WebView/воспроизве- дение видео).
1.4. Добавление новых карточек в начало списка в зависимости от полу- чаемых сообщений от других модулей.
1.5. Получение с сервера списка всех geofences, beacons и ImageTargets для выбранного города, его разбор, запись в базы данных и установление мониторинга geofences и beacons.
2. Экран выбора города:
2.1. Получение с сервера списка городов, его разбор и отображение этого списка на экране.
3. Экран карты:
3.1. Получение из базы данных всех geofences, beacons и ImageTargets и отображение их на карте.
3.2. Отображение текущего местоположения пользователя.
3.3. По нажатию на маркер конкретного объекта на карте построение маршрута от текущего местоположения пользователя до выбранного объ- екта в приложении (при наличии) или на сайте Google Maps.
X6

4. Экран сканирования:
4.1. Сканирование ImageTarget.
4.2. Отправка сообщения о том, что конкретный ImageTarget был отскани- рован пользователем.
5. APIDataManager:
5.1. Получение команд от контроллеров.
5.2. Отправка запросов на сервер.
5.3. Передача JSON-файлов с сервера на разбор в модели.
5.4. Возврат итоговых моделей обратно в контроллеры.
6. LocationManager:
6.1. Установка мониторинга geofences и beacons.
6.2. Отслеживание геопозиции пользователя, в том числе в фоновом ре- жиме.
6.3. Уведомление других модулей о том, что пользователь вошел/покинул радиус действия geofence или beacon.
7. CoreDataManager:
7.1. Осуществление CRUD-операций с базой данных.
X7

Описание модулей
Приложение разработано с использованием паттерна MVC (Model-View-
Controller). Основными частями приложения являются:
1. CardsVC.
Назначение: Контроллер главного экрана приложения с выбором карточек.
Функции:

func getGeofencesBeaconsAndImageTargets()
– получает список geofences, beacons и ImageTargets, а также сценарии к ним из APIData-
Manager и обновляет данные в базе данных.

func showCards()
– получает список карточек из базы данных и под- ставляет данные во View.
2. ChooseCityVC.
Назначение: Контроллер экрана выбора города.
Функции:

func showCities()
– получает список городов из APIDataManager и подставляет данные во View.
3. GoogleMapsVC.
Назначение: Контроллер экрана с картой.
Функции:

func setUpMarkers()
– получает все доступные geofences, beacons и
ImageTargets из базы данных и создает маркеры разных цветов для разных типов объектов.
4. APIDataManager.
Назначение: Модуль отвечает за взаимодействие с сервером.
Функции:
• func initBeaconsAndGeofencesAndImageTargets(completion-
Handler: @escaping ErrorType? -> ())
– получает с сервера список
X8
всех доступных geofences, beacons и ImageTargets. В случае успешного вы- полнения запроса инициализирует мониторинг beacons и geofences, иначе – возвращает ошибку.
• func getCities(completionHandler: @escaping ([CityModel]?,
ErrorType?) -> ())
– получает список всех городов с сервера. Возвращает список городов или ошибку.
5. CityModel.
Назначение: Модель данных для города на экране выбора города.
Функции:

func getCities(from data: NSDictionary?) -> [CityModel]?
– получает список городов в формате JSON от APIDataManager, преобразует его в CityModel и возвращает в APIDataManager.
6. BeaconModel.
Назначение: Модель данных для beacon.
Функции:

func findTriggeringBeacon(with name: String)
– принимает на- звание распознанного beacon и добавляет соответствующую карточку в базу данных.

func getBeacons(from data: NSDictionary?) -> [BeaconModel]?
– получает список beacons в формате JSON от APIDataManager, преобразует его в BeaconModel и возвращает в APIDataManager.
7. GeofenceModel.
Назначение: Модель данных для geofence.
Функции:

func findTriggeringGeofence(with name: String)
– принимает на- звание распознанного geofence и добавляет соответствующую карточку в базу данных.
X9

• func getGeofences(from data: NSDictionary?) -> [Geofence-
Model]?
– получает список geofences в формате JSON от APIDataManager, преобразует его в GeofenceModel и возвращает в APIDataManager.
8. ImageTargetModel.
Назначение: Модель данных для ImageTarget.
Функции:

func findTriggeringImageTarget(with vuforiaId: String)
– при- нимает идентификатор распознанного ImageTarget и добавляет соответству- ющую карточку в базу данных.
• func getImageTargets(from data: NSDictionary?) -> [Image-
TargetModel]?
– получает список ImageTargets в формате JSON от
APIDataManager, преобразует его в ImageTargetModel и возвращает в
APIDataManager.
X10

Объект и стратегия тестирования
Общая информация
Для тестирования будет использоваться стандартный инструментарий, встро- енный в среду разработки Xcode версии 10.0. Тесты будут разрабатываться на языке Swift 4.0.
Стратегия блочного тестирования
Блочное тестирование будет проводиться для network-слоя приложения, а так- же для классов, отвечающих за разбор JSON-файлов, получаемых с сервера.
Следующие функции подлежат блочному тестированию:
1. func initBeaconsAndGeofencesAndImageTargets(completionHandler:
@escaping ErrorType? -> ())
2. func getCities(completionHandler: @escaping ([CityModel]?,
ErrorType?) -> ())
3. func getCities(from data: NSDictionary?) -> [CityModel]?
4. func getBeacons(from data: NSDictionary?) -> [BeaconModel]?
5. func getGeofences(from data: NSDictionary?) -> [GeofenceModel]?
6. func getImageTargets(from data: NSDictionary?) -> [ImageTarget-
Model]?
Функции, отвечающие за отображение данных на экране и взаимодействие с базой данных, не подлежат блочному тестированию (они не связаны с работой с сетью и с разбором JSON-файлов). Работоспособность этих функций будет прове- рена в рамках аттестационного тестирования.
Стратегия интеграционного тестирования
Цель интеграционного тестирования – удостовериться в корректности сов- местной работы элементов приложения (каждый модуль не только выполняет свои функции, но и взаимодействует с другими модулями без ошибок).
X11

В данной работе выбран принцип восходящего тестирования. Сначала будет тестироваться самый нижний уровень системы. Затем постепенно к более низким уровням будут интегрироваться более высокоуровневые модули.
Этапы интеграции
1. Работа с geofences, beacons и ImageTargets.
Методы:
APIDataManager: func initBeaconsAndGeofencesAndImageTargets
(completionHandler: @escaping ErrorType? -> ())
BeaconModel: func getBeacons(from data: NSDictionary?) -> [Beacon-
Model]?
GeofenceModel: func getGeofences(from data: NSDictionary?) ->
[GeofenceModel]?
ImageTargetModel: func getImageTargets(from data: NSDictionary?) ->
[ImageTargetModel]?
CardsVC: func getGeofencesBeaconsAndImageTargets()
CardsVC: func showCards()
GoogleMapsVC: func setUpMarkers()
X12

Рисунок 2 – Работа с geofences, beacons и ImageTargets
2. Работа с городами.
Методы:
APIDataManager: func getCities(completionHandler: @escaping ([City-
Model]?, ErrorType?) -> ())
CityModel: func getCities(from data: NSDictionary?) -> [CityModel]?
ChooseCityVC: func showCities()
X13

Рисунок 3 – Работа с городами
Стратегия конфигурационного тестирования
Приложение будет протестировано на устройствах, имеющих различную вер- сию операционной системы и разрешение экрана.
Стратегия аттестационного тестирования
В ходе аттестационного тестирования будет протестирована работоспособ- ность приложения и его возможность осуществлять заявленный функционал. Ат- тестационные тесты покрывают ранее перечисленные функциональные требова- ния. Аттестационное тестирование происходит ручным способом.
X14

Описание тестов
Корректность возвращаемых данных
Под корректной работой сервера подразумевается его доступность, а также от- сутствие ошибок в логике работы сервера. Кроме того, сервер должен возвращать валидный JSON (см. ниже), коды ответа сервера должны быть в диапазоне
200-399.
Пример валидного JSON-файла со списком городов:
{
"cities": [
{
"id": "1",
"name": "Petrozavodsk",
"country_name": "Russia",
"latitude": 61.7782,
"longitude": 34.364
},
{
"id": "2",
"name": "London",
"country_name": "United Kingdom",
"latitude": 51.50853,
"longitude": -0.076132
}
]
}
Валидность JSON-файла можно проверить при помощи сервиса-валидатора
(например, jsonlint.com).
Описание блочных тестов
Тест 1.
Модуль: APIDataManager.
X15

Метод: func initBeaconsAndGeofencesAndImageTargets(completion-
Handler: @escaping ErrorType? -> ())
Тип: Негативный.
Описание: Метод делает GET-запрос на сервер. В случае успешного выполне- ния запроса метод не возвращает ошибку (в замыкании ErrorType? передаётся равным nil). В случае неудачного выполнения запроса возвращается одна из сле- дующих ошибок: ошибка подключения к сети Интернет (networkError), ошибка сервера (serverError), ошибка разбора JSON-файла, полученного с сервера (model-
Error).
Исходные данные: Нет подключения к сети Интернет.
Ожидаемый результат: Метод возвращает ошибку networkError.
Тест 2.
Модуль: APIDataManager.
Метод: func initBeaconsAndGeofencesAndImageTargets(completion-
Handler: @escaping ErrorType? -> ())
Тип: Негативный.
Описание: Метод делает GET-запрос на сервер. В случае успешного выполне- ния запроса метод не возвращает ошибку (в замыкании ErrorType? передаётся равным nil). В случае неудачного выполнения запроса возвращается одна из сле- дующих ошибок: ошибка подключения к сети Интернет (networkError), ошибка сервера (serverError), ошибка разбора JSON-файла, полученного с сервера (model-
Error).
Исходные данные: Есть подключение к сети Интернет, сервер возвращает ошибку с кодом ответа в диапазоне от 400 до 599.
Ожидаемый результат: Метод возвращает ошибку serverError.
Тест 3.
Модуль: APIDataManager.
Метод: func initBeaconsAndGeofencesAndImageTargets(completion-
Handler: @escaping ErrorType? -> ())
Тип: Негативный.
X16

Описание: Метод делает GET-запрос на сервер. В случае успешного выполне- ния запроса метод не возвращает ошибку (в замыкании ErrorType? передаётся равным nil). В случае неудачного выполнения запроса возвращается одна из сле- дующих ошибок: ошибка подключения к сети Интернет (networkError), ошибка сервера (serverError), ошибка разбора JSON-файла, полученного с сервера (model-
Error).
Исходные данные: Есть подключение к сети Интернет, сервер работает кор- ректно, возвращает несоответствующий формату JSON-файл (см. раздел «Кор- ректность возвращаемых данных»).
Ожидаемый результат: Метод возвращает ошибку modelError.

  1   2   3

скачати

© Усі права захищені
написати до нас