SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Scalable eCommerce Platform Solutions




Архитектура автоматизированных
             тестов
         Алексей Лянгузов
План

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

● Примеры

● Выводы
Архитектура ПО

                Реализация
                 Реализация                           Код программы
                                                       Код программы

                   Дизайн
                    Дизайн                             API/Patterns
                                                        API/Patterns

               Архитектура
                Архитектура                            Компоненты
                                                        Компоненты

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



http://www.sei.cmu.edu/architecture/start/glossary/
Архитектура ПО

        Реализация
         Реализация              Код программы
                                  Код программы

          Дизайн
           Дизайн                  API/Patterns
                                    API/Patterns

        Архитектура
         Архитектура              Компоненты
                                   Компоненты

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


Автоматизированные тесты — это программный проект!
Архитектура тестируемого ПО
                 WebServer
                                            Сервис
                         Программа          Сервис
                     (eCommerce platform)
                                            Сервис
                                            Сервис

                     Админка            Чужой сервис
                                        Чужой сервис
20000+ авто-тестов
                                 База
Наша ниша
                WebServer
                                           Сервис
                        Программа          Сервис
                    (eCommerce platform)
                                           Сервис
                                           Сервис

                    Админка            Чужой сервис
                                       Чужой сервис
~2500 авто-тестов
                                База
План

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

● Примеры

● Выводы
Итак, первый тест
App
 App




       Функции:
       ● Доказательство того, что автоматизация



Tests возможна
 Tests ● Первая пробная реализация, обкатка идеи
       ● Начало положено!
Библиотеки
App                            Libs
                                Libs
 App
             Функции:
             ● Использование стандартных технологий

             ● Протестированные и оптимизированные


             алгоритмы




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

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




Tests
 Tests
Тестовый Framework
   App                           Libs
                                  Libs
    App



Функции:
● Генерация отчетов

● Организация тестов (suites, tags etc)

● Определение языка и формата написания


тестов
● Запуск тестов



               Test
                Test
           Framework
            Framework
  Tests
   Tests
Промежуточная картина
App                   Libs
                       Libs
 App




             Test
              Test
         Framework
          Framework
Tests
 Tests
Fixtures
      App                                              Libs
                                                        Libs
       App




            Функции:
            ● Связь тестов с Framework-ом

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

http://www.ibm.com/developerworks/ru/edu/j-junit4/section4.html
Промежуточная картина
 App                   Libs
                        Libs
  App




              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Тестовые данные
 App                            Libs
                                 Libs
  App
Функции:                                      Test
  Отвязывание реализации тестов и данных
                                               Test
                                              Data
●

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


тестов
● Упрощение создания тестовых данных




              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Промежуточная картина
 App                   Libs
                        Libs
  App                          Test
                                Test
                               Data
                                Data




              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Настройки
 App                            Libs
                                 Libs
  App                                          Test
                                                Test
                                               Data
                                                Data
     Функции:
     ● Настройка окружения выполнения тестов       Properties
                                                    Properties
     ● Избавление от «Magic Numbers» и других


     «hardcoded» значений
     ● Влияние на исполнение тестов извне (без переделки


     кода)
     ● Возможность создавать параллельные реализации


     (старая-новая)
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Промежуточная картина
 App                   Libs
                        Libs
  App                          Test
                                Test
                               Data
                                Data
                                  Properties
                                   Properties




              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Конфигуратор
  App                             Libs
                                   Libs
   App                                           Test
                                                  Test
                                                 Data
                                                  Data
Функции:
● Настройка окружения выполнения тестов в целях      Properties
                                                      Properties
