пятница, 15 ноября 2013 г.

GUI-тестирование "по русски". Back to the basics

Мне тут написали, что мол "вы пишете в формате лекции, а хотелось бы в формате семинара".

Попробую в формате семинара. (Не закончено)


Итак.

Тезисы:
1. тест должен быть линейным
2. похожим на тест-кейс
3. читаться человеком
4. оперировать терминами предметной области

Попробую теперь сделать законченный пример в "классическом RAD-стиле".

Ну и в некотором смысле "в стиле XP" - http://18delphi.blogspot.ru/2013/04/blog-post.html

Там где что-то непонятно, что делать - буду писать Assert.

Пример доступен тут - https://sourceforge.net/p/rumtmarc/code-0/HEAD/tree/trunk/Blogger/GUITests/Chapter0/

Сделаем форму TForm1 с кнопками Button1, Button2, Button3 и строкой ввода Edit1.

Сделаем это для пущей "рекламы" и "новизны подхода" на FM.

Итак наша форма:

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.


И её 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

Пока читатели могут просмотреть sketch кода. И комментарии к коммитам.

Комментариев нет:

Отправить комментарий