среда, 5 апреля 2017 г.

Users — на чем потестить SOAP и REST

Система Users

Используйте систему Users, если хотите попрактиковаться в тестировании, а негде. Там есть специально зашитые в код баги, интересный с точки зрения классов эквивалентности функционал и даже SOAP и REST-запросы!


Явки, пароли


Система — http://users.bugred.ru
Менеджер — manager@mail.ru / 1

WSDL — http://users.bugred.ru/tasks/soap/WrapperSoapServer.php?wsdl (SOAP)
REST —  http://users.bugred.ru/tasks/rest/list (Все методы тип POST)

Краткое описание методов см ниже в ТЗ.
Полная документация, включая описание параметров вызова см в конфлюенсе.


См также:
Как отправить SOAP-запрос в Soap Ui — видео


Обновления системы:
Тут можно пощупать REST-методы с массивами!
Тут можно передать файл через REST-запрос!

Тут будут ссылки на статьи, как вообще можно вызывать SOAP и REST, пока самостоятельно гуглим :)

Я как автор могу дропнуть базу в любой момент — учитывайте это. Если вдруг ваши данные пропадут, это нормально.



Откуда это и зачем


Исходно Users создавался как "побочный продукт" для курса «Техники и инструменты локализации багов».  У разработчика я попросила два сайта, которые должны были быть взаимосвязаны. Ведь на стыке двух программ больше всего багов. А как понять, кто виноват? В чьи логи смотреть, как отловить виноватого? Поэтому в основном сайте есть возможность зарегистрироваться через Users. Разумеется, она работает не всегда Wink ;) Это дает нам шанс поиследовать взаимосвязи в интеграции.

Вот, казалось бы, и все. Тогда что такое Юзерс? Ну, просто некий телефонный справочник. Но ведь аппетит приходит во время еды! Пока я писала требования, я вспоминала свои фриланс проекты и волшебные баги, которые на них находила. Так мы навинтили кучу разного функционала:


— Можно создавать задачи и вешать на конкретного исполнителя;
— Задачи можно вешать в крон! Чтобы они запускались по времени;
— Если я повесила задачу на Васю — ему придет уведомление об этом. И за 5 минут до того, как придет срок ее сделать. И ровно в срок. Вот!
— В списке задач к исполнению можно нажать "выполнил / продолбал" и задача уедет в соответствующий список :)
— Есть список нотификаций, где ты можешь просмотреть все уведомления;
— Есть отдельная роль менеджера, который видит вообще все задачи и кто что продолбал (а так ты видишь только свои)
— При просмотре пользователя есть ссылка на задачи, которые на нем висят;
— Поиск, фильтрация списка пользователей;
— Все действия можно выполнять не только через  интерфейс, но и через SOAP и REST-запросы.

В общем, как-то так! Причем для курса мне реально нужно немного:

  1. Интеграция с основным проектом.
  2. Разные хитрые граничные значения (будете тестировать → не забывайте про консоль разработчика!).
  3. SOAP + REST. Хотя на самом деле только SOAP, для REST у нас другое задание, в 10 раз круче Smile :) Но оно в закрытом доступе, поэтому я и для «открытой всем» системы попросила добавить. Буду делать всякие обучающие статьи и видеоролики теперь на примере Users!
Весь остальной функционал — задел на будущее. Может, в каком курсе с классами эквивалентности будем разбирать, может, просто статьи напишу. Ведь классный же функционал! Интересный, нетривиальный, взаимосвязанный...

В общем, тестируйте на здоровье ツ
Я даже ТЗ для вас подготовила! Причем реальное ТЗ, которое выдавалось фрилансеру. Да да, подробнейшая документация на 100 листов чаще всего миф. И когда ее нету, хорошо бы иметь ну хотя бы вот так, кратенько )))


ТЗ на первую версию Users (техническое задание)



Система Users, сотрудники
Делаем отдельную систему пользователей.


1. Регистрация / авторизация


Там есть регистрация, ник + пароль → заводится карточка в этой же системе.
Плюс регистрация через соцсети.

Через SOAP / REST методы:

  • doRegister — в ответе карточка созданного клиента или текст ошибки. Пользователь создается и появляется в системе. Автор у него будет «SOAP»
  • doLogin — проверка правильности логина-пароля. Возвращает true / false 


2. Список сотрудников


Главная — список сотрудников, возможность создать нового.
Ты можешь посмотреть любого, но изменить или удалить только своего.

