Как научиться тестированию по: Как научиться тестировать ПО / Хабр

Содержание

Как научиться тестировать ПО / Хабр

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

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

Нужна ли тестировщику база в ИТ?


Откровенно скажем, желательна.

Большинство наших специалистов в той или иной форме увлекались ИТ с детства или как минимум учились в профильных вузах, т.е. уже имели какую-то базовую подготовку еще до прихода в тестирование. Часть из них начинали как разработчики (учились на разработчика) — отдельные “тестовые” направления еще лет 10 назад отсутствовали. Так что у нас перед глазами просто нет “антипримера” такого пути.

Сейчас в ИТ действительно много тех, кто такую подготовку не проходил. И им немного сложнее двигаться вперед. Чтобы справиться с задачами в тестировании, необходимо как минимум уметь поставить операционку, понимать, как развернуть тестовое приложение и необходимое окружение, как создать репозиторий в Git, погуглить ответы на свои вопросы, покопаться на специализированных ресурсах вроде Stackoverflow. По сути это и обеспечивает общая база по информатике.

Но и эти знания вполне можно освоить по книгам или курсам в интернете. Сегодня недостатка в источниках информации нет. Главное, чтобы была заинтересованность и время, которое можно на это выделить.

В тестировщики или в разработчики?


Тестирование тестированию рознь.

Требования к начинающему ручному тестировщику не очень высоки. Пожалуй, это и есть та самая “легкая дорога в ИТ”. Здесь нужно знать базовые принципы тестирования, о которых мы поговорим чуть позже, и иметь упомянутую выше базу. Правда, от ручных тестировщиков постепенно уходят, чтобы проверять программные продукты быстрее и эффективнее. Поэтому так или иначе со временем все “ручники” начинают писать код или заниматься метриками и анализом. Но это не значит, что нельзя начать свою карьеру в статусе джуна-”ручника”.

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

Чтобы начать работать автоматизатором, помимо знаний о тестировании в целом, необходимо иметь минимальные знания в объектно-ориентированном программировании, представлять, как написать простейший “Hello World!”.

Выбирая направление, вряд ли стоит смотреть на сиюминутную популярность специалистов на рынке труда. Средние показатели спроса и зарплат в ИТ — вещь очень специфическая, они зависят в том числе и от смежных знаний. Кто бы мог подумать, но специалисты по разработке на каком-нибудь Delphi сейчас в банковском секторе востребованы, несмотря на то, что в других отраслях язык не пользуется вообще никаким спросом. Здесь все работает по законам рынка: специалистов мало, а спрос на них остался, поскольку кому-то же надо поддерживать легаси.

Так и в тестировании. Сейчас есть спрос на JS-автоматизаторов. Он велик, потому что запросы у бизнеса большие, но еще не успели выучиться те люди, которые встали на данный путь с первым появлением интереса рынка. Как только они выучатся и пойдут работать, ситуация может измениться.

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

Что почитать?


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

Однако одну книгу наш отдел тестирования рекомендовал почти единогласно — “Тестирование Дот Ком” Романа Савина. Это самая известная книга по теме, которая просто и доступно вводит в курс основных понятий и процессов в ручном тестировании. И хотя она издана довольно давно, базовые знания, изложенные в ней, до сих пор актуальны. Пожалуй, ее читали процентов 80 всех тестировщиков в странах СНГ.

Другие рекомендации легко найти в распространенных в интернете “списках N книг для начинающего тестировщика”. Но в целом наша команда тестирования считает, что базы из книги Романа Савина будет достаточно для запуска дальнейшего процесса самообразования.

Стоит ли идти на курсы, тем более платные?


Мнение о курсах у наших специалистов неоднозначное.

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

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

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

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

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

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

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

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

Стоит ли ездить на конференции?


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

На некоторых конференциях можно встретить “базовые” доклады, позволяющие почерпнуть начальные знания в новом для себя сегменте, например в автоматизации. Но чаще это, конечно, информация для более опытных специалистов. В целом конференция — это, скорее, место для нетворкинга и получения смежных знаний (рядом со своей текущей специализацией, например на другом языке).

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

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

