SlideShare a Scribd company logo
QaApi 
взгляд на тестирование с другой стороны баррикад 
Дмитрий Марущенко
Badoo - это про знакомства...
...и про технологии 
У нас было 2 веб-сайта, 4 разных мобильных платформы 
и целое море различных версий мобильных приложений, 
а также версия для мобильных браузеров и приложения в 
социальных сетях. Не то что бы все это было 
категорически необходимо для бизнеса, но если уж 
начали делать социальную сеть, то становится трудно 
остановиться. Единственное, что вызывало у меня 
опасения - это релизы вечером в пятницу. Нет ничего 
более беспомощного, безответственного и испорченного, 
чем пятничный релиз. Я знал, что рано или поздно мы 
перейдем и эту грань. 
“ 
”
Что такое QaApi? 
QaApi - это API (Application Programming 
Interface) для отдела QA (Quality Assurance). 
Это API предназначено для изменения 
внутреннего состояния системы в процессе 
ручного или автоматизированного 
тестирования приложения.
Что такое QaApi? 
QaApi - это API (Application Programming 
Interface) для отдела QA (Quality Assurance). 
БОЖЕ МОЙ! 
ДА ЧТО Ж ТАК 
СКУЧНО-ТО, А? 
Это API предназначено для изменения 
внутреннего состояния системы в процессе 
ручного или автоматизированного 
тестирования приложения.
Начнем издалека
Знаете, что самое важное на этом плане?
? 
Знаете, что самое важное на этом плане?
Короткие пути! 
Знаете, что самое важное на этом плане?
Типичный тест-кейс 
“ 
Пользователи, зарегистрированные 
на Badoo более месяца назад, в день 
своего рождения получают в подарок 
100 кредитов*. 
” 
* Пример выдуманный! :)
Как будем тестировать? 
● регистрируемся 
● ждем месяц??? 
● ждем ещё... 
● … до дня рождения? 
● получаем кредиты 
● PROFIT?
Или поищем короткий 
путь?
“Подкрутите мне в базе…” 
Эволюция обращений к программистам: 
1. “А сделайте мне, чтоб дата 
регистрации была месяц назад?” 
2. “А скажите, где в базе хранится дата 
регистрации, я вручную изменю?” 
3. “А давайте сделаем интерфейс, где 
каждый сможет менять дату?” 
4. “А запилите нам API?” 
Все любят короткие пути!
Почему именно API? 
Чем это лучше веб-интерфейса?
Автотесты 
Эти инструменты легко интегрировать с API, но очень сложно - с веб-интерфейсом: 
Calabash 
Система тестирования 
мобильных приложений, 
основанная на Ruby и Cucumber. 
Selenium 
Мощный инструмент 
автоматизации 
браузеров. 
Интеграционные 
тесты 
Тестирование клиент-серверного 
взаимодействия.
Наша идея вам подойдет, если: 
● ваше приложение имеет 
серверную часть 
QaApi не поможет тестировщикам 
оффлайн-игры на телефоне 
● ваше приложение хранит 
состояние между запросами 
частный случай ‒ в системе 
регистрируются пользователи 
● вы уже как минимум на 3 этапе 
интерфейс уже есть, пора пилить API
Что за API такое? 
Лапа̀роскопи́я (др.-греч. λαπάρα — пах, 
чрево + др.-греч. σκοπέω — смотрю) — 
современный метод хирургии, в котором 
операции на внутренних органах 
проводят через небольшие (обычно 
0,5—1,5 см) отверстия, в то время как 
при традиционной хирургии требуются 
большие разрезы. 
“ 
” QaApi - это то самое 
небольшое отверстие, через 
которое тестировщики смогут 
вмешиваться в деятельность 
живой (“боевой”) системы.
Как это работает 
дай мне нового юзера 
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 умеет: 
● регистрировать, изменять и удалять юзеров 
● голосовать за пользователей 
● отправлять сообщения 
● включать/выключать платные услуги 
● добавлять “кредиты” 
● загружать и “модерировать” фотки 
● давать информацию (например свойства юзера) 
● и всякое другое
Куда идти? 
Конечно, к разработчикам! Можно так: 
Запилите мне API, тысяча чертей! Okay 
Отдел QA Отдел разработки
Но лучше так.
Что мы хотим получить? 
● все функции в одном месте 
● простота протокола 
● страничка помощи 
● система авторизации 
● управление тестовыми юзерами 
● безопасность “боевых” данных
А что под капотом?
Keep it simple 
˟̀˾́̂˾˹+773˷˰˿̀˾́ 
http://qaapi.example.com/setRegistrationDate?user_id=123date=20140612 
˞̂˲˵̂˲̄˾̀˼˰̂˵-621 
{ 
status: success, 
user: { 
user_id: 123, 
registration_date: 2014-06-12, 
} 
}
Что у нас есть? 
✓ все функции в одном месте 
✓ простота протокола 
● страничка помощи 
● система авторизации 
● управление тестовыми юзерами 
● безопасность “боевых” данных
Страница помощи 
В QaApi есть страничка помощи, где перечислены все имеющиеся методы 
(описание, возможные аргументы и тип возвращаемого значения). 
Эта страничка генерируется автоматически из исходного кода QaApi.
Авторизация 
Ручной режим 
Интеграция с существующей системой доступа 
для сотрудников, с возможностью управлять 
полномочиями. 
Автоматизация 
Сущестует несколько простых подходов: 
1. Секретный ключ в HTTP-заголовке 
GET /methodName?foo=bar HTTP/1.1 
Host: qaapi.example.com 
Connection: keep-alive 
X-Secret-Header : abcdEfg76kGkljhJHk92 
2. HTTP Basic Auth 
GET /methodName?foo=bar HTTP/1.1 
Host: qaapi.example.com 
Connection: keep-alive 
Authorization : Basic cdEfа3GkljhJHk54== 
3. Логин-пароль в параметрах запроса 
GET /methodName? login=testpass=123 HTTP/1.1 
Host: qaapi.example.com 
Connection: keep-alive
Что у нас есть? 
✓ все функции в одном месте 
✓ простота протокола 
✓ страничка помощи 
✓ система авторизации 
● управление тестовыми юзерами 
● безопасность “боевых” данных
Тестовые пользователи 
Для тестирования постоянно требуются 
пользователи с разными свойствами.
Где их взять? 
Создавать новых юзеров 
+ юзер “чистый” 
+ его никто не использует 
+ можно делать что хотим и не чистить 
− быстро плодятся 
− нужно готовить к тесту 
Использовать заранее созданных 
+ юзер готов к тесту 
+ юзеров немного 
− нужно чистить 
− может использоваться кем-то ещё 
− другие могли не почистить 
VS
Наше решение - пул юзеров 
Цикл жизни тестового юзера в пуле 
Создан ˜˾˶˵̂˱̋̂̌˸˷˼˵˽˵˽ 
Ждет в пуле Используется 
Очистка “Использован” 
˲˿̀˾̆˵́́˵̂˵́̂˰ 
˝˵˼˾˶˵̂˱̋̂̌ 
˸́˿˾˻̌˷˾˲˰˽ 
˿˾˲̂˾̀˽˾˴˾˾̇˸́̂˺˸ 
registerUser()
Регистрация юзеров 
Создание новых юзеров - только тогда, когда подходящего нет в пуле. 
Регистрируем Ж, 25 лет, 
Москва 
Есть такой 
юзер? 
Создать нового юзера 
˽˵̂ 
˴˰ 
Взять из пула Добавить в пул 
˔˾˱˰˲˻˵˽́ 
˿˰̀˰˼˵̂̀˰˼˸ 
˖˜˾́˺˲˰ 
registerUser() 
ˣ˺˰˷̋˲˰˵˼̂˾˻̌˺˾ 
́̃̉˵́̂˲˵˽˽̋˵˴˻̏ 
˽˰́˿˰̀˰˼˵̂̀̋
Подготовка юзеров 
Так как пользователь “новый”, необходимо 
подготовить его к тесту, например: 
● сменить дату регистрации 
● добавить фото, сообщения и т.д. 
● добавить и подтвердить номер телефона 
● и т. д. 
Все это делается с помощью QaApi
Схема подготовки юзера 
Подготовка юзера с помощью QaApi 
http://qaapi.example.com/registerUser?gender=Fage=25location=Moscow 
# {success: true, user_id: 123, login: testuser123, passwd: Qa6G9v} 
http://qaapi.example.com/uploadPhotos?user_id=123count=1 
# {success: true} 
http://qaapi.example.com/setRegistrationDate?user_id=123date=2014-02-12 
# {success: true}
Немного о процессе очистки пользователей
Идеального решения нет 
Наш путь: 
● очистка - набор предопределенных шагов 
● на каждое “сохраняемое состояние” - свой шаг очистки 
(примеры: сообщения, отзывы, покупки…) 
● юзер считается “очищенным” и готовым к использованию, если 
успешно отработали все шаги очистки 
Шаги очистки будут добавлять программисты. Они 
могут забыть добавить новый шаг при добавлении 
новой фичи. Следить за этим придется вам.
Что у нас есть? 
✓ все функции в одном месте 
✓ простота протокола 
✓ страничка помощи 
✓ система авторизации 
✓ управление тестовыми юзерами 
● безопасность “боевых” данных
Люди не идеальны. Нам нужна защита от дурака.
Живые пользователи 
Методы QaApi работают только с тестовыми 
пользователями. 
Это не может защитить вас от намеренного злоупотребления, но 
помогает защититься от таких ошибок, как опечатка в user id. 
В качестве дополнительной защиты вы можете реализовать 
различные права доступа к различным методам QaApi.
No robots allowed! 
Юзеры из пула QaApi не видны живым пользователям!
Что у нас есть? 
✓ все функции в одном месте 
✓ простота протокола 
✓ страничка помощи 
✓ система авторизации 
✓ управление тестовыми юзерами 
✓ безопасность “боевых” данных
Продвинутое кунг-фу
Сценарии QaAPI 
Было: 
RSXVHUBLG 
http://qaapi.example.com/registerUser?gender=Fage=25 
# {success: true, user_id: 123, login: testuser123, passwd: Qa6G9v} 
http://qaapi.example.com/setRegistrationDate?user_id=123date=2014-02-12 
3DVWHXVHUBLG 
Стало: 
$rslt = run registerUser({gender: F, age: 25, location: Moscow}) 
# {success: true, user_id: 123, login: testuser123, passwd: Qa6G9v} 
run setRegistrationDate({user_id:$rslt[user_id], date: 2014-02-12})
A/B-тестирование 
A/B - тестирование - это инструмент для оценки эффективности какого-либо нововведения. 
Выберешь синюю пилюлю – и эта история 
закончится. Ты проснешься в своей постели и 
будешь верить в то, во что тебе хочется 
верить. Выберешь красную – попадешь в 
Страну Чудес, и я покажу тебе, насколько 
глубока кроличья нора ... “ 
” Где взять пользователя, который точно 
? пойдет за белым кроликом? 
Поручите это QaApi!
Статистика команд 
Выявление регрессий в новых версиях мобильных клиентов 
● клиент с помощью QaApi проставляет отметку о том, что выполняется определенный тестовый сценарий 
● система осуществляет сбор логов взаимодействия клиента и сервера 
● производится автоматическая обработка этих логов 
● строятся графики по количеству команд в каждом тестовом сценарии 
WTF?
Мы внедрили QaApi и стали более лучше 
жить! 
Почему вам стоит начать делать техническое задание 
уже завтра? 
● меньше рутины 
● проще тестировать сложные кейсы 
● автотесты - на новый уровень 
● разработчики - ваши друзья! 
Что в итоге?
Что я не рассказал 
но должен был рассказать?

