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 предназначено для изменения
внутреннего состояния системы в процессе
ручного или автоматизированного
тестирования приложения.
БОЖЕ МОЙ!
ДА ЧТО Ж ТАК
СКУЧНО-ТО, А?
10. Пользователи, зарегистрированные
на Badoo более месяца назад, в день
своего рождения получают в подарок
100 кредитов*.
Типичный тест-кейс
“
”
* Пример выдуманный! :)
11. Как будем тестировать?
● регистрируемся
● ждем месяц???
● ждем ещё...
● … до дня рождения?
● получаем кредиты
● PROFIT?
13. Эволюция обращений к программистам:
“Подкрутите мне в базе…”
1. “А сделайте мне, чтоб дата
регистрации была месяц назад?”
2. “А скажите, где в базе хранится дата
регистрации, я вручную изменю?”
3. “А давайте сделаем интерфейс, где
каждый сможет менять дату?”
4. “А запилите нам 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. ● все функции в одном месте
● простота протокола
● страничка помощи
● система авторизации
● управление тестовыми юзерами
● безопасность “боевых” данных
Что мы хотим получить?
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. ✓ все функции в одном месте
✓ простота протокола
✓ страничка помощи
✓ система авторизации
● управление тестовыми юзерами
● безопасность “боевых” данных
Что у нас есть?
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}
36. Наш путь:
● очистка - набор предопределенных шагов
● на каждое “сохраняемое состояние” - свой шаг очистки
(примеры: сообщения, отзывы, покупки…)
● юзер считается “очищенным” и готовым к использованию, если
успешно отработали все шаги очистки
Идеального решения нет
Шаги очистки будут добавлять программисты. Они
могут забыть добавить новый шаг при добавлении
новой фичи. Следить за этим придется вам.
37. ✓ все функции в одном месте
✓ простота протокола
✓ страничка помощи
✓ система авторизации
✓ управление тестовыми юзерами
● безопасность “боевых” данных
Что у нас есть?
39. Методы QaApi работают только с тестовыми
пользователями.
Это не может защитить вас от намеренного злоупотребления, но
помогает защититься от таких ошибок, как опечатка в user id.
В качестве дополнительной защиты вы можете реализовать
различные права доступа к различным методам QaApi.
Живые пользователи
41. ✓ все функции в одном месте
✓ простота протокола
✓ страничка помощи
✓ система авторизации
✓ управление тестовыми юзерами
✓ безопасность “боевых” данных
Что у нас есть?
44. A/B - тестирование - это инструмент для оценки эффективности какого-либо нововведения.
A/B-тестирование
Выберешь синюю пилюлю – и эта история
закончится. Ты проснешься в своей постели и
будешь верить в то, во что тебе хочется
верить. Выберешь красную – попадешь в
Страну Чудес, и я покажу тебе, насколько
глубока кроличья нора ...
“
”Где взять пользователя, который точно
пойдет за белым кроликом??
Поручите это QaApi!
45. Выявление регрессий в новых версиях мобильных клиентов
● клиент с помощью QaApi проставляет отметку о том, что выполняется определенный тестовый сценарий
● система осуществляет сбор логов взаимодействия клиента и сервера
● производится автоматическая обработка этих логов
● строятся графики по количеству команд в каждом тестовом сценарии
Статистика команд
WTF?
46. Мы внедрили QaApi и стали более лучше
жить!
Почему вам стоит начать делать техническое задание
уже завтра?
● меньше рутины
● проще тестировать сложные кейсы
● автотесты - на новый уровень
● разработчики - ваши друзья!
Что в итоге?