Тестирование веб-API
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Тестирование веб-API

 

Марк Винтерингем
Тестирование веб-API
2024

Переводчик Г. Гаврилов Антон Геннадьевич


 

Марк Винтерингем

Тестирование веб-API. — СПб.: Питер, 2024.

 

ISBN 978-5-4461-2092-5

© ООО Издательство "Питер", 2024

 

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

 

Для Стеф: Я обещаю, что закончу ремонт на кухне.

Вступительное слово

«Тестирование веб-API» содержит значительно больше информации, чем можно ожидать от книги с таким названием. Тестирование API представлено как часть единой стратегии тестирования, учитывающей риски. Марк знакомит вас с полезными визуальными моделями, задает вопросы, чтобы заставить думать, и ведет до последних страниц в качестве участника, а не пассажира.

Прежде чем углубиться в детали, в книге предлагается глава о том, зачем мы вообще тестируем, а также как идентифицировать различные типы рисков. Марк делает еще шаг вперед в исследовании этой важной темы — сопоставляет риски с качественными характеристиками и связывает их со стратегией тестирования.

Автор указывает предварительные условия для получения максимальной отдачи от книги. Практикующие читатели, знакомые с написанием кода, HTTP, инструментами разработки и тестирования, изучат новые инструменты и методы, чтобы понять все аспекты поведения их API. Тем не менее книга полезна и людям, которые не имеют всех этих навыков, поскольку чтение даст им общее понимание проблем и вдохновит на выполнение учебных упражнений.

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

Нам нравится, что эта книга помогает людям применять целостный подход к тестированию API. Проведите беседы о качестве, чтобы договориться о его желаемом уровне, и разработайте стратегию для его достижения, сотрудничая с заинтересованными сторонами. Автор пишет об этом в главе 4:

Хорошая стратегия тестирования характеризуется целостностью. Она должна фокусироваться на разных аспектах — везде, где велики риски снижения качества продукта.

Также нас привлекает то, что Марк одинаково ценит исследовательское тестирование и автоматизацию как элементы стратегии тестирования API. Он очень прагматичен в обоих случаях, перечисляя плюсы и минусы и иллюстрируя их конкретными примерами. При этом он признает, что каждая команда имеет свой собственный контекст. Еще одно качество книги, которое нам нравится, заключается в том, что читателю постоянно напоминают о необходимости использовать физические или виртуальные средства визуализации всего, что обсуждается.

Книга проведет вас от модели стратегии к ее планированию и реализации в соответствии с вашим контекстом. Последние пять глав посвящены расширенной автоматизации тестирования API. В них вы глубоко изучите тестирование контрактов, производительности, безопасности, а также тестирование в рабочей среде. Вы можете самостоятельно выбрать очередность изучения этих тем.

Одна из наших любимых моделей, широко используемая в книге, основана на идее Джеймса Линдсея (James Lyndsay). Это диаграмма Венна, демонстрирующая различие наших представлений о продукте и его реализации. Она помогает нам задавать такие вопросы, как «Кто будет использовать этот ответ API?» или «Что, если я нажму эту кнопку тысячу раз?». Это один из многих способов, помогающих нам мыслить нестандартно.

Использование API продолжает расти по мере того, как все больше приложений переходят на микросервисы и облачные решения. Методы и модели, описанные в этой книге, позволяют создавать высококачественные и надежные API. Эти же модели и методы могут быть адаптированы для многих других видов тестирования. Прочтите эту книгу, и вы разовьете свои навыки тестирования.

Джанет Грегори (Janet Gregory), консультант, автор, спикер в Dragonfire Inc.; соучредитель сообщества The Agile Testing Fellowship

Лиза Криспин (Lisa Crispin), консультант по тестированию, автор и соучредитель сообщества The Agile Testing Fellowship

Предисловие

Я всегда чувствовал, что когда впервые начал тестировать API, то уже опоздал. Программное обеспечение как услуга (software as a service) получило широкое распространение, и микросервисы набирали популярность. Я видел, как разработчики в моей команде успешно тестировали API в контексте автоматизации, но только когда мне посчастливилось поработать с одним из них, мой путь к тестированию API начался по-настоящему. Спасибо, Упеш!

