Тестирование программного средства




 

Цикл разработки программного обеспечения включает в себя стадию тестирования. На данном этапе проводится проверка работоспособности программы, причем не только в нормальных условиях, но и в критических - нехватка системных ресурсов, намеренные ошибки во входных данных и пр. Также проверятся корректное и своевременное освобождение всех ресурсов, занятых приложением. При нахождении недочетов в программе они исправляются - пересматривается исходный код соответствующих модулей, находятся и исправляются недоработки.

При своей работе программа потребляет определенное количество ресурсов системы, таким образом, для ее запуска необходимо, чтобы данные ресурсы были свободны и предоставлены ей для работы. Из них программе необходимы свободное место на жестком диске компьютера для размещения файлов непосредственно самой программы, файла базы данных и вспомогательных файлов, а также используемых библиотек; определенное количество оперативной памяти для запуска процесса программы; процессор компьютера, который используется для нужд вычислений; из программного обеспечения необходима любая 32-разрядная версия Windows, под управлением которой работает приложение.

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

процессор AMD Duron 800MGh;

128 Mb оперативной памяти SDRAM;

видеокарта GeForce 4MX 64 Mb памяти;

20 Gb винчестер Samsung SP0212N, из них на системном диске свободны 200 Mb для размещения файла виртуальной памяти;

CD-RW Teac CRX, который используется для инсталляции программы;

3,5" флоппи-дисковод, который также может быть использован для установки приложения;

17" монитор с разрешением 1024x768 и глубиной цвета 32 бита на пиксель;

операционная система Windows XP.

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

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

В момент прохождения стадии тестирования в программе были найдены и устранены мелкие недостатки.

После тестирования были построены финальная версия программы и программа-установщик. Данное приложение готово к использованию.

В ходе испытаний была доказана полная совместимость и правильность работы программного средства с Windows ХР.

 


Заключение

 

Разработанный пакет программного обеспечения позволит ускорить, автоматизировать работу по нахождению значений временного поведения системы: колебаний массы с гидравлическим демпфером.

Программный продукт реализован на языке высокого уровня Borland Delphi 7.0.

В разработанном программном средстве реализовано использование динамической библиотеки DLL, организован экспорт данных в электронный таблицы Microsoft Excel. К программному средству прилагается справочная информация по использованию.

программа гидравлический демпфер delphi


Список использованной литературы

 

1. А.М. Епанешников, В.А. Епанешников Программирование в среде Delphi.-М.:»Диалог МИФИ», 1998.

2. Бобровский С. Delphi 5: учебный курс- СПб: Издательство «Питер», 2000.- 640с.

. Гринчишин Я.Т. и др. Алгоритмы и программы на Бейсике: Учеб. Пособие для студентов пед. Ин-тов по физ.-мат. Спец./Я.Т.Гринчишин, В.И. Ефимов, А.Н. Ломакович.-М.: Просвещение, 1988.- 160 с.

. Дарахвелидзе П.Г., Марков Е.П. Delphi 4.-СПб.: БХВ-Санкт-Петербург, 1999.- 816 с.

. Елмакова Н., Трепалин С., Тенцер А. Delphi 6 и технология COM.-СПб.: Питер, 2002. - 640 с.

6. Марко Кэнту. Delphi 5 для профессионалов.-СПб.: Питер. 2001. - 944 с.

7. Фаронов В.В. Delphi 6. Учебный курс.-М.: Издатель Молгачева С.В., 2001.-672с.

8. Федоров А.. Delphi 5.0 для всех. -М.: Тоо фирма “КомпьютерПресс”, 1998. - 464 с.

 


Приложения

 

Листинг программных модулей

 

// Project1.dpr - файл проекта.

program Project1;,in 'Unit1.pas' {Form1},in 'Unit2.pas' {Logo},_class in 'Kursuv_class.pas';

{$R *.res}.Initialize;.CreateForm(TForm1, Form1);.CreateForm(TLogo, Logo);.Run;.

// Unit1.pas - главная форма программы.

// главная форма программы.