Где взять первый опыт?


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

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

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

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

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

На такие “дикие пляски” лучше идти более подготовленным специалистам, которые понимают, в чем здесь отступление от классических процессов. У человека без опыта работа в таком режиме породит только кашу в голове. Скорее всего, ничему хорошему он тут не научится.

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

Джун, миддл, сениор. А есть ли путь дальше?


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

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

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

Дополнительные ссылки


Материалы по тестированию есть на http://www. protesting.ru/. Там много теории и немного практики. Можно найти базовую информацию о том, какие бывают виды тестирования, что такое тест-кейс, тест-план и т.п. Правда, ресурс этот развивается с 2000-х годов, поэтому некоторая информация успела устареть. Но по базе здесь можно найти ценные примеры.

Форум на ресурсе https://software-testing.ru/forum/ — это своего рода аналог Хабра для тестировщиков (по большей части для автоматизаторов). Там много полезной информации именно начального уровня — на Хабре в разделе тестирования больше более продвинутых статей, а тексты для новичков появляются все реже и принимаются аудиторией все хуже.

Еще два неплохих источника информации: https://tproger.ru/digest/free-software-testing-books/ и https://automation-remarks.com/.

Спасибо специалистам по тестированию нашей компании за помощь при подготовке статьи!

P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на наши страницы в VK, FB, Instagram или Telegram-канал, чтобы узнавать обо всех наших публикациях и других новостях компании Maxilect.

где обучиться с нуля и что для этого нужно

Здравствуйте! В статье расскажем, как обучиться тестировать программное обеспечение. Разберемся, кому подойдет профессия, как освоить ее с нуля, где учиться на тестировщика ПО, с чего лучше начинать карьеру и какие вопросы зададут на собеседовании.

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

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

  • Усидчивость, готовность заниматься рутинной, монотонной и кропотливой работой.
  • Высокая работоспособность, настойчивость, нацеленность на результат, терпеливость, стрессоустойчивость.
  • Внимательность, ответственность, критическое мышление, склонность к аналитической деятельности, развитая логика.
  • Способность работать с большими объемами данных, умение планировать и рационально использовать рабочее время.
  • Желание быть в команде, сотрудничать с другими специалистами.

Есть 3 способа, как стать тестировщиком с нуля.


Поступить в вуз

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

Обычно учеба занимает не менее 3 лет. Весь этот период вы будете посещать лекции и семинары, сдавать зачеты и экзамены по 5-7 предметам одновременно, изучите теорию, но не получите сильных практических навыков.


Пройти обучение удаленно

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

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

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


Заниматься самообразованием

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

Но без документа об образовании или без опыта в IT сложно найти высокооплачиваемую вакансию. Придется начать карьеру либо с малооплачиваемой должности, например, со стажера, либо искать подработку на фрилансе.

Для тех, кто хочет учиться сам, можем порекомендовать следующие книги:

  • «Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем», Б. Бейзер.
  • «Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах», Р. Савин.
  • «Тестирование программного обеспечения. Базовый курс», С. Куликов.
  • «Искусство тестирования программ», Г. Майерс, Т. Баджетт, К. Сандлер.
  • «Как тестируют в Google», А. Джейсон, К. Джефф, У. Джеймс.

Подборка курсов
Все онлайн-курсы по тестированию ПО в 2022 году

Посмотреть подборку

Перечислим, какие знания и навыки нужно получить, чтобы стать тестировщиком:

  • Теория тестирования – виды, методы, составление тест-планов и т. д.
  • Основы архитектуры ПО.
  • Операционная система Linux.
  • Верстка на HTML и CSS.
  • SQL и работа с базами данных.
  • Управление версиями в Git и сервисе GitHub.
  • Гибкая методология разработки Agile.
  • Баг-трекеры.
  • Системы для создания тест-кейсов.
  • Один из языков программирования для проведения автотестов – Java или Python.
  • Английский на уровне чтения технической документации.

А также тестировщику требуется ПК или ноутбук с установленным профессиональным софтом: Bugzilla, Jira, Selenium, PyTest и пр.