Однако по мере того как я развивал свои навыки и начал делиться знаниями с помощью видеокурсов и очного обучения, стало очевидно, что многие еще не начали свой путь или уже начали, но хотят узнать больше. Это стало мотивацией для написания книги: я хотел дать читателям широкое представление о множестве способов, которыми мы можем тестировать веб-API, и рассказать, как они работают.

Когда я впервые стал обучать других тестированию API, то сосредоточился на помощи в понимании и использовании возможностей HTTP, чтобы работать быстрее и качественнее. Но по мере подготовки материала книги я осознал, что нужно охватить значительно более широкий круг вопросов. Вот почему в этой книге мы рассмотрим методы тестирования, которыми можем воспользоваться на всех стадиях разработки веб-API, от постановки задач и написания первой строки кода до создания сложной автоматизации, которая дает ценную обратную связь.

Я надеюсь, что, изучив материал книги, вы получите в свое распоряжение инструменты, которые помогут стать лучше в тестировании API, независимо от вашего опыта и роли в команде.

Благодарности

Прежде всего я хотел бы поблагодарить тех, кто активно помогал мне в создании этой книги: моих редакторов — Кристину Тейлор (Christina Taylor), которая была терпелива, когда я взял перерыв, чтобы снова стать отцом, и Сару Миллер (Sarah Miller), которая помогла мне закончить эту книгу, а также всему производственному персоналу издательства Manning. Я также хотел бы поблагодарить Эбби Бэнгсер (Abby Bangser) и Билла Мэтьюза (Bill Matthews), которые нашли время поговорить о тестировании в производстве и тестировании безопасности соответственно. Также спасибо моему коллеге по автоматизации в тестировании Ричарду Брэдшоу (Richard Bradshaw), с которым мы много дискутировали о тестируемости и стратегии, что помогло обогатить главу с описанием стратегий тестирования. И мы еще долго будем обсуждать отношение к автоматизации тестирования. Наконец, спасибо всем, от кого я получил обратную связь: Alberto Almagro, Allen Gooch, Amit Sharad Basnak, Andres Sacco, Andy Kirsch, Andy Wiesendanger, Anne-Laure Gaillard, Anupam Patil, Barnaby Norman, Christopher Kardell, Daniel Cortés, Daniel Hunt, Ernesto Bossi, Ethien Daniel Salinas Domínguez, Hawley Waldman, Henrik Jepsen, Hugo Figueiredo, James Liu, Jaswanth Manigundan, Jeffrey M. Smith, Jonathan Lane, Jonathan Terry, Jorge Ezequiel Bo, Ken Schwartz, Kevin Orr, Mariyah Haris, Mark Collin, Marleny Nunez Alba, Mikael Dautrey, Dr. Michael Piscatello, Brian Cole, Narayanan Jayaratchagan, NaveenKumar Namachivayam, George Onofrei, Peter Sellars, Prashanth Palakollu, Rajinder Yadav, Raúl Nicolás, Rohinton Kazak, Roman Zhuzha, Ronald Borman, Samer Falik, Santosh Shanbhag, Shashank Polasa Venkata, Suman Bala, Thomas Forys, Tiziano Bezzi, Vicker Leung, Vladimir Pasman, Werner Nindl, William Ryan, Yvon Vieville, and Zoheb Ainapore. Это было трудное, но важное чтение.