конфигурационного тестирования
● Упрощение работы с настройками (файлы, имена
                                                    Configurator
                                                     Configurator
ключей итд)
● Подготовка окружения (например, генерация security


certificates)
● Знания о Run-time окружении


              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Промежуточная картина
 App                   Libs
                        Libs
  App                          Test
                                Test
                               Data
                                Data
                                  Properties
                                   Properties

                                 Configurator
                                  Configurator




              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Общее тестовое стафло
  App                         Libs
                               Libs
   App                                     Test
                                            Test
   Данный компонент является временным и позднее будет
                     переименован!         Data
                                            Data
                                              Properties
                                                Properties

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



              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Почти полная картина
  App                  Libs
                        Libs
   App                         Test
                                Test
                               Data
                                Data
                                  Properties
                                   Properties

                                 Configurator
                                  Configurator
Common
 Common
Test Stuff
 Test Stuff
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Менеджер данных
  App                           Libs
                                 Libs
   App                                        Test
              Функции:                         Test
                                              Data
                                               Data
              ● Упрощает работу с тестовыми данными

              ● Содержит логику обработки данных
                                                 Properties
                                                  Properties
              ● Генерация данных



                              TestData           Configurator
                                                  Configurator
                               TestData
                              Manager
                               Manager
Common
 Common
Test Stuff
 Test Stuff
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Полная картина
  App                    Libs
                          Libs
   App                             Test
                                    Test
                                   Data
                                    Data
                                      Properties
                                       Properties

                       TestData      Configurator
                                      Configurator
                        TestData
                       Manager
                        Manager
Common
 Common
Test Stuff
 Test Stuff
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Тестовые инструменты
  App                              Libs
                                    Libs
   App                                             Test
                                                    Test
                                                   Data
                                                    Data
                                   Test
                                    Test
                                 Utilities             Properties
                                                        Properties
                                  Utilities
              Функции:
              ● Содержит вспомогательные инструменты,
                               TestData                Configurator
                                                        Configurator
                                TestData
              используемые в тестах (helpers, tools, utils)
                                 Manager
                                 Manager
Common
 Common
Test Stuff
 Test Stuff

Не зависит ниTestтестов ни от тестируемого приложения, может
Fixtures      Test
              от
 Fixtures Framework
           Framework
           быть переиспользован в другом проекте!
  Tests
   Tests
Полная картина
  App                     Libs
                           Libs
   App                               Test
                                      Test
                                     Data
                                      Data
                          Test
                           Test
                        Utilities       Properties
                                         Properties
                         Utilities

                       TestData        Configurator
                                        Configurator
                        TestData
                       Manager
                        Manager
Common
 Common
Test Stuff
 Test Stuff
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Связь с программой
  App                            Libs
                                  Libs
   App                                         Test
                                                Test
            Функции:                           Data
            ● Предоставляет набор Test
                                                Data
                                   универсальных интерфейсов
                                   Test
   App
    App     (абстракций) для общения с тестируемым Properties
                                Utilities
                                 Utilities           Properties
                                                    приложением
Interfaces ● Общается с тестируемым приложением через
 Interfaces
            предоставляемые им TestData            Configurator
                                интерфейсам (реализация
                                                    Configurator
                                 TestData
            протоколов общения)Manager
Common                         Manager
 Common
Test Stuff
 Test Stuff
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Полная картина
   App                    Libs
                           Libs
    App                              Test
                                      Test
                                     Data
                                      Data
                          Test
                           Test
   App                  Utilities       Properties
                                         Properties
    App                  Utilities
Interfaces
 Interfaces
                       TestData        Configurator
                                        Configurator
                        TestData
                       Manager
                        Manager
  Test
   Test
  Core
   Core
              Test
               Test
Fixtures
 Fixtures Framework
           Framework
  Tests
   Tests
Расширения Framework-а
    App                             Libs
                                     Libs
     App                                        Test
                                                 Test
                                                Data
                                                 Data
                                    Test
                                     Test
    App                           Utilities        Properties
                                                    Properties
     App                           Utilities
Функции:
 Inerfaces
  Inerfaces
● Расширяет тестовый FrameworkTestData
                                   , добавляя     Configurator
                                                   Configurator
