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 авто-тестов
База
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
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
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
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
50. Выводы
Автоматизированные тесты — это программный проект!
Правильность архитектуры
зависит от многих вещей.
Нет абсолютно правильной.
51. Выводы
Автоматизированные тесты — это программный проект!
Правильность архитектуры
зависит от многих вещей.
Нет абсолютно правильной.
Если в вашей структуре каталогов появляются
такие названия как «stuff», «other», «temp»,
то ваша архитектура нуждается в пересмотре.
52. Выводы
Автоматизированные тесты — это программный проект!
Правильность архитектуры
зависит от многих вещей.
Нет абсолютно правильной.
Если в вашей структуре каталогов появляются
такие названия как «stuff», «other», «temp»,
то ваша архитектура нуждается в пересмотре.
Нужны взгляды с разных
сторон и с разной степенью
детализации