Доступен поиск по ФИО пользователя, его емейлу или автору (отсортировать всех, кого создал сам). Также есть фильтрация по дате изменения — посмотреть всех, созданных / измененных вчера итд. Все фильтры можно сбросить одной кнопкой.

Колонки в списке сотрудников можно сортировать. Сортировка идет по всей базе, а не только по той странице, на который ты находишься.

Если сотрудник свежесоздан / изменен, он попадает наверх списка → бай дефолт сортировка по дате изменения по убыванию.


3. Карточка сотрудника


Поля карточки, в основном просто текстовые поля:

Email
ФИО
Пол --- выпадайка
Дата рождения --- дата
Начал работать в компании --- дата
Хобби
имя1
фамилия1
отчество1
Кошечка
Собачка
Попугайчик
Морская свинка
Хомячок
Белочка
Телефон
Адрес

Создавать дубли по нику или ФИО нельзя, мы считаем, что все ФИО уникальны.

SOAP / REST методы:

  • getUser — возвращает карточку пользователя;
  • UpdateUserOneField — изменить одно любое поле у пользователя;
  • FullUpdateUser — изменить все поля. В запросе обязательно передать все. Если оставить пустым — поля затрутся


4. Список задач


Говорят, нынче модно писать реализацию туду-листов, вот и мы напишем =) На самом деле это ради обертки над cron (см след пункт).

Заходишь в раздел, можешь создать задачу:
— Название string(50)
— Описание string(500)
— Ответственный (тут отображаются ФИО всех сотрудников)

Она появляется в списке задач, где можно ее изменить, удалить или добавить в расписание.
Простой пользователь видит только свои задачи, менеджер → вообще все. И все может менять.

SOAP / REST методы:

  • CreateTask — создать задачу, в ответе сама задача. Она появляется в интерфейсе.
  • UpdateTask — обновить задачу. В ответе будет просто «Задача успешно изменена!»
  • DeleteTask — удалить задачу из списка. Вернет текст «Задача с ID 17 успешно удалена». Чтобы удалить задачу, нужно знать ее ID. ID возвращается в ответе метода CreateTask + его видно в режиме просмотра / редактирования задачи в интерфейсе.
  • AddTaskInCron — добавить в расписание. Ответ будет, что задача добавлена в расписание + дата следующего запуска. Например, «Расписание успешно добавлено в задачу 18 Следущая дата запуска 06.04.2017 12:00»


5. Уведомления


Сделать уведомления о задаче:

Я создала задачу, повесив на пользователя А. Задача должна сработать через 30 минут.

1. У пользователя сразу же появляется уведомлялка — ну как Gmail Checker, типа «на вас повесили задачу».
2. За 5 минут до начала задачи приходит вторая уведомлялка «Через 5 минут будет задача такая-то».
3. Ну и ровно в срок уведомлялка.
4. Когда открываешь уведомлялку (это сейчас в блоке “0 заданий / 1 задание…”) должна быть кнопка “сделал”, только тогда она пропадает из расписания. Плюс кнопка «продолбал» :) Нажатия на эти кнопки логируются: “Пользователь А подтвердил, что сделал задачу (название задачи) / Пользователь А продолбал задачу (название задачи)”

Выполненные и пропущенные задачи должна быть возможность просмотреть --- Поля из самой задачи + кто и во сколько ее создал и когда она была в расписании исходно. И когда попала в "выполненные" / продолбанные.

На вкладке http://users.bugred.ru/tasks/my/completes колонки "Создана" и "Выполнена" (в итоге сделали одну, «время» выполнения)
На вкладке http://users.bugred.ru/tasks/my/fails такая же колонка со временем.

********************************************************************
Сценарий (применялся, когда разработчик запутался в моих требованиях)

У тебя есть список задач:

1. Одноразовые (свозить кота на кастрацию)
2. Многоразовые (поливать цветы 2 раза в неделю)

В списке задач ты видишь актуальные. Кастрацию пока не сделал? Висит и мозолит глаза без даты. Как тока свозил или решил "пущай живет", то есть нажал на кнопку — задача больше не мельтешит перед глазами.

Многоразовые — ты вчера не полил цветок, нажал "продолбал", увидел следующую дату поливки по крону)

Все твои телодвижения логируются: изменил задачу, поставил в расписание, отклонил, сделал
а менеджер может за тобой следить)

********************************************************************

Ты видишь только свои, менеджер видит все. Он может их фильтровать по конкретному человеку и выставлять диапазон проверки. 


6. Менеджер