(Альберто Альмагро, Аллен Гуч, Амит Шарад Баснак, Андрес Сакко, Энди Кирщ, Энди Вьесенданжер, Энн-Лаура Гаиллард, Анупам Патил, Барнаби Норман, Кристофер Карделл, Дэниел Кортéс, Дэниел Хант, Эрнесто Босси, Этьен Дэниел Салинас Домингез, Холи Волдман, Хенрик Йепсен, Хуго Фигуйредо, Джеймс Лью, Джасвант Манигундан, Джеффри М. Смит, Джонатан Лейн, Джонатан Терри, Йорге Езекуэл Бо, Кен Щварц, Кевин Орр, Мария Харис, Марк Коллин, Марлени Нунез Альба, Микаел Дотри, Майкл Пискателло, Брайан Коль, Нараянан Джаярачаган, НавинКумар Намачиваям, Джордж Онофрей, Питер Селларс, Прашантх Палаколлу, Райиндер Ядав, Рауль Николáс, Рохинтон Казак, Роман Жужа, Рональд Борман, Самер Фалик, Сантош Шанбхаг, Шашанк Поласа Венката, Суман Бала, Томас Форис, Тициано Бецци, Викер Леунг, Владимир Пасман, Вернер Ниндл, Вильям Рян, Ивон Вьевилль и Зохеб Айнапор)

Я также в долгу перед Лизой Криспин (Lisa Crispin) и Джанет Грегори (Janet Gregory) за их добрые слова и время, потраченное на написание предисловия к этой книге. Спасибо Джеймсу Линдсею (James Lyndsay), Робу Мини (Rob Meaney) и Эшу Винтеру (Ash Winter), чья работа помогла мне лучше понять ключевые аспекты тестирования и позволила поделиться этими знаниями в книге.

Есть люди, которые, сами того не понимая, помогли мне с этой книгой. Например, Упеш Амин (Upesh Amin) много лет назад любезно нашел время, чтобы однажды после обеда научить меня работать с HTTP, а Алан Ричардсон (Alan Richardson) навел на мысль о работе над книгой во время курса Marketing 101!

Эта книга является кульминацией моего опыта работы в сообществе тестировщиков, поэтому спасибо всем в Ministry of Testing1 и многочисленным друзьям, которых я приобрел за эти годы на различных мероприятиях, устраиваемых сообществом тестировщиков. Благодарю всех, кто саркастически спрашивал: «О, ты пишешь книгу?» — я ценю бесплатную рекламу и мотивацию.

Но больше всего я хочу поблагодарить Стеф (Steph), которая всегда поддерживала меня во всех сумасшедших проектах, которыми я занимался, и терпеливо и вежливо поздравляла меня каждый вечер, когда я взволнованно говорил ей, что написал «еще три страницы!». И это продолжалось в течение целого года.


1 Ministry of Testing — Министерство тестирования, также называемое MoT, представляет собой глобальное сообщество по тестированию программного обеспечения. — Примеч. пер.

Эта книга является кульминацией моего опыта работы в сообществе тестировщиков, поэтому спасибо всем в Ministry of Testing1 и многочисленным друзьям, которых я приобрел за эти годы на различных мероприятиях, устраиваемых сообществом тестировщиков. Благодарю всех, кто саркастически спрашивал: «О, ты пишешь книгу?» — я ценю бесплатную рекламу и мотивацию.

Ministry of Testing — Министерство тестирования, также называемое MoT, представляет собой глобальное сообщество по тестированию программного обеспечения. — Примеч. пер.

О книге

Замысел этой книги преследует две цели. Первая цель — познакомить читателей с широким спектром различных техник в области тестирования, которые применимы к веб-API. По мере изучения материала вы узнаете, как выполнять различные виды тестирования, как оценить типы рисков и получаемую информацию. Вторая цель — помочь вам создать и внедрить стратегию тестирования, которая успешно сочетает в себе различные техники и эффективна в вашем конкретном случае.

Для кого эта книга

При написании книги я попытался организовать материал так, чтобы помочь вам построить стратегию тестирования шаг за шагом. Однако в духе принципа применения разных стратегий для различных условий предлагается несколько способов, которыми вы можете воспользоваться, чтобы добиться успеха в тестировании.

Независимо от вашей мотивации, я настоятельно рекомендую прочитать часть 1 полностью. Глава 2 поможет освоиться в песочнице, которая используется в практических примерах. Она понадобится, если вы захотите опробовать различные методы, описанные в книге. Глава 3 обязательна к прочтению, потому что в ней подробно рассматриваются качество и риски, а также то, как они влияют на продукт. Я твердо убежден, что для успешного тестирования необходимо четко понимать, какую проблему вы пытаетесь решить. Если вы не знаете, в чем проблема, как вы можете быть уверены, что выбрали правильный подход, и как сможете оценить результат?

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