нестандартные методы и функции
                                   TestData
                                  Manager
                                   Manager
     Test
● Исправляет существующие ошибки в
      Test
    Logic
тестовом Framework-е (особенно если
     Logic
Framework с открытыми исходниками)
                Test
● Интеграция с другими приложениями
                 Test
  Fixtures
   Fixtures Framework
(например, Jenkins-plugin для тестового
             Framework
    Tests
Framework-а)
     Tests
    Framework Addons
     Framework Addons
Финальная картина
   App                   Libs
                          Libs
    App                                          Test
                                                  Test
                                                 Data
                                                  Data
                         Test
                          Test
   App                 Utilities                     Properties
                                                      Properties
    App                 Utilities
Interfaces
 Interfaces
                       TestData                     Configurator
                                                     Configurator
                        TestData
                       Manager
                        Manager
  Test
   Test
  Core
   Core                  third-party code, usually not-modifiable
                         our test related code
              Test
               Test
Fixtures
 Fixtures Framework
                         usually not a code, structured text or other
           Framework     test code, might be DSL or parsable text
  Tests
   Tests                 depends on                  uses

  Framework Addons
   Framework Addons
План

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

● Примеры

● Выводы
Структура каталогов
Структура каталогов: зачем?
Структура каталогов: затем!
Точка приложения теста
               WebServer
               WebServer             App
                                     App   Service
                                            Service


Submit


http://localhost:8080/myapp?parameters
Точка приложения теста
 WebServer
 WebServer            App
                      App        Service
                                  Service




   HttPServlet.get(parameters)
Точка приложения теста
 WebServer
 WebServer    App
              App          Service
                            Service




             Service.doIt(parameters)
Точка приложения теста
 WebServer
 WebServer   App
             App       Service
                        Service




             return someResult;
Точка приложения теста
 WebServer
 WebServer           App
                     App             Service
                                      Service




 return ResultAdapter(someResult);
Точка приложения теста
                WebServer
                WebServer   App
                            App   Service
                                   Service




<html><table>...</html>
Тестируем User Management
   WebServer
   WebServer     App
                 App        Service
                             Service




               User Management
Тестируем User Management
         WebServer
         WebServer     App
                       App        Service
                                   Service




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

UsedData userData = TestDataManager.getUserData(
                UserData.NON_EXISTENT_USER);
UserManagement.assertUserExists(userData, false);
UserManagement.addNewUser(userData);
UserManagement.assertUserExists(userData, true);

                                *это java-подобный псевдоязык!
Точки приложения теста
        WebServer
        WebServer                   App
                                    App             Service
                                                     Service




UsedData userData = TestDataManager.getUserData(
                         UserData.NON_EXISTENT_USER);
UserManagement.assertUserExists(userData, false);
UserManagement.addNewUser(userData);
UserManagement.assertUserExists(userData, true);
UserManagement.addNewUser
             UserManagement           Properties
               addNewUser           use.api=service




UserMngmntServlet   AppUserMngmnt   ServiceUserMngmnt
   addNewUser         addNewUser        addNewUser


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




<?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>
Другой Framework
  App                        Libs
                              Libs
   App                                     Test
                                            Test
                                           Data
                                            Data
                             Test
                              Test
   App                     Utilities           Properties
                                                Properties
    App                     Utilities
Inerfaces
 Inerfaces
                          TestData            Configurator
                                               Configurator
                           TestData
                          Manager
                           Manager
  Test
   Test
  Core
   Core
              New Test
               New Test               Old Test
                                       Old Test
  Steps
   Steps                  Fixtures
                           Fixtures Framework
             Framework
              Framework              Framework
  Tests
   Tests                    Tests
                             Tests
New Framework Addons
 New Framework Addons     Framework Addons
                           Framework Addons
План

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

● Примеры

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


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


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

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


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

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

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



                               QA
