Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DMoroz / Диплом.doc
Скачиваний:
32
Добавлен:
16.04.2013
Размер:
1.12 Mб
Скачать

1.3.4. Сортировка массивов

При отображении результатов на экране в виде таблицы и создании отчётов часто возникала необходимость сортировки выводимых значений по какому-либо столбцу таблицы. Т.е. фактически необходимо было переставить элементы всех массивов в соответствии с перестановкой элементов в сортируемом массиве. Поскольку массивов с данными, которые необходимо отразить на экране может быть несколько, и количество элементов массива довольно большое (количество элементов одинаково во всех массивах), требовалось максимально ускорить данную процедуру.

Эта задача решалась следующим образом:

  1. Создавался новый массив элементов, содержащий элементы от нуля до количества элементов сортируемого массива.

  2. Производилась сортировка элементов массива с помощью функции быстрой сортировки sort() языкаPerl, причём результаты сортировки записывались в созданный на предыдущем шаге массив: индексы массива располагались в соответствии с расположением элементов в отсортированном массиве.

При выводе результатов на экран обращение ко всем элементам массивов, выводимых на экран, осуществлялось с использованием отсортированного массива индексов.

Далее приведён фрагмент программы, в котором приведена сортировка массивов @studs, @groupsи @rs_datesв соответствии с выбором пользователя ($FORM{'sort'}) с использованием массива индексов и вывод отсортированных элементов на экран:

my @ind=(); # Это массив индексов

for ($i=0; $i<scalar(@studs); $i++)

{

push(@ind,$i);

}

if ($FORM{'sort'} eq 'student') # ЕслисортируемпоФИОстудента

{

@ind=sort{$studs[$a] cmp $studs[$b]}@ind;

}

elsif ($FORM{'sort'} eq 'group') # Еслисортируемпоуч.группе

{

@ind=sort{$groups[$a] cmp $groups[$b]}@ind;

}

elsif ($FORM{'sort'} eq 'rs_date') # Если сортируем по Дате

{

@ind=sort

{

cmp_dates(str_to_date($rs_dates[$b]), str_to_date($rs_dates[$a]))

}@ind;

}

# Вывод на экран

for ($i=0; $i<scalar(@studs); $i++)

{

t_print qq(

Студент: $studs[$ind[$i]],Группа: $groups[$ind[$i]],Дата: $rs_dates[$ind[$i]]

);

}

1.4. Методика испытаний

Тестирование является одним из ключевых элементов обеспечения качества программного продукта.

Среди методов, с помощью которых проводилось тестирование подсистемы, можно выделить два основных:

  • метод «стеклянного ящика»;

  • метод «чёрного ящика».

Тестирование методом «стеклянного ящика» - это тестирование на этапе реализации. Данный метод можно отнести к процессу программирования, т.к. программисты выполняют тестирование на протяжении всего процесса создания ПО. Поскольку программист разрабатывает тесты, зная исходный код программы, он имеет определённые преимущества: направленность тестирования, полный охват кода, управление потоком, отслеживание целостности данных, внутренние граничные точки, тестирование, определяемое выбранным алгоритмом

Написание и отладка подсистемы осуществлялась с использованием специальной тестовой базы данных, максимально охватывающей предметную область. Для этих целей была скопирована база данных, работа с которой осуществлялась на факультете дополнительного и дистанционного обучения МИЭТ. Данная база содержит все используемые в настоящее время категории пользователей, базовые и производные учебные планы, назначенные как индивидуально студентам, так и учебной группе. Также в базе имеются результаты выполнения студентами контрольных мероприятий.

Была произведена проверка корректности работы подсистемы при использовании базы данных, таблицы которой не содержат никаких записей. Данная ситуация может возникнуть при первоначальной установке системы ОРОКС на сервер образовательного учреждения.

Особое внимание было уделено работе подсистемы при использовании пользователем различных современных Интернет-браузеров, поскольку они по-разному могут интерпретировать элементы JavaScript, содержащиеся вHTML-документе, являющимся результатом исполненияPerl-программы. Также могли возникнуть проблемы при передаче данных на русском языке с помощью методаGET, использовавшимся при генерации отчётов для печати.

При тестировании методом «стеклянного ящика» особое внимание уделялась следующим вопросам:

  • ошибки, связанные с обработкой граничных условий;

  • ошибки сценария при работе с программой;

  • ошибки передачи и интерпретации данных.

Для максимального исключения ошибок ввода и обработки граничных условий, в подсистеме использовался выбор из фиксированного списка значений. Единственным используемым элементом текстового ввода является пара элементов для ввода начальной и конечной даты временного промежутка. Для проверки правильности ввода даты использовались шаблоны языка Perl, проверяющие соответствие введённой пользователем даты общепринятому в России формату даты через точку. Также производится проверка, чтобы дата начала временного промежутка не превосходила дату его окончания.

Ситуациям, связанным с ошибками сценария при работе с программой было уделено особое внимание. Поскольку при работе с некоторыми компонентами подсистемы пользователь проходит через несколько экранов, на каждом из которых выполняет определённые действия, то необходимо было обеспечить проверку на соответствие условиям перехода от экрана к экрану.

При передаче данных с экрана на экран или при обновлении какого-либо экрана используется хэш %Hiddenи скрытый элемент ввода «hidden». В связи с особенностями передачи с использованием этих элементов, данные передаются только на следующий экран (форму), и, для передачи этих данных, допустим, с первого экрана на третий требуется повторно заносить данные в скрытый элемент ввода. Поэтому при разработке подсистемы проверялась проверка на корректность передачи данных их формированию (например, при передаче массивов данных) и последующей интерпретации (разбору элементов массива).

После локализации и устранения обнаруженных ошибок применялось контрольное тестирование, задача которого состояла в подтверждении правильности выполненной корректировки программы и в отсутствии проявления ранее обнаруженных ошибок.

Затем с участием экспертов с факультета дополнительного и дистанционного обучения выполнялось тестирование методом «чёрного ящика». Проводилась проверка на соответствие функциональности подсистемы техническому заданию.

В процессе тестирования обращалось внимание на пользовательский интерфейс, эксперты высказывали свои замечания и пожелания.

После устранения всех выявленных недостатков подсистема была установлена на сервер факультета дополнительного и дистанционного обучения МИЭТ, где проходила опытную эксплуатацию. Данная стадия является самой ответственной, поскольку даже самое полное тестирование не всегда позволяет выявить все нюансы, которые обнаруживаются при реальной эксплуатации.

Все ошибки и недочёты, выявленные в процессе реальной эксплуатации, были успешно локализованы и устранены.

МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ

ФАКУЛЬТЕТ МП и ТК

КАФЕДРА ИПОВС

Соседние файлы в папке DMoroz