More Related Content

PDF
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
PDF
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
PPTX
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
PPTX
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
PPTX
Тестируем производительность с помощью Selenium
PDF
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
PPTX
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
PDF
BDD girls Battle: Cucumber VS. JBehave
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
Тестируем производительность с помощью Selenium
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
BDD girls Battle: Cucumber VS. JBehave

What's hot (19)

PDF
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
PDF
Как мы приручили демона или процесс тестирования демонов в Badoo
PPTX
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
PPTX
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
PDF
Selenium grid on-demand
PDF
Реактивный двигатель вашего Android приложения
PPT
Опыт тестирования API САПР платформы
PPTX
Behavior Driven Development
PPTX
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
PDF
Load testing with Tsung
PDF
Автоматизация UI тестирования под Windows и Windows Phone
PDF
Мобильный веб: назад в будущее
PPTX
Behat-trick: как мы внедряли BDD на наших проектах
PDF
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
PPTX
Повышение качества тестов и автоматическая валидация REST API документации
PPTX
CI для тестировщиков или как отказаться от релизов
PPTX
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
PDF
Автоматизация функционального тестирования REST API
PDF
WP как экспериментальная платформа
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Как мы приручили демона или процесс тестирования демонов в Badoo
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Selenium grid on-demand
Реактивный двигатель вашего Android приложения
Опыт тестирования API САПР платформы
Behavior Driven Development
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Load testing with Tsung
Автоматизация UI тестирования под Windows и Windows Phone
Мобильный веб: назад в будущее
Behat-trick: как мы внедряли BDD на наших проектах
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Повышение качества тестов и автоматическая валидация REST API документации
CI для тестировщиков или как отказаться от релизов
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Автоматизация функционального тестирования REST API
WP как экспериментальная платформа
Ad

Similar to QaApi: взгляд на тестирование с другой стороны баррикад (20)

PPTX
ITmozg, Даниил Павлючков
PPTX
Тестирование мобильных API: Behind The Scenes
PDF
Тестирование API дизайна [NoBugs WTF PRO уровень]
PPTX
Postman тестирование api v1.0 (1)
PDF
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
PDF
Разработка RESTful api with all bells and whistles
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PDF
Виталий Каторгин, Wamba
PDF
Разработка мобильного и веб интерфейса для Caché
PPTX
RESTful API: Best practices, versioning, design documentation
PPTX
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PPTX
Фреймворк автотестирования веб-сервисов своими силами
PDF
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений...
PDF
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
PDF
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
PPTX
Игорь Любин - Об опыте тестирования ПК без UI
PPTX
Автоматизация тестирования веб-сервисов посредством SOAP UI
PDF
RESTful API development with Symfony2
PDF
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
ITmozg, Даниил Павлючков
Тестирование мобильных API: Behind The Scenes
Тестирование API дизайна [NoBugs WTF PRO уровень]
Postman тестирование api v1.0 (1)
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
Разработка RESTful api with all bells and whistles
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Виталий Каторгин, Wamba
Разработка мобильного и веб интерфейса для Caché
RESTful API: Best practices, versioning, design documentation
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Web and mobile development for intersystems caché, Eduard Lebedyuk
Фреймворк автотестирования веб-сервисов своими силами
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Игорь Любин - Об опыте тестирования ПК без UI
Автоматизация тестирования веб-сервисов посредством SOAP UI
RESTful API development with Symfony2
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
Ad

