SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
QaApi
взгляд на тестирование с другой стороны баррикад
Дмитрий Марущенко
Badoo - это про знакомства...
...и про технологии
У нас было 2 веб-сайта, 4 разных мобильных платформы
и целое море различных версий мобильных приложений,
а также версия для мобильных браузеров и приложения в
социальных сетях. Не то что бы все это было
категорически необходимо для бизнеса, но если уж
начали делать социальную сеть, то становится трудно
остановиться. Единственное, что вызывало у меня
опасения - это релизы вечером в пятницу. Нет ничего
более беспомощного, безответственного и испорченного,
чем пятничный релиз. Я знал, что рано или поздно мы
перейдем и эту грань.
“
”
Начнем издалека
Знаете, что самое важное на этом плане?
Знаете, что самое важное на этом плане?
?
Знаете, что самое важное на этом плане?
Короткие пути!
Пользователь получает дайджест
непрочитанных сообщений письмом
на электронную почту не чаще раза в
неделю*.
Типичный тест-кейс
“
”
* Пример выдуманный! :)
Как будем тестировать?
● регистрируемся
● … проходит неделя
● получаем письмо
● ждем ещё неделю
● получаем письмо
● PROFIT?
Поищем короткий
путь?
Эволюция обращений к программистам:
“Подкрутите мне в базе…”
1. “А сделайте мне, чтоб дата отправки
последнего письма была больше
недели назад?”
2. “А скажите, где в базе хранится дата
отправки, я вручную изменю?”
3. “А давайте сделаем интерфейс, где
каждый сможет менять дату?”
4. “А запилите нам API?”
Все любят короткие пути!
Почему именно API?
Чем это лучше веб-интерфейса?
Calabash
Система тестирования
мобильных приложений,
основанная на Ruby и Cucumber.
Автотесты
Selenium
Мощный инструмент
автоматизации
браузеров.
Эти инструменты легко интегрировать с API, но очень сложно - с веб-интерфейсом:
Интеграционные
тесты
Тестирование клиент-серверного
взаимодействия.
Как это работает
дай мне нового юзера
да пожалуйста!
добавь ему фото
нет проблем!
и дату регистрации смени
как скажешь, хозяин!
registerNewUser(age=25)
{success:true, user_id:123, name:Alex, login:test123, passwd:Aj8SD8}
addPhoto(count=1)
{success: true}
setRegistrationDate(date=2014-02-12)
{success: true}
Что оно должно уметь?
Зависит от вашего проекта. У каждого - своё API.
Наше API умеет:
● регистрировать, изменять и удалять юзеров
● голосовать за пользователей
● отправлять сообщения
● включать/выключать платные услуги
● добавлять “кредиты”
● загружать и “модерировать” фотки
● давать информацию (например свойства юзера)
● и всякое другое
● все функции в одном месте
● простота протокола
● страничка помощи
● система авторизации
● управление тестовыми юзерами
● безопасность “боевых” данных
Что мы хотим получить?
А что под капотом?
Keep it simple
http://qaapi.example.com/setRegistrationDate?user_id=123&date=20140612
{
"status": "success",
"user": {
"user_id": "123",
"registration_date": "2014-06-12",
}
}
Простой HTTP-запрос:
Ответ в формате JSON:
Страница помощи
В QaApi есть страничка помощи, где перечислены все имеющиеся методы
(описание, возможные аргументы и тип возвращаемого значения).
Эта страничка генерируется автоматически из исходного кода QaApi.
Ручной режим
Интеграция с существующей системой доступа
для сотрудников, с возможностью управлять
полномочиями.
Авторизация
Автоматизация
Сущестует несколько простых подходов:
1. Секретный ключ в HTTP-заголовке
2. HTTP Basic Auth
3. Логин-пароль в параметрах запроса
GET /methodName?foo=bar HTTP/1.1
Host: qaapi.example.com
Connection: keep-alive
X-Secret-Header : abcdEfg76kGkljhJHk92
GET /methodName?foo=bar HTTP/1.1
Host: qaapi.example.com
Connection: keep-alive
Authorization : Basic cdEfа3GkljhJHk54==
GET /methodName? login=test&pass=123 HTTP/1.1
Host: qaapi.example.com
Connection: keep-alive
Тестовые пользователи
Для тестирования постоянно требуются
пользователи с разными свойствами.
Создавать новых юзеров
+ юзер “чистый”
+ его никто не использует
+ можно делать что хотим и не чистить
− быстро плодятся
− нужно готовить к тесту
Где их взять?
Использовать заранее созданных
+ юзер готов к тесту
+ юзеров немного
− нужно чистить
− может использоваться кем-то ещё
− подходящего юзера может не быть
VS
Наше решение - пул юзеров
Цикл жизни тестового юзера в пуле
Ждет в пуле Используется
Очистка “Использован”
Создан Может быть изменен
в процессе теста
Не может быть
использован
повторно до очистки
registerUser()
Регистрация юзеров
Регистрируем Ж, 25 лет,
Москва
Есть такой
юзер?
Создать нового юзера
Добавить в пулВзять из пула
нет
да
Добавлен с
параметрами
Ж, 25, Москва
registerUser()
Указываем только
существенные для
нас параметры
Создание новых юзеров - только тогда, когда подходящего нет в пуле.
Так как пользователь “новый”, необходимо
подготовить его к тесту, например:
● сменить дату регистрации
● добавить фото, сообщения и т.д.
● добавить и подтвердить номер телефона
● и т. д.
Все это делается с помощью QaApi
Подготовка юзеров
Подготовка юзера с помощью QaApi
Схема подготовки юзера
http://qaapi.example.com/registerUser?gender=F&age=25&location=Moscow
# {"success": true, "user_id": 123, "login": "testuser123", "passwd": "Qa6G9v"}
http://qaapi.example.com/uploadPhotos?user_id=123&count=1
# {"success": true}
http://qaapi.example.com/setRegistrationDate?user_id=123&date=2014-02-12
# {"success": true}
Было:
Сценарии QaApi на Lua
http://qaapi.example.com/registerUser?gender=F&age=25
# {"success": true, "user_id": 123, "login": "testuser123", "passwd": "Qa6G9v"}
http://qaapi.example.com/setRegistrationDate?user_id=123&date=2014-02-12
Copy user_id
Paste user_id
Стало:
user = qaapi("registerUser",{gender="F", age=25,location="Moscow"})
# {"success": true, "user_id": 123, "login": "testuser123", "passwd": "Qa6G9v"}
qaapi("setRegistrationDate",{user_id=user["user_id"], date="2014-02-12"})
Немного о процессе очистки пользователей
Наш путь:
● очистка - набор предопределенных шагов
● на каждое “сохраняемое состояние” - свой шаг очистки
(примеры: сообщения, отзывы, покупки…)
● юзер считается “очищенным” и готовым к использованию, если
успешно отработали все шаги очистки
Идеального решения нет
Шаги очистки будут добавлять программисты. Они
могут забыть добавить новый шаг при добавлении
новой фичи. Следить за этим придется вам.
Мы внедрили QaApi и стали более лучше
жить!
Почему вам стоит создать свой QaApi?
● меньше рутины
● проще тестировать сложные кейсы
● автотесты - на новый уровень
● разработчики - ваши друзья!
Что в итоге?