Alexey Lyanguzov
Software Quality Specialist
budabum@gmail.com

Contenu connexe

Tendances

Training Series: Build APIs with Neo4j GraphQL Library
Training Series: Build APIs with Neo4j GraphQL LibraryTraining Series: Build APIs with Neo4j GraphQL Library
Training Series: Build APIs with Neo4j GraphQL Library
Neo4j
 
Automated Hyperparameter Tuning, Scaling and Tracking
Automated Hyperparameter Tuning, Scaling and TrackingAutomated Hyperparameter Tuning, Scaling and Tracking
Automated Hyperparameter Tuning, Scaling and Tracking
Databricks
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
Provectus
 
Lambda Expressions in C# From Beginner To Expert - Jaliya Udagedara
Lambda Expressions in C# From Beginner To Expert - Jaliya UdagedaraLambda Expressions in C# From Beginner To Expert - Jaliya Udagedara
Lambda Expressions in C# From Beginner To Expert - Jaliya Udagedara
Jaliya Udagedara
 

Tendances (20)

Nx tutorial basics
Nx tutorial basicsNx tutorial basics
Nx tutorial basics
 
Training Series: Build APIs with Neo4j GraphQL Library
Training Series: Build APIs with Neo4j GraphQL LibraryTraining Series: Build APIs with Neo4j GraphQL Library
Training Series: Build APIs with Neo4j GraphQL Library
 
DASK and Apache Spark
DASK and Apache SparkDASK and Apache Spark
DASK and Apache Spark
 
Introduction to Neo4j
Introduction to Neo4jIntroduction to Neo4j
Introduction to Neo4j
 
OpenSource Big Data Platform - Flamingo Project
OpenSource Big Data Platform - Flamingo ProjectOpenSource Big Data Platform - Flamingo Project
OpenSource Big Data Platform - Flamingo Project
 
Automated Hyperparameter Tuning, Scaling and Tracking
Automated Hyperparameter Tuning, Scaling and TrackingAutomated Hyperparameter Tuning, Scaling and Tracking
Automated Hyperparameter Tuning, Scaling and Tracking
 
MLOps - Build pipelines with Tensor Flow Extended & Kubeflow
MLOps - Build pipelines with Tensor Flow Extended & KubeflowMLOps - Build pipelines with Tensor Flow Extended & Kubeflow
MLOps - Build pipelines with Tensor Flow Extended & Kubeflow
 
ntroducing to the Power of Graph Technology
ntroducing to the Power of Graph Technologyntroducing to the Power of Graph Technology
ntroducing to the Power of Graph Technology
 
Angular Lifecycle Hooks
Angular Lifecycle HooksAngular Lifecycle Hooks
Angular Lifecycle Hooks
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
 
Scalability and Performance
Scalability and PerformanceScalability and Performance
Scalability and Performance
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
 
Tutorial on word2vec
Tutorial on word2vecTutorial on word2vec
Tutorial on word2vec
 
Pandas
PandasPandas
Pandas
 
Understanding GloVe
Understanding GloVeUnderstanding GloVe
Understanding GloVe
 
Lambda Expressions in C# From Beginner To Expert - Jaliya Udagedara
Lambda Expressions in C# From Beginner To Expert - Jaliya UdagedaraLambda Expressions in C# From Beginner To Expert - Jaliya Udagedara
Lambda Expressions in C# From Beginner To Expert - Jaliya Udagedara
 
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ....NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
 
Understanding LINQ in C#
Understanding LINQ in C# Understanding LINQ in C#
Understanding LINQ in C#
 
Building an ML Platform with Ray and MLflow
Building an ML Platform with Ray and MLflowBuilding an ML Platform with Ray and MLflow
Building an ML Platform with Ray and MLflow
 
Getting Started with Azure AutoML
Getting Started with Azure AutoMLGetting Started with Azure AutoML
Getting Started with Azure AutoML
 