QaApi: взгляд на тестирование с другой стороны баррикад

  • 1. QaApi взгляд на тестирование с другой стороны баррикад Дмитрий Марущенко
  • 2. Badoo - это про знакомства...
  • 3. ...и про технологии У нас было 2 веб-сайта, 4 разных мобильных платформы и целое море различных версий мобильных приложений, а также версия для мобильных браузеров и приложения в социальных сетях. Не то что бы все это было категорически необходимо для бизнеса, но если уж начали делать социальную сеть, то становится трудно остановиться. Единственное, что вызывало у меня опасения - это релизы вечером в пятницу. Нет ничего более беспомощного, безответственного и испорченного, чем пятничный релиз. Я знал, что рано или поздно мы перейдем и эту грань. “ ”
  • 4. Что такое QaApi? QaApi - это API (Application Programming Interface) для отдела QA (Quality Assurance). Это API предназначено для изменения внутреннего состояния системы в процессе ручного или автоматизированного тестирования приложения.
  • 5. Что такое QaApi? QaApi - это API (Application Programming Interface) для отдела QA (Quality Assurance). БОЖЕ МОЙ! ДА ЧТО Ж ТАК СКУЧНО-ТО, А? Это API предназначено для изменения внутреннего состояния системы в процессе ручного или автоматизированного тестирования приложения.
  • 7. Знаете, что самое важное на этом плане?
  • 8. ? Знаете, что самое важное на этом плане?
  • 9. Короткие пути! Знаете, что самое важное на этом плане?
  • 10. Типичный тест-кейс “ Пользователи, зарегистрированные на Badoo более месяца назад, в день своего рождения получают в подарок 100 кредитов*. ” * Пример выдуманный! :)
  • 11. Как будем тестировать? ● регистрируемся ● ждем месяц??? ● ждем ещё... ● … до дня рождения? ● получаем кредиты ● PROFIT?
  • 13. “Подкрутите мне в базе…” Эволюция обращений к программистам: 1. “А сделайте мне, чтоб дата регистрации была месяц назад?” 2. “А скажите, где в базе хранится дата регистрации, я вручную изменю?” 3. “А давайте сделаем интерфейс, где каждый сможет менять дату?” 4. “А запилите нам API?” Все любят короткие пути!
  • 14. Почему именно API? Чем это лучше веб-интерфейса?
  • 15. Автотесты Эти инструменты легко интегрировать с API, но очень сложно - с веб-интерфейсом: Calabash Система тестирования мобильных приложений, основанная на Ruby и Cucumber. Selenium Мощный инструмент автоматизации браузеров. Интеграционные тесты Тестирование клиент-серверного взаимодействия.
  • 16. Наша идея вам подойдет, если: ● ваше приложение имеет серверную часть QaApi не поможет тестировщикам оффлайн-игры на телефоне ● ваше приложение хранит состояние между запросами частный случай ‒ в системе регистрируются пользователи ● вы уже как минимум на 3 этапе интерфейс уже есть, пора пилить API
  • 17. Что за API такое? Лапа̀роскопи́я (др.-греч. λαπάρα — пах, чрево + др.-греч. σκοπέω — смотрю) — современный метод хирургии, в котором операции на внутренних органах проводят через небольшие (обычно 0,5—1,5 см) отверстия, в то время как при традиционной хирургии требуются большие разрезы. “ ” QaApi - это то самое небольшое отверстие, через которое тестировщики смогут вмешиваться в деятельность живой (“боевой”) системы.
  • 18. Как это работает дай мне нового юзера 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}
  • 19. Что оно должно уметь? Зависит от вашего проекта. У каждого - своё API. Наше API умеет: ● регистрировать, изменять и удалять юзеров ● голосовать за пользователей ● отправлять сообщения ● включать/выключать платные услуги ● добавлять “кредиты” ● загружать и “модерировать” фотки ● давать информацию (например свойства юзера) ● и всякое другое
  • 20. Куда идти? Конечно, к разработчикам! Можно так: Запилите мне API, тысяча чертей! Okay Отдел QA Отдел разработки
  • 22. Что мы хотим получить? ● все функции в одном месте ● простота протокола ● страничка помощи ● система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных
  • 23. А что под капотом?
  • 24. Keep it simple ˟̀˾́̂˾˹+773˷˰˿̀˾́ http://qaapi.example.com/setRegistrationDate?user_id=123date=20140612 ˞̂˲˵̂˲̄˾̀˼˰̂˵-621 { status: success, user: { user_id: 123, registration_date: 2014-06-12, } }
  • 25. Что у нас есть? ✓ все функции в одном месте ✓ простота протокола ● страничка помощи ● система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных
  • 26. Страница помощи В QaApi есть страничка помощи, где перечислены все имеющиеся методы (описание, возможные аргументы и тип возвращаемого значения). Эта страничка генерируется автоматически из исходного кода QaApi.
  • 27. Авторизация Ручной режим Интеграция с существующей системой доступа для сотрудников, с возможностью управлять полномочиями. Автоматизация Сущестует несколько простых подходов: 1. Секретный ключ в HTTP-заголовке GET /methodName?foo=bar HTTP/1.1 Host: qaapi.example.com Connection: keep-alive X-Secret-Header : abcdEfg76kGkljhJHk92 2. HTTP Basic Auth GET /methodName?foo=bar HTTP/1.1 Host: qaapi.example.com Connection: keep-alive Authorization : Basic cdEfа3GkljhJHk54== 3. Логин-пароль в параметрах запроса GET /methodName? login=testpass=123 HTTP/1.1 Host: qaapi.example.com Connection: keep-alive
  • 28. Что у нас есть? ✓ все функции в одном месте ✓ простота протокола ✓ страничка помощи ✓ система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных
  • 29. Тестовые пользователи Для тестирования постоянно требуются пользователи с разными свойствами.
  • 30. Где их взять? Создавать новых юзеров + юзер “чистый” + его никто не использует + можно делать что хотим и не чистить − быстро плодятся − нужно готовить к тесту Использовать заранее созданных + юзер готов к тесту + юзеров немного − нужно чистить − может использоваться кем-то ещё − другие могли не почистить VS
  • 31. Наше решение - пул юзеров Цикл жизни тестового юзера в пуле Создан ˜˾˶˵̂˱̋̂̌˸˷˼˵˽˵˽ Ждет в пуле Используется Очистка “Использован” ˲˿̀˾̆˵́́˵̂˵́̂˰ ˝˵˼˾˶˵̂˱̋̂̌ ˸́˿˾˻̌˷˾˲˰˽ ˿˾˲̂˾̀˽˾˴˾˾̇˸́̂˺˸ registerUser()
  • 32. Регистрация юзеров Создание новых юзеров - только тогда, когда подходящего нет в пуле. Регистрируем Ж, 25 лет, Москва Есть такой юзер? Создать нового юзера ˽˵̂ ˴˰ Взять из пула Добавить в пул ˔˾˱˰˲˻˵˽́ ˿˰̀˰˼˵̂̀˰˼˸ ˖˜˾́˺˲˰ registerUser() ˣ˺˰˷̋˲˰˵˼̂˾˻̌˺˾ ́̃̉˵́̂˲˵˽˽̋˵˴˻̏ ˽˰́˿˰̀˰˼˵̂̀̋
  • 33. Подготовка юзеров Так как пользователь “новый”, необходимо подготовить его к тесту, например: ● сменить дату регистрации ● добавить фото, сообщения и т.д. ● добавить и подтвердить номер телефона ● и т. д. Все это делается с помощью QaApi
  • 34. Схема подготовки юзера Подготовка юзера с помощью QaApi http://qaapi.example.com/registerUser?gender=Fage=25location=Moscow # {success: true, user_id: 123, login: testuser123, passwd: Qa6G9v} http://qaapi.example.com/uploadPhotos?user_id=123count=1 # {success: true} http://qaapi.example.com/setRegistrationDate?user_id=123date=2014-02-12 # {success: true}
  • 35. Немного о процессе очистки пользователей
  • 36. Идеального решения нет Наш путь: ● очистка - набор предопределенных шагов ● на каждое “сохраняемое состояние” - свой шаг очистки (примеры: сообщения, отзывы, покупки…) ● юзер считается “очищенным” и готовым к использованию, если успешно отработали все шаги очистки Шаги очистки будут добавлять программисты. Они могут забыть добавить новый шаг при добавлении новой фичи. Следить за этим придется вам.
  • 37. Что у нас есть? ✓ все функции в одном месте ✓ простота протокола ✓ страничка помощи ✓ система авторизации ✓ управление тестовыми юзерами ● безопасность “боевых” данных
  • 38. Люди не идеальны. Нам нужна защита от дурака.
  • 39. Живые пользователи Методы QaApi работают только с тестовыми пользователями. Это не может защитить вас от намеренного злоупотребления, но помогает защититься от таких ошибок, как опечатка в user id. В качестве дополнительной защиты вы можете реализовать различные права доступа к различным методам QaApi.
  • 40. No robots allowed! Юзеры из пула QaApi не видны живым пользователям!
  • 41. Что у нас есть? ✓ все функции в одном месте ✓ простота протокола ✓ страничка помощи ✓ система авторизации ✓ управление тестовыми юзерами ✓ безопасность “боевых” данных
  • 43. Сценарии QaAPI Было: RSXVHUBLG http://qaapi.example.com/registerUser?gender=Fage=25 # {success: true, user_id: 123, login: testuser123, passwd: Qa6G9v} http://qaapi.example.com/setRegistrationDate?user_id=123date=2014-02-12 3DVWHXVHUBLG Стало: $rslt = run registerUser({gender: F, age: 25, location: Moscow}) # {success: true, user_id: 123, login: testuser123, passwd: Qa6G9v} run setRegistrationDate({user_id:$rslt[user_id], date: 2014-02-12})
  • 44. A/B-тестирование A/B - тестирование - это инструмент для оценки эффективности какого-либо нововведения. Выберешь синюю пилюлю – и эта история закончится. Ты проснешься в своей постели и будешь верить в то, во что тебе хочется верить. Выберешь красную – попадешь в Страну Чудес, и я покажу тебе, насколько глубока кроличья нора ... “ ” Где взять пользователя, который точно ? пойдет за белым кроликом? Поручите это QaApi!
  • 45. Статистика команд Выявление регрессий в новых версиях мобильных клиентов ● клиент с помощью QaApi проставляет отметку о том, что выполняется определенный тестовый сценарий ● система осуществляет сбор логов взаимодействия клиента и сервера ● производится автоматическая обработка этих логов ● строятся графики по количеству команд в каждом тестовом сценарии WTF?
  • 46. Мы внедрили QaApi и стали более лучше жить! Почему вам стоит начать делать техническое задание уже завтра? ● меньше рутины ● проще тестировать сложные кейсы ● автотесты - на новый уровень ● разработчики - ваши друзья! Что в итоге?
  • 47. Что я не рассказал но должен был рассказать?