Скачиваний:
9
Добавлен:
17.06.2023
Размер:
2.41 Mб
Скачать

3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ 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

Соседние файлы в папке Курсовые работы