En vedette

Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
SQALab
 

En vedette (20)

Automation patterns on practice
Automation patterns on practiceAutomation patterns on practice
Automation patterns on practice
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам
 
Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем суть
 
Архитектура автоматизированных тестов: представление предметной области
Архитектура автоматизированных тестов: представление предметной областиАрхитектура автоматизированных тестов: представление предметной области
Архитектура автоматизированных тестов: представление предметной области
 
Faceting with Lucene Block Join Query - Lucene/Solr Revolution 2014
Faceting with Lucene Block Join Query - Lucene/Solr Revolution 2014Faceting with Lucene Block Join Query - Lucene/Solr Revolution 2014
Faceting with Lucene Block Join Query - Lucene/Solr Revolution 2014
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
Совершенный тестовый фреймворк
Совершенный тестовый фреймворкСовершенный тестовый фреймворк
Совершенный тестовый фреймворк
 
Обсуждаем главы из “97 Things Every Programmer Should Know”
Обсуждаем главы из “97 Things Every Programmer Should Know”Обсуждаем главы из “97 Things Every Programmer Should Know”
Обсуждаем главы из “97 Things Every Programmer Should Know”
 
Inheritance, Object Oriented Programming
Inheritance, Object Oriented ProgrammingInheritance, Object Oriented Programming
Inheritance, Object Oriented Programming
 
Автоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктурыАвтоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктуры
 
"Внедрение автоматизации" прохождение на различных уровнях сложности
"Внедрение автоматизации" прохождение на различных уровнях сложности"Внедрение автоматизации" прохождение на различных уровнях сложности
"Внедрение автоматизации" прохождение на различных уровнях сложности
 
Как автоматизировать комплексные системы
Как автоматизировать комплексные системыКак автоматизировать комплексные системы
Как автоматизировать комплексные системы
 
Серебряная пуля автоматизированного тестирования
Серебряная пуля автоматизированного тестированияСеребряная пуля автоматизированного тестирования
Серебряная пуля автоматизированного тестирования
 
Micro Model Based Testing
Micro Model Based TestingMicro Model Based Testing
Micro Model Based Testing
 
Подход к тестированию хранилища данных на базе MS SQL Server
Подход к тестированию хранилища данных на базе MS SQL ServerПодход к тестированию хранилища данных на базе MS SQL Server
Подход к тестированию хранилища данных на базе MS SQL Server
 
New Model Testing: A New Test Process and Tool
New Model Testing:  A New Test Process and ToolNew Model Testing:  A New Test Process and Tool
New Model Testing: A New Test Process and Tool
 
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
 
Тестирование систем с большим количеством входных данных или как достичь цели...
Тестирование систем с большим количеством входных данных или как достичь цели...Тестирование систем с большим количеством входных данных или как достичь цели...
Тестирование систем с большим количеством входных данных или как достичь цели...
 
Грабли автоматизации. Учимся на чужих ошибках
Грабли автоматизации. Учимся на чужих ошибкахГрабли автоматизации. Учимся на чужих ошибках
Грабли автоматизации. Учимся на чужих ошибках
 

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

Разработка по с использованием Tfs 2012
Разработка по с использованием Tfs 2012Разработка по с использованием Tfs 2012
Разработка по с использованием Tfs 2012
Александр Шамрай
 
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
sqadays8
 
TestLink
TestLinkTestLink
TestLink
ISsoft
 

Similaire à Архитектура автоматизированных тестов (20)

Разработка по с использованием Tfs 2012
Разработка по с использованием Tfs 2012Разработка по с использованием Tfs 2012
Разработка по с использованием Tfs 2012
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public API
 
Описание и архитектура TFS 2008
Описание и архитектура TFS 2008Описание и архитектура TFS 2008
Описание и архитектура TFS 2008
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 
Qulix Systems | Автоматизация функционального тестирования
Qulix Systems | Автоматизация функционального тестированияQulix Systems | Автоматизация функционального тестирования
Qulix Systems | Автоматизация функционального тестирования
 
