Смекни!
smekni.com

Разработка вспомогательной системной программы в системе программирования Delphi с использованием средств WinApi (стр. 5 из 8)

Тестирование алгоритма работы потока, который также относится к основному заданию курсового проекта.

1инициализация.

2while (not terminated) do

begin

3 WaitForSingleObject(Form1.HEvent, INFINITE);

4 ResetEvent(Form1.HEvent);

5 try

// резерв. память в потоке для этотой проекции

6PBaseAdress:=MapViewOfFile(Form1.HFileSender, FILE_MAP_READ,0,0,65536);

7 if (PBaseAdress = nil) then

begin

8 CloseHandle(Form1.HFileSender);

st:='не удалось отобразить файл на адресное пространство';

Application.MessageBox(st,'Сообщение...',MB_OK);

form1.BitBtn2.Visible:=false;

form1.Button1.Visible:=false;

9 exit;

10end;

11 nlineSize:=integer(PBaseAdress^);

SetLength(TextString,nlineSize);

CopyMemory(PChar(TextString),Pointer(Integer(PBaseAdress)+4),nlineSize);

Form1.Memo1.Text:=Form1.Memo1.Text+'---------'+#13#10;

Form1.Memo1.Text:=Form1.Memo1.Text+TextString+#13#10;

sendmessage(Form1.memo1.handle, em_linescroll, 0, Form1.memo1.lines.count-1);

UnmapViewOfFile(PBaseAdress);

finally

12end;

13end;


Рисунок 4.5 – Потоковый граф обработчика потока(данный обработчик выполняется постоянно после запуска программы и если не была нажата кнопка «отсоединится при работе программы»)


Цикломатическая сложность потокового графа:

1) V(G) = 3 регионов;

2) V(G) = 14 дуг - 13 узлов + 2 = 3;

3) V(G) = 2 предикатных узлов +1 = 3.

Путь 1:1-2-3-4-5-6-7-8-9-13;

Путь 2:1-2-3-4-5-6-7-10-11-12-13;

Путь 3:1-2-3-4-5-6-7-8-9-10-11-12-2-3-4-5-6-7-10-11-12-13;

пути

Исходные данные Ожидаемые результаты Реальные результаты
1 Не удалось отобразить файл на адресное пространство в потоке. Должно появиться сообщение : не удалось отобразить данные на адресное пространство потока

Вывод сообщения:

«Не отобразить файл на адресное пространство»

2 Ввод данных в поле сообщения и однократное нажатие на кнопку «отправить» Вывод сообщения «отправить» в поле истории переписки. Сообщение введённое в поле сообщений «отправить» появилось в поле истории переписки.
3

Ввод сообщения в поле сообщений и нажатие на кнопку «отправить» с последующим повторение этих действий

Вывод сообщения «отправить» в поле истории переписки. Сообщение введённое в поле сообщений «отправить» появилось в поле истории переписки.

3.6.2 Тестирование методом черного ящика

1) Тестирование процедуры, выполняющей запись данных в проецируемый файл

(Рисунок 4.6. ).

(Этап выполнения программы 2 «Событие 1»).

Предусловие : Текст сообщения должен быть обязательно введён.

Постусловие: Если проекция файла создана, и объект типа поток сработал нормально, то вывод текста сообщения в поле истории переписки.


Рисунок 4.6 – Дерево разбиений для события «Событие1» (первое задание)

№ листа Исходные данные Ожидаемые результаты Реальные результаты
1 Сообщение не введено Никаких действий не должно происходить, программа не должна отвечать на действия такого рода Программа никак не реагирует
2 Проекция файла не создана Вывод сообщения: «Не удалось передать данные» Вывод сообщения: «Не удалось передать данные»
3 Поток не сработал Вывод сообщения : «Не удалось создать проекцию файла» Вывод сообщения : «Не удалось создать проекцию файла»
4 В поле ввода сообщения введено : «СЛОВО» Вывод сообщения с содержимым «СЛОВО» в поле истории переписки

В поле истории появится сообщение с текстом :

«<имя введённое при авторизации> написал :

СЛОВО»

2) Тестирование процедуры выполняющей создание дескрипторов носителя с которым ведётся работа (Рисунок 4.7).

(Этап выполнения программы 3 , событие С1).

Предусловие: Программа должна быть запущена от имени администратора.

Постусловие: 1 Должен быть выбран присутствующий носитель.

2 Если дескрипторы файлов успешно созданы и данные прочитаны в буфер, то- вывод информации в таблицы.

Рисунок 4.7 Дерево разбиений для процедуры, выполняющей создание дескрипторов носителя(Этап выполнения программы 3 события C1).

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Программа запущена не от имени администратора Заполнение таблиц ,содержащих данные о BPB и данные о PartitionTable нулевыми значениями. Заполнение таблиц нулевыми значениями
2 Выбран носитель отсутствующий в списке активных носителей Заполнение таблиц ,содержащих данные о BPB и данные о PartitionTable нулевыми значениями. Заполнение таблиц нулевыми значениями
3 Если не удалось создать дескрипторы файлов, отождествляющих жёсткий и логический диски.

Вывод сообщения :

«Не удалось создать дескрипторы носителя»

Вывод сообщения :

«Не удалось создать дескрипторы носителя»

4 Выбран активный носитель и дескрипторы носителя успешно созданы. Вывод данных о блоке параметров Bios , PartitionTable и расшифрованных значений в специальные таблицы. Заполнение таблиц всеми необходимыми данными о носителе.

3)Тестирование процедуры, выполняющей считывание блока параметров Bios(Рисунок 4.8).

(Этап выполнения программы 3 , событие «С2»).

Предусловие: Дескрипторы должны быть созданы.

Постусловие: Файловая система должна быть FAT32.

Рисунок 4.8 –Дерево разбиений для процедуры, выполняющей считывание блока BPB для выбранного носителя.

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Дескрипторы не созданы. Вывод сообщения «Не удалось считать блок параметров Bios» Вывод сообщения «Не удалось считать блок параметров Bios»
2 Файловая система отличается от FAT32. Заполнение таблицы расшифровки BPB неверными значениям , например : «Количество FAT : 0» Заполнение таблицы содержащей расшифрованные данные о BPB неверными значениям: «Количество FAT : 0»
3 Файловая система FAT32 Заполнение таблицы расшифровки верными значениями, например: «количество FAT : 2» Заполнение таблицы расшифровки верными значениями: «количество FAT : 2»

4)Тестирование процедуры, считывающей таблицу разделов жёсткого диска(Рисунок 4.9).

(Этап выполнения программы 3 , событие «С3»).

Предусловие: Программа должна быть запущена от имени администратора.

Постусловие: Дескрипторы должны быть созданы.

Рисунок 4.9 – Дерево разбиений для процедуры считывающей таблицу разделов носителя.

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Программа запущена не от имени администратора. Заполнение полей таблицы расшифровки нулевыми значениями. Заполнение полей таблицы расшифровки нулевыми значениями.
2 Дескрипторы не созданы

Вывод сообщения:

«Не удалось считать PartitionTable»

Вывод сообщения:

«Не удалось считать PartitionTable»

3 Дескрипторы созданы Заполнение таблицы расшифровки верными значениями, например: «Размер раздела {: 61432497 }» Заполнение таблицы расшифровки верными значениями «Размер раздела {: 61432497 }»

5)Тестирование процедуры работы потока.(Рисунок 4.10).

Предусловие: 1.Поток должен быть запущен.

2.Средства синхронизации созданы.

Постусловие: Файл проецируемый в память должен быть успешно создан.


Рисунок 4.10 – Дерево разбиений для процедуры работы потока.

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Средства синхронизации не созданы. Вывод сообщения «не удалось осуществить обмен сообщениями» Вывод сообщения «не удалось осуществить обмен сообщениями»
2 Проекция файла не создана. Вывод сообщения «не удалось отобразить файл на адресное пространство» Вывод сообщения «не удалось отобразить файл на адресное пространство»
3

Проекция файла создана.

Было введено сообщение

«Отправлено»

Вывод сообщения :

«Отправлено»

Вывод сообщения :

«Отправлено»

4. Эксплуатационные документы