Курсовые работы / ПРИС К_5
.pdf3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ WEB-ПРИЛОЖЕНИЯ ДЛЯ АВТОМАТИЗАЦИИ ТЕХНИЧЕСКОГО ОБСЛУЖИВАНИЯ ГАЗОБАЛЛОННОГО ОБОРУДОВАНИЯ (ГБО) АВТОТРАНСПОРТНЫХ СРЕДСТВ
3.1 Описание структуры базы данных
Rails может поддерживать самые распространенные СУБД такие, как
Firebird, MySQL, Oracle, MSSQLServer, PostgreSQL и SQLite [10]. По умолчанию СУБД в Rails является SQLite, поэтому если при создании приложений не указывать параметр (“--database=postgresql”), то будет подключена СУБД
SQLite. Разрабатываемая ИС будет работать с СУБД PostgreSQL. Web-приложение будет содержать семь справочников, а также пять
отчетов. В таблицах 3.1-3.7 представлено описание справочников, которые будут реализованы в данном приложении.
Таблица 3.1 – Таблица «Виды ГБО»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерируется самостоятельно |
model (Модель) |
character varying |
|
proizv (Производитель) |
character varying |
|
ves (Вес) |
integer |
|
foto (Фото) |
character varying |
|
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
Таблица 3.2 – Таблица «Установка ГБО»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерируется самостоятельно |
avto (Автомобиль) |
belongs_to |
Берется из таблицы автомобили с ГБО |
marka (Марка) |
character varying |
|
fio (ФИО владельца) |
character varying |
|
data (Дата установки) |
date |
|
ctoimost (Стоимость) |
belongs_to |
Берется из таблицы стоимость установки ГБО |
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
22
Таблица 3.3 – Таблица «Стоимость установки ГБО»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерирует самостоятельно |
marka (Марка автомобиля) |
character varying |
|
tsilindr (количество цилиндров) |
integer |
|
obiem (объем баллона) |
integer |
|
cena (цена) |
integer |
|
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
Таблица 3.4 – Таблица «Автомобили с ГБО»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерируется самостоятельно |
|
|
|
marka (Марка автомобиля) |
character varying |
|
vipusk (Год выпуска) |
date |
|
gnomer (Государственный номер) |
integer |
|
fio (ФИО владельца) |
character varying |
|
data (Дата постановки на учет) |
date |
|
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
Таблица 3.5 – Таблица «Техосмотр»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерируется самостоятельно |
|
|
|
avto (Автомобиль) |
belongs_to |
Берется из таблицы автомобили с ГБО |
data (Дата ТО) |
date |
|
stoim (Стоимость) |
belongs_to |
Берется из таблицы стоимость |
otmvip (Отметка прохождения ТО) |
boolean |
|
neispr (Неисправность) |
belongs_to |
Берется из таблицы неисправности |
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
Таблица 3.6 – Таблица «Стоимость»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерируется самостоятельно |
|
|
|
s_name (Наименование) |
character varying |
|
gbo (ГБО) |
belongs_to |
Берется из таблицы виды ГБО |
cena (Цена) |
integer |
|
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
23
Таблица 3.7 – Таблица «Неиспраности»
Название поля |
Тип поля |
Примечание |
Id |
integer |
Генерируется самостоятельно |
|
|
|
n_name (Наименование) |
character varying |
|
status |
boolean |
|
s_delete |
boolean |
|
created_at |
timestamp |
Генерируется самостоятельно |
updated_as |
timestamp |
Генерируется самостоятельно |
Запишем последовательно в консоли (не забывая при этом выполнять
команду добавления миграций в БД rake db:migrate):
для создания платформы Gbo: rails generate scaffold Gbo model:string proiz:string ves:integer foto:string status:boolean s_delete:boolean
для создания платформы Ystanovka rails generate scaffold Ystanovka avto:belongs_to data:date ctoimost:belongs_to status:boolean s_delete:boolean
для создания платформы Ctoimost: rails generate scaffold Ctoimost marka:string tsilindr:integer obiem:integer cena:integer status:boolean s_delete:boolean
для создания платформы Avto: rails generate scaffold Avto marka:string vipusk:date gnomer:integer fio:string data:date status:boolean s_delete:boolean
для создания платформы To: rails generate scaffold To avto:belongs_to data:date stoim:belongs_to otmvip:boolean neispr:belongs_to status:boolean s_delete:boolean
для создания платформы Stoim: rails generate scaffold Stoim st_name:string gbo:belongs_to cena:integer status:boolean s_delete:boolean
для создания платформы Neispr: rails generate scaffold Neispr name:string status:boolean s_delete:boolean
Таким образом, было создано семь платформ (справочников), которые после выполнения команды rake db:migrate были созданы в БД.
3.2 Дерево программных модулей
При создании web-приложения были созданы и использованы
24
отдельные программные модули форм, которые отражены в дереве программных модулей приложения учета технического обслуживания ГБО автотранспортных средств, представленном на рисунке 3.1.
|
ПМ авторизации |
|
|
ПМ главного меню |
|
ПМ справочники |
ПМ отчеты |
ПМ пользователи |
ПМ Виды ГБО |
ПМ Отчета1 |
|
ПМ Стоимость установки ГБО |
ПМ Отчета2 |
|
ПМ Установка ГБО |
ПМ Отчета3 |
|
ПМ Автомобили с ГБО |
ПМ Отчета4 |
|
ПМ Стоимость ТО |
ПМ Отчета5 |
|
ПМ Технический осмотр |
|
|
ПМ Неисправности |
|
|
Рисунок 3.1 – Дерево программных модулей
Согласно рисунку 3.1, приложение разработанной информационной системы содержит 15 модулей, из них 8 – модули справочников, 5 – модуль отчетов, 1 – модуль авторизации, 1 – модуль главного меню. Модули справочников служат для записи, редактирования, хранения и обработки информации, хранящихся в данных справочниках. Модули отчетов систематизируют информацию, содержащуюся в справочниках по средствам запросов и обработок. Модуль главного меню необходим для перехода из одного справочника в другой или из одного отчета в другой. Модуль авторизации выполняет функции проверки логина и пароля, а также создания сессии для пользователя, прошедшего авторизацию.
Таким образом, разработанные модули приложения поддерживают корректную и автоматизированную работу справочников при работе пользователя с системой, а также строят запросы и отбирают необходимую информацию для отображения пользователю в отчете.
25
3.3 Схема взаимодействия модулей и массивов данных
Программные модули по средствам запросов выбирают необходимые объекты, их поля, удовлетворяющих указанным параметрам в запросе. На основе чего формируется набор данных, который либо отображается в соответствующих полях формы, либо подлежит дальнейшей программной обработке.
В разработанной информационной системе модули справочников выполняют обработку текущей информации, выполняют запросы к другим справочникам для автоматического заполнения полей формы при выполнении определенных условий или действий пользователя. Модули отчетов выполняют запросы к нескольким справочникам, после чего добавляют обработанный массив данных в отчет для просмотра пользователем. Описанная схема взаимодействия модулей и массивов данных информационной системы учета технического обслуживания ГБО автотранспортных средств представлена на рисунке 3.2.
ПМ пользователи |
|
|
ПМ Виды ГБО |
|
ПМ авторизации |
|
|
|
ПМ Стоимость |
|
|
установки ГБО |
|
ПМ Отчета1 |
|
|
|
ПМ Установка ГБО |
БД |
ПМ Отчета2 |
|
||
|
|
|
ПМ Автомобили с ГБО |
|
|
|
|
ПМ Отчета3 |
ПМ Стоимость ТО |
|
|
ПМ Технический |
|
ПМ Отчета4 |
|
|
|
осмотр |
|
|
|
|
ПМ Отчета5 |
ПМ Неисправности |
|
|
Рисунок 3.2 – Схема взаимодействия модулей и массивов данных
Из рисунка 3.2 видно, что модули отчетов, модули справочников и модуль авторизации при своей работе отправляю запросы в базу данных, а база данных
26
модулям обратно отдает результаты запроса.
3.4 Реализация программных модулей
Отчет – это представление требуемых данных в виде удобном для просмотра и печати. В разрабатываемом web-приложении реализовано пять отчетов. Рассмотрим отчет «Пройденный технический осмотр». Данный отчет выводит наименование ТО и количество прохождения ТО в зависимости от того,
какой период был задан пользователем. Алгоритм работы этого отчета представлен на рисунке 3.3.
Начало
Ввод
периода
Обработка
запроса
БД
Получение
результатов
запроса
Вывод
отчета на экран
Да |
Ввести |
Нет |
|
период |
|||
|
|
||
|
заново? |
|
Конец
Рисунок 3.3 – Алгоритм работы отчета
Для реализации ввода периода в файле представления
/app/views/otchet4/index.html.erb прописывается следующий код:
<h1>Пройденный ТО</h1>
<%= link_to 'Главная страница', controller: 'home_page' %> <br><br>
<%= form_tag("search", method: "get") do %>
<%= label_tag(:start, "Введите начальную дату:") %>
27
<%= date_select(:start, "written_on") %> <br><br>
<%= label_tag(:finish, "Введите конечную дату:") %> <%= date_select(:finish, "written_on") %>
<br><br>
<%= label_tag(:q, "Отметка выполнения:") %>
<% d_array = [true] %>
<%= select_tag(:q, options_for_select(d_array)) %> <br><br>
<%= submit_tag("Искать") %> <% end %>
Для передачи переменных :start, :finish в запрос необходимо преобразовать их тип и извлечь выбранные год, месяц и число. Для этого в файле
/app/controllers/otchet4_controller.rb необходимо прописать следующее:
class Otchet4Controller < ApplicationController def index
end
def search @year_s =
Date.civil(params[:start]["written_on(1i)"].to_i,params[:start]["w ritten_on(2i)"].to_i, params[:start]["written_on(3i)"].to_i).year
@month_s = Date.civil(params[:start]["written_on(1i)"].to_i,params[:start]["w ritten_on(2i)"].to_i, params[:start]["written_on(3i)"].to_i).month
@day_s = Date.civil(params[:start]["written_on(1i)"].to_i,params[:start]["w ritten_on(2i)"].to_i, params[:start]["written_on(3i)"].to_i).day
@year_f = Date.civil(params[:finish]["written_on(1i)"].to_i,params[:finish][ "written_on(2i)"].to_i, params[:finish]["written_on(3i)"].to_i).year
@month_f = Date.civil(params[:finish]["written_on(1i)"].to_i,params[:finish][ "written_on(2i)"].to_i, params[:finish]["written_on(3i)"].to_i).month
@day_f = Date.civil(params[:finish]["written_on(1i)"].to_i,params[:finish][ "written_on(2i)"].to_i, params[:finish]["written_on(3i)"].to_i).day
end end
Далее перейдем к файлу поиска. Путь /app/views/otchet4/search.html.erb и
напишем следующий код (метод Active Record):
<h1>Пройденный ТО</h1>
<%= link_to 'Главная страница', controller: 'home_page' %> | <%= link_to 'Назад', controller: 'otchet4' %>
<br><br>
28
<table border="1"> <th>Наименование ТО</th>
<th>Количество прохождений</th>
<%= Stoim.joins("inner join tos on stoims.id = tos.stoim_id").group("id").where("date_part('year', tos.data) >= ? and date_part('month', tos.data) >= ? and date_part('day', tos.data) >= ? and date_part('year', tos.data) <= ? and date_part('month', tos.data) <= ? and date_part('day', tos.data) <= ? and tos.otmvip =
?", @year_s, @month_s, @day_s, @year_f, @month_f, @day_f, params[:q]).find_each do |stoim|%>
<tr>
<td><%= stoim.st_name %></td>
<td><%= To.where("date_part('year', tos.data) >= ? and date_part('month', tos.data) >= ? and date_part('day', tos.data) >=
?and date_part('year', tos.data) <= ? and date_part('month', tos.data) <= ? and date_part('day', tos.data) <= ? and tos.otmvip =
?", @year_s, @month_s, @day_s, @year_f, @month_f, @day_f, params[:q]).where(stoim_id: stoim.id).count %></td>
</tr>
<% end %>
Таким образом, получился отчет, который по заданному промежутку времени считает количество прохождений того или иного вида технического обслуживания. Реализация данного отчета проиллюстрирована в приложении А.
3.5 Инструкция пользователя по установке программного продукта и работе с ним
Чтобы установить Ruby on Rails, необходимо в первую очередь скачать пакет RubyStack, который содержит следующие элементы: Ruby, Rails, RVM, MySQL, SQLite, NGINX, Apache, Memcache and Varnish, Git and Subersion, Sphinx, PHP and phpMyAdmin. Для скачивания данного пакета можно воспользоваться ссылкой https://bitnami.com/redirect/to/90515/bitnami-rubystack- 2.0.0-39-windows-installer.exe.
После установки правой кнопкой мыши нажимаем на консоль use_ruby
(этот файл находится на диске С в папке Bitnami) и изменяем путь стартового запуска. Затем запускаем консоль и командой «cd “название папки с проектом”»
открываем папку с web-приложением. Теперь в консоли включаем сервер с помощью команды “rails s” и заходим в браузер по адресу: localhost:3000.
29
При входе по указанному адресу откроется окно авторизации, в которое требуется ввести имя пользователя и пароль. Данное окно представлено на рисунке 3.4.
Рисунок 3.4 – Скриншот окна авторизации
В случае успешного ввода имени пользователя и пароля откроется стартовая страница. Стартовая страница представлена на рисунке 3.5.
Рисунок 3.5 – Скриншот стартовой страницы
На стартовой странице расположено три группы: справочники, отчеты и пользователи. В группу справочники занесены ссылки на страницы, содержащие таблицы-справочники. Скриншоты данных справочников представлены в приложении Б.
Также в веб-приложении есть отдельный справочник «Пользователи», в
котором отображаются имена пользователей данного приложения.
30
3.6 Способы и результаты тестирования программного продукта в различных режимах
При использовании информационной системы пользователи могут совершать различного рода некорректные действия. Часть из них могут быть незначительными, а другая часть может иметь плохие последствия. Поэтому требуется произвести тестирование разработанной ИС для выявления всевозможных изъянов при работе с ней.
Тестирование программного обеспечения - это не что иное, как испытание куска кода к контролируемым и неконтролируемым условиям эксплуатации,
наблюдение за выходом, а затем изучение, соответствует ли он предварительно определенным условиям [11-12]. Различные наборы тест-кейсов и стратегий тестирования направлены на достижение одной общей цели - устранение багов и ошибок в коде, и обеспечения точной и оптимальной производительности программного обеспечения
На сегодняшний день существует огромное количество методов тестирования программного обеспечения, но чаще всего используют методы белого, черного и серого ящика [13-14]. Метод «белый ящик» учитывает внутреннее функционирование и логику работы кода программы [15-17]. При этом человек тестирующий данным методом программу должен знать язык кода для выявления имеющихся в нем ошибок. Тестирование с помощью метода
«черного ящика» заключается в получении и выборе тестовых случаев на основе анализа системы без доступа к внутренней структуре компонентов системы
[15,16,17]. Посредством введенных данных тестирующим человеком проверяется корректность выходных данных. Метод «серый ящик» представляет собой симбиоз предыдущих двух методов, включает в себя тестирование
«черным ящиком», но при этом человеку, осуществляющему тестирование известна внутренняя структура и принципы работы программы [17-19].
Для тестирования разработанной ИС было принято решение использовать метод «черного ящика», который позволит провести тестирование с позиции
31