Тестирование программ: виды, этапы, принципы

Рассказываю о том, что отнимает большую часть времени при разработке приложений, а еще и об интересной и крайне привлекательной профессии в мире IT. Поговорим о том, кто и как тестирует программы. 

Зачем проводят тестирование?

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

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

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

Виды тестирования

Функциональное и нефункциональное

Под функциональным тестированием подразумевается проверка (как понятно из названия) функций приложения. Специально обученный человек тыкает во все доступные кнопки, зачастую ведет себя неадекватно и непредсказуемо для программиста, чтобы выявить все «слабые места» полуготового проекта. 

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

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

Статическое и динамическое

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

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

Оба этапа обязательны к выполнению.

Другие виды тестирования

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

Нагрузочное

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

Тестирование UX

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

Конфигурационное

Тестирование совместимости программного продукта с аппаратным обеспечением и другими software-компонентами (разными версиями ОС и процессоров). Такое актуально для кроссплатформенных приложений и при переходе поставщика платформы на принципиально новое аппаратное шасси (как было при появлении ноутбуков на базе чипов М1 от компании Apple).

Что тестируют на разных этапах разработки?

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

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

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

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

Интеграционное

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

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

Системное

Стадия системного тестирования нам уже знакома, она тесно привязана к функциональному и нефункциональному типу. 

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

При желании сюда можно включить проверку UX (хотя чаще эту методику выделяют в отдельный пункт).

Приемочное

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

Итог такого тестирования – либо приемка заказа и оплата, либо отправка готового продукта на доработку. 

План тестирования приложения и других программных продуктов

Есть отработанная схема тестирования продуктов, проводящаяся в три этапа перед переходом к их запуску.

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

Подготовка плана тестирования

Это своего рода «дорожная карта» с указаниями, из каких действий будет состоять проверка программы и в какие примерно сроки будет завершено каждое из них. Тут важно понимать, что ни один из пунктов плана не может быть соблюден на 100%. Обязательно появятся изменения, вносимые в ходе работы, и их будет много. То начальство внесет коррективы в график работы, то заказчик изменит свои «хотелки». Увы, но процесс создания приложений тесно сопряжен с постоянно варьирующимися планами. C’est la vie.

Составление перечня тест-кейсов

Тест-кейсы – конкретные действия или наборы действий, выполняемые тестировщиками, чтобы оценить работоспособность ПО. Здесь важно учесть те сценарии, которые будут наиболее близки к реальности. 

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

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

Внедрение автоматических инструментов для тестирования ПО

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

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

А после этого тестировщик переходит к тем этапам, что описаны в разделе «Что тестируют на разных этапах разработки?».

10 принципов успешного тестирования 

Поговорим о 10 вещах, которые нужно держать в уме при тестировании сайтов и приложений. Это не строгие рекомендации, но на них ориентируются опытные тестировщики по всему миру.

  1. Важно тестировать «софт» на реальных устройствах, а не только в эмуляторах, и желательно с разными разрешениями, ОС и наборами аппаратных компонентов. 

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

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

  4. Не пропускайте этап проверки UX. Он один из ключевых.

  5. Не занимайтесь дебаггингом. Это работа программиста. Ваша работа – тестировать и указывать кодерам на обнаруженные ошибки.

  6. Никаких «галопом по Европам». Вдумчивый тест даст больше результатов. Планируйте и следуйте плану, чтобы не упустить важные детали.

  7. Устраивайте неадекватные тесты и перегрузки, чтобы убедиться в «выносливости» проверяемого ПО.

  8. Проверяйте ПО даже на устаревших гаджетах с 2G-подключением. Среди ваших пользователей может найтись много таких.

  9. Автотесты – ваш друг. Учитесь писать их грамотно. 

  10. Работайте в команде. Два тестировщика гораздо эффективнее ищут баги, так как могут действовать совсем иначе.

Профессия «тестировщик»

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

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

  • Кто-то профессионально пишет автотесты и незаменим на ранних этапах проверки ПО.

  • Некоторые сотрудники отвечают за аналитику. 

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

Тестировщик – перспективное направление в IT. Востребованная профессия, активно разыскиваемая рекрутами на HeadHunter и аналогах. А еще эта работа считается самой несложной ступенью для «входа» в IT, так как освоить специализацию тестировщика можно быстрее, не так глубоко вникая в программирование в целом. И уже после опыта работы в тестировании перейти в более продвинутое направление (веб-дизайн, нейросети, криптовалюты и т.п.).

