Автоматическое тестирование Web api
-
Upload
igor-lyubin -
Category
Internet
-
view
57 -
download
7
Transcript of Автоматическое тестирование Web api
Мастер-класс:Автоматическоетестирование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 = Fakerhttps://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