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?
Чем это лучше веб-интерфейса?
Calabash
Система тестирования
мобильных приложений,
основанная на Ruby и Cucumber.
Автотесты
Selenium
Мощный инструмент
автоматизации
браузеров.
Эти инструменты легко интегрировать с API, но очень сложно - с веб-интерфейсом:
Интеграционные
тесты
Тестирование клиент-серверного
взаимодействия.
Наша идея вам подойдет, если:
● ваше приложение имеет
серверную часть
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 умеет:
● регистрировать, изменять и удалять юзеров
● голосовать за пользователей
● отправлять сообщения
● включать/выключать платные услуги
● добавлять “кредиты”
● загружать и “модерировать” фотки
● давать информацию (например свойства юзера)
● и всякое другое
Куда идти?
Отдел QA Отдел разработки
Запилите мне API, тысяча чертей! Okay
Конечно, к разработчикам! Можно так:
Но лучше так.
● все функции в одном месте
● простота протокола
● страничка помощи
● система авторизации
● управление тестовыми юзерами
● безопасность “боевых” данных
Что мы хотим получить?
А что под капотом?
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 работают только с тестовыми
пользователями.
Это не может защитить вас от намеренного злоупотребления, но
помогает защититься от таких ошибок, как опечатка в user id.
В качестве дополнительной защиты вы можете реализовать
различные права доступа к различным методам QaApi.
Живые пользователи
No robots allowed!
Юзеры из пула QaApi не видны живым пользователям!
✓ все функции в одном месте
✓ простота протокола
✓ страничка помощи
✓ система авторизации
✓ управление тестовыми юзерами
✓ безопасность “боевых” данных
Что у нас есть?
Продвинутое кунг-фу
Было:
Сценарии QaAPI
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
Стало:
$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

What's hot (19)

PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
PDF
Экономически эффективный процесс тестирования
CodeFest
 
PPTX
Тестирование REST-сервисов с применением инженерных практик
SQALab
 
PDF
Как мы приручили демона или процесс тестирования демонов в Badoo
SQALab
 
PDF
WP как экспериментальная платформа
SQALab
 
PPTX
Автоматизация тестирования: доступна каждому или удел избранных?
SQALab
 
PDF
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QAFest
 
PPT
Опыт тестирования API САПР платформы
SQALab
 
PPTX
Автоматизация тестирования ролей и привилегий
SQALab
 
PDF
Автоматизация функционального тестирования REST API
Pavel Asanov
 
PPTX
Оценка качества автотестов
SQALab
 
PPT
Let's Talk About Junit 5
SQALab
 
ODP
The fast and the continuous
SQALab
 
PDF
Selenium grid on-demand
SQALab
 
PDF
BDD girls Battle: Cucumber VS. JBehave
SQALab
 
PPTX
Cовременный контроль качества: давай сделаем это по-быстрому...
Igor Khrol
 
PPTX
WPF Automation – test injection approach to application testing
SQALab
 
PPTX
End-2-End UI автоматизация в мобильном приложении. Наша реализация
SQALab
 
PPTX
Как играть без игрока
SQALab
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
Экономически эффективный процесс тестирования
CodeFest
 
Тестирование REST-сервисов с применением инженерных практик
SQALab
 
Как мы приручили демона или процесс тестирования демонов в Badoo
SQALab
 
WP как экспериментальная платформа
SQALab
 
Автоматизация тестирования: доступна каждому или удел избранных?
SQALab
 
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QAFest
 
Опыт тестирования API САПР платформы
SQALab
 
Автоматизация тестирования ролей и привилегий
SQALab
 
Автоматизация функционального тестирования REST API
Pavel Asanov
 
Оценка качества автотестов
SQALab
 
Let's Talk About Junit 5
SQALab
 
The fast and the continuous
SQALab
 
Selenium grid on-demand
SQALab
 
BDD girls Battle: Cucumber VS. JBehave
SQALab
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Igor Khrol
 
WPF Automation – test injection approach to application testing
SQALab
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
SQALab
 
Как играть без игрока
SQALab
 

Viewers also liked (20)

PDF
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
SQALab
 
PPTX
Инструменты и лайфхаки тестирования REST API
SQALab
 
PPTX
Тестирование мобильных API: Behind The Scenes
SQALab
 
PPTX
Fastest Growing Web API Categories: Last 6 Months
ProgrammableWeb
 
PDF
ProgrammableWeb's eSignature API Research Report
ProgrammableWeb
 
PDF
QaApi: взгляд на тестирование с другой стороны баррикад
Dmitry Maruschenko
 
PPTX
Litigation and Settlement Analytics - A Game Theoretic Perspective
SettlementAnalytics™
 
PPTX
Процесс тестирования. Измерение и оценка
SQALab
 
PDF
Аналитик в Agile (SEF-09)
Andrey Bibichev
 
PPT
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
SQALab
 
PDF
01. Аналитик. Введение в профессию
Alexander Baikin
 
PDF
Юлия Закс. Аналитик - кто это?
Darya Zubova
 