Вместо заключения

Задача тестировщика – сделать так, чтобы до пользователя добралась наиболее качественная версия задуманного ПО. Быстрая, удобная, красивая программа, за которую не будет стыдно программисту, QA-инженерам, начальству и заказчику. Если вы сами хотите стать тестировщиком, то ставьте во главу угла пользователя. Это лучший метод качественно сделать свою работу.

Межтекстовые Отзывы
Посмотреть все комментарии
guest

Что почитать программисту: 10 популярных книг по разработке

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

Выбор темы для интернет-магазина на WordPress

Разработка #Плагины #Интернет-магазин #Веб-дизайн #Шаблоны #WordPress «WordPress для блога!» — говорили они. «Но ведь… есть плагины и темы…»...

Автоматический деплой проекта с использованием GitHub и FTP на хостинг Timeweb

Разработка #FTP #GitHub #Хостинг В этой статье мы рассмотрим процесс создания репозитория на GitHub и настройки автоматического деплоя...

Что такое язык программирования

Разработка #C/C#/C++ #Программы #Обзор #Веб-дизайн #Java Программа на компьютере или смартфоне – это последовательность команд, которую создавали с...

Руководство по работе с Kubernetes для начинающих

Разработка #Серверы #Настройка #Docker #Ubuntu #CentOS Kubernetes – это портативная расширяемая платформа для управления контейнерами на серверах. Она...

10 лучших HTML-редакторов

Разработка #Программы #Редакторы кода #Подборка #HTML/CSS Рассматриваем лучшие приложения для работы с HTML-разметкой. Узнаем, чем пользуется верстальщик с глубокими познаниями...

Создаем свой шаблон для Joomla. Пошаговое руководство

Разработка #Шаблоны #HTML/CSS #Joomla! В этой статье пойдет речь о создании своего шаблона для Joomla 3.х с возможностью...

Сравнение VPS и облачного хостинга для Bitrix

В современном мире веб-технологий выбор между VPS (виртуальным частным сервером) и облачным хостингом для системы управления контентом, такой...

Что такое JavaScript: назначение, особенности и сферы применения языка

Разработка #Браузеры #Разбор #JavaScript #HTML/CSS Интерактивные элементы сайтов и мобильных приложений часто выполняются на языке JavaScript. Он хорошо...

Лучшие компиляторы кода и IDE для C++

Разработка #C/C#/C++ #Программы #IDE #Редакторы кода #Подборка Рассказываем о лучших компиляторах и инструментах для разработки на С++. Что...

Как настроить Sublime Text 3

Разработка #Программы #Редакторы кода #JavaScript #HTML/CSS Sublime Text 3 – это текстовый редактор, разработанный для верстальщиков и программистов....

GitHub включил по умолчанию механизм защиты от утечек данных

Новости #GitHub #Сервисы #Безопасность Реклама. ООО «ТаймВэб». erid: LjN8K4hV8 Сервис GitHub включил защиту от попадания в публичный репозиторий приватных...

Как создать рекламный сайт

Разработка #Монетизация #Реклама #Конструктор Рекламный сайт – это ресурс, нацеленный на продажу товаров или услуг. Вся информация, находящаяся...

Создаем бесплатный callback-виджет с SMS и Telegram-оповещением

Разработка #Telegram #JavaScript #HTML/CSS В этой статье мы пошагово создадим виджет обратного звонка с красивой минималистичной анимацией и...

Виды алгоритмов сортировки в Python

Разработка #Обзор #Редакторы кода #Python В одной из прошлых статей я рассматривал списки в Python, а также затронул их сортировку....

Как сделать приложение из веб-сайта

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

Работа с массивами в JavaScript

Разработка #JavaScript В одной из прошлых статей я разбирал работу строк в JavaScript. Но что если нам нужно хранить несколько...

Как создать одностраничный сайт на Bootstrap (Mobirise)

Разработка #Программы #Веб-дизайн #Шаблоны #HTML/CSS #Конструктор Создание сайтов под ключ – отдельная профессия. Специалисты должны разбираться в верстке...

Что такое дополненная реальность

Разработка #Google #Продажи #Технологии #Сервисы Выбирали когда-нибудь кроссовки или диван в интернете? Не очень удобно, верно? Было бы...

Криптопрограммирование: особенности и перспективы

Разработка #Криптовалюта #Фреймворки #Обзор #Технологии Разработка – перспективное и денежное направление. Эта сфера привлекает все больше людей, даже...