Тестирование – важная часть процесса создания ПО, которая позволяет определить, достигли ли мы конечной точки нашей работы.

Методы тестирования

  • ручное
  • автоматическое

Ручное тестирование – естественный процесс, который органично связан с разработкой. Программисты выполняют его сотни раз, но для качественного ручного тестирования нужен отдельный человек, со свежим взглядом на жизнь и желанием “сломать” программу, подвергая её жестокому обращению: ввод некорректных данных, кликанье мышкой куда попало, запуск отчётов с немыслимыми параметрами и т.д.

Автоматическое тестирование – это процесс, который пытаются отложить до момента, когда без него не удаётся добиться требуемого качества программного продукта. К сожалению, к этому моменту стоимость внедрения систем автоматического тестирования может оказаться сравнима со стоимостью самого проекта. Чем дольше жизненный цикл проекта, чем больше людей вовлечено в него, тем раньше нужно внедрять систему автоматического тестирования. В идеале – в самом начале проекта, с первыми строками кода.

Виды тестирования:

  • модульное
  • функциональное

МОДУЛЬНОЕ ТЕСТИРОВАНИЕ

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

Реализация

Для каждого тестируемого модуля необходимо создать ещё один модуль, содержащий тестовые задания. Этот модуль имеет:

  • метод запуска подтестов
  • метод протоколирования

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

Пример

// состояние теста
TTestState = ( tsUnknow, tsOK, tsFault, tsExecute );

// базовый элемент тест
TBaseTest = class
private
  FState: TTestState; // текущее состояние
protected
  // обновить индикатор состояния
  procedure SetState(Value:TTestState); virtual; 
  // функционал теста
  function ExecuteTest:TTestState; virtual; abstract; 
  // логирование
  procedure AddToLog(value:string);
public
  // строковый идентификатор
  Name: string; 
  // название - отображается в дереве
  Caption: string; 
  // описание теста
  Description: string; 
  // связь с элементом структуры
  Node: TTreeNode; 
  // текущее состояние
  property State: TTestState read FState write SetState;
  constructor Create;
  // выполнение теста
  procedure Execute; virtual;
end;

// группа тестов
TTestGroup = class(TBaseTest)
protected
  procedure SetState(Value:TTestState); override;
public
  procedure Execute; override; 
end;Code language: Delphi (delphi)

ФУНКЦИОНАЛЬНОЕ ТЕСТИРОВАНИЕ

Подходит для комплексного тестирования программы. Ориентировано на техническое задание (требования к программе): каждый тест отвечает на вопрос, работает ли определенный  функционал в системе или нет.

Реализация

Хорошо зарекомендовал себя подход, при котором в тестируемую систему встраивается интерпретатор скрипта выполнения. Скрипт выполнения – запись последовательности действий пользователя и методов контроля их выполнения. Такой подход позволяет писать функциональные тесты без привязки к элементам графического интерфейса (расположение кнопок, пунктов меню), но подразумевает, что для тестирования GUI используются другие методики ( ручное тестирование или скрипты для кликанья мышкой / нажатия клавиш ).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *