SlideShare a Scribd company logo
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?
● меньше рутины
● проще тестировать сложные кейсы
● автотесты - на новый уровень
● разработчики - ваши друзья!
Что в итоге?

More Related Content

PPTX
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
PDF
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
PPTX
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
PPTX
Тестируем производительность с помощью Selenium
PPTX
GUI-автоматизация в Telerik Test Studio
PPTX
Практика тестирования web сервисов
PDF
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
PPTX
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Тестируем производительность с помощью Selenium
GUI-автоматизация в Telerik Test Studio
Практика тестирования web сервисов
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Багфиксинг процесса разработки в iOS: взгляд с двух сторон

What's hot (20)

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

Viewers also liked (20)

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

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

PDF
QaApi: взгляд на тестирование с другой стороны баррикад
PPTX
ITmozg, Даниил Павлючков
PDF
Тестирование API дизайна [NoBugs WTF PRO уровень]
PDF
Разработка мобильного и веб интерфейса для Caché
PPTX
Тестирование мобильных API: Behind The Scenes
PDF
Стратегия покрытия эндпоинтов [NoBugs WTF PRO уровень]
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PDF
Виталий Каторгин, Wamba
PPTX
Игорь Любин - Об опыте тестирования ПК без UI
PPTX
Postman тестирование api v1.0 (1)
PDF
ДЛЯ МОБИЛЬНЫХ РАЗРАБОТЧИКОВ
PDF
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений...
PDF
JavaScript Базовый. Занятие 09.
PDF
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
PDF
Разработка RESTful api with all bells and whistles
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PPTX
RESTful API: Best practices, versioning, design documentation
PDF
Игорь Кашкута
PDF
WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку AP...
PPTX
Фреймворк автотестирования веб-сервисов своими силами
QaApi: взгляд на тестирование с другой стороны баррикад
ITmozg, Даниил Павлючков
Тестирование API дизайна [NoBugs WTF PRO уровень]
Разработка мобильного и веб интерфейса для Caché
Тестирование мобильных API: Behind The Scenes
Стратегия покрытия эндпоинтов [NoBugs WTF PRO уровень]
Web and mobile development for intersystems caché, Eduard Lebedyuk
Виталий Каторгин, Wamba
Игорь Любин - Об опыте тестирования ПК без UI
Postman тестирование api v1.0 (1)
ДЛЯ МОБИЛЬНЫХ РАЗРАБОТЧИКОВ
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений...
JavaScript Базовый. Занятие 09.
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
Разработка RESTful api with all bells and whistles
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
RESTful API: Best practices, versioning, design documentation
Игорь Кашкута
WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку AP...
Фреймворк автотестирования веб-сервисов своими силами

More from Badoo Development (20)

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