37
Мастер-класс: Автоматическое тестирование WEB API Игорь Любин auto-testing.ru, MediaMarkt Встреча тестировщиков, Санкт-Петербург, 2017

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

Embed Size (px)

Citation preview

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

Мастер-класс:АвтоматическоетестированиеWEB API

Игорь Любинauto-testing.ru, MediaMarktВстреча тестировщиков, Санкт-Петербург, 2017

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

Регламент мастер-класса• Продолжительность 3 часа• Перерыв через 1 час 20 минут – засечь время!• Вопросы можно задавать по ходу• За вопросы можно получить мёд!

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

Игорь Любин• В тестировании с 2007 г.

• Создал auto-testing.ru в 2012 г.

• QA + CI в MediaMarkt с 9 ноября 2015 г.

• Выступал на конференциях в 2016 г.• Стачка, Ульяновск• QA Fest, Киев• SQAdays-20, Минск

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

Знакомство• Как Вас зовут?• Где и кем работаете?• Каковы Ваши ожидания от мастер-класса?

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

Мастер-класс• Показываю свой опыт• Приготовил какое-то количество слайдов• Не люблю теорию, люблю объяснять все своими

словами• Постараюсь дать наглядные примеры• Тестировать будем github api• C#

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

Цель мастер-класса• Обкатать формат выступления• Заразить Вас вирусом автоматического тестирования

• Так как тесты писать просто!

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

Цель тестирования?

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

Цель автоматического тестирования?

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

Цель автоматического тестирования• Скорость! • Тестирование за минуты, а не часы/дни!• Скорость дает новые возможности!

• Реальные цифры: 500 тестов за 1 минуту!

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

Автоматическое тестирование• Это системный подход• Сборка, выкладка и тест• Continuous Integration• Время прохождения тестов минуты• Тесты на всех уровнях

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

Микросервисы• 30% проектов в мире уже на микросервисах

• Бекенды!• Автоматическое тестирование здесь как никогда

полезно и выгодно!

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

UI медленный

http://barancev.github.io/read-data-from-web-page/

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

Пирамида тестирования

http://positiveflower.blogspot.ru/2012/12/agile.html

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

Что мы будем сегодня тестировать?• Github• Раздел Emails• https://developer.github.com/v3/users/emails

• List email addresses for a user• Add email address(es)• Delete email address(es)

• Параллельный запуск тестов

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

Демо:Как дернуть API ручками?

• Advanced Rest Client• Запрос без auth• Запрос с auth

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

Стратегия тестирования• Сначала позитив!• От простого к сложному

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

Driver• Тесты - Driver - SUT• Тесты - Selenium - Браузер• Тесты - WebClient - API• Тесты - ORM - DB

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

Выбор движка• 6 решений для C#• http://stackoverflow.com/questions/4015324/http-request-

with-post• Какой выбрать движок?

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

Демо:Создание проекта• Xproj проект• Project.json• Config.json

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

Глаголы• GET• POST• PATCH• PUT• DELETE

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

Демо:Выполнение запроса GET

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

Authorization на Github

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

Демо:Запрос с авторизацией

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

Запрос с параметрами• GET

• Параметры передаются в запросе

• POST• Параметры передаются в теле запроса

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

Демо:Выполнение запроса POST

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

Демо:Генерация тестовых данных

• Bogus = Fakerhttps://github.com/bchavez/Bogus

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

Статусы ответов• 2xx• 200

• 4xx• 403, 404

• 5xx

• Каких статусов быть не должно?

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

Демо:Проверка статуса ответа

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

Перерыв• 10 минут

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

Какие тесты можно сдеалть еще?

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

Демо:Расширяем набор тестов• Негативные тесты

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

Демо:Проверка ответа - модели

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

Демо:Параллельное выполнение[assembly: Parallelizable(ParallelScope.Fixtures)]

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

Демо:Наборы тестов• Создать атрибут[AttributeUsage(AttributeTargets.All)]public class SmokeAttribute : CategoryAttribute { }

• Пометить тест атрибутом[Test] [Smoke]

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

Открытые вопросы• Фабрики для тестовых данных• Стоит ли зачищать данные после выполнения тестов?• Написали тесты и что дальше?• Нагрузочное тестирование• SLA времени ответов• Тесты на кеш• Сколько тестов на один микросервис?• Инфраструктура вокруг тестов• Структурное логирование• Стоит ли писать комментарии в коде?

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

Закрепление• Мое главное открытие сегодняшнего дня• Что из сегодняшнего дня я возьму в свою практику• Человек дня

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

До встречиhttps://goo.gl/w9Har1