Тестирование ПО — это больше, чем «просто нажать пару кнопок»

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Автор: Роман Горбунов, руководитель проектов в сфере обеспечения качества ИТ-компании «Точка качества».

При взаимодействии с директорами, владельцами бизнеса и некоторыми руководителями команд разработки специалисты компании по тестированию программного обеспечения «Точка качества» периодически сталкиваются с мнением, что тестировать ИТ-решение — это легко и быстро. Нужно просто нажать несколько кнопок и готово, запустить пару программ, и можно делать релиз. 

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

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

Почему тестирование должны проводить QA-инженеры

  • Инженер по тестированию — ответственен за проведение тестирования по разработанной стратегии, за экспертную оценку качества создаваемого продукта, за поиск и выявление дефектов, передачу отчётов по качеству о состоянии ПО команде разработке и заказчику.

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

  • Разработчик — пишет код, создаёт программное обеспечение и функциональность ПО.

  • Бизнес-аналитик — исследует проблемы бизнеса и помогает понять первопричину проблем и выработать пути решения.

  • Специалист техподдержки — преимущественно отвечает за консультации пользователей по вопросам использования ИТ-решения и возникших проблем.
     

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

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

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

Наконец, «уметь разрабатывать» — не то же самое, что «уметь тестировать». Учиться тестированию нужно отдельно и чаще всего разработчик не умеет писать тестовые сценарии, проводить различные виды тестов и автоматизировать процесс. Так что QA-специалист — это другая профессия.

Почему тестирование ИТ-продуктов — сложнее, чем вы представляете

Тестирование программного обеспечения — неотъемлемая часть жизненного цикла разработки. Выбор стратегии тестирования зависит от:
 

  • глубины и ширины тестового покрытия (дымовое, позитивное, негативное, регрессионное и т.д.)

  • места и времени проведения тестов (приёмочное, альфа, бета тестирование)

  • подготовленности ПО к релизу (проверка документации, исследовательское и интуитивное тестирование)

  • изолированности компонентов (модульное. интеграционное, системное тестирование)

  • степени автоматизации тестов (ручное, автоматизированное тестирование)

  • объекта тестирования (функциональное, нефункциональное тестирование)

  • глубины знания кода (тестирование белого, чёрного и серого ящика)
     

Для ясности опишем несколько популярных типов тестирования ПО в зависимости от целей проекта и особенностей ИТ-решения:

  1. Тестирование производительности

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

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

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

  • объёмное тестирование, при котором ПО испытывается на больших объёмах данных.

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

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

2. Автоматизация тестирования

Чтобы ускорить тестирование ИТ-решения, особенно если есть потребность в регулярном запуске повторяющихся тестов, прибегают к автоматизации тестирования. Она подразумевает, что выбранные функции и шаги теста, такие как запуск, инициализация, выполнение, анализ и  результат, выполняются без участия QA-инженера, а с помощью инструментов для автоматизированного тестирования.

3. Функциональное (ручное) тестирование

Тесты выполняются инженерами вручную, без привлечения каких-либо инструментов автоматизации. Ключевые преимущества ручного тестирования: 

  • тестировщик использует индивидуальный подход к продукту и накопленный опыт при поиске дефектов, позволяющий точно сымитировать поведение пользователей

  • есть возможность сосредоточиться на проверке сложных функций

  • понимание изначально сформированных технических требований к продукту

  • поиск ошибок, которые не влияют на код, например, время ответа сервера

  • специалисты могут оставлять комментарии касательно удобства использования, понятности и дизайна ПО

  • ручное тестирование экономически выгодно, особенно для небольших проектов

 

4. Тестирование бизнес-требований 

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

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

5. Кроссбраузерное / кроссплатформенное тестирование необходимо, чтобы определить, корректно ли функционирует ПО на различных браузерах или версиях браузеров пользователей, операционных системах или версиях операционных систем.

Всего существует более 36 методов тестирования IT-продуктов, которые инженеры по тестированию применяют в работе. 

Инструменты для тестирования

Помимо типов тестирования QA-инженеры также подбирают инструменты для обеспечения качества ПО. Некоторые инструменты, используемые в процессе тестирования ПО:

Для функционального тестирования:

  • Allure

  • BrowserStack

  • LambdaTest

  • Pruffme

  • DevTools

  • Selenium WebDriver

  • sBoard

  • getLocus

  • JIRA

  • Adobe Photoshop

  • Figma

  • Perfect Pixel

  • Postman

  • GoogleAnalyticsDebugger

  • MySQL

Для автоматизации тестирования:

  • Selenium

  • IntelliJ IDEA

  • Cucumber

  • Appium

  • Jenkins

  • TeamCity

  • Robot Framework

  • TestComplete

  • Soap UI

  • RFT

  • QTP/UFT

  • UI Automator

 Инструменты для тестирования производительности:

  • Apache JMeter

  • K6.io

  • Gatling

  • LoadRunner

  • Loadview

  • Load Ninja

  • Loader

  • The Grinder.

 Инструменты для тестирования мобильных приложений

  • Postman

  • SoapUI

  • GitLab

  • Android studio

  • Robotium

  • TestFairy

  • TestFlight

  • Cedar 

 Взглянув даже на этот список инструментов, становится ясно, что для качественной проверки ИТ-продукта перед релизом, недостаточно иметь общего представления о процессе обеспечения качества.

Финальные мысли

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

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

Источник: https://habr.com/ru/articles/761942/


Интересные статьи

Интересные статьи

Сегодня мы поговорим с вами о светодиодной лампе для натяжных потолков от именитого производителя Гаусс.Протестируем ее и сделаем выводы о качестве изделия.
В прошлой статье, я описывал как тестировать компонент. Теперь же коснемся вопроса тестирования сервиса.
Любите ли вы тесты, как люблю их я: всеми фибрами души, со всей страстью и энтузиазмом, на которые только способен разработчик, жадный до полного покрытия кода? В этой статье я расскаж...
19 ноября приглашаем на NX QA Meetup #14. Дмитрий Тучс из PropellerAds расскажет о хороших и плохих примерах code review в «классических» selenium end-to-end тестах. С Ол...
Raspberry Pi 4 стала гораздо холоднее! За последние четыре месяца обновления прошивки уменьшили энергопотребление в ждущем режиме на 1/2 Вт и почти на 1 Вт под полной нагрузкой. Гарет Халфакри пр...