Weitere ähnliche Inhalte

Was ist angesagt?

Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooSQALab
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовCodeFest
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5SQALab
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийSQALab
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикSQALab
 
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?SQALab
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demandSQALab
 
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
Как 3 тестировщика играючи тестируют приложение для 10млн пользователейКак 3 тестировщика играючи тестируют приложение для 10млн пользователей
Как 3 тестировщика играючи тестируют приложение для 10млн пользователейSQALab
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформаSQALab
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
 
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"SQALab
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Badoo Development
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?SQALab
 
CI для тестировщиков или как отказаться от релизов
CI для тестировщиков или как отказаться от релизовCI для тестировщиков или как отказаться от релизов
CI для тестировщиков или как отказаться от релизовSQALab
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуSQALab
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Igor Khrol
 

Was ist angesagt? (20)

Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестов
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
Как 3 тестировщика играючи тестируют приложение для 10млн пользователейКак 3 тестировщика играючи тестируют приложение для 10млн пользователей
Как 3 тестировщика играючи тестируют приложение для 10млн пользователей
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформа
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
CI для тестировщиков или как отказаться от релизов
CI для тестировщиков или как отказаться от релизовCI для тестировщиков или как отказаться от релизов
CI для тестировщиков или как отказаться от релизов
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качеству
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
 

