- •Введение
- •1.4 Безопасность при эксплуатации пэвм
- •1.5 Стадии и этапы разработки
- •1.6 Порядок контроля и приемки
- •2 Требования к функциональным характеристикам
- •3.2 Выбор формата обмена данными
- •3.3 Выбор среды разработки
- •3.4 Выбор субд для системной базы данных
- •4 Разработка базы данных
- •Пользователи и права доступа
- •Метаданные
- •5 Разработка программного обеспечения
- •5.1 Архитектура программного обеспечения
- •5.2 Система аутентификации и авторизации
- •5.3 Взаимодействие с клиентским приложением
- •6 Тестирование программы
- •6.1 Модульное тестирование
- •6.2 Системное тестирование
- •7 Организационно-экономическая часть
- •7.1 Технико-экономическое обоснование объекта проектирования
- •7.2 Организационная часть
- •7.3 Экономическая часть
- •7.4 Выводы
- •8 Безопасность и экологичность проектных решений
- •8.1 Цель и решаемые задачи
- •8.2 Опасные и вредные факторы при работе с пэвм
- •8.3 Характеристика объекта исследования
- •8.4 Мероприятия по безопасности труда и сохранению работоспособности
- •8.5 Рсчеты
- •Заключение
- •Список литературы
- •Приложение 1. Листинг
6 Тестирование программы
В процессе разработки программного обеспечения производилось тестирование как отдельных частей программы (модульное тестирование), так и функционирование программы в целом (системное тестирование).
Для удобства отладки сервер производит подробное журналирование всех основных событий. Для данной цели используется библиотека с открытым исходным кодом log4j, позволяющая организовать гибкую многоуровневую систему журналирования для программ на языке Java.
6.1 Модульное тестирование
Тестирование отдельных функций сервера производилось с помощью Advanced REST Client (расширение для веб браузера) – средства для создания и выполнения произвольных HTTP запросов. Данная программа позволяет отправлять любые HTTP запросы, а так же просматривать в удобном виде JSON ответы сервера.
6.1.1 Тестирование сервиса авторизации
Для проверки корректности работы сервиса авторизации необходимо выполнить несколько HTTP запросов с различными параметрами и проверить корректность ответа сервера.
Пример параметров запроса представлен на рисунке 6.1.
Рисунок 6.1 – Advanced REST client запрос на авторизацию
Если логин и пароль верны, то ответ от сервера должен иметь следующий формат:
{
"data": {
"login": "admin",
"firstname": "Admin",
"is_admin": true,
"menu": [
{
"caption": "Классы",
"id": 211,
"views": [
{
"caption": "Классы",
"id": 2
},
{
"caption": "Свойства классов",
"id": 6
},
{
"caption": "Методы",
"id": 3
},
{
"caption": "Соединения с БД",
"id": 369
},
{
"caption": "Типы методов",
"id": 26
},
{
"caption": "Группы методов",
"id": 27
},
{
"caption": "Тип данных",
"id": 104
},
{
"caption": "Пакеты",
"id": 1
}
]
}
],
"view_presets": [
{
"id_view": 21,
"caption": "Меню с родителями",
"filter": "[[null,\"parent\",\"is not null\"]]",
"comment": "test preset"
},
{
"id_view": 21,
"caption": "",
"filter": "null",
"sort": "null",
"comment": "первый пресет"
},
],
"settings": {
"key": "2"
}
},
"msg_type": "inf",
"msg": "You logged in."
}
Ответ сервера содержит информацию об доступных авторизовавшемуся пользователю пунктах меню, сохраненных избранных представлениях, а так же настройки используемого клиента.
Если ввести неверный пароль или несуществующий логин, то сервер вернет сообщение об ошибке в следующем формате:
{
msg_type: "err"
msg: "Неверный логин или пароль."
}
6.1.2 Тестирование сервиса открытия представлений
Сервис открытия представлений /view/open, должен возвращать как метаданные, так и данные для запрашиваемого представления с учетом фильтра, сортировки и разбиения на страницы. Для проверки его работы нужно создать HTTP POST запрос с помощью advanced REST client и сравнить полученный ответ с ожидаемыми данными. Пример запроса на открытие табличного представления показан на рисунке 6.2.
Рисунок 6.2 – Advanced REST client запрос на открытие представления
В случае корректно заданных параметров и отсутствия ошибок сервера будет возвращен JSON ответ в следующем формате:
{
"view": {
"columns": [
{
"alias": "_object_info",
"is_hidden": true,
"header": "Object info",
"type": "JSONObject",
"is_link": false
},
{
"alias": "id",
"is_hidden": false,
"is_calc_field": false,
"field_id": 43,
"header": "ID",
"type": "Integer",
"is_link": false,
"column": 1
},
{
"alias": "name",
"is_hidden": false,
"is_calc_field": false,
"field_id": 44,
"header": "Имя",
"type": "String",
"is_link": false,
"column": 1
},
{
"alias": "parent",
"is_hidden": false,
"is_calc_field": false,
"field_id": 46,
"header": "Родительский пакет",
"type": "String",
"is_link": true,
"link_filter_json": "[[null,\"id\",\"=\",\"this.parent_id\"]]",
"link_view_exp": "{id_view:1}",
"column": 1
}
],
"arrays": {},
"header": {
"caption": "Пакеты",
"class_id": [
1
],
"id_view": 1
},
"methods": [
{
"name": "delete",
"method_id": 184,
"class_id": 1,
"type": "multi",
"method_group": "destructor",
"icon": null,
"views": [
{
"caption": "Удалить пакет",
"id_view": 373,
"view_type": "multi"
}
]
},
{
"name": "edit",
"method_id": 183,
"class_id": 1,
"type": "single",
"method_group": "other",
"icon": null,
"views": [
{
"caption": "Изменить пакет",
"id_view": 372,
"view_type": "single"
}
]
}
],
"preloaded_data": {
"total": 17,
"data": [
[
{
"id": 1,
"display_name": "java"
},
1,
"java",
"java",
null,
null,
null,
1,
"Вт 17 апр 2012 14:23:03 GMT+0000",
"corinf",
1,
"127.0.0.1",
null,
null
],
[...],
...
]
},
"id_tab": 177,
"view_version": 1
},
"msg_type": "inf",
"msg": "View was opened successfully."
}
