53
Scalable eCommerce Platform Solutions Архитектура автоматизированных тестов Алексей Лянгузов

Архитектура автоматизированных тестов

  • Upload
    sqalab

  • View
    2.143

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Архитектура автоматизированных тестов

Scalable eCommerce Platform Solutions

Архитектура автоматизированных тестов

Алексей Лянгузов

Page 2: Архитектура автоматизированных тестов

План

● Введение● Развитие архитектуры авто-тестов● Примеры● Выводы

Page 3: Архитектура автоматизированных тестов

Архитектура ПО

АрхитектураАрхитектура

ДизайнДизайн

ТребованияТребования

РеализацияРеализация

КомпонентыКомпоненты

API/PatternsAPI/Patterns

Код программыКод программы

http://www.sei.cmu.edu/architecture/start/glossary/

Page 4: Архитектура автоматизированных тестов

Архитектура ПО

АрхитектураАрхитектура

ДизайнДизайн

ТребованияТребования

РеализацияРеализация

КомпонентыКомпоненты

API/PatternsAPI/Patterns

Код программыКод программы

Автоматизированные тесты — это программный проект!Автоматизированные тесты — это программный проект!

Page 5: Архитектура автоматизированных тестов

WebServer

Архитектура тестируемого ПО

Программа(eCommerce platform)

Сервис

Чужой сервисАдминка

База

Сервис

Сервис

Сервис

Чужой сервис

20000+ авто-тестов

Page 6: Архитектура автоматизированных тестов

Наша ниша

~2500 авто-тестов

WebServer

Программа(eCommerce platform)

Сервис

Чужой сервисАдминка

База

Сервис

Сервис

Сервис

Чужой сервис

Page 7: Архитектура автоматизированных тестов

План

● Введение● Развитие архитектуры авто-тестов● Примеры● Выводы

Page 8: Архитектура автоматизированных тестов

Итак, первый тест

AppApp

Функции:● Доказательство того, что автоматизация возможна● Первая пробная реализация, обкатка идеи● Начало положено!

TestsTests

Page 9: Архитектура автоматизированных тестов

Библиотеки

AppApp

TestsTests

Функции:● Использование стандартных технологий● Протестированные и оптимизированные алгоритмы

LibsLibs

Совместные библиотеки (App и Test), должны быть Совместные библиотеки (App и Test), должны быть синхронизированы!синхронизированы!

Page 10: Архитектура автоматизированных тестов

Промежуточная картина

AppApp LibsLibs

TestsTests

Page 11: Архитектура автоматизированных тестов

Тестовый Framework

AppApp LibsLibs

TestsTests

Функции:● Генерация отчетов● Организация тестов (suites, tags etc)● Определение языка и формата написания тестов● Запуск тестов

TestFramework

TestFramework

Page 12: Архитектура автоматизированных тестов

TestFramework

TestFramework

Промежуточная картина

AppApp LibsLibs

TestsTests

Page 13: Архитектура автоматизированных тестов

TestFramework

TestFramework

Fixtures

AppApp LibsLibs

TestsTests

Функции:● Связь тестов с Framework-ом● Служебные функции, диктуемые как тестами (логикой), так и Framework-ом● Контроль исполнения тестовых действий

FixturesFixtures

http://www.ibm.com/developerworks/ru/edu/j-junit4/section4.html

Page 14: Архитектура автоматизированных тестов

TestFramework

TestFramework

Промежуточная картина

AppApp LibsLibs

FixturesFixtures

TestsTests

Page 15: Архитектура автоматизированных тестов

TestFramework

TestFramework

Тестовые данные

AppApp LibsLibs

FixturesFixtures

TestsTests

Функции:● Отвязывание реализации тестов и данных● Повторное использование данных● Структурирование и организация данных для тестов● Упрощение создания тестовых данных

TestDataTestData

Page 16: Архитектура автоматизированных тестов

TestFramework

TestFramework

Промежуточная картина

AppApp LibsLibsTestDataTestData

FixturesFixtures

TestsTests

Page 17: Архитектура автоматизированных тестов

TestFramework

TestFramework

Настройки

AppApp LibsLibsTestDataTestData

FixturesFixtures

TestsTests

Функции:● Настройка окружения выполнения тестов● Избавление от «Magic Numbers» и других «hardcoded» значений● Влияние на исполнение тестов извне (без переделки кода)● Возможность создавать параллельные реализации (старая-новая)

PropertiesProperties

Page 18: Архитектура автоматизированных тестов

TestFramework

TestFramework

Промежуточная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

FixturesFixtures

TestsTests

