SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
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 и стали более лучше
жить!
Почему вам стоит начать делать техническое задание
уже завтра?
● меньше рутины
● проще тестировать сложные кейсы
● автотесты - на новый уровень
● разработчики - ваши друзья!
Что в итоге?
Что я не рассказал
но должен был рассказать?

Contenu connexe

Tendances

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

Tendances (19)

Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформа
 
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
 
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
Автоматизация функционального тестирования 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
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
 
WPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testingWPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testing
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 

En vedette

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

En vedette (20)

Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
 
Инструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST APIИнструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST API
 
Тестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The ScenesТестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The Scenes
 
Fastest Growing Web API Categories: Last 6 Months
Fastest Growing Web API Categories: Last 6 MonthsFastest Growing Web API Categories: Last 6 Months
Fastest Growing Web API Categories: Last 6 Months
 
ProgrammableWeb's eSignature API Research Report
ProgrammableWeb's eSignature API Research ReportProgrammableWeb's eSignature API Research Report
ProgrammableWeb's eSignature API Research Report
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикад
 
Litigation and Settlement Analytics - A Game Theoretic Perspective
Litigation and Settlement Analytics - A Game Theoretic PerspectiveLitigation and Settlement Analytics - A Game Theoretic Perspective
Litigation and Settlement Analytics - A Game Theoretic Perspective
 
Процесс тестирования. Измерение и оценка
Процесс тестирования. Измерение и оценкаПроцесс тестирования. Измерение и оценка
Процесс тестирования. Измерение и оценка
 
Аналитик в Agile (SEF-09)
Аналитик в Agile (SEF-09)Аналитик в Agile (SEF-09)
Аналитик в Agile (SEF-09)
 
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
Что ждет тестировщиков при организации процесса тестирования Enterprise-проду...
 
01. Аналитик. Введение в профессию
01. Аналитик. Введение в профессию01. Аналитик. Введение в профессию
01. Аналитик. Введение в профессию
 
Юлия Закс. Аналитик - кто это?
Юлия Закс. Аналитик - кто это? Юлия Закс. Аналитик - кто это?
Юлия Закс. Аналитик - кто это?
 
Part I. How to stop fooling around and begin automating
Part I. How to stop fooling around and begin automatingPart I. How to stop fooling around and begin automating
Part I. How to stop fooling around and begin automating
 
Pros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistPros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation Specialist
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требований
 
UI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternUI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" Pattern
 
How to Put Automation Engineers Down
How to Put Automation Engineers DownHow to Put Automation Engineers Down
How to Put Automation Engineers Down
 
How to Calculate Test Automation ROI
How to Calculate Test Automation ROIHow to Calculate Test Automation ROI
How to Calculate Test Automation ROI
 
Basics of assertions in automated testing
Basics of assertions in automated testingBasics of assertions in automated testing
Basics of assertions in automated testing
 
Part III. How to maximize profit from automation
Part III. How to maximize profit from automationPart III. How to maximize profit from automation
Part III. How to maximize profit from automation
 

Similaire à Концепция QaAPI: взгляд на тестирование с другой стороны баррикад

“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...Igor Khrol
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаSQALab
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья КудиновCodeFest
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...Омские ИТ-субботники
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Badoo Development
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийPositive Hack Days
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...Positive Hack Days
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИСit-people
 
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QAFest
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Sergey Xek
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Fwdays
 
Липский Павел
Липский ПавелЛипский Павел
Липский ПавелOntico
 
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...OWASP Russia
 

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

“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три года
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
Seamy side of autotests
Seamy side of autotestsSeamy side of autotests
Seamy side of autotests
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation Testing
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
2014-02-01 02 Дмитрий Малиновский. Почему нужно читать исходный код инстру...
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"
 
Липский Павел
Липский ПавелЛипский Павел
Липский Павел
 
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
 

Plus de SQALab

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

Plus de SQALab (20)

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

Концепция 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. Что я не рассказал но должен был рассказать?