Новичкам в построении стратегии тестирования API

Книга построена таким образом, чтобы провести вас по всему пути с нуля до создания, реализации и выполнения успешной стратегии тестирования. Поэтому если вы новичок в тестировании API, последовательно изучайте главы, чтобы улучшать свои знания и навыки.

Улучшение существующей стратегии тестирования API

Не все читатели начинают с нуля. Вы можете быть членом команды, стремящейся улучшить существующую стратегию тестирования. В таком случае я рекомендую разобраться в построении предлагаемой стратегии и сравнить ее с вашей, чтобы определить возможные пробелы и недостатки последней. Этот анализ поможет определить действия по улучшению тестирования в вашей команде.

Реализация определенных методов тестирования

Некоторые читатели хотят узнать больше о конкретных техниках, и им не обязательно думать о более широкой картине (например, вам может быть поручено провести определенные тесты). Если ваша мотивация такова, я рекомендую сосредоточиться на интересующих вас темах, примерах и заданиях по тестированию. Другим проще понять, какое место занимает определенная техника в стратегии, попробовав ее, а затем уже расширять свое видение.

Структура книги

Двенадцать глав книги разделены на три части.

Часть 1. Разработка стратегии тестирования

В главе 1 мы спросим себя, зачем нужно тестирование и почему понимание его ценности помогает создать стратегию тестирования. Глава 2 знакомит с проектом песочницы, который мы будем использовать в практических примерах на протяжении всей книги, чтобы показать ряд методов, которые помогут быстро понять, что и для кого мы тестируем. Глава 3 объясняет, как определить цели, которых мы стремимся достичь с помощью стратегии тестирования, и что помогает нам расставить приоритеты при выборе типа тестирования.

Часть 2. Введение тестов в нашу стратегию

В части 2, главах с 4-й по 7-ю, мы начинаем изучать техники тестирования веб-API. Я расположил главы в этой части книги так, чтобы они следовали жизненному циклу разработки программного обеспечения, начиная с идеи и заканчивая реализацией и сопровождением.

Эта часть книги завершается главой о том, как рабочий контекст влияет на нашу стратегию и как мы можем реализовать ее таким образом, чтобы поддержать работу команды. Затем мы используем эти знания, чтобы собрать воедино мероприятия по тестированию, сформировав основу нашей стратегии тестирования.

Часть 3. Расширение стратегии тестирования

В заключительной части книги, главах с 8-й по 12-ю, мы узнаем больше о разных техниках тестирования, а также расширим некоторые методы, о которых уже узнали. Важно отметить, что техники, которые мы рассмотрим в этом разделе, не обязательно являются более сложными или требуют большего мастерства. Однако они, возможно, потребуют больших затрат времени и более зрелой культуры тестирования, чтобы интегрировать их в стратегию.

Предварительные требования

Предполагается, что вы подходите к изучению этой книги, обладая рядом навыков и знаний.

HTTP

Чтобы протестировать веб-API, нам потребуется использовать HTTP. Мы подробно изучим применение этого протокола в различных техниках тестирования, однако эта книга не содержит введения в HTTP. Поэтому предполагается, что вы знакомы с основами HTTP, такими как:

• унифицированные идентификаторы/локаторы ресурсов;

• HTTP-методы;

• HTTP-заголовки;

• коды состояния;

• запросы и ответы.

Java

Для разделов, затрагивающих программирование, я решил использовать язык Java из-за его широкого распространения в мире разработки API. Это означает, что нам придется иметь дело с дополнительными шаблонами, поставляемыми с Java, но примеры, которые мы рассмотрим, будут понятны максимально широкой аудитории. Помимо этого, примеры содержат множество шаблонов проектирования для кода автоматизации, а подходы универсальны для разных языков. Поэтому я призываю вас прочитать примеры с кодом или даже попробовать их выполнить на практике. Однако для выполнения этих упражнений вы должны иметь практические знания в следующих областях:

• библиотеки;

• пакеты;

• классы;

• методы тестирования;