unit Unit1;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, Menus, ToolWin, ActnMan, ActnCtrls, Grids, IniFiles,_class, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, PowerPointXP, ExcelXP, OleServer, WordXP, ComObj, ActiveX,ShellAPI;

// процедура вызова окна о программе из DLL

procedure ShowAbout(Handle: THandle)stdcall;

function N_dann(u,l,Q_,z,H,d:double):double;

type= class(TForm): TBitBtn;: TMainMenu;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TStringGrid;: TGroupBox;: TEdit;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TStatusBar;: TToolBar;: TMenuItem;: TChart;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TImageList;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TImageList;: TImageList;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TWordApplication;: TExcelApplication;: TPowerPointApplication;: TWordDocument;: TToolButton;: TToolButton;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TLabel;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TEdit;: TLabel;: TLabel;: TEdit;: TLabel;: TLabel;: TEdit;: TLabel;: TLineSeries;FormShow(Sender: TObject);Button2Click(Sender: TObject);Button4Click(Sender: TObject);ToolButton1Click(Sender: TObject);ToolButton2Click(Sender: TObject);ToolButton4Click(Sender: TObject);ToolButton6Click(Sender: TObject);ToolButton5Click(Sender: TObject);ToolButton11Click(Sender: TObject);ToolButton13Click(Sender: TObject);ToolButton12Click(Sender: TObject);ToolButton10Click(Sender: TObject);N5Click(Sender: TObject);N4Click(Sender: TObject);N15Click(Sender: TObject);N16Click(Sender: TObject);N17Click(Sender: TObject);N12Click(Sender: TObject);

{ Private declarations }ShowHint(Sender: TObject);Proverka(Sender: TObject):boolean;

{ Public declarations };

//---------------------------------------------: TForm1;: TKurs; // объявление созданного класса

// процедура вызова окна о программе из DLL

procedure ShowAbout; external 'ProjectDLL.DLL' index 10;N_dann(u,l,Q_,z,H,d:double):double; external 'ProjectDLL.DLL' index 11;Unit2, about3;

{$R *.dfm}

// перед показом клавной формы, показывается заставка

// и проводится настройка окна программы.

procedure TForm1.FormShow(Sender: TObject);.showmodal;.OnHint:=ShowHint;1.ColWidths[2]:=180;

end;

// функция проверки заполнеия исходными данными полей на форме

function TForm1.Proverka(Sender: TObject):boolean;(Form1.Edit100.Text='') or (Form1.Edit107.Text='')or(Form1.Edit108.Text='')or

(Form1.Edit101.Text='') or (Form1.Edit102.Text='') or(Form1.Edit109.Text='')or

(Form1.Edit103.Text='') or (Form1.Edit104.Text='') or

(Form1.Edit105.Text='') or (Form1.Edit106.Text='') then:=false:=true;;

// при нажатии Справка о программе либо на панели инструментов соответствующей кнопки

procedure TForm1.N4Click(Sender: TObject);

ShowAbout(Handle);

end;

// при нажати записи в ini файл происходить вызов метода созданного класса.

procedure TForm1.Button2Click(Sender: TObject);

Kurs.WriteIniFile;

end;

// при нажатии кнопки закрытие программы

procedure TForm1.N5Click(Sender: TObject);;;

// очистка графикаTForm1.Button4Click(Sender: TObject);

Series1.Clear;

end;

// включение контекстной помощи (передача в строку состояния, справочной информации)

procedure TForm1.ShowHint(Sender: TObject);.SimpleText:=Application.Hint;;

// запуск презентации программы.TForm1.N12Click(Sender: TObject);: OLEVariant;: String;:=ExtractFilePath(Application.ExeName)+'Prezent.ppt';:= CreateOleObject('PowerPoint.Application');('Error...');;;.Visible:= True;.Presentations.Open(FilePr, False, False, True);;

// чтение ini файла.TForm1.ToolButton1Click(Sender: TObject);.ReadIniFile;;

//TForm1.ToolButton2Click(Sender: TObject);.WriteIniFile;;