Page 19: Архитектура автоматизированных тестов

TestFramework

TestFramework

Конфигуратор

AppApp LibsLibs

PropertiesProperties

TestDataTestData

FixturesFixtures

TestsTests

Функции:● Настройка окружения выполнения тестов в целях конфигурационного тестирования● Упрощение работы с настройками (файлы, имена ключей итд)● Подготовка окружения (например, генерация security certificates)● Знания о Run-time окружении

ConfiguratorConfigurator

Page 20: Архитектура автоматизированных тестов

TestFramework

TestFramework

Промежуточная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

ConfiguratorConfigurator

FixturesFixtures

TestsTests

Page 21: Архитектура автоматизированных тестов

TestFramework

TestFramework

Общее тестовое стафло

AppApp LibsLibs

PropertiesProperties

TestDataTestData

ConfiguratorConfigurator

FixturesFixtures

TestsTests

Функции:● Хранит общие методы тестов● Отвечает за связь с приложением● Содержит всю тестовую логику

Данный компонент является временным и позднее будет Данный компонент является временным и позднее будет переименован!переименован!

CommonTest Stuff

CommonTest Stuff

Page 22: Архитектура автоматизированных тестов

TestFramework

TestFramework

Почти полная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

CommonTest Stuff

CommonTest Stuff

ConfiguratorConfigurator

FixturesFixtures

TestsTests

Page 23: Архитектура автоматизированных тестов

TestFramework

TestFramework

Менеджер данных

AppApp LibsLibs

PropertiesProperties

TestDataTestData

CommonTest Stuff

CommonTest Stuff

ConfiguratorConfigurator

FixturesFixtures

TestsTests

Функции:● Упрощает работу с тестовыми данными● Содержит логику обработки данных● Генерация данных

TestDataManager

TestDataManager

Page 24: Архитектура автоматизированных тестов

TestFramework

TestFramework

Полная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

CommonTest Stuff

CommonTest Stuff

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

Page 25: Архитектура автоматизированных тестов

TestFramework

TestFramework

Тестовые инструменты

AppApp LibsLibs

PropertiesProperties

TestDataTestData

CommonTest Stuff

CommonTest Stuff

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

Функции:● Содержит вспомогательные инструменты, используемые в тестах (helpers, tools, utils)

TestUtilities

TestUtilities

Не зависит ни от тестов ни от тестируемого приложения, может Не зависит ни от тестов ни от тестируемого приложения, может быть переиспользован в другом проекте!быть переиспользован в другом проекте!

Page 26: Архитектура автоматизированных тестов

TestFramework

TestFramework

Полная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

TestUtilitiesTest

Utilities

CommonTest Stuff

CommonTest Stuff

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

Page 27: Архитектура автоматизированных тестов

TestFramework

TestFramework

Связь с программой

AppApp LibsLibs

PropertiesProperties

TestDataTestData

TestUtilitiesTest

Utilities

CommonTest Stuff

CommonTest Stuff

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

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

AppInterfaces

AppInterfaces

Page 28: Архитектура автоматизированных тестов

TestFramework

TestFramework

Полная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

TestUtilitiesTest

Utilities

TestCoreTestCore

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

AppInterfaces

AppInterfaces

Page 29: Архитектура автоматизированных тестов

TestFramework

TestFramework

Расширения Framework-а

AppApp LibsLibs

PropertiesProperties

TestDataTestData

TestUtilitiesTest

UtilitiesAppInerfaces

AppInerfaces

TestLogicTest

Logic

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

Функции:● Расширяет тестовый Framework , добавляя нестандартные методы и функции● Исправляет существующие ошибки в тестовом Framework-е (особенно если Framework с открытыми исходниками)● Интеграция с другими приложениями (например, Jenkins-plugin для тестового Framework-а)

Framework AddonsFramework Addons

Page 30: Архитектура автоматизированных тестов

TestFramework

TestFramework

Финальная картина

AppApp LibsLibs

PropertiesProperties

TestDataTestData

TestUtilitiesTest

Utilities

Framework AddonsFramework Addons

TestCoreTestCore

ConfiguratorConfigurator

FixturesFixtures

TestDataManager

TestDataManager

TestsTests

third-party code, usually not-modifiableour test related codeusually not a code, structured text or othertest code, might be DSL or parsable text

AppInterfaces

AppInterfaces

depends on uses

Page 31: Архитектура автоматизированных тестов

План

● Введение● Развитие архитектуры авто-тестов● Примеры● Выводы

Page 32: Архитектура автоматизированных тестов

Структура каталогов

