Блог A1QA

О тестировании и качестве ПО

Конвейер тестирования: как «шлифуют» ПО после разработки

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

Функциональное тестирование — общий осмотр

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

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

Часто во время функционального тестирования могут быть обнаружены глобальные дефекты: на сайте интернет-магазина пользователь может получить права администратора или что-то в том же духе. Это можно сравнить с покупкой калькулятора, на котором нет клавиши «+» — технически сложная вещь оказывается не до конца продуманной.

Тестирование производительности — мост под нагрузкой

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

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

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

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

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

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

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

Юзабилити тестирование — чтобы не «заблудиться» на сайте

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

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

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

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

Читать дальше

Поделиться статьей: