SlideShare a Scribd company logo
1 of 17
Разница между
анализом API response
и Back End тестированием
2
BACK-END LEGION
Core
Domain 1
Crypto&Trading
Domain
Core
Domain 2
Core
Domain 3
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
Core
Microservice
FRONT-END LEGION
3
Back-End QA Legion
Core
Domain 1
Crypto&Trading
Domain
Core
Domain 2
Core
Domain 3
BACK-END LEGION FRONT-END LEGION
Back-End QA Legion
4
POST http://internalApiAddress/exchange
Request:
{
"CurrencyTo": "{SomeCurrency}",
"CurrencyFrom": "{SomeCurrency}",
"CurrencyToAmount": 1.2,
"CurrencyFromAmount": 347.91,
}
Response: Status 200Ok
{
"operationId": "f28e1195-a1e6-48ce-8110-de644ad56431"
}
5
Exchange:
AAVE/JPY
AAVE sell
JPY buy
AAVE sell
BTC buy
BTC sell
USD buy
USD sell
JPY buy
Batch
Batch
Batch
6
100 100 100
40 25
90
Order Order Order
3rd Party
110 60
50
50
7
Order
Exchange:
AAVE/JPY
AAVE sell
JPY buy
AAVE sell
BTC buy
BTC sell
USD buy
USD sell
JPY buy
Batch
Batch
Batch
Order
Order
3rd Party
UI
API
UNIT
Component
Integration
Пирамида тестирования
9
10
• Клиент тесты (Browser, Android, IOS)
• Проверка End-To-End
• Мок Back-End стороны
• Негативные сценарии
• Позитивные сценарии
UI Testing:
API
• End-To-End тесты
• Атомарность теста
• Позитивные сценарии
• Негативные сценарии
• Проверяется частично
• Контракты
• Интеграция
11
• End-To-End тесты
• Проверка операции на каждом слое
взаимодействия сервисов
• Проверка контрактов
• Проверка данных в БД
• Проверка ивентов
• Не глубокие проверки на уровне микросервисов
• Зависимость от preconditions
• Время выполнения
• Не проверяются сервисы которые не участвуют user flow
Integration
12
• Проверки только в рамках микросервиса (Sanity)
• Проверка БД
• Проверка внутренней логики
• Валидация контрактов
• Проверка ивентов
• Отсутствует привязка к пользователю/аккаунту
• Практически отсутствуют прекондишены
• Время исполнения
• Обнаружение критических ошибок еще
до стадии разработки интеграции
• Нет привязки к сторонним сервисам
Component
13
14
Пример 1
GET /notebook/{contactId}/accounts
{
"contactId": "string",
"accounts": [
{
"contactId": "string",
"accountId": "string",
"label": "string",
"currency": "string",
"requisites": {
"destinationAddress": "string",
"firstName": "string",
"lastName": "string",
}
}
]
}
PUT ​/notebook/{contactId}​/account​/{accountId}
{
"contactId": "string",
"accountId": "string",
"label": "string",
"currency": "string",
"requisites": {
"destinationAddress": "string",
"firstName": "string",
"lastName": "string",
}
}
• Поход на Internal API
• Нет валидации по owner или authToken
• Ключевые поля передаются в url
• У злоумышленника есть возможность
сменить реквизиты
GET /transaction/{transactionId}/validation
{
"validationRule": "string",
"amount": "decimal",
"transactionValidationId": "guid"
}
POST /transaction​
{​
"accountid": "string",​
"amount": "decimal",​
"transactionValidationId": "guid"​
}​
• Нет внутренней проверки корреляции
transactionId и transactionValidationId
• У злоумышленника есть возможность
провести транзакцию по другому протоколу
Пример 2
15
Provider 1 Provider 2
Provider 4
Provider 3 Provider 5
3rd Party
POST /transaction
{
"transaction": {
"accountId": "string",
"transactionType": "string",
"transactionProvider": "string",
}
"amount": "decimal",
"transactionValidationId": "guid"
}
Service
public enum Provider
{
Provider1,
Provider2,
Provider3,
Provider4,
Provider5
}
Пример 3
Благодарю за внимание!

More Related Content

More from GoQA

More from GoQA (20)

БОГДАН САВЧУК «IoT testing: Manual, Automation and Cyber Security techniques»
БОГДАН САВЧУК «IoT testing: Manual, Automation and Cyber Security techniques»БОГДАН САВЧУК «IoT testing: Manual, Automation and Cyber Security techniques»
БОГДАН САВЧУК «IoT testing: Manual, Automation and Cyber Security techniques»
 
ЕЛЬМІР ІСКАНДЕРОВ «Bulletproof Your Software: The Magic of Security Autotests»
ЕЛЬМІР ІСКАНДЕРОВ «Bulletproof Your Software: The Magic of Security Autotests»ЕЛЬМІР ІСКАНДЕРОВ «Bulletproof Your Software: The Magic of Security Autotests»
ЕЛЬМІР ІСКАНДЕРОВ «Bulletproof Your Software: The Magic of Security Autotests»
 
ІННА ДВОЙНІКОВА «Як вийти на Upwork та розширити горизонти QA»
ІННА ДВОЙНІКОВА «Як вийти на Upwork та розширити горизонти QA»ІННА ДВОЙНІКОВА «Як вийти на Upwork та розширити горизонти QA»
ІННА ДВОЙНІКОВА «Як вийти на Upwork та розширити горизонти QA»
 
КАТЕРИНА АБЗЯТОВА «Point of Growth: Transforming Challenges into Skill-Buildi...
КАТЕРИНА АБЗЯТОВА «Point of Growth: Transforming Challenges into Skill-Buildi...КАТЕРИНА АБЗЯТОВА «Point of Growth: Transforming Challenges into Skill-Buildi...
КАТЕРИНА АБЗЯТОВА «Point of Growth: Transforming Challenges into Skill-Buildi...
 
НАТАЛІЯ ТРОЙНІЧ «Редизайн всього продукту, коли на проекті залишилось два ман...
НАТАЛІЯ ТРОЙНІЧ «Редизайн всього продукту, коли на проекті залишилось два ман...НАТАЛІЯ ТРОЙНІЧ «Редизайн всього продукту, коли на проекті залишилось два ман...
НАТАЛІЯ ТРОЙНІЧ «Редизайн всього продукту, коли на проекті залишилось два ман...
 
РІНА УЖЕВКО «Вплив архітектури на стратегію тестування»
РІНА УЖЕВКО «Вплив архітектури на стратегію тестування»РІНА УЖЕВКО «Вплив архітектури на стратегію тестування»
РІНА УЖЕВКО «Вплив архітектури на стратегію тестування»
 
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
 
КАТЕРИНА АБЗЯТОВА - Certify with confidence: ISTQB Foundation 4.0. Common err...
КАТЕРИНА АБЗЯТОВА - Certify with confidence: ISTQB Foundation 4.0. Common err...КАТЕРИНА АБЗЯТОВА - Certify with confidence: ISTQB Foundation 4.0. Common err...
КАТЕРИНА АБЗЯТОВА - Certify with confidence: ISTQB Foundation 4.0. Common err...
 
Слуцька Вікторія - Виступити і не наступити на граблі: Як виступати QA спеціа...
Слуцька Вікторія - Виступити і не наступити на граблі: Як виступати QA спеціа...Слуцька Вікторія - Виступити і не наступити на граблі: Як виступати QA спеціа...
Слуцька Вікторія - Виступити і не наступити на граблі: Як виступати QA спеціа...
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Планування стратегії розвитку тестування на проекті»
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Планування стратегії розвитку тестування на проекті»ОЛЕКСАНДР ХОТЕМСЬКИЙ «Планування стратегії розвитку тестування на проекті»
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Планування стратегії розвитку тестування на проекті»
 
ОЛЕКСІЙ ОСТАПОВ «Створення плагінів для pytest»
ОЛЕКСІЙ ОСТАПОВ «Створення плагінів для pytest»ОЛЕКСІЙ ОСТАПОВ «Створення плагінів для pytest»
ОЛЕКСІЙ ОСТАПОВ «Створення плагінів для pytest»
 
РОМАН ДУМАНСЬКИЙ «Testing the application in the Amazon Cloud»
РОМАН ДУМАНСЬКИЙ «Testing the application in the Amazon Cloud»РОМАН ДУМАНСЬКИЙ «Testing the application in the Amazon Cloud»
РОМАН ДУМАНСЬКИЙ «Testing the application in the Amazon Cloud»
 
ВЯЧЕСЛАВ САХАРОВ “Баги, хотфікси та воркераунди в космічній галузі. Вчимось н...
ВЯЧЕСЛАВ САХАРОВ “Баги, хотфікси та воркераунди в космічній галузі. Вчимось н...ВЯЧЕСЛАВ САХАРОВ “Баги, хотфікси та воркераунди в космічній галузі. Вчимось н...
ВЯЧЕСЛАВ САХАРОВ “Баги, хотфікси та воркераунди в космічній галузі. Вчимось н...
 
ОЛЕКСАНДР СТРУКОВ «Product QA in chaos»
ОЛЕКСАНДР СТРУКОВ «Product QA in chaos»ОЛЕКСАНДР СТРУКОВ «Product QA in chaos»
ОЛЕКСАНДР СТРУКОВ «Product QA in chaos»
 
СВІТЛАНА ЯКОВЛЄВА «Реформування QA підходу – як це було і що з цього вийшло»
СВІТЛАНА ЯКОВЛЄВА «Реформування QA підходу – як це було і що з цього вийшло»СВІТЛАНА ЯКОВЛЄВА «Реформування QA підходу – як це було і що з цього вийшло»
СВІТЛАНА ЯКОВЛЄВА «Реформування QA підходу – як це було і що з цього вийшло»
 
АНТОН АНІКЕЄВ «Якість продукту: погляд різних ролей»
АНТОН АНІКЕЄВ «Якість продукту: погляд різних ролей»АНТОН АНІКЕЄВ «Якість продукту: погляд різних ролей»
АНТОН АНІКЕЄВ «Якість продукту: погляд різних ролей»
 
ПАВЛО ГУЛІДОВ «Інфраструктура для тестування IoT: від мереж до взаємодії команд»
ПАВЛО ГУЛІДОВ «Інфраструктура для тестування IoT: від мереж до взаємодії команд»ПАВЛО ГУЛІДОВ «Інфраструктура для тестування IoT: від мереж до взаємодії команд»
ПАВЛО ГУЛІДОВ «Інфраструктура для тестування IoT: від мереж до взаємодії команд»
 
АРТУР ШЕВЧЕНКО «Як спланувати проєкт та все встигнути»
АРТУР ШЕВЧЕНКО «Як спланувати проєкт та все встигнути»АРТУР ШЕВЧЕНКО «Як спланувати проєкт та все встигнути»
АРТУР ШЕВЧЕНКО «Як спланувати проєкт та все встигнути»
 
СЕРГІЙ РУСІНЧУК «Телефонуйте 911, наша якість погіршується, пан Аудит тут для...
СЕРГІЙ РУСІНЧУК «Телефонуйте 911, наша якість погіршується, пан Аудит тут для...СЕРГІЙ РУСІНЧУК «Телефонуйте 911, наша якість погіршується, пан Аудит тут для...
СЕРГІЙ РУСІНЧУК «Телефонуйте 911, наша якість погіршується, пан Аудит тут для...
 
YEGOR MAKSYMCHUK «Using Kubernetes for organization performance tests»
YEGOR MAKSYMCHUK «Using Kubernetes for organization performance tests»YEGOR MAKSYMCHUK «Using Kubernetes for organization performance tests»
YEGOR MAKSYMCHUK «Using Kubernetes for organization performance tests»
 

ДМИТРО СКРИПКА «Difference between API Response Analysis and Back End Testing» Online QADay 2021 #2

  • 1. Разница между анализом API response и Back End тестированием
  • 2. 2
  • 3. BACK-END LEGION Core Domain 1 Crypto&Trading Domain Core Domain 2 Core Domain 3 Core Microservice Core Microservice Core Microservice Core Microservice Core Microservice Core Microservice Core Microservice Core Microservice Core Microservice Core Microservice FRONT-END LEGION 3
  • 4. Back-End QA Legion Core Domain 1 Crypto&Trading Domain Core Domain 2 Core Domain 3 BACK-END LEGION FRONT-END LEGION Back-End QA Legion 4
  • 5. POST http://internalApiAddress/exchange Request: { "CurrencyTo": "{SomeCurrency}", "CurrencyFrom": "{SomeCurrency}", "CurrencyToAmount": 1.2, "CurrencyFromAmount": 347.91, } Response: Status 200Ok { "operationId": "f28e1195-a1e6-48ce-8110-de644ad56431" } 5
  • 6. Exchange: AAVE/JPY AAVE sell JPY buy AAVE sell BTC buy BTC sell USD buy USD sell JPY buy Batch Batch Batch 6
  • 7. 100 100 100 40 25 90 Order Order Order 3rd Party 110 60 50 50 7
  • 8. Order Exchange: AAVE/JPY AAVE sell JPY buy AAVE sell BTC buy BTC sell USD buy USD sell JPY buy Batch Batch Batch Order Order 3rd Party
  • 10. 10 • Клиент тесты (Browser, Android, IOS) • Проверка End-To-End • Мок Back-End стороны • Негативные сценарии • Позитивные сценарии UI Testing:
  • 11. API • End-To-End тесты • Атомарность теста • Позитивные сценарии • Негативные сценарии • Проверяется частично • Контракты • Интеграция 11
  • 12. • End-To-End тесты • Проверка операции на каждом слое взаимодействия сервисов • Проверка контрактов • Проверка данных в БД • Проверка ивентов • Не глубокие проверки на уровне микросервисов • Зависимость от preconditions • Время выполнения • Не проверяются сервисы которые не участвуют user flow Integration 12
  • 13. • Проверки только в рамках микросервиса (Sanity) • Проверка БД • Проверка внутренней логики • Валидация контрактов • Проверка ивентов • Отсутствует привязка к пользователю/аккаунту • Практически отсутствуют прекондишены • Время исполнения • Обнаружение критических ошибок еще до стадии разработки интеграции • Нет привязки к сторонним сервисам Component 13
  • 14. 14 Пример 1 GET /notebook/{contactId}/accounts { "contactId": "string", "accounts": [ { "contactId": "string", "accountId": "string", "label": "string", "currency": "string", "requisites": { "destinationAddress": "string", "firstName": "string", "lastName": "string", } } ] } PUT ​/notebook/{contactId}​/account​/{accountId} { "contactId": "string", "accountId": "string", "label": "string", "currency": "string", "requisites": { "destinationAddress": "string", "firstName": "string", "lastName": "string", } } • Поход на Internal API • Нет валидации по owner или authToken • Ключевые поля передаются в url • У злоумышленника есть возможность сменить реквизиты
  • 15. GET /transaction/{transactionId}/validation { "validationRule": "string", "amount": "decimal", "transactionValidationId": "guid" } POST /transaction​ {​ "accountid": "string",​ "amount": "decimal",​ "transactionValidationId": "guid"​ }​ • Нет внутренней проверки корреляции transactionId и transactionValidationId • У злоумышленника есть возможность провести транзакцию по другому протоколу Пример 2 15
  • 16. Provider 1 Provider 2 Provider 4 Provider 3 Provider 5 3rd Party POST /transaction { "transaction": { "accountId": "string", "transactionType": "string", "transactionProvider": "string", } "amount": "decimal", "transactionValidationId": "guid" } Service public enum Provider { Provider1, Provider2, Provider3, Provider4, Provider5 } Пример 3