Мастер-класс:
Автоматическое
тестирование
WEB API
Игорь Любин
auto-testing.ru, MediaMarkt
Встреча тестировщиков,
Санкт-Петербург, 2017
Регламент мастер-класса
• Продолжительность 3 часа
• Перерыв через 1 час 20 минут – засечь время!
• Вопросы можно задавать по ходу
• За вопросы можно получить мёд!
Игорь Любин
• В тестировании с 2007 г.
• Создал auto-testing.ru в 2012 г.
• QA + CI в MediaMarkt с 9 ноября 2015 г.
• Выступал на конференциях в 2016 г.
• Стачка, Ульяновск
• QA Fest, Киев
• SQAdays-20, Минск
Знакомство
• Как Вас зовут?
• Где и кем работаете?
• Каковы Ваши ожидания от мастер-класса?
Мастер-класс
• Показываю свой опыт
• Приготовил какое-то количество слайдов
• Не люблю теорию, люблю объяснять все своими
словами
• Постараюсь дать наглядные примеры
• Тестировать будем github api
• C#
Цель мастер-класса
• Обкатать формат выступления
• Заразить Вас вирусом автоматического тестирования
• Так как тесты писать просто!
Цель тестирования?
Цель автоматического
тестирования?
Цель автоматического
тестирования
• Скорость!
• Тестирование за минуты, а не часы/дни!
• Скорость дает новые возможности!
• Реальные цифры: 500 тестов за 1 минуту!
Автоматическое
тестирование
• Это системный подход
• Сборка, выкладка и тест
• Continuous Integration
• Время прохождения тестов минуты
• Тесты на всех уровнях
Микросервисы
• 30% проектов в мире уже на микросервисах
• Бекенды!
• Автоматическое тестирование здесь как никогда
полезно и выгодно!
UI медленный
http://barancev.github.io/read-data-from-web-page/
Пирамида тестирования
http://positiveflower.blogspot.ru/2012/12/agile.html
Что мы будем сегодня
тестировать?
• Github
• Раздел Emails
• https://developer.github.com/v3/users/emails
• List email addresses for a user
• Add email address(es)
• Delete email address(es)
• Параллельный запуск тестов
Демо:
Как дернуть API ручками?
• Advanced Rest Client
• Запрос без auth
• Запрос с auth
Стратегия тестирования
• Сначала позитив!
• От простого к сложному
Driver
• Тесты - Driver - SUT
• Тесты - Selenium - Браузер
• Тесты - WebClient - API
• Тесты - ORM - DB
Выбор движка
• 6 решений для C#
• http://stackoverflow.com/questions/4015324/http-
request-with-post
• Какой выбрать движок?
Демо:
Создание проекта
• Xproj проект
• Project.json
• Config.json
Глаголы
• GET
• POST
• PATCH
• PUT
• DELETE
Демо:
Выполнение запроса GET
Authorization
на Github
Демо:
Запрос с авторизацией
Запрос с параметрами
• GET
• Параметры передаются в запросе
• POST
• Параметры передаются в теле запроса
Демо:
Выполнение запроса POST
Демо:
Генерация тестовых данных
• Bogus = Faker
https://github.com/bchavez/Bogus
Статусы ответов
• 2xx
• 200
• 4xx
• 403, 404
• 5xx
• Каких статусов быть не должно?
Демо:
Проверка статуса ответа
Перерыв
• 10 минут
Какие тесты можно
сдеалть еще?
Демо:
Расширяем набор тестов
• Негативные тесты
Демо:
Проверка ответа - модели
Демо:
Параллельное выполнение
[assembly: Parallelizable(ParallelScope.Fixtures)]
Демо:
Наборы тестов
• Создать атрибут
[AttributeUsage(AttributeTargets.All)]
public class SmokeAttribute : CategoryAttribute { }
• Пометить тест атрибутом
[Test] [Smoke]
Открытые вопросы
• Фабрики для тестовых данных
• Стоит ли зачищать данные после выполнения тестов?
• Написали тесты и что дальше?
• Нагрузочное тестирование
• SLA времени ответов
• Тесты на кеш
• Сколько тестов на один микросервис?
• Инфраструктура вокруг тестов
• Структурное логирование
• Стоит ли писать комментарии в коде?
Закрепление
• Мое главное открытие сегодняшнего дня
• Что из сегодняшнего дня я возьму в свою практику
• Человек дня
До встречи
https://goo.gl/w9Har1

Автоматическое тестирование Web api

Editor's Notes

  • #3 Вопросы записываем на бумажке/на ватмане, в свободное время отвечаю на них. ПОПРОСИТЬ участников записывать идеи, инструменты, фишки, аксиомы. НАЗНАЧИТЬ человека, который будет записывать все вопросы. Минимум лекции. Больше вопросов.
  • #4 Вопросы записываем на бумажке/на ватмане, в свободное время отвечаю на них. ПОПРОСИТЬ участников записывать идеи, инструменты, фишки, аксиомы. НАЗНАЧИТЬ человека, который будет записывать все вопросы. Минимум лекции. Больше вопросов.
  • #7 Для меня Впервые пробую такой формат Хочу продвигать идеи автоматического тестирования Для слушателей -
  • #8 Помочь команде! Быть настоящими QA! Покрытие Скорость Деньги
  • #9 Скорость
  • #10 Скорость
  • #19 Какой выбрать движок?
  • #31 Помочь команде! Быть настоящими QA! Покрытие Скорость Деньги
  • #33 Fody?