Andere mochten auch

Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
 
Юнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТ
Юнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТЮнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТ
Юнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТBadoo Development
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущееBadoo Development
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruBadoo Development
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Badoo Development
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Zabbix 3.0 что дальше
Zabbix 3.0 что дальше Zabbix 3.0 что дальше
Zabbix 3.0 что дальше Badoo Development
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryBadoo Development
 
Автоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделенийАвтоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделенийBadoo Development
 
Pavel Amosov - Zabbix 3.0: эволюция интерфейса
Pavel Amosov - Zabbix 3.0: эволюция интерфейсаPavel Amosov - Zabbix 3.0: эволюция интерфейса
Pavel Amosov - Zabbix 3.0: эволюция интерфейсаZabbix
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеBadoo Development
 
Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016
Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016
Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016Alexander Leyn
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma Badoo Development
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoBadoo Development
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooBadoo Development
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruBadoo Development
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Badoo Development
 

Andere mochten auch (20)

Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
 
Юнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТ
Юнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТЮнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТ
Юнит-тесты: от общего к частному. Доклад Александра Свинцова На LoveQA РИТ
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ru
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Zabbix 3.0 что дальше
Zabbix 3.0 что дальше Zabbix 3.0 что дальше
Zabbix 3.0 что дальше
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discovery
 
Автоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделенийАвтоматизация мониторинга распределенной сети подразделений
Автоматизация мониторинга распределенной сети подразделений
 
Pavel Amosov - Zabbix 3.0: эволюция интерфейса
Pavel Amosov - Zabbix 3.0: эволюция интерфейсаPavel Amosov - Zabbix 3.0: эволюция интерфейса
Pavel Amosov - Zabbix 3.0: эволюция интерфейса
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016
Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016
Ложка дёгтя – Александр Лэйн, QIWI, Zabbix Moscow Meetup 2016
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
 

Ähnlich wie QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущенко на LoveQA РИТ

QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадDmitry Maruschenko
 
Знакомство с Online Test Pad
Знакомство с Online Test PadЗнакомство с Online Test Pad
Знакомство с Online Test Padgilraenanarion
 
Пользователи в помощь тестировщику
Пользователи в помощь тестировщикуПользователи в помощь тестировщику
Пользователи в помощь тестировщикуRina Uzhevko
 
Microservices for test automation - OK.RU expirience
Microservices for test automation - OK.RU expirienceMicroservices for test automation - OK.RU expirience
Microservices for test automation - OK.RU expirienceNikita Makarov
 
тестирование и грабли
тестирование и граблитестирование и грабли
тестирование и граблиit-people
 
Тестирование и грабли - презентация Максима Букея
Тестирование и грабли - презентация Максима БукеяТестирование и грабли - презентация Максима Букея
Тестирование и грабли - презентация Максима БукеяДаниил Силантьев
 
A/B тестирование и грабли
A/B тестирование и граблиA/B тестирование и грабли
A/B тестирование и граблиМаксим Букей
 
Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...
Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...
Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...Netpeak
 
Юзабилити-тестирование
Юзабилити-тестированиеЮзабилити-тестирование
Юзабилити-тестированиеPavel Konoplitski
 
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...sqadays8
 
QA в тотальном аутсорсе
QA в тотальном аутсорсеQA в тотальном аутсорсе
QA в тотальном аутсорсеOlga Pronina
 