Отдельная роль, настраивается для любой учетки в админке. В бекап вшит один менеджер: manager@mail.ru / 1.

Менеджер может наблюдать за сотрудниками:

— Он видит все оповещения + может их сортировать и фильтровать;
— Он видит все текущие задачи, все продолбанные и все выполненные;
— Он может отредактировать любую задачу;


Итого


Users — система с кучей самого разного функционала. Вы можете:

— Исследовать приложение в поисках JS-ошибок, потренироваться использовать консоль разработчика.
— Изучить, как работают вызовы SOAP и REST.
— Показывать своим джуниорам, «как что тестировать», в том числе и тестирование документации. Ну а что, вот же она, чуть выше ツ


PS — система используется в моих курсах:


Заходите, узнаете много нового про эту систему! Wink ;)

26 комментариев:

  1. Спасибо Вам за предоставленную возможность познакомиться на практике c SOAP и REST!)

    ОтветитьУдалить
  2. Спасибо большое за сервис. Скажите, getUser через POST запрос было сделано, чтобы кто-то завел улучшение? (просто хотел бы своим ученика ваш сервис предоставить как пример, а с теорией такой подход чуть расходится)

    ОтветитьУдалить
    Ответы
    1. Все сделано через POST, потому что фриланс разработчик отказался делать мне PUT, DELETE и прочее )

      Удалить
  3. Огромное вам спасибо! Крайне полезный сервис для отправки SOAP/REST запросов

    ОтветитьУдалить
  4. При переходе на ссылку http://users.bugred.ru почему-то выдает белый экран c "not install system please click here install right now", при нажатии на линк возвращает 500 (Internal Server Error). Помогите разобраться, очень хочется потренироваться на данном сервисе! :)

    P.S Я залогинен.

    ОтветитьУдалить
  5. Добрый день. Как понять, что поле в запросе является обязательным? Я не вижу никаких атрибутов в xml-файлике, указывающих на то, что поле обязательное. Например, в требованиях для doRegister есть 3 обязательных поля: email, name, password.
    При попытке отправить запрос без какого-либо из этих полей, я получу ошибку.

    Спасибо.

    ОтветитьУдалить
    Ответы
    1. 1. Прочитать документацию.
      2. Понять методом тыка
      Прописывать ли это в xml — желание разработчика

      Удалить
  6. Здравствуйте Ольга, спасибо вам за такой прекрасный тестовый проект_api)
    Подскажите, через postman возможно удалить компанию, через UI я смог это сделать с помощью админа, но в доке по API, такого раздела как удалить компанию нету.

    Заранее Спасибо!

    ОтветитьУдалить
    Ответы
    1. Добрый день. Нет, такой возможности нет

      Удалить
    2. Такой вопрос
      при запросе magicsearch есть параметр "include"
      в доке сказано, что может принимать массив
      "include":["COMPANY","TASK"]

      но при отправки запроса бэк возвращает ошибку с кодом 459
      что include может принимать только значения: ALL, USER, COMPANY, TASK, WHY"

      Тут 2 варианта или я что-то не то делаю или это баг)

      Заранее Спасибо)

      Удалить
    3. Вы что-то делаете не так, массивы в параметре замечательно работают

      Удалить
    4. Вот в таком формате у меня ищет
      "include":[ "COMPANY", "sport_tester", "TASK", "1437" ]

      В любом случае спасибо вам)

      Удалить
  7. При тестировании метода сreatecompany через soap ui как указать значение в поле company_users? спасибо

    ОтветитьУдалить
    Ответы
    1. кажется нашла ответ в конфлюэнс. Спасибо!

      Удалить
    2. Для начала прочитать документацию — https://testbase.atlassian.net/wiki/spaces/USERS/pages/913014803/CreateCompany

      Удалить
    3. Да, в конфлюенсе более полная версия документации) Этот пост писался на первую версию Users, тут про апи ничего нет

      Удалить
  8. Спасибо вам огромное Ольга. Несколько дней назад я пролистывал блог - наткнулся. Подумал "Ну мне же не нужно пока с API взаимодействовать". Сегодня получаю от руководства задачу на тестирование API.

    : )))

    ОтветитьУдалить
    Ответы
    1. Не за что)) Тренируйтесь на здоровье! И на youtube смотрите обучалки)) Например, https://www.youtube.com/watch?v=QYg5z6EGOk4&lc=z223f1oxjrqqwnpcdacdp43bpnzsnnxfqgpttjiffjlw03c010c.1560492909697622

      Удалить