Тестирование в BI проектах
Тестирование в BI проектахТестирование в BI проектах
Тестирование в BI проектах
 
Анализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияАнализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестирования
 
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
 
Ромуальд Здебский, Обеспечение качества через интегрированное управление прое...
Ромуальд Здебский, Обеспечение качества через интегрированное управление прое...Ромуальд Здебский, Обеспечение качества через интегрированное управление прое...
Ромуальд Здебский, Обеспечение качества через интегрированное управление прое...
 
Обзор и архитектура MS Team System
Обзор и архитектура MS Team SystemОбзор и архитектура MS Team System
Обзор и архитектура MS Team System
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Oracle Application Management and Testing Suites for Siebel CRM
Oracle Application Management and Testing Suites for Siebel CRMOracle Application Management and Testing Suites for Siebel CRM
Oracle Application Management and Testing Suites for Siebel CRM
 
Обзор и архитектура MS Visual Studio Team System 2008
Обзор и архитектура MS Visual Studio Team System 2008Обзор и архитектура MS Visual Studio Team System 2008
Обзор и архитектура MS Visual Studio Team System 2008
 
Test design print
Test design printTest design print
Test design print
 
TestLink
TestLinkTestLink
TestLink
 
Вадим Зубович - Test Link
Вадим Зубович - Test LinkВадим Зубович - Test Link
Вадим Зубович - Test Link
 

Plus de SQALab