Test labs 2016. QA в тотальном аутсорсе
Test labs 2016. QA в тотальном аутсорсеTest labs 2016. QA в тотальном аутсорсе
Test labs 2016. QA в тотальном аутсорсеSasha Soleev
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Sergey Xek
 
Cоздание приложений со знанием Perl
Cоздание приложений со знанием PerlCоздание приложений со знанием Perl
Cоздание приложений со знанием PerlAnatoly Sharifulin
 
Обзор средств разработки тестов.
Обзор средств разработки тестов.Обзор средств разработки тестов.
Обзор средств разработки тестов.gilraenanarion
 
Юзабилити как инженерная дисциплина
Юзабилити как инженерная дисциплинаЮзабилити как инженерная дисциплина
Юзабилити как инженерная дисциплинаLead Zeppelin
 
UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...
UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...
UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...Yury Vetrov
 

Ähnlich wie QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущенко на LoveQA РИТ (20)

QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикад
 
Quality Assurance
Quality AssuranceQuality Assurance
Quality Assurance
 
Знакомство с Online Test Pad
Знакомство с Online Test PadЗнакомство с Online Test Pad
Знакомство с Online Test Pad
 
Пользователи в помощь тестировщику
Пользователи в помощь тестировщикуПользователи в помощь тестировщику
Пользователи в помощь тестировщику
 
Microservices for test automation - OK.RU expirience
Microservices for test automation - OK.RU expirienceMicroservices for test automation - OK.RU expirience
Microservices for test automation - OK.RU expirience
 
тестирование и грабли
тестирование и граблитестирование и грабли
тестирование и грабли
 
Тестирование и грабли - презентация Максима Букея
Тестирование и грабли - презентация Максима БукеяТестирование и грабли - презентация Максима Букея
Тестирование и грабли - презентация Максима Букея
 
A/B тестирование и грабли
A/B тестирование и граблиA/B тестирование и грабли
A/B тестирование и грабли
 
Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...
Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...
Мастхев набор простых и понятных инструментов для интернет-магазина по удержа...
 
Юзабилити-тестирование
Юзабилити-тестированиеЮзабилити-тестирование
Юзабилити-тестирование
 
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
 
Deadline management
Deadline managementDeadline management
Deadline management
 
Deadline management
Deadline managementDeadline management
Deadline management
 
QA в тотальном аутсорсе
QA в тотальном аутсорсеQA в тотальном аутсорсе
QA в тотальном аутсорсе
 
Test labs 2016. QA в тотальном аутсорсе
Test labs 2016. QA в тотальном аутсорсеTest labs 2016. QA в тотальном аутсорсе
Test labs 2016. QA в тотальном аутсорсе
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
 
Cоздание приложений со знанием Perl
Cоздание приложений со знанием PerlCоздание приложений со знанием Perl
Cоздание приложений со знанием Perl
 
Обзор средств разработки тестов.
Обзор средств разработки тестов.Обзор средств разработки тестов.
Обзор средств разработки тестов.
 
Юзабилити как инженерная дисциплина
Юзабилити как инженерная дисциплинаЮзабилити как инженерная дисциплина
Юзабилити как инженерная дисциплина
 
UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...
UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...
UXRussia 5: Юзабилити-экспертиза в прямом эфире (Юрий Ветров, Александр Хмеле...
 

Mehr von Badoo Development

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationBadoo Development
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUBadoo Development
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерBadoo Development
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, AvitoBadoo Development
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicBadoo Development
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentBadoo Development
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityBadoo Development
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхBadoo Development
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsBadoo Development
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноBadoo Development
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
 
Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL Badoo Development
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Badoo Development
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоадаBadoo Development
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кодаBadoo Development
 
Versioning strategy for a complex internal API
Versioning strategy for a complex internal APIVersioning strategy for a complex internal API
Versioning strategy for a complex internal APIBadoo Development
 
Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQLBadoo Development
 
Методология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, ОтношенияМетодология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, ОтношенияBadoo Development
 

Mehr von Badoo Development (20)

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel Automation
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RU
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.Браузер
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, Avito
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данных
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana Labs
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
 
Как мы готовим MySQL
 Как мы готовим MySQL  Как мы готовим MySQL
Как мы готовим MySQL
 
Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo Архитектура хранения и отдачи фотографий в Badoo
Архитектура хранения и отдачи фотографий в Badoo
 
5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада5 способов деплоя PHP-кода в условиях хайлоада
5 способов деплоя PHP-кода в условиях хайлоада
 
ChromeDriver Jailbreak
ChromeDriver JailbreakChromeDriver Jailbreak
ChromeDriver Jailbreak
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кода
 
Versioning strategy for a complex internal API
Versioning strategy for a complex internal APIVersioning strategy for a complex internal API
Versioning strategy for a complex internal API
 
Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQL
 
Методология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, ОтношенияМетодология: БЭМ, Модули, Отношения
Методология: БЭМ, Модули, Отношения
 

QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущенко на LoveQA РИТ

  • 1. QaApi взгляд на тестирование с другой стороны баррикад Дмитрий Марущенко
  • 2. Badoo - это про знакомства...
  • 3. ...и про технологии У нас было 2 веб-сайта, 4 разных мобильных платформы и целое море различных версий мобильных приложений, а также версия для мобильных браузеров и приложения в социальных сетях. Не то что бы все это было категорически необходимо для бизнеса, но если уж начали делать социальную сеть, то становится трудно остановиться. Единственное, что вызывало у меня опасения - это релизы вечером в пятницу. Нет ничего более беспомощного, безответственного и испорченного, чем пятничный релиз. Я знал, что рано или поздно мы перейдем и эту грань. “ ”
  • 5. Знаете, что самое важное на этом плане?
  • 6. Знаете, что самое важное на этом плане? ?
  • 7. Знаете, что самое важное на этом плане? Короткие пути!
  • 8. Пользователь получает дайджест непрочитанных сообщений письмом на электронную почту не чаще раза в неделю*. Типичный тест-кейс “ ” * Пример выдуманный! :)
  • 9. Как будем тестировать? ● регистрируемся ● … проходит неделя ● получаем письмо ● ждем ещё неделю ● получаем письмо ● PROFIT?
  • 11. Эволюция обращений к программистам: “Подкрутите мне в базе…” 1. “А сделайте мне, чтоб дата отправки последнего письма была больше недели назад?” 2. “А скажите, где в базе хранится дата отправки, я вручную изменю?” 3. “А давайте сделаем интерфейс, где каждый сможет менять дату?” 4. “А запилите нам API?” Все любят короткие пути!
  • 12. Почему именно API? Чем это лучше веб-интерфейса?
  • 13. Calabash Система тестирования мобильных приложений, основанная на Ruby и Cucumber. Автотесты Selenium Мощный инструмент автоматизации браузеров. Эти инструменты легко интегрировать с API, но очень сложно - с веб-интерфейсом: Интеграционные тесты Тестирование клиент-серверного взаимодействия.
  • 14. Как это работает дай мне нового юзера да пожалуйста! добавь ему фото нет проблем! и дату регистрации смени как скажешь, хозяин! registerNewUser(age=25) {success:true, user_id:123, name:Alex, login:test123, passwd:Aj8SD8} addPhoto(count=1) {success: true} setRegistrationDate(date=2014-02-12) {success: true}
  • 15. Что оно должно уметь? Зависит от вашего проекта. У каждого - своё API. Наше API умеет: ● регистрировать, изменять и удалять юзеров ● голосовать за пользователей ● отправлять сообщения ● включать/выключать платные услуги ● добавлять “кредиты” ● загружать и “модерировать” фотки ● давать информацию (например свойства юзера) ● и всякое другое
  • 16. ● все функции в одном месте ● простота протокола ● страничка помощи ● система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных Что мы хотим получить?
  • 17. А что под капотом?
  • 18. Keep it simple http://qaapi.example.com/setRegistrationDate?user_id=123&date=20140612 { "status": "success", "user": { "user_id": "123", "registration_date": "2014-06-12", } } Простой HTTP-запрос: Ответ в формате JSON:
  • 19. Страница помощи В QaApi есть страничка помощи, где перечислены все имеющиеся методы (описание, возможные аргументы и тип возвращаемого значения). Эта страничка генерируется автоматически из исходного кода QaApi.
  • 20. Ручной режим Интеграция с существующей системой доступа для сотрудников, с возможностью управлять полномочиями. Авторизация Автоматизация Сущестует несколько простых подходов: 1. Секретный ключ в HTTP-заголовке 2. HTTP Basic Auth 3. Логин-пароль в параметрах запроса GET /methodName?foo=bar HTTP/1.1 Host: qaapi.example.com Connection: keep-alive X-Secret-Header : abcdEfg76kGkljhJHk92 GET /methodName?foo=bar HTTP/1.1 Host: qaapi.example.com Connection: keep-alive Authorization : Basic cdEfа3GkljhJHk54== GET /methodName? login=test&pass=123 HTTP/1.1 Host: qaapi.example.com Connection: keep-alive
  • 21. Тестовые пользователи Для тестирования постоянно требуются пользователи с разными свойствами.
  • 22. Создавать новых юзеров + юзер “чистый” + его никто не использует + можно делать что хотим и не чистить − быстро плодятся − нужно готовить к тесту Где их взять? Использовать заранее созданных + юзер готов к тесту + юзеров немного − нужно чистить − может использоваться кем-то ещё − подходящего юзера может не быть VS
  • 23. Наше решение - пул юзеров Цикл жизни тестового юзера в пуле Ждет в пуле Используется Очистка “Использован” Создан Может быть изменен в процессе теста Не может быть использован повторно до очистки registerUser()
  • 24. Регистрация юзеров Регистрируем Ж, 25 лет, Москва Есть такой юзер? Создать нового юзера Добавить в пулВзять из пула нет да Добавлен с параметрами Ж, 25, Москва registerUser() Указываем только существенные для нас параметры Создание новых юзеров - только тогда, когда подходящего нет в пуле.
  • 25. Так как пользователь “новый”, необходимо подготовить его к тесту, например: ● сменить дату регистрации ● добавить фото, сообщения и т.д. ● добавить и подтвердить номер телефона ● и т. д. Все это делается с помощью QaApi Подготовка юзеров
  • 26. Подготовка юзера с помощью QaApi Схема подготовки юзера http://qaapi.example.com/registerUser?gender=F&age=25&location=Moscow # {"success": true, "user_id": 123, "login": "testuser123", "passwd": "Qa6G9v"} http://qaapi.example.com/uploadPhotos?user_id=123&count=1 # {"success": true} http://qaapi.example.com/setRegistrationDate?user_id=123&date=2014-02-12 # {"success": true}
  • 27. Было: Сценарии QaApi на Lua http://qaapi.example.com/registerUser?gender=F&age=25 # {"success": true, "user_id": 123, "login": "testuser123", "passwd": "Qa6G9v"} http://qaapi.example.com/setRegistrationDate?user_id=123&date=2014-02-12 Copy user_id Paste user_id Стало: user = qaapi("registerUser",{gender="F", age=25,location="Moscow"}) # {"success": true, "user_id": 123, "login": "testuser123", "passwd": "Qa6G9v"} qaapi("setRegistrationDate",{user_id=user["user_id"], date="2014-02-12"})
  • 28. Немного о процессе очистки пользователей
  • 29. Наш путь: ● очистка - набор предопределенных шагов ● на каждое “сохраняемое состояние” - свой шаг очистки (примеры: сообщения, отзывы, покупки…) ● юзер считается “очищенным” и готовым к использованию, если успешно отработали все шаги очистки Идеального решения нет Шаги очистки будут добавлять программисты. Они могут забыть добавить новый шаг при добавлении новой фичи. Следить за этим придется вам.
  • 30. Мы внедрили QaApi и стали более лучше жить! Почему вам стоит создать свой QaApi? ● меньше рутины ● проще тестировать сложные кейсы ● автотесты - на новый уровень ● разработчики - ваши друзья! Что в итоге?