Чтобы пройти интервью на должность Junior-тестировщика, потребуется предварительная подготовка. Мы составили список распространенных вопросов, которые задают на собеседованиях:

  1. Что вы знаете о жизненном цикле ПО?
  2. С какими видами тестов вы знакомы? В чем особенности нагрузочного, приемочного, стресс- или smoke-тестирования?
  3. Как работают популярные баг-трекеры Jira, BugZilla, RedMine и Mantis?
  4. Какой тип тестирования нужно автоматизировать?
  5. Как скрыть новые функции обновленного приложения от конкурентов?

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

ТОП-5 рекомендаций от экспертов для тех, кто хочет работать тестировщиком:

  1. Составьте четкий план: как вы будете учиться, по какому графику, где будете практиковаться, через какой срок планируете искать работу по специальности и т. д.
  2. Пройдите обучение. Даже экспресс-курс будет эффективнее, нежели длительное самообучение. Кроме того, в онлайн-школе вы сделаете несколько кейсов для портфолио и получите помощь с поиском вакансии.
  3. Выберите направление: тестирование программного обеспечения, сайтов, игр. Например, для проверки веб-сайтов и мобильных программ используются разные инструменты.
  4. Больше тренируйтесь. Новичкам будут полезны специальные краудтестинг-платформы. А также можно брать несложные заказы на фриланс-биржах.
  5. В интернете часто встречается недостоверная или неактуальная информация, поэтому выбирайте надежные источники.

Нагрузочное тестирование против стресс-тестирования против тестирования производительности

АвторThomas Hamilton

Часы

Обновлено

Ключевое различие между нагрузочным тестированием, стресс-тестированием и тестированием производительности

