ПРИДНЕСТРОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
им. Т.Г. ШЕВЧЕНКО
РЫБНИЦКИЙ ФИЛИАЛ
КАФЕДРА «ФИЗИКИ, МАТЕМАТИКИ И ИНФОРМАТИКИ »
Курсовая работа
по дисциплине
«Программное обеспечение вычислительных систем»
на тему:
«Тестирование функций перемещения DBSN
на PHP»
Выполнил:
студент V курса
специальности ПОВТ и АC
Проверил:
ст. преподаватель
г. Рыбница 2014г.
Оглавление
ВВЕДЕНИЕ 2
ГЛАВА I. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ 4
1.1. Краткое описание DBSN 4
1.2. PHP и подключение к нему DBSN 6
1.3. Функции перемещения DBSN 7
ГЛАВА II. ПРАКТИЧЕСКИЙ РАЗДЕЛ 10
2.1. Настройка среды исполнения 10
2.2. Создание приложения. 10
2.3 Cтруктура таблицы тестов 14
ЗАКЛЮЧЕНИЕ 16
СПИСОК ЛИТЕРАТУРЫ 17
ПРИЛОЖЕНИЕ 18
ВВЕДЕНИЕ
Целью курсовой работы является исследование функций перемещения СУБД DBSN в среде веб-программирования на языке PHP. В рамках реализации моделью данных является СУБД DBSN, контроллер написан на языке php, а в качестве представления используется файл PHP. Такая связка обеспечивает применение DBSN на любой версии Windows, выпушенной в этом веке.
Само приложение демонстрирует основные действия, необходимые для работы в DBSN.
Для реализации проекта необходимо выполнить следующие задачи:
• Изучить принципы работы языка php;
• Выделить множество базовых функций DBSN для тестирования и сформировать тестовые наборы данных для их исследования;
• Написать программу-контроллер для проверки работы этих функций на языке PHP;
• Написать приложение для тестирования основных функций DBSN;
• Отладить взаимодействие всех частей приложения и проверить с его помощью правильность функций DBSN при различных комбинациях параметров.
ГЛАВА I. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ
1.1. Краткое описание DBSN
PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) - это распространенный язык программирования общего назначения с открытым исходным кодом. PHP сконструирован специально для ведения Web-разработок и его код может внедряться непосредственно в HTML. PHP крайне прост для освоения, но вместе с тем способен удовлетворить запросы профессиональных программистов.
В последние несколько лет в РФ ПГУ разрабатывается облегченная NoSQL СУБД DBSN. Ее интерфейс сконструирован так, чтобы таблицы можно было использовать в качестве модели MVC для большого набора средств программирования под Windows.
DBSN обеспечивает элементарные функции обработки частей текстового файла. Отдельные блоки текста (далее называем фрагментами - fragm) дописываются в конец текстового файла, а считываться в общем случае должны произвольным образом. Например, на страницах сайтов вывод информации ведется статьями, начиная с последней в сторону начала. При небольших размерах файлов в РНР можно просто загружать их в память, но в общем случае это не эффективно, поэтому для их обработки используют различные СУБД (в частности MySQL). В ряде задач типа ведения блога, тяжелый функционал таких СУБД избыточен. Они успешно реализуются с помощью DBSN.
Из-за простоты DBSN легко реализуется на различных языках программирования. Некоторые из этих реализаций описаны ниже. Это позволяет легко подключать эту СУБД к продуктам Microsoft Office и wsh скриптам.
В основу DBSN положен тот факт, что для произвольного доступа к фрагментам текстового файла необходима информация о начале и длине каждого фрагмента. В традиционных СУБД, например – FoxPro, это решается фиксацией длины фрагмента (записи) и помещением дополнительной информации в начало файла с таблицей. Одновременно жестко фиксируется и структура записи. В DBSN структурная информация выносится в отдельный бинарный файл, таким образом, таблица abcd состоит из 2х файлов:
abcd.dbs - собственно фрагменты
abcd.dbn -структурная информация о них
В файле abcd.dbs информация хранится в текстовом виде как набор текстовых блоков-фрагментов произвольного размера. Каждый фрагмент состоит в общем случае из нескольких строк текста. Кроме того, его можно искусственно разделить на подстроки, вставляя в нужные места символ-разделитель подстрок, в качестве которого будем использовать “|”. Подстрокой будем называть участок фрагмента между двумя разделителями или разделителем и концом строки или началом строки и разделителем.
Строки и Подстроки фрагмента нумеруются от 0
Файл abcd.dbn - бинарный с записями фиксированной длины (по 8 байтов). Каждая запись abcd.dbn описывает 1 фрагмент и состоит из 2х целых чисел: адреса начала фрагмента в файле и длины фрагмента.
Эти числа необходимы для манипуляций с фрагментом - чтения, записи, удаления.
Фиксированный размер записи в файле *.dbn позволяет легко посчитать общее количество (count) фрагментов в dbs файле и обратиться к любому фрагменту непосредственно по его номеру.
Большинство функций DBSN возвращают по завершению положительное число ( обычно - номер текущего фрагмента) при успешном выполнении, 0 – если при выполнении возникли замечания и отрицательное число при ошибке. Чтобы отделить эти случаи, нумерация фрагментов ведется от 1. При необходимости вывода из функции дополнительной информации, соответствующие переменные передаются в функцию по ссылкам.
При добавлении фрагмента в таблицу он дописывается в конец dbs файла, а в бинарном файле dbn формируется одна запись с его параметрами.
При удалении фрагмента его длина в бинарном файле устанавливается со знаком минус, текстовый файл не изменяется.
При восстановлении записи длина делается со знаком плюс, т.е. эти операции не затрагивают текстовый файл.
Вся работа с файлом DBSN выполняется с помощью массива из 4х чисел(обработчика базы dbh):
dbh[0] – обработчик файла abcd.dbn
dbh[1] – обработчик файла abcd.dbs
dbh[2] – номер текущего фрагмента
dbh[3] – код ошибки операции
Этот массив формируется при открытии таблицы DBSN и используется во всех функциях ее обработки в качестве первого параметра. Для некоторых сред программирования вместо dbh оперируют с его адресом dbhadr.
1.2. PHP и подключение к нему DBSN
PHP – это язык, предназначенный для быстрого создания динамических web-страниц. Синтаксис языка похож на С, Java и Perl, однако имеет и свои, присущие только ему особенности. В официальной документации PHP определяется как server-side HTML-embedded scripting language (встраиваемый в HTML скриптовый язык с обработкой на сервере).
На РНР база DBSN реализована с помощью файла dbsn.php .
В данном файле содержатся функции непосредственно реализующие всю обработку DBSN таблиц. Для применения DBSN при ответе сервера на запрос в начале PHP файла достаточно подключить их:
< ?php
include "dbsn.php";
?>
Далее кратко описаны все функции, непоследственно используемые прикладными программистами при обработке страниц.
1.3. Функции перемещения DBSN
К функциям перемещения в DBSN относится подмножество всех функций, позволяющее выполнять перемещение номера активного фрагмента таблицы: получить , установить, увеличить, уменьшить, сделать активным номер текущего фрагмента.
Имя каждой функции DBSN начинается с глагола, например, функция, увеличивающая номер фрагмента , называется incNom. Для создания программного продукта курсовой работы выделены следующие функции изменяющие номер активного фрагмента:
function getNom( &$dbh )
получить номер текущего фрагмента
здесь: &$dbh – ссылка на обработчик таблицы
возвращает номер текущей записи, -номер для удаленной записи
или 0 при ошибке.
function setNom( &$dbh, $new_nom )
установить номер текущего фрагмента
здесь: &$dbh – ссылка на обработчик таблицы
$new_nom – новый номер текущего фрагмента
возвращает номер новой текущей записи или 0 при ошибке.
function incNom( &$dbh, $count = 1 )
увеличить номер текущего фрагмента
здесь: &$dbh – ссылка на обработчик таблицы
$count – на сколько нужно увеличить номер текущего фрагмента
(по умолчанию – на 1)
возвращает номер новой текущей записи или 0 при ошибке.
function decNom( &$dbh, $count = 1 )
уменьшить номер текущего фрагмента
здесь: &$dbh – ссылка на обработчик таблицы
$count – на сколько нужно уменьшить номер текущего фрагмента
(по умолчанию – на 1)
возвращает номер новой текущей записи или 0 при ошибке.
function setFirst( &$dbh )
установить номер фрагмента равным 1
здесь: &$dbh – ссылка на обработчик таблицы
возвращает номер новой текущей записи или 0 при ошибке.
function setLast( &$dbh )
сделать активным последний фрагмент
здесь: &$dbh – ссылка на обработчик таблицы
возвращает номер новой текущей записи или 0 при ошибке.
function findFragmOnStr( &$dbh, $find_str, $str_nom, $nom_beg )
Найти фрагмент таблицы DBSN по заданной строке фрагмента
здесь: &$dbh – ссылка на обработчик таблицы
$find_str - строка поиска
$str_nom - номер искомой строки во фрагменте
$nom_beg - номер фрагмента с которого начинается поиск
просматривает все активные фрагменты начиная с $nom_beg
и останавливается если находит в каком-нибудь заданную строку
возвращает номер записи или 0 при ошибке если не нашла.
function findFragmOnPart( &$dbh, $fragm_part, $nom_beg )
Найти фрагмент таблицы DBSN по его части
здесь: &$dbh – ссылка на обработчик таблицы
$fragm_part - часть фрагмента для поиска
$nom_beg - номер фрагмента, с которого начинается поиск
просматривает все активные фрагменты начиная с $nom_beg
и останавливается если находит в каком-нибудь заданный текст
возвращает номер записи или 0 при ошибке если не нашла.
function findFragmOnSubst( &$dbh, $find_subst, $subst_nom, $nom_beg )
Найти фрагмент таблицы DBSN по заданной подстроке фрагмента
здесь: &$dbh – ссылка на обработчик таблицы
$find_subst - подстрока поиска
$subst_nom - номер искомой подстроки во фрагменте
$nom_beg - номер фрагмента, с которого начинается поиск
просматривает все активные фрагменты начиная с $nom_beg
и останавливается если находит в каком-нибудь заданную подстроку
ГЛАВА II. ПРАКТИЧЕСКИЙ РАЗДЕЛ
2.1. Настройка среды исполнения
Разработка и отладка выполняются на локальном веб-сервере, в то время как производственная среда размещена на удаленном веб-сервере. Текущая версия позволяет использовать локальный сервер. Последующие версии будут поддерживать использование удаленного сервера с доступом по протоколу FTP. Поддержка PHP может добавляться к целому ряду веб-серверов (IIS, Xitami и т.д.), но обычно используется сервер HTTP Apache.
Отладчик PHP. IDE NetBeans для PHP позволяет использовать XDebug, но использование отладчика не является обзательным. Из соображений совместимости с PHP5 рекомендуется использовать версию XDebug 2.0 или выше.
По завершении установки необходимо выполнить настройку среды в целях обеспечения правильной совместной работы всех программных компонентов.
Для корректного вызова функций из библиотеки DBSN в выбранный каталог локального сервера на компьютере C:webapachehtdocskyrkadata_dbsn были скопирован файл dbsn.php, содержащий функции для работы СУБД DBSN.
2.2. Создание приложения.
В процессе разработки было построено приложение для проверки работы функций перемещения DBSN.
Рис.1.Главная страница приложения.
На рисунке изображена главная страница приложения. На ней имеется список реализованных функций. После выбора определенной функции следует нажать на кнопку “Выбрать”. После чего локальный сервер переведет на страницу с тестами выбранной функции.
Рис 2. Тестирования функции перемещения getNom().
На рисунке показано реализация тестирования функции получения номера текущего элемента.
Рис 3. Тестирования функции перемещения incNom().
Рис 4. Тестирования функции перемещения setFirst().
Рис 5. Тестирования функции перемещения decNom().
Рис 6. Тестирования функции перемещения SetLast().
Далее выполняются варианты разнообразные варианты входных параметров. Смысл тестирования заключается в нахождении вариантов исхода событий при различных значениях параметров функции.
2.3 Cтруктура таблицы тестов
Приложение, описанное в предыдущем разделе, позволяет тестировать выполнение любой из основных функций в ручном режиме.
Перед выполнением основного приложения для автоматического тестирования следует определиться с набором заданий, которые будут в нем проверяться. Сами задания и необходимые им параметры будем хранить в отдельных подкаталогах общего каталога “c: estdbsn”. Так все относящееся к проверке функции openDBSN будет храниться в подкаталоге “c: estdbsn openDBSN”. Собственно задания для проверки этой функции будут в таблице ‘control” этого подкаталога.
Каждое тестовое задание будем хранить в отдельном фрагменте такой таблицы. Тестовое задание должно содержать: описание, входные параметры, правильные значения выходных результатов. номер выполнение операции, заполнение полей представления по ее результатам. Так как количество входных и выходных параметров разное, то удобно ввести поля для его указания. С учетом этого, структура фрагмента таблицы с тестами принимает вид:
Номер поля Имя Поля Назначение
0 TestType тип теста - характеризует число проверяемых значений и их трактовку
1 TestComment Описание теста
2 InputCount Число входных параметров
3 InputParam1 Первый входной параметр
4 Второй входной параметр
…
2 + InputCount InputParamN Последний входной параметр
3 + InputCount OutputCount Число получаемых значений
4 + InputCount OutputValue1 Первое получаемое значение
…
OutputValueM Последнее получаемре значение
Например, один из фрагментов тестовой таблицы control для openDBSN может иметь вид:
1| увеличить номер текущего фрагмента | 1| c: estdbsn incNom 1| 0|
Здесь тип теста 1 означает, что результат может быть произвольным положительным числом, таблица “test1” должна существовать в заданном каталоге.
Для проверки открытия таблиц надо рассмотреть варианты их повреждений. В общем случае, выполнение каждого тестового задания предусматривает 4 действия:
1 Проверку и подготовку входных условий
3 Выполнение действия
4 Проверку результата
5 Послетестовую приборку
Процесс исследования, испытания продукта, имеющий две различные цели:
• продемонстрировать разработчикам и заказчикам, что продукт соответствует требованиям;
• выявить ситуации, в которых поведение функций является неправильным, нежелательным или не соответствующим спецификации.
ЗАКЛЮЧЕНИЕ
Тестирование является одним из важных этапов разработки продукта.
Проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом.
Процесс оценки СУБД или её компонентов с целью определения удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа.
В результате выполнения курсовой было выполнено тестирование функций перемещения СУБД DBSN на языке PHP. Отклонений в правильности работы функций не обнаружено.
Поставленная цель была достигнута и в ходе разработки были достигнуты следующие задачи:
• изучены принципы работы и функций СУБД DBSN;
• протестированы функции перемещения;
• освоены методы работы с таблицами СУБД на языке PHP;
• получены результаты тестирования.
СПИСОК ЛИТЕРАТУРЫ
1. Глазов А.Б., Тягульская Л. А., Кушнир М.Л., Зух А.В. Элементы автоматизированного учета посещаемости и успеваемости студентов // Вестник науки Приднестровья. – Тирасполь, 2012. – С. 192 - 200.
2. Глазов А. Б., Кушнир М.Л. Электронный журнал как средство учета посещаемости учебных занятий и успеваемости студентов в вузе // Сборник материал VII Международной научно-практической конференции «Михайло-Архангельские чтения». – Рыбница, 2012. – С. 211 - 213.
3. Глазов А. Б., Кушнир М.Л. Автоматическая обработка данных по посещаемости студентов//Студенческий научный журнал. – Рыбница, 2012. – С. 24 – 32.
4. Кашаев С.М. Программирование в Microsoft Excel на примерах. – СПб.: БХВ-Петербург, 2007. – 320 с.
5. Слепцова Л.Д.Программирование на VBA в Microsoft Office 2010. – М.: ООО “И.Д. Вильямс”, 2010. – 432 с.
6. Электронный журнал – http://eljur.ru/elektronniy-zhurnal-v-shkole
7. Электронный журнал для школы – http://pedsovet.org/component/ option,com_mtree/task,viewlink/link_id,24834/Itemid,118/
ПРИЛОЖЕНИЕ
Indexmm.php
<?php @include "../../data_dbsn/dbsn.php"; ?>
<?php error_reporting (0); ?>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>main_menu</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="./def_css/default.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.style1 {
font-size: large;
}
.style2 {
font-size: larger;
}
.style3 {
font-size: large;
margin-top: 0;
}
</style>
</head>
<body>
<div id="header">
<div id="logo">
<h1><span class="style2">Т</span>естирование функций перемещения<span class="style2"></span>
</h1>
<h2> </h2>
</div>
<div id="menu">
<ul>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content" style="width: 834px; height:1081px">
<div class="post">
<div class="entry">
<p class="style1"> </p>
<h2 class="title" style="font-size: medium">Список функций.
<br /></h2>
<form name="f" method="get" action="<?=$_SERVER[PHP_SELF]?>">
<select name="books[]" size="6" multiple>
<option value="variant1">function getNom( )</option>
<option value="variant2">function setNom( )</option>
<option value="variant3">function incNom( )</option>
<option value="variant4">function setFirst( )</option>
<option value="variant5">function decNom( )</option>
<option value="variant6">function setLast( )</option>
</select>
<input type="submit" name="ok" value="Выбрать "><p>
<?
// 1-й вариант проверки факта нажатия кнопки:
// if (@$_GET[ok])
// 2-й вариант проверки факта нажатия кнопки:
if (isSet($_GET[ok]))
{
if ( isSet($_GET[books]) )
// если выбран хотя бы один элемент списка
{
echo "<i>Выбран пункт с варинатом :</i><br>";
foreach ( $_GET[books] as $v )
echo "$v<br>";
if ($v == variant1) header("Location: http://localhost/kyrka/functions/fun_getNom/index.php"); /* Redirect browser */
if ($v == variant2) header("Location: http://localhost/kyrka/functions/fun_setNom/index2.php");
if ($v == variant3) header("Location: http://localhost/kyrka/functions/fun_incNom/index3.php");
if ($v == variant4) header("Location: http://localhost/kyrka/functions/fun_setFirst/index5.php");
if ($v == variant5) header("Location: http://localhost/kyrka/functions/fun_decNom/index4.php");
if ($v == variant6) header("Location: http://localhost/kyrka/functions/fun_setLast/index6.php");
exit;
}
else
echo Ничего не выбрано<br>;
};
?>
</form>
<!-- end page -->
<!-- start footer -->
<div
_________________________________________________________________________________________________________________________________</p>
</div>
<!-- end footer -->
</body>
</html>
Тестирование функций перемещения DBSN на PHP
Курсовая работа по предмету «Web-программирование»