Page 33: Архитектура автоматизированных тестов

Структура каталогов: зачем?

Page 34: Архитектура автоматизированных тестов

Структура каталогов: затем!

Page 35: Архитектура автоматизированных тестов

Точка приложения теста

http://localhost:8080/myapp?parameters

AppAppWebServerWebServer ServiceService

Submit

Page 36: Архитектура автоматизированных тестов

Точка приложения теста

HttPServlet.get(parameters)

AppAppWebServerWebServer ServiceService

Page 37: Архитектура автоматизированных тестов

Точка приложения теста

Service.doIt(parameters)

AppAppWebServerWebServer ServiceService

Page 38: Архитектура автоматизированных тестов

Точка приложения теста

return someResult;

AppAppWebServerWebServer ServiceService

Page 39: Архитектура автоматизированных тестов

Точка приложения теста

return ResultAdapter(someResult);

AppAppWebServerWebServer ServiceService

Page 40: Архитектура автоматизированных тестов

Точка приложения теста

<html><table>...</html>

AppAppWebServerWebServer ServiceService

Page 41: Архитектура автоматизированных тестов

Тестируем User Management

AppAppWebServerWebServer ServiceService

User Management

Page 42: Архитектура автоматизированных тестов

Тестируем User Management

AppAppWebServerWebServer ServiceService

User ManagementНу и где мы это Ну и где мы это будем тестировать?будем тестировать?

Page 43: Архитектура автоматизированных тестов

Пример теста

UsedData userData = TestDataManager.getUserData(

UserData.NON_EXISTENT_USER);

UserManagement.assertUserExists(userData, false);

UserManagement.addNewUser(userData);

UserManagement.assertUserExists(userData, true);

*это java-подобный псевдоязык!

Page 44: Архитектура автоматизированных тестов

Точки приложения теста

UsedData userData = TestDataManager.getUserData(

UserData.NON_EXISTENT_USER);

UserManagement.assertUserExists(userData, false);

UserManagement.addNewUser(userData);

UserManagement.assertUserExists(userData, true);

AppAppWebServerWebServer ServiceService

Page 45: Архитектура автоматизированных тестов

UserManagement.addNewUserProperties

use.api=serviceUserManagement

addNewUser

UserMngmntServletaddNewUser

AppUserMngmntaddNewUser

ServiceUserMngmntaddNewUser

AppAppWebServerWebServer ServiceService

Page 46: Архитектура автоматизированных тестов

Новый клиент сервиса

AppAppWebServerWebServer ServiceService

<?xml version="1.0" encoding="utf-8" ?> <soap:Envelope><soap:Body> <AddNewUser xmlns="http://SERVER/VDir/VName"> <UserName>TestUser1</UserName> <Password>TestPassword1</Pasword> </AddNewUser> </soap:Body></soap:Envelope>

Page 47: Архитектура автоматизированных тестов

New TestFrameworkNew Test

Framework

Другой Framework

AppApp LibsLibs

PropertiesProperties

TestDataTestData

TestUtilitiesTest

Utilities

Framework AddonsFramework Addons

AppInerfaces

AppInerfaces

TestCoreTestCore

ConfiguratorConfigurator

StepsSteps

TestDataManager

TestDataManager

TestsTests

Old TestFrameworkOld Test

FrameworkFixturesFixtures

TestsTests

New Framework AddonsNew Framework Addons

Page 48: Архитектура автоматизированных тестов

План

● Введение● Развитие архитектуры авто-тестов● Примеры● Выводы

Page 49: Архитектура автоматизированных тестов

Выводы

Автоматизированные тесты — это программный проект!Автоматизированные тесты — это программный проект!

Page 50: Архитектура автоматизированных тестов

Выводы

Автоматизированные тесты — это программный проект!Автоматизированные тесты — это программный проект!

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

Page 51: Архитектура автоматизированных тестов

Выводы

Автоматизированные тесты — это программный проект!Автоматизированные тесты — это программный проект!

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

Если в вашей структуре каталогов появляются такие названия как «stuff», «other», «temp»,то ваша архитектура нуждается в пересмотре.

Page 52: Архитектура автоматизированных тестов

Выводы

Автоматизированные тесты — это программный проект!Автоматизированные тесты — это программный проект!

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

Если в вашей структуре каталогов появляются такие названия как «stuff», «other», «temp»,то ваша архитектура нуждается в пересмотре.

Нужны взгляды с разных сторон и с разной степенью детализации

Page 53: Архитектура автоматизированных тестов

QA

Alexey LyanguzovSoftware Quality [email protected]

Спасибо!