четверг, 27 мая 2021 г.

5 мин

Введение в обеспечение качества


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



Для кого этот курс?


Для прохождения этого курса не требуется предварительного знакомства с процессами обеспечения качества. Мы начинаем с основ и переходим к продвинутым концепциям в области автоматизации контроля качества. Однако мы предполагаем, что вы знакомы с базовым HTML (для тестирования веб-интерфейса) и протоколом REST (для тестирования API).



Что такое BDD и TDD?


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

BDD, с другой стороны, описывает функцию или функциональность на понятном человеку языке под названием Gherkin, понятном для различных заинтересованных сторон, участвующих в проекте. На практике мы используем плагины IDE, чтобы иметь красиво отформатированные сценарии в Gherkin и запускаемые методы в Cucumber для Java или Behave для Python.



Основы QA


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

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

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



Web UI тестирование


При тестировании веб-интерфейса вы, как тестировщик, пытаетесь убедиться, что элементы на веб-странице работают правильно, правильно размещены и выглядят так, как задумано. Чтобы проверить функциональность веб-элементов, вы обычно пытаетесь взаимодействовать с ними, например нажимать кнопку, выбирать параметр из раскрывающегося списка . И проверять, правильно ли они работают. Правильность размещения легко проверить визуальным осмотром страницы. Между тем, для правильного внешнего вида должны присутствовать определенные атрибуты CSS. Все описанные проверки могут быть выполнены вручную, хотя это может быть подвержено ошибкам и требует много времени, особенно если есть много страниц для тестирования. Альтернативой является автоматизация процесса тестирования путем написания тестов, которые могут запускаться периодически и выполнять упомянутые задачи. Возможно, самым популярным инструментом для автоматизированных тестов пользовательского интерфейса является Selenium, но в последние годы становится популярным и другой инструмент, называемый Cypress.



API тестирование


Практически все современные веб-приложения и мобильные приложения совершают какие-либо вызовы API на другие серверы в сети. Через запросы и ответы API приложение взаимодействует с серверными и сторонними службами для выполнения различных задач, таких как аутентификация пользователя, получение данных, отправка уведомлений и т. Д. Поэтому правильно работающие вызовы API имеют решающее значение для работоспособности приложения. Хотя вы можете проверить ответ на вызов API на стороне пользовательского интерфейса, попытавшись войти в систему или проверить данные, полученные от сторонней службы, быстрее проверить базовые вызовы напрямую. Вот когда вступает в игру тестирование API. Обычно используемые запросы API - это GET, POST, PUT и DELETE. Каждый вызов API состоит из конечной точки запроса, заголовка и тела. Содержимое тела обычно JSON или XML. Самым популярным инструментом тестирования API является Postman. Это позволяет нам делать все виды запросов API и наблюдать за ответами. Некоторые расширенные функции Postman включают среды, сценарии, коллекции, макеты серверов и многое другое. Помимо Postman, мы можем использовать специальные библиотеки языков программирования, такие как библиотека запросов Python, предназначенная для работы с API. Это дает нам большую гибкость и более глубокий охват автоматизационным тестированием.



Мобильное тестирование


Популярным выбором для тестирования мобильных приложений с открытым исходным кодом является Appium. Не требуется включать SDK или перекомпилировать приложение. Самое приятное то, что вы по-прежнему можете использовать знакомые вам инструменты автоматизации тестирования, такие как Selenium, и он работает с приложениями iOS, Android и Windows. Поддерживаются как собственные, так и гибридные приложения.

Appium полагается на архитектуру клиент/сервер для выполнения своей задачи. Сервер прослушивает команды через вызовы методов REST API, выполняет команды на мобильном устройстве и возвращает HTTP-ответ, представляющий результат выполнения команды. Непосредственным преимуществом архитектуры клиент/сервер для тестирования является то, что тесты могут быть написаны на вашем локальном компьютере. При выполнении он связывается с облачным сервисом, таким как Sauce Labs, для получения и интерпретации команд. Это более масштабируемый подход в отличие от размещения клиента и сервера на одном компьютере. Клиентские библиотеки написаны на Java, Ruby, Python, PHP, Javascript и C #.
Итак, это было введение QA. Далее мы вместе изучим «Инструменты тестирования», «Soft skill-ы тестировщиков» и так далее.

Содержание