Основные различия между нагрузочным тестированием, стресс-тестированием и тестированием производительности: тогда как стресс-тестирование является подмножеством тестирования производительности.

  • Создание повышенной нагрузки на веб-приложение является основной целью нагрузочного тестирования, в то время как цель тестирования производительности — получить представление о том, как приложение ведет себя при обычных параметрах, тогда как стресс-тестирование направлено на то, чтобы убедиться, что при внезапной высокой нагрузке для значительное время серверы не падают.
  • В нагрузочном тестировании предел нагрузки является порогом сбоя, тогда как в нагрузочном тестировании предел нагрузки выше порога сбоя, а в тестировании производительности предел нагрузки находится как ниже, так и выше порога сбоя.
  • Что такое нагрузочное тестирование?

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

    Что такое стресс-тестирование?

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

    Что такое тестирование производительности?

    Тестирование производительности — это тип тестирования для определения скорости компьютера, сети или устройства. Он проверяет производительность компонентов системы, передавая разные параметры в разных сценариях нагрузки.

    Тестирование производительности, нагрузочное тестирование и стресс-тестирование

    Вот основное различие между тестированием производительности, нагрузочным тестированием и стресс-тестированием:

    Тестирование производительности Нагрузочное тестирование Стресс-тестирование
    Супернабор нагрузочного и стресс-тестирования. Подмножество тестирования производительности. Подмножество тестирования производительности.
    Помогает установить эталон и стандарты для приложения. Чтобы распознать верхний предел системы, установите SLA приложения и проверьте, как система справляется с большой нагрузкой. Чтобы проверить, как система ведет себя при экстремальных нагрузках и как она восстанавливается после сбоя.
    Цель тестирования производительности — получить представление о том, как приложение ведет себя при обычных параметрах. Создание повышенной нагрузки на веб-приложение — основная цель нагрузочного тестирования. Стресс-тестирование направлено на то, чтобы при внезапной высокой нагрузке в течение значительного времени серверы не зависали.
    Использование ресурсов, доступность и надежность продукта проверяются в ходе этого тестирования. В нагрузочном тесте проверяются такие атрибуты, как пиковая производительность, количество серверов и время отклика. Этот вид тестирования проверяет стабильность, время отклика и т. д.
    При тестировании производительности предел нагрузки находится как ниже, так и выше порога сбоя. В нагрузочном тестировании предел нагрузки является порогом обрыва. При нагрузочном тестировании предел нагрузки выше порога обрыва.
    Примеры тестирования производительности: Проверка одновременных пользователей, HTTP-соединений или проверка
    Подходящее время отклика.
    Примером нагрузочного тестирования является тестирование текстового процессора путем внесения изменений в большой объем данных,

    протестировать принтер, передав тяжелые данные.

    Проверить почтовый сервер с тысячами одновременных пользователей.

    Пример стресс-тестирования: случайное закрытие и перезапуск портов большой сети.
    Зачем нужно тестирование производительности?

    — Проверка правильности работы приложения

    — Проверка на соответствие потребностям бизнеса

    Поиск, анализ и устранение проблем с производительностью

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

    Выполнение планирования емкости для будущего спроса приложения

    Зачем нагрузочное тестирование?

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

    — Чтобы убедиться, что приложение может достичь точки производительности, определенной во время тестирования производительности.

    -Для определения работоспособности приложения

    -Чтобы проверить, достаточна ли текущая инфраструктура для запуска приложения или нет.

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

    Зачем стресс-тестирование?

    -Помогает тестировщику протестировать систему в случае сбоя.

    -Чтобы убедиться, что система сохранила данные перед сбоем или нет.

    -Чтобы проверить, не наносят ли неожиданные сбои безопасности системе.

    Когда вы используете тестирование производительности?

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

    Когда вы используете нагрузочное тестирование?

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

    Когда вы используете стресс-тестирование?

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

    Заключение

    • Тестирование производительности — это метод тестирования, используемый для определения скорости компьютера, сети или устройств.
    • Нагрузочное тестирование имитирует реальную нагрузку на любое приложение или веб-сайт.
    • Стресс-тестирование определяет стабильность и надежность системы
    • Тестирование производительности помогает проверить производительность серверов веб-сайтов, баз данных, сетей.
    • Нагрузочное тестирование используется для клиент-серверных веб-приложений.
    • Стресс-тестирование проводится внезапным тестовым трафиком вашего сайта.

    Что такое автоматизация тестирования API? Как протестировать

    АвторThomas Hamilton

    Часы

    Обновлено

    Что такое тестирование API?

    ТЕСТИРОВАНИЕ API — это тип тестирования программного обеспечения, который проверяет интерфейсы прикладного программирования (API). Целью тестирования API является проверка функциональности, надежности, производительности и безопасности программных интерфейсов. В тестировании API вместо использования стандартных пользовательских входов (клавиатуры) и выходов вы используете программное обеспечение для отправки вызовов API, получения выходных данных и записи ответа системы. Тесты API сильно отличаются от тестов GUI и не будут концентрироваться на внешнем виде приложения. Он в основном концентрируется на уровне бизнес-логики архитектуры программного обеспечения.

    Для справки: API (интерфейс прикладного программирования) — это вычислительный интерфейс, обеспечивающий связь и обмен данными между двумя отдельными программными системами. Программная система, которая выполняет API, включает в себя несколько функций/подпрограмм, которые может выполнять другая программная система. API определяет запросы, которые могут быть сделаны, как делать запросы, форматы данных, которые можно использовать, и т. д. между двумя программными системами.

     

    Настройка тестовой среды API

    Автоматизация API Для тестирования требуется приложение, с которым можно взаимодействовать через API. Чтобы протестировать API, вам потребуется

    1. Использовать инструмент тестирования для запуска API
    2. Напишите свой собственный код для тестирования API

    Несколько моментов, на которые следует обратить внимание

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

    Типы выходных данных API

    Выходные данные API могут быть

    1. Любой тип данных
    2. Статус (пройдено или не пройдено)
    3. Вызвать другую функцию API.

    Давайте рассмотрим пример каждого из вышеперечисленных типов в этом руководстве по тестированию API.

     Long add(int a, int b) 

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

    Вызов должен быть сделан, например,

     add (1234, 5656) 

    Исключения должны быть обработаны, если число превышает целочисленный лимит.

    Статус (например, Пройдено или Не пройдено)

    Рассмотрим приведенную ниже функцию API —

    1. Lock()
    2. Разблокировать()
    3. Удалить()

    В качестве выходных данных они возвращают любое значение, например True (в случае успеха) или false (в случае ошибки).

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

    Вызов другого API/события

    В этом случае мы вызываем одну из функций API, которая, в свою очередь, вызывает другую функцию.

    Например: первая функция API может использоваться для удаления указанной записи в таблице, а эта функция, в свою очередь, вызывает другую функцию для ОБНОВЛЕНИЯ базы данных.

    Тестовые наборы для тестирования API:

    Тестовые наборы для тестирования API основаны на

    • Возвращаемое значение на основе входного условия: относительно легко проверить, так как можно определить входные данные и подтвердить подлинность результатов
    • Ничего не возвращает: Если нет возвращаемого значения, необходимо проверить поведение API в системе
    • Запуск какого-либо другого API/события/прерывания: Если вывод API вызывает какое-либо событие или прерывание, то эти события и прослушиватели прерываний должны отслеживаться
    • Обновление структуры данных: Обновление структуры данных будет иметь некоторый результат или влияние на систему, и это должно быть аутентифицировано
    • Изменить определенные ресурсы: Если вызов API изменяет некоторые ресурсы, это должно быть проверено путем доступа к соответствующим ресурсам

    Подход к тестированию API

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

    Следующие пункты помогают пользователю выполнить подход к тестированию API:

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

    Разница между тестированием API и модульным тестированием

    Модульное тестирование Тестирование API

    Разработчики делают это

    Тестировщики выполняют это

    Тестируется отдельная функциональность

    Сквозная функциональность проверена

    Разработчик может получить доступ к исходному коду

    Тестеры не могут получить доступ к исходному коду

    Тестирование пользовательского интерфейса также задействовано

    Тестируются только функции API

    Тестируются только базовые функции

    Все функциональные проблемы проверены

    Ограниченная область применения

    Более широкий охват

    Обычно выполняется перед регистрацией

    Тестовый запуск после создания сборки

    Как тестировать API

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

  • Юзабилити-тестирование: Это тестирование проверяет, является ли API функциональным и удобным для пользователя. И хорошо ли API интегрируется с другой платформой
  • Тестирование безопасности: Это тестирование включает в себя, какой тип аутентификации требуется и шифруются ли конфиденциальные данные через HTTP или и то, и другое
  • Автоматизированное тестирование: Тестирование API должно завершаться созданием набора сценариев или инструмента, который можно использовать для регулярного выполнения API
  • Документация: Группа тестирования должна убедиться, что документация адекватна и содержит достаточно информации для взаимодействия с API. Документация должна быть частью конечного результата
  • Передовой опыт тестирования API:

    • Тестовые случаи API должны быть сгруппированы по категориям тестов
    • В дополнение к каждому тесту вы должны включить объявления вызываемых API.
    • Выбор параметров должен быть явно указан в самом тестовом примере
    • Установите приоритет вызовов функций API, чтобы тестировщикам было легко тестировать
    • Каждый тестовый пример должен быть как можно более автономным и независимым от зависимостей
    • Избегайте «цепочек тестов» при разработке
    • Следует соблюдать особую осторожность при работе с функциями одноразового вызова, такими как «Удалить», «Закрыть окно» и т. д.
    • Последовательность вызовов должна быть выполнена и хорошо спланирована
    • Чтобы обеспечить полное тестовое покрытие, создайте тестовые примеры API для всех возможных входных комбинаций API.

    Типы ошибок, которые обнаруживает тестирование API

    • Не удается корректно обработать условия ошибки
    • Неиспользуемые флаги
    • Отсутствует или дублируется функциональность
    • Проблемы с надежностью. Сложности с подключением и получением ответа от API.
    • Проблемы с безопасностью
    • Многопоточные проблемы
    • Проблемы с производительностью. Время отклика API очень велико.
    • Недопустимые ошибки/предупреждение вызывающему абоненту
    • Неправильная обработка допустимых значений аргументов
    • Данные ответа неправильно структурированы (JSON или XML)

    Как сделать автоматизацию тестирования API

    В следующих руководствах представлено подробное руководство по автоматизации тестирования API.