PPTX
Part I. How to stop fooling around and begin automating
Þorgeir Ingvarsson
 
PDF
Pros and Cons of Being an Automation Specialist
Þorgeir Ingvarsson
 
PPT
Тестирование без требований
Artem Shapoval
 
PPTX
UI Automation Patterns: "Sleep" Pattern
Þorgeir Ingvarsson
 
PPTX
How to Put Automation Engineers Down
Þorgeir Ingvarsson
 
PPTX
How to Calculate Test Automation ROI
Þorgeir Ingvarsson
 
PPTX
Basics of assertions in automated testing
Þorgeir Ingvarsson
 
PPTX
Part III. How to maximize profit from automation
Þorgeir Ingvarsson
 
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
SQALab
 
Инструменты и лайфхаки тестирования REST API
SQALab
 
Тестирование мобильных API: Behind The Scenes
SQALab
 
Fastest Growing Web API Categories: Last 6 Months
ProgrammableWeb
 
ProgrammableWeb's eSignature API Research Report
ProgrammableWeb
 
QaApi: взгляд на тестирование с другой стороны баррикад
Dmitry Maruschenko
 
Litigation and Settlement Analytics - A Game Theoretic Perspective
SettlementAnalytics™
 
Процесс тестирования. Измерение и оценка
SQALab
 
Аналитик в Agile (SEF-09)
Andrey Bibichev
 
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
SQALab
 
01. Аналитик. Введение в профессию
Alexander Baikin
 
Юлия Закс. Аналитик - кто это?
Darya Zubova
 
Part I. How to stop fooling around and begin automating
Þorgeir Ingvarsson
 
Pros and Cons of Being an Automation Specialist
Þorgeir Ingvarsson
 
Тестирование без требований
Artem Shapoval
 
UI Automation Patterns: "Sleep" Pattern
Þorgeir Ingvarsson
 
How to Put Automation Engineers Down
Þorgeir Ingvarsson
 
How to Calculate Test Automation ROI
Þorgeir Ingvarsson
 
Basics of assertions in automated testing
Þorgeir Ingvarsson
 
Part III. How to maximize profit from automation
Þorgeir Ingvarsson
 
Ad

Similar to Концепция QaAPI: взгляд на тестирование с другой стороны баррикад (18)

PPTX
ITmozg, Даниил Павлючков
EYevseyeva
 
PDF
Тестирование API дизайна [NoBugs WTF PRO уровень]
NoBugs
 
PDF
Виталий Каторгин, Wamba
Ontico
 
PDF
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
DevDay
 
PDF
Разработка RESTful api with all bells and whistles
Yandex
 
PPTX
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
 
PPTX
Postman тестирование api v1.0 (1)
DataArt
 
PPTX
Фреймворк автотестирования веб-сервисов своими силами
SQALab
 
PPTX
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Ontico
 
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
PDF
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE
 
PPTX
Stas Sultanov "REST again? Oh, come on!"
Fwdays
 
PDF
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений...
Yandex
 
PDF
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Yulia Tsisyk
 
PPTX
Автоматизация тестирования веб-сервисов посредством SOAP UI
automated-testing.info
 
PDF
Mind map для «Архитектура А/Б тестирования: сделай сам»
Sergey Xek
 
PDF
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
NoBugs
 
PPTX
Игорь Любин - Об опыте тестирования ПК без UI
ilyubin
 
ITmozg, Даниил Павлючков
EYevseyeva
 
Тестирование API дизайна [NoBugs WTF PRO уровень]
NoBugs
 
Виталий Каторгин, Wamba
Ontico
 
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
DevDay
 
Разработка RESTful api with all bells and whistles
Yandex
 
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
 
Postman тестирование api v1.0 (1)
DataArt
 
Фреймворк автотестирования веб-сервисов своими силами
SQALab
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Ontico
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE
 
Stas Sultanov "REST again? Oh, come on!"
Fwdays
 
"API для людей: как создать API, которым по-настоящему пользуются" — Евгений...
Yandex
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Yulia Tsisyk
 
Автоматизация тестирования веб-сервисов посредством SOAP UI
automated-testing.info
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Sergey Xek
 
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
NoBugs
 
Игорь Любин - Об опыте тестирования ПК без UI
ilyubin
 
Ad

More from SQALab (20)

PDF
Готовим стажировку
SQALab
 
PPTX
Куда приводят мечты? или Искусство развития тестировщика
SQALab
 
PPT
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
 
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
 
PPTX
Continuous performance testing
SQALab
 
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
 
PPT
Команда чемпионов в ИТ стихии
SQALab
 
PPTX
API. Серебряная пуля в магазине советов
SQALab
 
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
 
PPT
Делаем автоматизацию проектных KPIs
SQALab
 
PDF
Вредные привычки в тест-менеджменте
SQALab
 
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
 
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
PPTX
Стили лидерства и тестирование
SQALab
 
PPT
"Давайте не будем про качество"
SQALab
 
PDF
Apache.JMeter для .NET-проектов
SQALab
 
PPTX
Тестирование геолокационных систем
SQALab
 
PPTX
Лидер или босс? Вот в чем вопрос
SQALab
 
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
 
Готовим стажировку
SQALab
 
Куда приводят мечты? или Искусство развития тестировщика
SQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab
 
Continuous performance testing
SQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab
 
Команда чемпионов в ИТ стихии
SQALab
 
API. Серебряная пуля в магазине советов
SQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
 
Делаем автоматизацию проектных KPIs
SQALab
 
Вредные привычки в тест-менеджменте
SQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Стили лидерства и тестирование
SQALab
 
"Давайте не будем про качество"
SQALab
 
Apache.JMeter для .NET-проектов
SQALab
 
Тестирование геолокационных систем
SQALab
 
Лидер или босс? Вот в чем вопрос
SQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab
 

Концепция 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. Calabash Система тестирования мобильных приложений, основанная на Ruby и Cucumber. Автотесты Selenium Мощный инструмент автоматизации браузеров. Эти инструменты легко интегрировать с API, но очень сложно - с веб-интерфейсом: Интеграционные тесты Тестирование клиент-серверного взаимодействия.
  • 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. Куда идти? Отдел QA Отдел разработки Запилите мне API, тысяча чертей! Okay Конечно, к разработчикам! Можно так:
  • 22. ● все функции в одном месте ● простота протокола ● страничка помощи ● система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных Что мы хотим получить?
  • 23. А что под капотом?
  • 24. 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:
  • 25. ✓ все функции в одном месте ✓ простота протокола ● страничка помощи ● система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных Что у нас есть?
  • 26. Страница помощи В QaApi есть страничка помощи, где перечислены все имеющиеся методы (описание, возможные аргументы и тип возвращаемого значения). Эта страничка генерируется автоматически из исходного кода QaApi.
  • 27. Ручной режим Интеграция с существующей системой доступа для сотрудников, с возможностью управлять полномочиями. Авторизация Автоматизация Сущестует несколько простых подходов: 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
  • 28. ✓ все функции в одном месте ✓ простота протокола ✓ страничка помощи ✓ система авторизации ● управление тестовыми юзерами ● безопасность “боевых” данных Что у нас есть?
  • 29. Тестовые пользователи Для тестирования постоянно требуются пользователи с разными свойствами.
  • 30. Создавать новых юзеров + юзер “чистый” + его никто не использует + можно делать что хотим и не чистить − быстро плодятся − нужно готовить к тесту Где их взять? Использовать заранее созданных + юзер готов к тесту + юзеров немного − нужно чистить − может использоваться кем-то ещё − другие могли не почистить VS
  • 31. Наше решение - пул юзеров Цикл жизни тестового юзера в пуле Ждет в пуле Используется Очистка “Использован” Создан Может быть изменен в процессе теста Не может быть использован повторно до очистки registerUser()
  • 32. Регистрация юзеров Регистрируем Ж, 25 лет, Москва Есть такой юзер? Создать нового юзера Добавить в пулВзять из пула нет да Добавлен с параметрами Ж, 25, Москва registerUser() Указываем только существенные для нас параметры Создание новых юзеров - только тогда, когда подходящего нет в пуле.
  • 33. Так как пользователь “новый”, необходимо подготовить его к тесту, например: ● сменить дату регистрации ● добавить фото, сообщения и т.д. ● добавить и подтвердить номер телефона ● и т. д. Все это делается с помощью QaApi Подготовка юзеров
  • 34. Подготовка юзера с помощью 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}
  • 35. Немного о процессе очистки пользователей
  • 36. Наш путь: ● очистка - набор предопределенных шагов ● на каждое “сохраняемое состояние” - свой шаг очистки (примеры: сообщения, отзывы, покупки…) ● юзер считается “очищенным” и готовым к использованию, если успешно отработали все шаги очистки Идеального решения нет Шаги очистки будут добавлять программисты. Они могут забыть добавить новый шаг при добавлении новой фичи. Следить за этим придется вам.
  • 37. ✓ все функции в одном месте ✓ простота протокола ✓ страничка помощи ✓ система авторизации ✓ управление тестовыми юзерами ● безопасность “боевых” данных Что у нас есть?
  • 38. Люди не идеальны. Нам нужна защита от дурака.
  • 39. Методы QaApi работают только с тестовыми пользователями. Это не может защитить вас от намеренного злоупотребления, но помогает защититься от таких ошибок, как опечатка в user id. В качестве дополнительной защиты вы можете реализовать различные права доступа к различным методам QaApi. Живые пользователи
  • 40. No robots allowed! Юзеры из пула QaApi не видны живым пользователям!
  • 41. ✓ все функции в одном месте ✓ простота протокола ✓ страничка помощи ✓ система авторизации ✓ управление тестовыми юзерами ✓ безопасность “боевых” данных Что у нас есть?
  • 43. Было: Сценарии QaAPI 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 Стало: $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. Что я не рассказал но должен был рассказать?