Download - Automated testing patterns

Transcript
Page 1: Automated testing patterns

Основано на теории, практике, размышлениях, Lessons Learned

Automated testing patterns

Page 2: Automated testing patterns

Несколько слов о себеВ тестировании с 2004

годаВ настоящее время

работаю в GlobalLogicАвтоматизировал на Test

Complete, UI Automation (VS2008, C# + .NET + WPF)

Люблю свою работу Веду блог:

testingforall.com

Page 3: Automated testing patterns

Record-PlayFunctional DecompositionDDT/ODTФреймворкиЛогирование

О чем это все

Page 4: Automated testing patterns

Шаблон или модель, позволяющая выработать общее решение для набора задач.

Паттерн должен быть достаточно абстрактным, чтобы быть применимым ко множеству задач и дать свободу действий в реализации, не отклоняясь от сущности паттерна

Паттерн должен обладать четким набором характеристик, без наличия которых он теряет свою сущность.

Паттерн

Page 5: Automated testing patterns

Суть: нажали запись, сделали действия, нажали стоп => получили скрипт

Когда имеет смысл использовать:Знакомство с инструментомВы – начинающий автоматизатор

(осторожно!)Поймать сложный элемент или

посмотреть, как инструмент предлагает решить то, что вызывает сомнения (цель – посмотреть и понять)

Нужна «одноразовая» автоматизация чего-то

Record-Play

Page 6: Automated testing patterns

Недостатки:Плохая читаемость кодаНевозможно поддерживать и расширятьНе позволяет работать командно

(несколько человек, работая с одним модулем, создадут свалку)

Изменение в приложении может вызвать коллапс «фреймворка»

Record-Play

Page 7: Automated testing patterns

Суть: разбили скрипты на функции/методы, разнесли по файлам, структурировали.

Functional Decomposition

Page 8: Automated testing patterns

Суть: разбили скрипты на функции/методы, разнесли по файлам, структурировали.

Functional Decomposition

Page 9: Automated testing patterns

Суть: разбили скрипты на функции/методы, разнесли по файлам, структурировали.

Functional Decomposition

Page 10: Automated testing patterns

Подходит, когда:Функциональная команда (каждый пишет

свое)Разный уровень автоматизаторов в команде

(синьйоры пишут фреймворк, юниоры пишут тесты на базе фрейморка)

Сложности:Спроектировать структуру фреймворкаОтвязать тесты от изменений

Functional Decomposition

Page 11: Automated testing patterns

Особенности:Само по себе вынесение тестовых данных

за пределы скрипта – это еще не DDTDDT подходит не для всех проектов и не

для всех задачЦентр внимания сконцентрирован вокруг

данных

Data Driven Testing (DDT)

Page 12: Automated testing patterns

Data Driven Testing (DDT)Вынесение данных за пределы скрипта:

DDT:

Page 13: Automated testing patterns

Data Driven Testing (DDT)Что еще можно сделать?

Page 14: Automated testing patterns

Data Driven Testing (DDT)Functional Decomposition:

Page 15: Automated testing patterns

Data Driven Testing (DDT)DDT:

Page 16: Automated testing patterns

Data Driven Testing (DDT)Особенности DDT:Возможность трассировать требования на тестовые

данные, огибая саму имплементацию тестовВозможность разделить составление тест дизайна

от написания кода тестовВозможность изменять тестовые данные, не трогая

при этом код (полезно для регресионных тестов)Возможность генерировать случайные данные

(валидные – проще, невалидные – сложнее, но возможно) и гонять на них тесты в режиме non-stop

Page 17: Automated testing patterns

Data Driven Testing (DDT)DDT подходит, если:В проекте много сущностей с большим числом входных

данных (поля регистрации, добавления чего-то и т.п.)Есть кому составлять тестовые данные (не должно

демотивировать), есть кому писать фреймворк (он обычно сложнее, чем при FD)

DDT не подходит для:Проверки workflow-based требований или

функциональностиТестов для графики (визуализация чего-то, layout,

картинки и т.п.)

Page 18: Automated testing patterns

Object Driven testing (ODT)Особенности:Центром внимания является объект

Подходит, если:Приложение содержит много

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

Сложности:Архитектура фреймворка под ODT – очень не

тривиальная задачаБоязнь изменений

Page 19: Automated testing patterns

Object Driven testing (ODT)

Page 20: Automated testing patterns

Object Driven testing (ODT)Пример:

Page 21: Automated testing patterns

Object Driven testing (ODT)Преимущества:Позволяет «держать в памяти» текущий

объект => облегченное логирование в случае ошибок

Позволяет существенно уменьшить параметризацию методов

Page 22: Automated testing patterns

Логирование: что, какЧто логировать?Как логировать?Как это выглядит во фреймворке?

Page 23: Automated testing patterns

Логирование: что, как

Tests HelpersForms Controls

Log level 1 Log level 2 Log level 3

Page 24: Automated testing patterns

Логирование: что, как

Page 25: Automated testing patterns

Логирование: что, как

Page 26: Automated testing patterns

Логирование: что, как

Page 27: Automated testing patterns

Логирование: что, как

Page 28: Automated testing patterns

На этом все. Спасибо за внимание

Questions?