Курсовая работа: Разработка вспомогательной системной программы в системе программирования Delphi с использованием средств WinApi
Путь 6: 1-2-3-4-5-4-5-6-7-8-10-11-12-13-14-7-8-9-10-11-13-14-15-16-18;
№ пути | Исходные данные | Ожидаемые результаты | Реальные результаты |
1 | Если не удалось считать Partition Table | Должно появиться сообщение о том , что не возможно считать Partition Table |
Вывод сообщения: «Не удалось считать Partition Table» |
2 | Происходить считывание элемента массива , который имеет номер отличающийся от 1 и от 16. | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» |
3 | Считывание элемента массива , который имеет номер 1 в строке таблицы | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» |
4 | Считывание элемента, который имеет последний номер в строке (16) | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» |
5 | Считывание данных из массива. При прохождении этого пути проверяется заполнение верхней строчки таблицы номерами от 0 до F. | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» |
6 | Считывание данных из массива. Когда элемент имеет номер 16 в строке, а последующий элемент имеет номер 1 в след. строке. | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» | Вывод данных, например: «Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }» |
Дополнительный тест
Тестирование алгоритма работы потока, который также относится к основному заданию курсового проекта.
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 | В поле ввода сообщения введено : «СЛОВО» | Вывод сообщения с содержимым «СЛОВО» в поле истории переписки |
В поле истории появится сообщение с текстом : «<имя введённое при авторизации> написал : СЛОВО» |