Plus de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

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

  • 1. Scalable eCommerce Platform Solutions Архитектура автоматизированных тестов Алексей Лянгузов
  • 2. План ● Введение ● Развитие архитектуры авто-тестов ● Примеры ● Выводы
  • 3. Архитектура ПО Реализация Реализация Код программы Код программы Дизайн Дизайн API/Patterns API/Patterns Архитектура Архитектура Компоненты Компоненты Требования Требования http://www.sei.cmu.edu/architecture/start/glossary/
  • 4. Архитектура ПО Реализация Реализация Код программы Код программы Дизайн Дизайн API/Patterns API/Patterns Архитектура Архитектура Компоненты Компоненты Требования Требования Автоматизированные тесты — это программный проект!
  • 5. Архитектура тестируемого ПО WebServer Сервис Программа Сервис (eCommerce platform) Сервис Сервис Админка Чужой сервис Чужой сервис 20000+ авто-тестов База
  • 6. Наша ниша WebServer Сервис Программа Сервис (eCommerce platform) Сервис Сервис Админка Чужой сервис Чужой сервис ~2500 авто-тестов База
  • 7. План ● Введение ● Развитие архитектуры авто-тестов ● Примеры ● Выводы
  • 8. Итак, первый тест App App Функции: ● Доказательство того, что автоматизация Tests возможна Tests ● Первая пробная реализация, обкатка идеи ● Начало положено!
  • 9. Библиотеки App Libs Libs App Функции: ● Использование стандартных технологий ● Протестированные и оптимизированные алгоритмы Совместные библиотеки (App и Test), должны быть синхронизированы! Tests Tests
  • 11. Тестовый Framework App Libs Libs App Функции: ● Генерация отчетов ● Организация тестов (suites, tags etc) ● Определение языка и формата написания тестов ● Запуск тестов Test Test Framework Framework Tests Tests
  • 12. Промежуточная картина App Libs Libs App Test Test Framework Framework Tests Tests
  • 13. Fixtures App Libs Libs App Функции: ● Связь тестов с Framework-ом Test Test ● Служебные функции, диктуемые как тестами Fixtures Fixtures Framework Framework (логикой), так и Framework-ом Tests ● Контроль исполнения тестовых действий Tests http://www.ibm.com/developerworks/ru/edu/j-junit4/section4.html
  • 14. Промежуточная картина App Libs Libs App Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 15. Тестовые данные App Libs Libs App Функции: Test Отвязывание реализации тестов и данных Test Data ● ● Повторное использование данных Data ● Структурирование и организация данных для тестов ● Упрощение создания тестовых данных Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 16. Промежуточная картина App Libs Libs App Test Test Data Data Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 17. Настройки App Libs Libs App Test Test Data Data Функции: ● Настройка окружения выполнения тестов Properties Properties ● Избавление от «Magic Numbers» и других «hardcoded» значений ● Влияние на исполнение тестов извне (без переделки кода) ● Возможность создавать параллельные реализации (старая-новая) Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 18. Промежуточная картина App Libs Libs App Test Test Data Data Properties Properties Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 19. Конфигуратор App Libs Libs App Test Test Data Data Функции: ● Настройка окружения выполнения тестов в целях Properties Properties конфигурационного тестирования ● Упрощение работы с настройками (файлы, имена Configurator Configurator ключей итд) ● Подготовка окружения (например, генерация security certificates) ● Знания о Run-time окружении Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 20. Промежуточная картина App Libs Libs App Test Test Data Data Properties Properties Configurator Configurator Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 21. Общее тестовое стафло App Libs Libs App Test Test Данный компонент является временным и позднее будет переименован! Data Data Properties Properties Configurator Configurator Функции: ● Хранит общие методы тестов Common Common ● Отвечает за связь с приложением Test Stuff Test Stuff ● Содержит всю тестовую логику Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 22. Почти полная картина App Libs Libs App Test Test Data Data Properties Properties Configurator Configurator Common Common Test Stuff Test Stuff Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 23. Менеджер данных App Libs Libs App Test Функции: Test Data Data ● Упрощает работу с тестовыми данными ● Содержит логику обработки данных Properties Properties ● Генерация данных TestData Configurator Configurator TestData Manager Manager Common Common Test Stuff Test Stuff Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 24. Полная картина App Libs Libs App Test Test Data Data Properties Properties TestData Configurator Configurator TestData Manager Manager Common Common Test Stuff Test Stuff Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 25. Тестовые инструменты App Libs Libs App Test Test Data Data Test Test Utilities Properties Properties Utilities Функции: ● Содержит вспомогательные инструменты, TestData Configurator Configurator TestData используемые в тестах (helpers, tools, utils) Manager Manager Common Common Test Stuff Test Stuff Не зависит ниTestтестов ни от тестируемого приложения, может Fixtures Test от Fixtures Framework Framework быть переиспользован в другом проекте! Tests Tests
  • 26. Полная картина App Libs Libs App Test Test Data Data Test Test Utilities Properties Properties Utilities TestData Configurator Configurator TestData Manager Manager Common Common Test Stuff Test Stuff Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 27. Связь с программой App Libs Libs App Test Test Функции: Data ● Предоставляет набор Test Data универсальных интерфейсов Test App App (абстракций) для общения с тестируемым Properties Utilities Utilities Properties приложением Interfaces ● Общается с тестируемым приложением через Interfaces предоставляемые им TestData Configurator интерфейсам (реализация Configurator TestData протоколов общения)Manager Common Manager Common Test Stuff Test Stuff Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 28. Полная картина App Libs Libs App Test Test Data Data Test Test App Utilities Properties Properties App Utilities Interfaces Interfaces TestData Configurator Configurator TestData Manager Manager Test Test Core Core Test Test Fixtures Fixtures Framework Framework Tests Tests
  • 29. Расширения Framework-а App Libs Libs App Test Test Data Data Test Test App Utilities Properties Properties App Utilities Функции: Inerfaces Inerfaces ● Расширяет тестовый FrameworkTestData , добавляя Configurator Configurator нестандартные методы и функции TestData Manager Manager Test ● Исправляет существующие ошибки в Test Logic тестовом Framework-е (особенно если Logic Framework с открытыми исходниками) Test ● Интеграция с другими приложениями Test Fixtures Fixtures Framework (например, Jenkins-plugin для тестового Framework Tests Framework-а) Tests Framework Addons Framework Addons
  • 30. Финальная картина App Libs Libs App Test Test Data Data Test Test App Utilities Properties Properties App Utilities Interfaces Interfaces TestData Configurator Configurator TestData Manager Manager Test Test Core Core third-party code, usually not-modifiable our test related code Test Test Fixtures Fixtures Framework usually not a code, structured text or other Framework test code, might be DSL or parsable text Tests Tests depends on uses Framework Addons Framework Addons
  • 31. План ● Введение ● Развитие архитектуры авто-тестов ● Примеры ● Выводы
  • 35. Точка приложения теста WebServer WebServer App App Service Service Submit http://localhost:8080/myapp?parameters
  • 36. Точка приложения теста WebServer WebServer App App Service Service HttPServlet.get(parameters)
  • 37. Точка приложения теста WebServer WebServer App App Service Service Service.doIt(parameters)
  • 38. Точка приложения теста WebServer WebServer App App Service Service return someResult;
  • 39. Точка приложения теста WebServer WebServer App App Service Service return ResultAdapter(someResult);
  • 40. Точка приложения теста WebServer WebServer App App Service Service <html><table>...</html>
  • 41. Тестируем User Management WebServer WebServer App App Service Service User Management
  • 42. Тестируем User Management WebServer WebServer App App Service Service User Management Ну и где мы это будем тестировать?
  • 43. Пример теста UsedData userData = TestDataManager.getUserData( UserData.NON_EXISTENT_USER); UserManagement.assertUserExists(userData, false); UserManagement.addNewUser(userData); UserManagement.assertUserExists(userData, true); *это java-подобный псевдоязык!
  • 44. Точки приложения теста WebServer WebServer App App Service Service UsedData userData = TestDataManager.getUserData( UserData.NON_EXISTENT_USER); UserManagement.assertUserExists(userData, false); UserManagement.addNewUser(userData); UserManagement.assertUserExists(userData, true);
  • 45. UserManagement.addNewUser UserManagement Properties addNewUser use.api=service UserMngmntServlet AppUserMngmnt ServiceUserMngmnt addNewUser addNewUser addNewUser WebServer WebServer App App Service Service
  • 46. Новый клиент сервиса WebServer WebServer App App Service Service <?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>
  • 47. Другой Framework App Libs Libs App Test Test Data Data Test Test App Utilities Properties Properties App Utilities Inerfaces Inerfaces TestData Configurator Configurator TestData Manager Manager Test Test Core Core New Test New Test Old Test Old Test Steps Steps Fixtures Fixtures Framework Framework Framework Framework Tests Tests Tests Tests New Framework Addons New Framework Addons Framework Addons Framework Addons
  • 48. План ● Введение ● Развитие архитектуры авто-тестов ● Примеры ● Выводы
  • 49. Выводы Автоматизированные тесты — это программный проект!
  • 50. Выводы Автоматизированные тесты — это программный проект! Правильность архитектуры зависит от многих вещей. Нет абсолютно правильной.
  • 51. Выводы Автоматизированные тесты — это программный проект! Правильность архитектуры зависит от многих вещей. Нет абсолютно правильной. Если в вашей структуре каталогов появляются такие названия как «stuff», «other», «temp», то ваша архитектура нуждается в пересмотре.
  • 52. Выводы Автоматизированные тесты — это программный проект! Правильность архитектуры зависит от многих вещей. Нет абсолютно правильной. Если в вашей структуре каталогов появляются такие названия как «stuff», «other», «temp», то ваша архитектура нуждается в пересмотре. Нужны взгляды с разных сторон и с разной степенью детализации
  • 53. Спасибо! QA Alexey Lyanguzov Software Quality Specialist budabum@gmail.com