• утверждения.

Прочие инструменты

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

• DevTools — расширение для большинства браузеров, помогающее отлаживать веб-страницы (https://developer.chrome.com/docs/devtools)

• Postman — инструментальная платформа, помогающая создавать и тестировать веб-API (https://www.postman.com)

• Wireshark — инструмент для перехвата HTTP-трафика, позволяющий перехватывать HTTP-трафик между API (https://www.wireshark.org)

• Swagger — инструмент проектирования, позволяющий создавать «живую» документацию, с которой вы можете взаимодействовать, чтобы узнать больше о веб-API (https://swagger.io)

• WireMock — инструмент для имитации веб-API, чтобы повысить управляемость тестирования (https://wiremock.org)

• Pact — инструмент тестирования контрактов, который проверяет интеграцию между веб-API (https://pact.io)

• Apache JMeter — инструмент для тестирования производительности и функциональности веб-API (https://jmeter.apache.org)

Если будет возможность, ознакомьтесь с этими инструментами, прежде чем начать путешествие по страницам книги.

О коде в книге

Эта книга содержит множество примеров исходного кода как в пронумерованных листингах, так и в обычном тексте. В обоих случаях исходный код отформатирован шрифтом фиксированной ширины, чтобы отделить его от обычного текста.

Комментарии в исходном коде часто удалялись из листингов, если код объяснялся в тексте. Аннотации кода выделяют важные концепции.

Вы можете получить фрагменты кода в liveBook-версии этой книги по адресу https://livebook.manning.com/book/testing-web-apis. Полный код примеров из книги доступен для загрузки с веб-сайта издательства Manning по адресу https://www.manning.com/books/testing-web-apis.

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

Restful-booker-platform

Restful-booker-platform — это наша платформа API-песочницы, на которой мы будем практиковаться в тестировании. Кодовую базу платформы можно найти по адресу https://github.com/mwinteringham/restful-booker-platform, а сведения об установке приведены в приложении к книге.

Источники, используемые в книге

Многие главы содержат заметки, примеры кода и сценарии тестирования производительности, которые можно просмотреть в соответствующих проектах в следующем репозитории: https://github.com/mwinteringham/api-strategy-book-resources. Все разделы кода можно запускать локально.

Форум LiveBook

Приобретая книгу «Тестирование веб-API», вы получаете бесплатный доступ к веб-форуму издательства Manning (на английском языке), на котором можно оставлять комментарии о книге, задавать технические вопросы и получать помощь от автора и других пользователей. Чтобы получить доступ к форуму, откройте страницу https://livebook.manning.com/book/testing-web-apis/discussion. Информацию о форумах Manning и правилах поведения на них см. на https://livebook.manning.com/discussion.

В рамках своих обязательств перед читателями издательство Manning предоставляет ресурс для содержательного общения читателей и авторов. Эти обязательства не подразумевают конкретную степень участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы обсуждений доступны на веб-сайте издательства, пока книга продолжает издаваться.

Об авторе

Марк Винтерингем — тестировщик, системный программист и COO (главный операционный директор) Ministry of Testing с более чем десятилетним опытом экспертизы в области тестирования. Участвовал в технологических проектах в разных областях, которые были отмечены наградами BBC, Barclays, правительства Великобритании и Thomson Reuters. Сторонник современных методов тестирования, основанных на оценке рисков. Обучает команды методам автоматизации тестирования, разработки через тестирование и исследовательского тестирования. Соучредитель Ministry of Testing, сообщества, занимающегося вопросами образования в области тестирования.

Иллюстрация на обложке

Изображение на обложке — «Boucbar de Siberie» (сибирский пастух), оно взято из коллекции Жака Грассе де Сен-Совера, опубликованной в 1788 году. Каждая иллюстрация была тщательно нарисована и раскрашена вручную.

В то время было легко определить по одежде, где живут люди и какова их профессия или положение в обществе. Издательство Manning отдает дань изобретательности и инициативам в области компьютерных технологий, создавая обложки, которые напоминают о культурном разнообразии многовековой давности и возвращают к жизни рисунки из старых изданий.