//процедура расчета значений системыTForm1.ToolButton4Click(Sender: TObject);Proverka(Sender) then.Raszet;;

// Процедура очистка всех полей, графика, и таблицы результатов

procedure TForm1.ToolButton6Click(Sender: TObject);.Clear;.RowCount:= 1;.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';110.Text:='';

end;

// очистка полей с исходной информацией

procedure TForm1.N15Click(Sender: TObject);.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';110.Text:='';

end;

// очистка таблицы с результатами

procedure TForm1.N16Click(Sender: TObject);.RowCount:= 1;;

// очистка графикаTForm1.N17Click(Sender: TObject);.Clear;;

// рисование графика.TForm1.ToolButton5Click(Sender: TObject);Proverka(Sender) then.Raszet;.Draw;;;

// запуск Ворда и пояснительной записки

procedure TForm1.ToolButton11Click(Sender: TObject);,ConfirmConversions,ReadOnly,AddToRecentFiles,,PasswordTemplate,Revert,WritePasswordDocument,,Format,EmptyParam: OleVariant;.Connect;.Visible:=true;

// открываем шаблон документа:=ExtractFilePath(Application.ExeName)+'ПЗ.doc';:=False;:=False;:=False;

PasswordDocument:='';:='';:=False;

WritePasswordDocument:='';:='';:=0;.Documents.Open(FileName,ConfirmConversions,ReadOnly,,PasswordDocument,PasswordTemplate,Revert,WritePasswordDocument,,Format,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

// связываем компонент с существующим интерфейсом.ConnectKind:=ckAttachToInterface;.ConnectTo(WordApplication1.ActiveDocument);;

// запуск презентацииTForm1.ToolButton13Click(Sender: TObject);: OLEVariant;: String;:=ExtractFilePath(Application.ExeName)+'Prezent.ppt';:= CreateOleObject('PowerPoint.Application');('Error...');;;.Visible:= True;.Presentations.Open(FilePr, False, False, True);;

// сооздание документа Excel и перенос в него таблицы результатов

procedure TForm1.ToolButton12Click(Sender: TObject);, Sheet, Colum, Chart:Variant;, i,n: integer;xl3DColumn=4;=2;

begin

// создание документа. Лист с именем Отчет

XLApp:= CreateOleObject('Excel.Application');.Visible:= True;.Workbooks.Add(-4167);.Workbooks[1].WorkSheets[1].Name:='Отчет';:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns;.Columns[3].ColumnWidth:=30;:=XLApp.Workbooks[1].WorkSheets['Отчет'];:=StringGrid1.RowCount;

// перенос результатовi:=1 to n-1 do.Cells[i+1,1]:=StringGrid1.Cells[0,i];.Cells[i+1,2]:=StringGrid1.Cells[1,i];.Cells[i+1,3]:=StrtoFloat(StringGrid1.Cells[2,i]);;

// добавление графика в таблицу Ексель

XLApp.Charts.Add;.Charts[1].Activate;:=XLApp.Charts.Item[1];.ChartType:=xl3DColumn;.SetSourceData(Source:=XLApp.ActiveWorkbook.Sheets.Item['Отчет'].Range['B1:C1000'],:=xlColumns);

end;

// вызов справочной информации

procedure TForm1.ToolButton10Click(Sender: TObject);(Handle, 'open', '1.chm',nil, nil, SW_SHOWNORMAL);;.

// Unit2.pas модуль заставкиUnit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, jpeg, StdCtrls,Registry;= class(TForm): TTimer;: TImage;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;Timer1Timer(Sender: TObject);FormCreate(Sender: TObject);FormKeyPress(Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TLogo;

{$R *.dfm}

// по истечению таймера заставка закрывается. таймер на 5 сек.

procedure TLogo.Timer1Timer(Sender: TObject);

begin;;

// форма заставки когда заставка созданна она должна закрыться

procedure TLogo.FormCreate(Sender: TObject);

begin;;

// форма заставки если нажата клафиша закрыть заставку

procedure TLogo.FormKeyPress(Sender: TObject; var Key: Char);;;

.

// Kursuv_class.pas созданный класс

// созданный класс

unit Kursuv_class;

interface= object,tk,hag:double;

// p,k,m,Q,h:double;,m1,m2,q0,q,l,u,H,k,Mas,z,d:double;

c_,n_,Q_,w_,A_,T_,V_,wt:double;, C1, C2:double;g_f(t: double):double;

{ Private declarations }Create;ReadIniFile;WriteIniFile;Raszet;Draw;

{ Public declarations };RoundEx(chislo: double; Precision: Integer): string;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, Menus, ToolWin, ActnMan, ActnCtrls, Grids, IniFiles,1, Math;

// запись информации в закрытые поля класса

procedure TKurs.Create;:=StrToFloat(Form1.Edit100.Text);:=StrToFloat(Form1.Edit101.Text);:=StrToFloat(Form1.Edit102.Text);:=StrToFloat(Form1.Edit103.Text);:=StrToFloat(Form1.Edit104.Text);:=StrToFloat(Form1.Edit105.Text);:=StrToFloat(Form1.Edit106.Text);:=StrToFloat(Form1.Edit107.Text);:=StrToFloat(Form1.Edit108.Text);:=StrToFloat(Form1.Edit109.Text);:=StrToFloat(Form1.Edit110.Text);:=StrToFloat(Form1.Edit111.Text);:=StrToFloat(Form1.Edit112.Text);:=StrToFloat(Form1.Edit113.Text);;

// процес записи информации в ini файл

procedure TKurs.WriteIniFile;ini: TIniFile;(Form1.Edit100.Text='') or (Form1.Edit107.Text='')or(Form1.Edit108.Text='')or

(Form1.Edit101.Text='') or (Form1.Edit102.Text='') or (Form1.Edit109.Text='')or

(Form1.Edit103.Text='') or (Form1.Edit104.Text='') or (Form1.Edit110.Text='')or

(Form1.Edit105.Text='') or (Form1.Edit106.Text='') then.MessageBox('Заполните все поля!!!','Замечание!')

else:=TIniFile.Create('ini.ini');.WriteFloat('Data','m',StrToFloat(Form1.Edit100.Text));.WriteFloat('Data','u',StrToFloat(Form1.Edit101.Text));.WriteFloat('Data','l',StrToFloat(Form1.Edit102.Text));.WriteFloat('Data','q',StrToFloat(Form1.Edit103.Text));.WriteFloat('Data','H',StrToFloat(Form1.Edit104.Text));.WriteFloat('Data','k',StrToFloat(Form1.Edit105.Text));.WriteFloat('Data','m1',StrToFloat(Form1.Edit106.Text));.WriteFloat('Data','m2',StrToFloat(Form1.Edit107.Text));.WriteFloat('Data','q0',StrToFloat(Form1.Edit108.Text));.WriteFloat('Data','z',StrToFloat(Form1.Edit109.Text));.WriteFloat('Data','d',StrToFloat(Form1.Edit110.Text));.WriteFloat('Data','t0',StrToFloat(Form1.Edit111.Text));.WriteFloat('Data','tk',StrToFloat(Form1.Edit112.Text));.WriteFloat('Data','hag',StrToFloat(Form1.Edit113.Text));.Free;;;

// чтение ini файлаTKurs.ReadIniFile;ini: TIniFile;:=TIniFile.Create('ini.ini');:=ini.ReadFloat('Data','m',0);.Edit100.Text:=FloatToStr(m);:=ini.ReadFloat('Data','u',1);.Edit101.Text:=FloatToStr(u);:=ini.ReadFloat('Data','l',1);.Edit102.Text:=FloatToStr(l);:=ini.ReadFloat('Data','q',1);.Edit103.Text:=FloatToStr(q);:=ini.ReadFloat('Data','H',1);.Edit104.Text:=FloatToStr(H);:=ini.ReadFloat('Data','k',1);.Edit105.Text:=FloatToStr(k);:=ini.ReadFloat('Data','m1',1);.Edit106.Text:=FloatToStr(m1);:=ini.ReadFloat('Data','m2',1);.Edit107.Text:=FloatToStr(m2);:=ini.ReadFloat('Data','q0',1);.Edit108.Text:=FloatToStr(q0);:=ini.ReadFloat('Data','z',1);.Edit109.Text:=FloatToStr(z);:=ini.ReadFloat('Data','d',1);.Edit110.Text:=FloatToStr(d);

t0:=ini.ReadFloat('Data','t0',1);

Form1.Edit111.Text:=FloatToStr(t0);:=ini.ReadFloat('Data','tk',1);.Edit112.Text:=FloatToStr(tk);:=ini.ReadFloat('Data','hag',1);.Edit113.Text:=FloatToStr(hag);.Free;

end;

// функция системы зависящая от времени

function TKurs.g_f(t: double):double;

begin(n_<w_)then_:=sqrt(q0*q0+q0*q0/(w_*w_));:= ArcTan(w_*q0/q0);:=sqrt(w_*w_-n_*n_);_f:=A_*exp(n_*t)*sin(wt*t+b);;(n_>w_)then:=sqrt(n_*n_-w_*w_);_f:=exp(-n_*t)*(((q0*(wt+n_)+q0)/(2*wt))*exp(2*t)+((q0*(wt-n_)-q0)/(2*wt))*exp(2*wt*t));;(n_=w_)then:=(q0*(wt+n_)+q0)/(2*wt);:=(q0*(wt-n_)-q0)/(2*wt);_f:=exp(-n_*t)*(C1*t+C2);;

end;

// процедура расчета системы и записи полученной информации в таблицу

procedure TKurs.Raszet;i:integer;,temp: double;;:=t0;

i:=0;

Mas:=m+m1+m2; // сичаем массу

Q_:=Mas*9.81; // вес всей колеблющейся системы (груз, поршень и поршневой шток)

n_:=N_dann(u,l,Q_,z,H,d);

c_:=128*u*l*q*q/(3.14*power(d,4));

w_:=sqrt(k/Mas);:=(tk-t0)/hag;

Form1.StringGrid1.RowCount:= 1;.StringGrid1.RowCount:=round(temp)+2;.StringGrid1.Cells[0,0]:=' № ';.StringGrid1.Cells[1,0]:=' t= ';.StringGrid1.Cells[2,0]:=' x(t)= ';(ti<=(tk+hag/2)) do.StringGrid1.Cells[0,i+1]:=IntToStr(i+1);.StringGrid1.Cells[1,i+1]:=FloatToStr((Round(ti*10))/10);.StringGrid1.Cells[2,i+1]:=FloatToStr(g_f((Round(ti*10))/10));(i);:=ti+hag;;;

// рисование графикаTKurs.Draw;: double;:=t0;(ti<=tk) do.Series1.AddXY(ti, strtofloat(RoundEx(g_f(ti),8)),'',clGreen);:=ti+hag;;;

// процедура округления значений до заданного количества цифр после запятой.

function RoundEx(chislo: double; Precision: Integer): string;: string;: currency;

ChisloInCurr:= chislo;(ChisloInCurr: 20: Precision, ChisloInStr);[Pos('.', ChisloInStr)]:= ',';

RoundEx:= Trim(ChisloInStr);;.

// файл about.pas для создания DLL файла с формой диалогового окна «О программе»

unit about;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, Math;= class(TForm)

Label1: TLabel;: TBitBtn;: TLabel;

Label4: TLabel;: TLabel;: TLabel;: TLabel;

{ Private declarations }

{ Public declarations };: TForm1;ShowAbout(Handle: THandle); export; stdcall;N_dann(u,l,Q_,z,H,d:double):double; export; stdcall;

{$R *.dfm}ShowAbout(Handle: THandle);

// установить указатель на приложение

Application.Handle:=Handle;

// создать форму:=TForm1.Create(Application);

// отобразить.ShowModal;

//очистить.Free;;N_dann(u,l,Q_,z,H,d:double):double;_dann:=(4 * 3.14 * 9.81 * u * l / (Q_*z))*power(H/d,4);.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: