Original in Russian: http://18delphi.blogspot.ru/2013/11/gui-back-to-basics.html
GUI-testing. Table of contents
They wrote to me that I “write in lecture and it would be better in seminar”..
I’ll try the seminar. (Not finished)
So.
The main points:
1. Test has to be benchmark, anchor test
2. looking like test-case
3. readable for a human being
4. Making use of terms of application environment
(we’ll get back to these points again)
I’ll try to make a finished example in “classic RAD-style”.
And in some way “in XP style” - http://18delphi.blogspot.com/2015/02/about-rs-time-pressure-and-forgetting.html.
If it is not clear what to do I will write Asserts.
The example is available here - https://sourceforge.net/p/rumtmarc/code-0/HEAD/tree/trunk/Blogger/GUITests/Chapter0/
Let’s create a form TForm1 with buttons Button1, Button2, Button3 and an input stream Edit1.
Thus, we add “publicity” and “novelty of the approach” on FM.
So, our form:
And its fmx:
Meanwhile, the readers can look at code sketch. And the commentaries to commits.
GUI-testing. Table of contents
They wrote to me that I “write in lecture and it would be better in seminar”..
I’ll try the seminar. (Not finished)
So.
The main points:
1. Test has to be benchmark, anchor test
2. looking like test-case
3. readable for a human being
4. Making use of terms of application environment
(we’ll get back to these points again)
I’ll try to make a finished example in “classic RAD-style”.
And in some way “in XP style” - http://18delphi.blogspot.com/2015/02/about-rs-time-pressure-and-forgetting.html.
If it is not clear what to do I will write Asserts.
The example is available here - https://sourceforge.net/p/rumtmarc/code-0/HEAD/tree/trunk/Blogger/GUITests/Chapter0/
Let’s create a form TForm1 with buttons Button1, Button2, Button3 and an input stream Edit1.
Thus, we add “publicity” and “novelty of the approach” on FM.
So, our form:
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Edit; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Run: TButton; procedure Button1Click(Sender: TObject); procedure RunClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Script.Engine ; {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := (Sender As TButton).Text; end; procedure TForm1.RunClick(Sender: TObject); begin TScriptEngine.RunScript('FirstScript.script'); end; end.
And its fmx:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 480 ClientWidth = 640 FormFactor.Width = 320 FormFactor.Height = 480 FormFactor.Devices = [dkDesktop, dkiPhone, dkiPad] DesignerMobile = False DesignerWidth = 0 DesignerHeight = 0 DesignerDeviceName = '' DesignerOrientation = 0 object Button1: TButton Height = 22.000000000000000000 Position.X = 24.000000000000000000 Position.Y = 24.000000000000000000 TabOrder = 0 Text = 'Button1' Width = 80.000000000000000000 OnClick = Button1Click end object Button2: TButton Height = 22.000000000000000000 Position.X = 24.000000000000000000 Position.Y = 64.000000000000000000 TabOrder = 1 Text = 'Button2' Width = 80.000000000000000000 OnClick = Button1Click end object Button3: TButton Height = 22.000000000000000000 Position.X = 24.000000000000000000 Position.Y = 104.000000000000000000 TabOrder = 2 Text = 'Button3' Width = 80.000000000000000000 OnClick = Button1Click end object Edit1: TEdit TabOrder = 3 Position.X = 136.000000000000000000 Position.Y = 24.000000000000000000 Width = 100.000000000000000000 Height = 22.000000000000000000 KillFocusByReturn = False end object Run: TButton Height = 22.000000000000000000 Position.X = 24.000000000000000000 Position.Y = 144.000000000000000000 TabOrder = 4 Text = 'Run' Width = 80.000000000000000000 OnClick = RunClick end end
Meanwhile, the readers can look at code sketch. And the commentaries to commits.
Комментариев нет:
Отправить комментарий