Нефункциональное тестирование относится к тестированию программного обеспечения, которое проводится для проверки нефункциональных аспектов программного приложения.
Существует множество различных видов нефункционального тестирования, а некоторые виды тестирования программного обеспечения можно считать одновременно и функциональным тестированием, и нефункциональным.
Нефункциональное тестирование необходимо, поскольку оно оценивает основные пользовательские критерии, такие как производительность и удобство использования, и проверяет, работает ли программное обеспечение так, как ожидается, за пределами его основной функциональности.
В этой статье мы рассмотрим определение и характеристики нефункционального тестирования, а также виды нефункционального тестирования, подходы к нефункциональному тестированию и инструменты тестирования, которые помогут оптимизировать и улучшить ваши собственные процессы нефункционального тестирования.
Что такое нефункциональное тестирование?
Нефункциональное тестирование – это любой вид тестирования программного обеспечения, при котором проверяются нефункциональные аспекты сборки программного обеспечения.
Примеры нефункционального тестирования включают тестирование, предназначенное для оценки емкости, производительности, удобства использования, восстановления и переносимости.
Проверка качества и состояния каждого из этих нефункциональных критериев так же важна, как и проверка функций части программного обеспечения, но эти параметры не проверяются в ходе стандартного функционального тестирования.
По сути, нефункциональное тестирование означает тестирование “как” работают функции программного обеспечения, а не тестирование “работают ли” они.
1. Когда вам необходимо нефункциональное тестирование?
Нефункциональное тестирование проводится на этапе системного тестирования программного обеспечения после проведения модульного тестирования и тестирования интеграции.
Во время тестирования системы тестировщики проводят как функциональное, так и нефункциональное тестирование, начиная с функционального тестирования.
После того как тестировщики установили, что программное обеспечение функционирует так, как ожидалось, они проводят нефункциональное тестирование, чтобы оценить, соответствует ли оно также нефункциональным параметрам.
Обычно функциональное тестирование необходимо проводить до нефункционального тестирования, поскольку невозможно проверить надежность или производительность функций, которые вообще не работают. Нефункциональное тестирование является одним из последних этапов тестирования программного обеспечения перед тестированием принятия пользователем и окончательным выпуском продукта.
2. Когда вам не нужно нефункциональное тестирование
Всегда важно тестировать нефункциональные аспекты программного обеспечения, если только они уже не были протестированы и признаны адекватными.
Даже если вы уже проводили нефункциональное тестирование программного обеспечения, может возникнуть необходимость повторного тестирования нефункциональных параметров, например, если в программное обеспечение были добавлены новые функции или если в код были внесены изменения, которые могут повлиять на производительность и надежность.
Цели нефункционального тестирования
Целями нефункционального тестирования являются проверка соответствия продукта ожиданиям пользователей и оптимизация продукта перед выпуском.
Это также может помочь разработчикам и тестировщикам лучше понять программное обеспечение и использовать эти знания в будущих оптимизациях.
1. Контроль качества
Нефункциональное тестирование направлено на проверку факторов, влияющих на удобство использования, надежность, ремонтопригодность, переносимость и эффективность продукта.
Тестирование этих элементов гарантирует, что выпускаемый на рынок продукт будет достаточно высокого качества и будет соответствовать ожиданиям пользователей в отношении производительности, времени загрузки и возможностей пользователя.
2. Управление рисками
Нефункциональное тестирование также снижает риск и затраты, связанные с выпуском продукта на рынок, максимизируя шансы на то, что команда выпустит удовлетворительный продукт.
Проверяя нефункциональные параметры сборки программного обеспечения, можно снизить затраты на выпуск продукта, поскольку уменьшается необходимость в дальнейшей разработке и изменении программного обеспечения.
3. Оптимизация
Нефункциональное тестирование помогает тестировщикам и разработчикам оптимизировать сборку программного обеспечения и оптимизировать производительность при установке, настройке, выполнении и использовании.
Вы также можете использовать нефункциональное тестирование для оптимизации способа управления и контроля сборки программного обеспечения.
4. Сбор данных
Нефункциональное тестирование позволяет тестировщикам собирать и производить измерения и метрики, которые могут быть использованы командами тестирования для внутренних исследований и разработок.
Вы можете использовать данные, полученные в результате нефункционального тестирования, чтобы понять, как работает ваш продукт и как вы можете более эффективно оптимизировать его для пользователей.
5. Расширение знаний
Нефункциональное тестирование улучшает и расширяет знания команды тестирования о поведении продукта и технологиях, которые он использует.
Это не только помогает командам тестирования лучше понять программное обеспечение, над которым они работают, но и может дать полезные знания, которые помогут тестировщикам лучше понять будущие сборки.
Кто участвует в нефункциональном тестировании?
Нефункциональное тестирование обычно проводится тестировщиками в среде QA, но иногда разработчики могут проводить нефункциональное тестирование во время разработки.
Системное тестирование почти всегда проводится тестировщиками, и именно на этом этапе тестирования проводится большая часть нефункционального тестирования.
Если нефункциональные тесты проваливаются, тестировщики отправляют программное обеспечение обратно разработчикам для исправления ошибок в работе перед повторным тестированием.
Преимущества нефункционального тестирования
Проведение нефункционального тестирования имеет много преимуществ, и нефункциональное тестирование является важным этапом тестирования системы.
Без нефункционального тестирования команды тестирования не смогли бы проверить, что программное обеспечение действительно соответствует требованиям клиента или что оно соответствует требованиям, изложенным в плане разработки программного обеспечения.
1. Улучшить производительность программного обеспечения
Нефункциональное тестирование может помочь тестировщикам и разработчикам улучшить общую производительность программных приложений. Нефункциональные тесты выявляют области, где производительность программного обеспечения недостаточна, например, с точки зрения скорости загрузки или вычислительной мощности, и побуждают команды разработчиков программного обеспечения внести изменения для устранения этих недостатков.
Это гарантирует, что команды разработчиков программного обеспечения выпускают программное обеспечение только тогда, когда оно готово, и когда его производительность достаточно высока.
2. Обеспечьте безопасность программного обеспечения
Нефункциональное тестирование включает в себя тестирование безопасности, которое имеет решающее значение для обеспечения безопасности и защиты сборки программного обеспечения от внешних угроз и атак.
Тестирование безопасности позволяет тестировщикам и разработчикам проверить, что программное обеспечение адекватно защищает конфиденциальные данные и имеет достаточный уровень безопасности для защиты от современных кибер-атак.
3. Повысить удобство использования программного обеспечения
Нефункциональное тестирование – это лучший способ сделать ваше программное обеспечение более удобным для пользователя, особенно путем проведения юзабилити-тестирования, которое оценивает, насколько легко пользователям научиться использовать и работать с вашим программным обеспечением.
Удобство для пользователя очень важно, поскольку оно определяет, насколько пользователи удовлетворены вашим программным обеспечением, и гарантирует, что пользователи смогут воспользоваться всеми преимуществами, которые предлагает ваше программное обеспечение.
4. Убедитесь, что программное обеспечение отвечает потребностям пользователей
Обеспечение соответствия программного обеспечения потребностям пользователей должно быть одним из главных приоритетов всех команд по разработке и тестированию программного обеспечения. Помимо того, что пользователи ожидают от программного обеспечения функциональности, они ожидают, что оно будет хорошо работать, бесперебойно функционировать и обеспечивать сохранность конфиденциальных данных.
Нефункциональное тестирование – один из единственных способов убедиться, что ваше программное обеспечение соответствует этим требованиям.
Проблемы нефункционального тестирования
Проведение нефункционального тестирования имеет некоторые недостатки. Хотя нефункциональное тестирование необходимо на этапе системного тестирования программного обеспечения, процесс нефункционального тестирования может представлять трудности для команд разработчиков программного обеспечения, которые не располагают достаточными ресурсами и инструментами.
1. Повторение
Нефункциональное тестирование при тестировании программного обеспечения должно проводиться каждый раз, когда программное обеспечение обновляется разработчиками или каждый раз, когда изменяется код. Это означает, что нефункциональное тестирование может быть очень повторяющимся, что не только отнимает время, но и утомляет тестировщиков.
Уставшие тестировщики, выполняющие очень повторяющиеся задачи, также более склонны отвлекаться и допускать ошибки.
2. Стоимость
Поскольку нефункциональное тестирование является настолько повторяющимся, оно также может быть довольно дорогостоящим, особенно для команд тестирования, которые полагаются на ручное нефункциональное тестирование.
Команды разработчиков программного обеспечения должны выделять время и бюджет на частое нефункциональное тестирование, а разработчикам программного обеспечения придется доплачивать за это дополнительное тестирование.
Что мы тестируем в ходе нефункционального тестирования?
Нефункциональное тестирование может быть использовано для проверки множества различных нефункциональных параметров, каждый из которых влияет на качество и удобство использования системы. Каждый из этих параметров проверяется во время тестирования системы по критериям, установленным в плане тестирования.
1. Безопасность
Тестирование безопасности – это вид нефункционального тестирования, которое измеряет, насколько хорошо система защищена от внешних угроз и атак. К ним относятся преднамеренные нарушения безопасности, а также утечки данных и другие распространенные нарушения.
Тестирование безопасности является важным этапом нефункционального тестирования, поскольку оно дает конечным пользователям и клиентам уверенность в том, что их данные находятся в безопасности.
2. Надежность
Тестировщики используют нефункциональное тестирование для оценки надежности программного обеспечения и обеспечения того, что программное обеспечение может постоянно безотказно выполнять заданные функции.
В то время как функциональное тестирование гарантирует, что программное обеспечение выполняет свои ключевые функции, только нефункциональное тестирование действительно проверяет надежность и повторяемость этих результатов.
3. Выживаемость
Живучесть описывает, как программная система реагирует в случае сбоя в работе, а тестирование на живучесть гарантирует, что в случае ошибок и сбоев система сможет восстановиться.
Тестирование на живучесть может проверить, способно ли программное обеспечение сохранять данные, чтобы минимизировать их потерю в случае внезапного отказа, например.
4. Доступность
Доступность программного обеспечения относится к степени, в которой пользователь может зависеть от системы во время ее работы. Это также называется стабильностью, и она проверяется тестированием стабильности.
Тестирование на стабильность имеет некоторое сходство с тестированием на надежность, поскольку проверяет, может ли система стабильно работать в соответствии с ожидаемыми стандартами.
5. Юзабилити
Тестирование удобства использования – еще один важный вид нефункционального тестирования при тестировании программного обеспечения. Этот тип тестирования оценивает, насколько хорошо пользователь может изучить, управлять и использовать программную систему, следуя инструкциям, представленным на экране и другим основным руководствам.
Тестирование юзабилити важно, потому что если программное обеспечение не отличается высокой степенью удобства использования, большинство пользователей просто откажутся от него или предпочтут использовать что-то другое.
6. Масштабируемость
Тестирование масштабируемости проверяет, в какой степени программное приложение может расширить свои вычислительные мощности для удовлетворения растущего спроса.
Например, если программное обеспечение предназначено для одновременного использования несколькими пользователями в одной сети, как оно будет работать, когда десять пользователей войдут в систему одновременно? Оказывает ли большое количество пользователей существенное влияние на производительность или время загрузки?
7. Операционная совместимость
Тестирование на совместимость – это вид нефункционального тестирования, которое проверяет, насколько хорошо программная система взаимодействует с другими программными системами.
Это особенно важно, когда программное обеспечение разрабатывается как часть пакета продуктов, которые интегрируются друг с другом.
8. Эффективность
Эффективность в тестировании программного обеспечения относится к степени, в которой программная система может справиться с мощностью, количеством и временем отклика.
Например, тестировщики могут оценить, сколько пользователей могут одновременно войти в систему, сколько времени требуется для получения данных из базы данных или как быстро программное обеспечение может выполнять основные задачи.
9. Гибкость
Гибкость – это степень, в которой программная система может работать с различными типами аппаратного обеспечения и периферийных устройств.
Например, сколько оперативной памяти требуется программе или требуется ли ей определенный объем процессора. Чем ниже требования к программному приложению, тем более гибким является программное обеспечение.
10. Портативность
Тестирование переносимости используется для проверки того, насколько гибко программное обеспечение может быть перенесено из текущей аппаратной или программной среды, и насколько легко это сделать.
Переносимость важна, поскольку она влияет на то, насколько легко конечные пользователи могут управлять программным обеспечением и перемещать его между различными системами.
11. Возможность повторного использования
Тестирование повторного использования – это тип нефункционального тестирования, которое проверяет, могут ли части программной системы быть преобразованы для повторного использования в рамках другого приложения.
Хотя тестирование возможности повторного использования обычно не затрагивает клиентов и конечных пользователей, оно является хорошим отражением того, насколько эффективно разработчики создают компоненты, которые могут быть повторно использованы в будущем.
Характеристики нефункциональных тестов
Понимание того, что такое нефункциональные тесты, предполагает понимание характеристик нефункциональных тестов. Эти характеристики определяют нефункциональное тестирование в тестировании программного обеспечения.
1. Измеримые
Нефункциональное тестирование всегда является количественным и измеримым, что означает, что тестировщики не используют субъективные фразы типа “хорошо” или “отлично”, вместо этого они используют цифры и факты для описания результатов нефункционального тестирования.
Например, вместо того чтобы описывать время загрузки как “быстрое” или “медленное”, нефункциональное тестирование должно приводить к конкретным цифрам, показывающим количество раз.
2. Конкретный
При проведении нефункционального тестирования цель тестов должна быть конкретной по отношению к проектным спецификациям программного обеспечения.
Например, если в плане проекта программного обеспечения говорится о количестве пользователей, которые должны иметь возможность войти в систему одновременно, это должно быть приоритетным при нефункциональном тестировании.
3. Неизвестный
Хотя нефункциональное тестирование может быть специально разработано для измерения атрибутов, указанных в планах проекта, во многих случаях эти атрибуты не будут указаны заранее.
В этом случае тестировщики должны просто провести нефункциональное тестирование, чтобы оценить программное обеспечение по каждому параметру и затем сравнить их с ожиданиями.
Жизненный цикл нефункциональных тестов
Поскольку нефункциональное тестирование не относится к определенной фазе жизненного цикла тестирования программного обеспечения, а просто к типу тестирования, которое обычно проводится на этапе системного тестирования программного обеспечения, жизненный цикл нефункционального тестирования может сильно отличаться в разных проектах.
В целом, он следует жизненному циклу, аналогичному другим видам тестирования программного обеспечения, который начинается с анализа требований проекта и заканчивается выполнением тестов и выполнением цикла.
1. Анализ требований к программному обеспечению
Первым этапом жизненного цикла нефункционального тестирования является анализ требований к программному обеспечению. При создании и тестировании приложений команды разработчиков программного обеспечения руководствуются определенными критериями, и эти критерии должны определять, какие типы тестов необходимо проводить.
2. Планирование тестирования
Следующим этапом жизненного цикла является планирование тестирования. На этапе планирования тестирования ведущий QA составляет подробный план тестирования, в котором подробно описывается, что будет тестироваться, кто будет проводить тестирование, какие подходы, методы и инструменты тестирования будут использоваться.
План тестирования должен включать все необходимые детали, которые нужны тестировщикам для создания и выполнения тестовых примеров.
3. Создание тестовых примеров
Создание тестовых примеров – это следующий этап нефункционального тестирования. На этом этапе разрабатываются нефункциональные тестовые случаи, которые тестировщики будут выполнять на более позднем этапе для проверки нефункциональных требований системы.
Тестовые примеры описывают, что будет тестироваться, как это будет тестироваться и каковы ожидаемые результаты тестирования.
4. Настройка тестовой среды
Следующим этапом жизненного цикла нефункционального тестирования является настройка тестовой среды перед началом тестирования.
Среда тестирования – это место, где происходит все тестирование, а также ресурсы и инструменты, которые вы будете использовать для выполнения нефункциональных тестов.
Команда тестирования подготавливает тестовую среду перед выполнением теста.
5. Выполнение теста
Выполнение теста – это следующая фаза жизненного цикла нефункционального тестирования. Он включает в себя выполнение ранее созданных тестовых примеров для проверки различных аспектов программных приложений, включая безопасность, время загрузки, производительность и переносимость.
Группа тестирования выполняет каждый случай по отдельности и сверяет результат каждого теста с ожидаемым результатом.
6. Повторение цикла
Заключительным этапом жизненного цикла нефункционального тестирования является выполнение и повторение цикла. После выполнения всех тестовых примеров тестировщики проверяют, какие тесты прошли, а какие не прошли.
Тесты, которые не работают, обычно указывают на наличие дефекта, который должен быть исправлен разработчиками. После того, как разработчики исправили или отредактировали код, цикл тестирования программного обеспечения повторяется снова, пока не будут обнаружены дефекты.
Проясняю некоторую путаницу:
Нефункциональное тестирование и функциональное тестирование
Функциональное тестирование и нефункциональное тестирование – это два разных, но одинаково важных вида тестирования программного обеспечения, которые вместе используются для оценки соответствия программного приложения требованиям пользователей, изложенным в техническом задании проекта.
Хотя они оба являются необходимыми видами тестирования, которые позволяют командам разработчиков программного обеспечения выявлять дефекты в сборках программного обеспечения, функциональное и нефункциональное тестирование полностью отличаются друг от друга.
1. В чем разница между функциональным и нефункциональным тестированием?
Разница между функциональным и нефункциональным тестированием заключается в том, что они тестируют. Функциональное тестирование тестирует функции приложения и проверяет, работают ли они так, как ожидается. Нефункциональное тестирование проверяет другие аспекты приложения, которые влияют на удовлетворенность пользователей и качество приложения.
Функциональное и нефункциональное тестирование происходят на разных фазах тестирования программного обеспечения, но оба вида тестирования обычно проводятся на этапе тестирования системы.
Как функциональное, так и нефункциональное тестирование может помочь нам понять, насколько хорошо работает приложение и адекватно ли оно выполняет свою работу.
Например, если вы тестируете мобильное приложение, которое позволяет пользователям сохранять списки дел и списки покупок, функциональное тестирование может проверить такие функции, как создание нового списка, сохранение списка и внесение изменений в существующие списки.
Нефункциональное тестирование может оценить, насколько хорошо приложение работает на различных мобильных устройствах, как быстро загружаются списки и как сильно влияет на производительность приложения, когда другие приложения работают в фоновом режиме.
2. Заключение: нефункциональное тестирование против функционального тестирования
Как функциональное, так и нефункциональное тестирование являются важными видами тестирования программного обеспечения, которые могут помочь тестировщикам и командам QA оценить, соответствует ли приложение текущим требованиям.
В то время как функциональное тестирование проверяет функции программного обеспечения, нефункциональное тестирование проверяет другие аспекты, которые могут повлиять на производительность, эффективность и безопасность.
Юнит-тестирование, интеграционное тестирование и тестирование API – все это разновидности функционального тестирования. На каждом из этих этапов тестирования программного обеспечения тестировщики оценивают, насколько хорошо работают функции и возможности по отдельности или вместе, и выявляют ошибки и дефекты, которые мешают функциям работать так, как ожидается.
Тестирование безопасности, тестирование удобства использования, тестирование переносимости и нагрузочное тестирование – все это формы нефункционального тестирования, которые позволяют тестировщикам оценить, насколько хорошо приложение выполняет свои функции и поддерживает потребности пользователей.
Виды нефункционального тестирования
Существует множество различных типов нефункционального тестирования, каждый из которых проверяет различные нефункциональные аспекты производительности или эффективности программного приложения.
Каждый из этих типов тестов проверяет различные параметры, а некоторые тесты могут проверять одни и те же параметры разными способами.
1. Эксплуатационные испытания
Тесты производительности – это тип нефункционального теста, который проверяет, насколько хорошо работают различные компоненты программного обеспечения. Вместо того, чтобы проверять функциональность, чем и занимается функциональное тестирование, тесты производительности могут проверять время отклика, узкие места и точки отказа. Тестирование производительности помогает тестировщикам обеспечить высокое качество программного обеспечения, его скорость, стабильность и надежность.
2. Стресс-тесты
Стресс-тестирование – это вид нефункционального тестирования, который проверяет, насколько хорошо работает программное обеспечение, когда оно подвергается ненормальным нагрузкам. Это может означать тестирование работы программного обеспечения, когда кто-то пытается использовать множество различных функций одновременно, или при одновременном запуске многих других приложений.
Стресс-тестирование направлено на определение предела, при котором программное обеспечение перестает работать должным образом, и того, что происходит, когда система находится под стрессом. Это позволяет тестировщикам понять, может ли система восстанавливаться самостоятельно и уведомляет ли она пользователей соответствующими сообщениями об ошибках.
3. Нагрузочные испытания
Нагрузочное тестирование – это тип тестирования, который оценивает, насколько хорошо программное обеспечение ведет себя как в обычных условиях, так и при работе с более тяжелыми нагрузками. Он используется для определения того, сколько программа может обрабатывать одновременно без негативного влияния на производительность.
Нагрузочное тестирование может быть использовано для проверки работы приложений, когда множество пользователей используют их одновременно или когда пользователи пытаются загрузить большое количество данных одновременно.
Нагрузочное тестирование важно, если вы хотите проверить, масштабируется ли ваше программное обеспечение.
4. Тесты на безопасность
Тесты безопасности оценивают программные приложения и ищут уязвимости в защите программного обеспечения. К ним относятся потенциальные риски безопасности, которые могут привести к потере данных или нарушениям, раскрывающим конфиденциальные данные.
Тестирование безопасности важно, поскольку оно гарантирует, что продукт должным образом защищен от взлома, утечки данных и других внешних угроз безопасности.
Некоторые примеры тестов безопасности, которые могут выполнять специалисты по тестированию, включают аудит безопасности, этический взлом, тестирование на проникновение, сканирование безопасности и оценку состояния.
5. Тесты обновления и установки
Тестирование обновления и установки – это вид нефункционального тестирования программного обеспечения, которое проверяет, насколько хорошо программное обеспечение работает на различных машинах.
Цель такого тестирования – убедиться, что новые пользователи могут легко установить программное обеспечение на свои машины, а существующие пользователи могут обновить его при выходе новых версий.
Тестирование обновления и установки очень важно, поскольку конечные пользователи должны иметь возможность легко установить ваш продукт при условии, что они работают на совместимой с ним машине.
6. Объемные тесты
Объемное тестирование – это тип тестирования, который существует для проверки того, что происходит при одновременном добавлении в базу данных больших объемов данных. Это позволяет определить, может ли приложение обрабатывать большие объемы данных и что произойдет с системой, если оно не сможет этого сделать.
Тестирование объема также известно как тестирование наводнения, и вы можете использовать его для оценки потери данных и сообщений об ошибках, возникающих при добавлении значительных объемов данных в систему.
Объемное тестирование – единственный способ убедиться, что программное обеспечение может обрабатывать те объемы данных, которые ожидают от него пользователи.
7. Тесты на восстановление
Тесты восстановления подразумевают принудительный отказ программной системы, чтобы проверить, насколько хорошо система восстанавливает себя после сбоя.
Тестирование восстановления может помочь тестировщикам понять, как программное обеспечение восстанавливает данные и предотвращает потери, если оборудование отключено от сети во время использования, если программное обеспечение отключено от сети во время передачи данных или если вы неожиданно перезагрузили систему.
Этот вид тестирования важен, поскольку системы без надлежащих протоколов восстановления могут понести серьезные потери данных при возникновении подобных аварий.
Что нужно для начала нефункционального тестирования
Перед началом нефункционального тестирования вам необходимо убедиться, что вы подготовили тестовую среду и собрали необходимые инструменты и данные.
1. План тестирования
Прежде чем приступить к нефункциональному тестированию, убедитесь, что у вас есть готовый план тестирования, подписанный соответствующими людьми.
Ваш план тестирования должен включать все необходимые детали того, что и как вы собираетесь тестировать. В нем следует объяснить, когда вы собираетесь использовать ручное тестирование, а когда – автоматизированное, а также описать роли и обязанности всех участников процесса тестирования.
2. Тестовые случаи
Прежде чем выполнять нефункциональные тесты, необходимо создать тестовые случаи. В каждом тестовом случае описывается конкретная вещь, которую вы собираетесь протестировать, объясняется, как вы собираетесь ее протестировать, и описывается ожидаемый результат теста.
Например, если вы проводите нагрузочное тестирование, примером тестового случая может быть проверка поведения программного обеспечения, когда десять пользователей одновременно используют один и тот же модуль.
3. Функциональная верификация
Вы не можете проводить нефункциональное тестирование компонентов программного обеспечения, если они не функциональны.
Например, если вы хотите проверить, сколько пользователей может одновременно войти в систему, сначала необходимо убедиться, что отдельные пользователи действительно могут войти в систему.
Прежде чем приступить к нефункциональному тестированию, убедитесь, что все функциональные тесты пройдены и что ваше программное обеспечение функционирует так, как вы ожидаете.
Обычно это означает, что уже проведены дымовое тестирование, тестирование на вменяемость, модульное тестирование, интеграция и функциональное тестирование системы.
4. Инструменты для тестирования
Прежде чем приступить к нефункциональному тестированию, соберите все инструменты тестирования, которые вы хотите использовать для проведения тестов.
Используете ли вы инструменты автоматизации для частичного автоматизируйте некоторые из ваших тестов или инструменты документирования, которые помогут вам управлять и хранить отчеты о тестировании для последующего использования, убедитесь, что инструменты, которые вы хотите использовать, доступны и готовы к использованию, и что все члены команды тестирования знают, как правильно использовать каждый инструмент.
5. Тестовая среда
Перед началом нефункционального тестирования настройте среду тестирования. Возможно, у вас уже есть подходящая среда тестирования, особенно если вы можете использовать одну и ту же среду для нефункционального тестирования системы и функционального тестирования системы.
Идеальная среда тестирования позволяет протестировать каждый необходимый элемент на соответствующих устройствах.
Например, если вы тестируете обработку объема на смартфонах, лучше протестировать это на реальном смартфоне, чем пытаться эмулировать мобильную среду на настольном компьютере.
Процесс нефункционального тестирования
Тестирование нефункциональных аспектов сборки программного обеспечения – это многоэтапный процесс, включающий подготовку тестовой среды, создание тестовых примеров, сбор тестовых данных и выполнение нефункциональных тестов.
Можно разбить процесс тестирования на небольшие фрагменты, чтобы новичкам в нефункциональном тестировании было легче ему следовать.
1. Проверка готовности к нефункциональному тестированию
Прежде чем начать нефункциональное тестирование, важно убедиться, что вы готовы к этому этапу тестирования.
Это может означать оценку критериев завершения последней фазы тестирования, чтобы убедиться, что программное обеспечение прошло ее, и убедиться, что программное обеспечение прошло все функциональные тесты, необходимые перед проведением нефункционального тестирования.
Некоторые команды могут создать критерии входа для нефункционального тестирования, которые включают в себя все условия, которые должны быть выполнены до начала нефункционального тестирования.
2. Создайте план тестирования
Возможно, вы уже выполнили этот шаг ранее, если вы проводите нефункциональное тестирование как часть системного тестирования и следуете плану системного тестирования. План тестирования описывает все тесты, которые вам необходимо провести, и то, как вы собираетесь их проводить.
Без четкого плана тестирования легко потерять из виду объем и цели выполняемых вами тестов.
3. Создание тестовых примеров
Следующим этапом нефункционального тестирования является создание тестовых примеров, предназначенных для проверки каждого нефункционального параметра программного обеспечения.
Каждый тестовый случай должен иметь идентификатор тестового случая, название тестового случая, описание и подробную информацию об ожидаемом результате теста, а также любые критерии прохождения или отказа, которые определены заранее. Это поможет тестировщикам понять, как проводить каждый тест и на какие результаты обращать внимание.
4. Соберите тестовые данные
Перед выполнением каждого тестового случая вам необходимо собрать тестовые данные, которые вы будете использовать для каждого тестового случая.
Обычно это означает сбор кода и данных из различных модулей и компонентов, составляющих функции и области, которые вы собираетесь тестировать. Если вы добиваетесь максимального покрытия тестов, у вас должно быть много тестовых данных для работы.
5. Подготовьте тестовую среду
Следующий этап нефункционального тестирования – подготовка тестовой среды. Тестовая среда – это сервер тестирования, который вы будете использовать для проведения тестирования программного обеспечения различных типов.
Это позволяет создавать идентичные условия для тестирования программного обеспечения и устанавливать различные конфигурации для тестирования конфигурации, тестирования безопасности и других видов нефункционального тестирования.
6. Выполнение нефункциональных тестов
Когда тестовая среда готова, наступает время для выполнения нефункциональных тестов. Вы можете решить выполнять тесты в порядке убывания их типа, например, начать с тестирования производительности, а затем перейти к тестам безопасности и другим типам нефункциональных тестов.
По мере выполнения каждого теста записывайте результаты в отчет о тестировании. Если вы автоматизируете тестирование, ваш инструмент автоматизации должен иметь стандартизированный способ четкого и недвусмысленного представления результатов.
7. Сообщить о результатах испытаний
После выполнения каждого тестового случая соберите результаты нефункциональных тестов в единый отчет.
В этом отчете должны быть четко указаны результаты каждого теста и однозначно определено, прошел или не прошел каждый тест.
Следуйте стандартной структуре отчета о тестировании, чтобы убедиться, что в него включена вся информация, которую вам нужно будет передать.
8. Устранить дефекты
После получения результатов тестирования передайте программное обеспечение обратно разработчикам, если тесты прошли неудачно или если вы выявили нефункциональные ошибки, требующие исправления.
Например, если программное обеспечение не справляется с одновременной работой подходящего количества пользователей или если производительность слишком сильно замедляется при одновременном запуске нескольких программ, эти проблемы, скорее всего, придется устранить в коде, чтобы пользователи были довольны продуктом.
9. Повторить цикл тестирования
После того как разработчики устранят все дефекты, обнаруженные на начальном этапе нефункционального тестирования, цикл тестирования можно начинать заново.
Разработчики проверяют правильность внесенных изменений и передают новую сборку обратно QA-тестерам, которые затем проводят полный комплекс тестирования, начиная с дымового тестирования, модульного тестирования, интеграционного тестирования и, наконец, системного тестирования.
Цикл тестирования повторяется до тех пор, пока ни в одной точке не появятся ошибки или дефекты, после чего сборка может перейти на заключительный этап тестирования: тестирование на приемку пользователем.
Тестовые случаи для нефункционального тестирования
Тестовые случаи являются важным аспектом любого тестирования программного обеспечения, и при проведении как функционального, так и нефункционального тестирования вы будете использовать тестовые случаи для определения того, что вы собираетесь тестировать и как вы собираетесь это тестировать.
Каждый тестовый случай можно рассматривать как мини-тест, и каждый тестовый случай будет иметь свои собственные определенные выходы и результаты.
1. Что такое тест-кейсы для нефункционального тестирования?
Тестовый пример – это набор действий, выполняемых над сборкой программного обеспечения для проверки того, удовлетворяет ли она условиям, определенным в плане программного обеспечения. Каждый тестовый пример эффективно указывает тестировщикам, что и как тестировать, и предназначен для тестирования конкретной функции или нефункциональной особенности программного приложения.
Нефункциональные тесты могут включать проверку того, что происходит, когда кто-то пытается получить доступ к защищенным данным в системе, или проверку того, как быстро загружается программное обеспечение при запуске.
2. Как разрабатывать нефункциональные тестовые случаи?
При разработке тестовых примеров для нефункционального тестирования важно следовать стандартной практике разработки тестовых примеров, не забывая при этом о целях нефункциональных тестов.
Следуйте приведенным ниже шагам, чтобы написать тестовые случаи для нефункционального тестирования, которые четко описывают, что должны сделать ваши тестировщики для выполнения каждого теста.
1. Определите область, которую вы хотите охватить
Для каждого тестового случая рассмотрите, какую область вашего программного обеспечения будет охватывать этот тестовый случай.
Например, если вы пишете тестовые примеры для тестирования установки и обновления, вы можете включить тестовые примеры, оценивающие, насколько легко приложение устанавливается на различные устройства и сколько времени требуется для обновления программного обеспечения с помощью нового патча.
2. Создайте уникальный идентификатор тестового случая
Каждый тестовый случай должен иметь уникальный идентификатор тестового случая. Это облегчает поиск описания тестового случая и результатов в дальнейшем и устраняет путаницу в вопросе о том, к какому тестовому случаю вы обращаетесь, если два тестовых случая имеют похожие названия или описания.
3. Назовите и опишите каждый тест
Хотя ID тестового случая идентифицирует тест, вы также захотите предоставить имя и описание для каждого написанного вами тестового случая.
Это должно быть простое название, кратко описывающее то, что вы тестируете, а описание – одно предложение, в котором это описывается чуть более подробно.
Описание должно быть достаточно четким, чтобы тестировщики знали, что и как тестировать, а также любые особые условия, которые должны быть выполнены при тестировании.
4. Укажите ожидаемый результат
Для каждого тестового случая опишите результат, который должен произойти, если программное обеспечение работает так, как ожидается.
В нефункциональных тестах, таких как тестирование производительности и тестирование нагрузки, во многих случаях это может означать, что программное обеспечение просто продолжает нормально работать без замедления, отставания или сбоя.
В других случаях это может означать, что появляются определенные сообщения об ошибках, чтобы уведомить пользователя о проблеме и порекомендовать решение.
5. Рекомендовать методы тестирования
Для каждого тестового случая порекомендуйте тип методов тестирования и инструментов нефункционального тестирования, которые, по вашему мнению, должен использовать тестировщик во время тестирования.
В нефункциональном тестировании тестировщики могут использовать совершенно разные подходы для разных видов тестирования.
Например, нагрузочное тестирование и стресс-тестирование могут потребовать автоматизации, поскольку непрактично моделировать чрезвычайно интенсивный трафик вручную, в то время как другие виды тестирования могут быть легче провести без каких-либо специальных инструментов или технологий.
6. Провести экспертную оценку каждого тестового случая
Прежде чем подписывать каждый тестовый пример, обеспечьте его экспертную оценку кем-то, с кем вы работаете. Это может быть другой тестировщик или руководитель отдела контроля качества.
Коллегиальное рецензирование тестовых примеров гарантирует, что они достаточно ясны, чтобы их мог выполнить сторонний тестировщик, и не содержат двусмысленностей или ошибок, которые могут привести к неправильному тестированию.
3. Примеры нефункциональных тестовых случаев
Если вы пишете тестовые случаи для нефункционального тестирования, они могут выглядеть примерно так, как приведенные ниже примеры нефункционального тестирования.
Пример тестирования масштабируемости
Идентификатор тестового случая: 6671
Название тестового случая: Тест входа в систему нескольких пользователей
Описание: Эмулируйте одновременный вход в программу 20+ пользователей с помощью средств автоматизации.
Ожидаемые результаты: Программное обеспечение должно работать в обычном режиме для каждого пользователя, позволяя каждому пользователю успешно войти в систему менее чем за 5 секунд.
Пример тестирования на совместимость
Идентификатор тестового случая: 5214
Название тестового случая: Загрузка приложения в браузере Opera
Описание: Загрузите приложение в веб-браузере Opera.
Ожидаемые результаты: Приложение загружается как обычно в веб-браузере Opera со стандартным разрешением и расположением экрана.
Ручные или автоматизированные нефункциональные тесты?
Когда вы выбираете между различными методами нефункционального тестирования, вам нужно решить, хотите ли вы проводить ручное или автоматизированное нефункциональное тестирование.
Ручные тесты выполняются тестировщиками-людьми, что означает, что их проведение обычно занимает больше времени, но они также предоставляют возможности для исследовательского тестирования.
Автоматизированные нефункциональные тесты быстрее и, в некотором смысле, надежнее, но они также требуют больше ресурсов или инструментов. Автоматизация и гиперавтоматизация становятся все более популярными в тестировании, особенно когда речь идет о нефункциональном тестировании.
Ручное нефункциональное тестирование: Преимущества, проблемы и процессы
Ручное нефункциональное тестирование проводится исключительно тестировщиками, которые будут тестировать каждый отдельный нефункциональный элемент самостоятельно.
При проведении ручных нефункциональных тестов тестировщики должны собрать информацию о программном обеспечении, создать отдельные тестовые случаи, соответствующие плану тестирования, и выполнить эти тестовые случаи вручную.
Это требует значительного времени, но это также означает, что QA-тестеры имеют свободу в определении того, что и как тестируется.
1. Некоторые из преимуществ ручного тестирования включают:
● Ручное тестирование может быть дешевле автоматизированного, поскольку оно не требует специальных технологий или технических знаний.
● Ручное тестирование позволяет тестировщикам предложить человеческое понимание и субъективность в отношении того, как функционирует программное обеспечение и удовлетворительно ли оно функционирует.
● Ручное тестирование может быть использовано для проведения тестирования системы в сценариях, где автоматизация невозможна.
Ручное тестирование позволяет тестировщикам оценить визуальные аспекты системы, такие как графический интерфейс и другие факторы, которые могут повлиять на удобство использования.
● Ручное тестирование позволяет тестировщикам получить более широкое представление о системе в целом и о том, как различные модули и компоненты работают вместе
Однако у ручного тестирования есть и недостатки.
2. Некоторые из проблем ручного тестирования включают:
● Некоторые виды нефункционального тестирования, включая нагрузочное тестирование и тестирование производительности, нецелесообразно проводить вручную
● Ручное тестирование занимает значительно больше времени, чем автоматизированное нефункциональное тестирование
● Ручные тестировщики могут отвлекаться, терять концентрацию и допускать ошибки, особенно при выполнении очень повторяющихся задач тестирования
Автоматизированное нефункциональное тестирование: Преимущества, проблемы и процессы
Автоматизированное нефункциональное тестирование проводится с помощью автоматизированных сценариев и инструментов тестирования. При использовании методов автоматизированного тестирования тестировщики могут проводить тесты в фоновом режиме, занимаясь другими задачами, после запуска автоматизированных тестов.
1. К преимуществам автоматизации нефункциональных тестов относятся:
1. Экономия времени и ресурсов за счет сокращения времени, которое вы тратите на длительные и трудоемкие задачи
2. Автоматизация позволяет увеличить покрытие тестов за счет охвата более широкого спектра компонентов и функций
3. Автоматизированные тесты целесообразнее проводить часто, потому что на их выполнение требуется меньше времени
4. Автоматизированное тестирование идеально подходит для таких трудоемких задач тестирования, как нагрузочное тестирование, объемное тестирование и стресс-тестирование, которые очень сложно проводить вручную.
5. Снижается вероятность возникновения ошибок при проведении автоматизированного тестирования
Однако у автоматизированного тестирования есть и некоторые недостатки, что означает, что оно не всегда подходит для всех видов нефункционального тестирования.
2. Некоторые из проблем автоматизированного нефункционального тестирования включают:
1. Автоматизированное тестирование дороже, чем ручное тестирование
2. Настройка автоматизации тестирования может потребовать времени и технических ресурсов
3. Автоматизация тестирования не позволяет проводить исследовательское тестирование
4. Автоматизация тестов по-прежнему требует времени на создание тестовых случаев
Заключение: Ручной или автоматизированный
нефункциональное тестирование?
В большинстве видов тестирования программного обеспечения сочетание ручного и автоматизированного тестирования обычно дает наилучшие результаты. Это позволяет командам тестирования воспользоваться преимуществами эффективности, надежности и точности автоматизированного тестирования, одновременно проводя исследовательское тестирование, которое позволяет тестировщикам оценивать программное обеспечение с более субъективной точки зрения.
В нефункциональном тестировании как ручное, так и автоматизированное тестирование практически необходимы для большинства команд тестирования.
Ручное тестирование лучше всего подходит для выполнения задач нефункционального тестирования, таких как тестирование юзабилити, в то время как автоматизированное тестирование чаще всего используется для выполнения тестов, которые было бы слишком трудоемко и сложно проводить вручную, например, стресс-тестирование или объемное тестирование.
Нефункциональное тестирование является одной из наиболее очевидных областей для использования методов автоматизации тестирования, поскольку это количественный, измеримый тип тестирования, который не требует субъективных результатов.
Как и другие виды тестирования, нефункциональное тестирование обычно проводится с использованием смеси ручного и автоматизированного тестирования.
Однако автоматизированное тестирование практически необходимо для многих видов нефункционального тестирования, а параметры и метрики нефункционального тестирования означают, что автоматизация больше подходит для этого вида тестирования, чем для функционального.
Лучшие практики для нефункционального тестирования
Если вы впервые проводите нефункциональное тестирование, следование лучшим практикам тестирования может помочь вам стандартизировать процесс тестирования и оптимизировать эффективность тестов.
Лучшие практики служат руководством для команд тестирования программного обеспечения, которые хотят улучшить процессы тестирования и привести их в соответствие с отраслевыми стандартами.
1. Используйте средства автоматизации
В нефункциональном тестировании больше, чем в других видах тестирования, важно использовать средства автоматизации для автоматизации определенных видов тестирования, в частности объемного тестирования, стресс-тестирования и нагрузочного тестирования.
Эти виды тестирования обычно проверяют, насколько хорошо программное обеспечение работает под сильным давлением пользователей, данных и трафика, что может быть очень сложно эмулировать вручную.
Автоматизация этих типов нефункциональных тестов будет не только более эффективной, но и более точной и позволит испытателям легко воспроизводить более высокие нагрузки и напряжения.
2. Коллегиальная проверка всей документации
Помимо того, что вы просите коллег просмотреть созданные вами тестовые случаи, попросите коллег из вашей команды тестирования просмотреть отчеты об ошибках, отчеты о тестировании, планы тестирования и другие формы формальной документации, созданной в процессе тестирования.
Это снижает риск небольших ошибок, которые могут привести к серьезным задержкам в процессе тестирования и разработки.
3. Определите измеримые требования
Когда вы определяете требования к программному обеспечению до начала нефункционального тестирования, убедитесь, что каждое требование является объективным и измеримым.
Это облегчает тестировщикам установление соответствия программного обеспечения этим требованиям во время тестирования и не оставляет места для интерпретации.
Что считается “быстрым” или “эффективным”? Используйте цифры и количественные значения для определения того, что вы ищете.
4. Тщательно продумайте метрики тестирования
Прежде чем решить, какие метрики вы будете использовать для измерения производительности вашего программного обеспечения, подумайте о том, чего хотят пользователи программного обеспечения и какие метрики действительно соответствуют плану и требованиям программного обеспечения.
Большинство программ должны быть быстрыми и надежными, но на какие еще показатели могут обратить внимание ваши пользователи? Существуют ли какие-либо специфические для программного обеспечения показатели, которые следует учитывать в процессе тестирования?
Типы результатов нефункционального тестирования
Когда вы проводите нефункциональное тестирование, вы получите различные типы результатов от тестов, которые вы проводите.
Они обычно сильно отличаются от результатов функционального тестирования, которые часто более четкие, поскольку функциональные тесты просто проверяют, работает ли функция так, как должна, или нет.
Как и при функциональном тестировании, тестировщики должны установить четкие ожидания для каждого тестового случая, чтобы было легко определить, прошел или не прошел каждый тест.
1. Абсолютные числа
При проведении тестирования производительности, стресс-тестирования и других видов нефункционального тестирования, результаты, на которые вы чаще всего смотрите, – это скорость и другие абсолютные числа.
Тестирование производительности проверяет, насколько быстро система может выполнять определенные задачи, и это измеряется в секундах или миллисекундах.
Если вы проводите нагрузочное тестирование, вы можете оценить, какой объем данных программное обеспечение может обрабатывать одновременно без сбоев и задержек.
2. Сообщения об ошибках
Нефункциональное тестирование также проверяет, как система работает при возникновении ошибок, таких как ошибки безопасности, ошибки валидации и ошибки конфигурации.
Важно, чтобы при возникновении ошибок системы отображали точные и понятные сообщения об ошибках, чтобы пользователи могли предпринять шаги по устранению проблемы и продолжить использование программного обеспечения.
Сообщения об ошибках также должны появляться во время тестирования безопасности, когда система не позволяет пользователям нарушить встроенные функции безопасности программного обеспечения.
3. Аварии
Крах – это признак отказа системы, и он обычно указывает на то, что система не способна работать на том уровне, который вы тестируете, и может означать, что тест пройден.
В некоторых случаях система может дать сбой, но при этом пройти тест, над которым вы работаете, например, если система выдержит необходимое количество нагрузок или трафика, прежде чем произойдет сбой.
При проведении нефункционального тестирования тестировщики должны ожидать регулярных сбоев системы, особенно при доведении ее до предела при стресс-тестировании и других тестах производительности.
Примеры нефункциональных тестов
Примеры нефункциональных тестов аналогичны приведенным выше примерам для нефункциональных тестовых случаев.
Вы можете посмотреть примеры нефункциональных тестов, чтобы лучше понять, что такое нефункциональное тестирование и что оно проверяет в программном приложении.
1. Пример тестирования производительности
Если вы работаете над мобильным приложением, которое подключает пользователей к онлайн-базе данных, важно, чтобы большое количество пользователей могло одновременно получать доступ и загружать данные из этой базы.
Это также является ключевой частью тестирования на масштабируемость, особенно если вы хотите увеличить количество пользователей приложения в будущем.
Затем вы проверите, как система реагирует, когда, например, 1000 пользователей пытаются получить доступ к одной и той же базе данных одновременно, и установите требования к скорости загрузки приложения при таких условиях.
2. Тестирование на совместимость
Если вы тестируете новое приложение для управления документами, вам необходимо проверить, работает ли оно на всех устройствах, для которых предназначено.
Это означает проверку возможности установки и загрузки приложения на всех последних версиях Windows, Mac и любых других операционных систем (например, Linux), с которыми вы хотите, чтобы программное обеспечение было совместимо.
3. Тестирование безопасности
При проведении тестирования безопасности вы проверяете некоторые способы, с помощью которых люди могут попытаться получить доступ к конфиденциальным данным или нарушить гарантии безопасности программного обеспечения, чтобы убедиться, что система ведет себя так, как вы ожидаете в этих ситуациях.
Например, вы можете войти в систему как пользователь и попытаться получить доступ к файлам, к которым у вас нет допуска, чтобы убедиться, что система не позволит вам получить доступ к этим файлам.
Типы обнаруженных ошибок и недочетов
посредством нефункционального тестирования
Нефункциональное тестирование может выявить множество ошибок и дефектов, которые не так легко обнаружить, как те, что выявляются при функциональном тестировании. Это связано с тем, что нефункциональное тестирование часто требует от тестировщиков проверки различных конфигураций, настроек и комбинаций условий, чтобы оценить, насколько хорошо система работает в огромном количестве различных условий.
1. Дефекты производительности
Дефекты производительности возникают, когда система функционирует, но не так быстро или не так эффективно, как вы ожидаете.
Например, вы можете обнаружить, что система не загружается достаточно быстро при определенных условиях или даже выходит из строя, если слишком много пользователей входят в систему одновременно.
Дефекты производительности не могут полностью помешать людям использовать ваше программное обеспечение, но они могут сделать ваше программное обеспечение менее удобным и менее вероятным для выполнения требований пользователей.
2. Дефекты безопасности
Дефекты безопасности – это те дефекты, которые влияют на безопасность вашей программной системы и хранящихся в ней данных.
Дефекты безопасности могут возникнуть, например, если пользователи могут получить доступ к конфиденциальным данным, к которым они не должны иметь доступа, или если определенные части приложения неправильно защищены паролем, или если шифрование не работает.
Это может привести к нарушениям безопасности, что может серьезно повлиять на репутацию издателя программного обеспечения.
3. Функциональные дефекты
Хотя нефункциональное тестирование не предназначено для проверки функций программного приложения, в некоторых случаях нефункциональное тестирование может выявить функциональные дефекты в программном обеспечении.
Например, цель тестирования надежности заключается не в том, чтобы проверить, функционирует ли приложение, а в том, чтобы проверить, надежно ли оно функционирует при повторных попытках.
Это может показать, что некоторые функции не функционируют должным образом при повторении действия, и это может быть классифицировано как функциональные ошибки.
Общие метрики нефункционального тестирования
Метрики нефункционального тестирования описывают те метрики, по которым измеряется производительность и эффективность системы.
Различные типы нефункционального тестирования опираются на разные метрики, и вы можете выбрать использование различных метрик в зависимости от конечных целей проекта.
1. Время
Показатели времени измеряют, сколько времени требуется для выполнения определенных задач или как долго пользователям приходится ждать загрузки функций.
Примерами временных показателей являются количество транзакций или загрузок, которые приложение может выполнить за определенный промежуток времени, время отклика различных функций и время, необходимое приложению для выполнения определенной операции.
Различные типы тестов измеряют результаты в секундах или в виде представления количества операций в секунду.
2. Космос
Пространство – еще одна важная метрика в нефункциональном тестировании. Метрика пространства может проверить, сколько места на процессоре занимает система или сколько места на жестком диске занимает программное обеспечение после полной установки.
Некоторые примеры метрик пространства включают кэш-память, основную память и вспомогательную память.
Программное обеспечение, требующее большого пространства для бесперебойной работы, может подойти для меньшего числа клиентов.
3. Юзабилити
Некоторые показатели при нефункциональном тестировании учитывают удобство использования системы, например, сколько времени требуется для обучения пользователей правильному использованию системы, сколько вариантов выбора пользователям приходится выбирать для выполнения ключевых функций или сколько щелчков мыши требуется для выполнения определенных задач.
Нефункциональные тесты могут количественно измерить каждый из этих показателей, причем более низкие показатели обычно означают более высокий уровень удобства использования.
4. Надежность
Еще одной важной метрикой в нефункциональном тестировании является надежность. Надежность отражает вероятность того, что система будет вести себя одинаково снова и снова или функционировать так, как должна, в течение длительного периода времени.
Некоторые примеры показателей, которые используются для измерения надежности, включают среднее время до отказа, интенсивность отказов, доступность и вероятность простоя.
Каждая из этих метрик помогает тестировщикам убедиться в том, что система может работать в течение длительного времени без сбоев и отказов.
5. Устойчивость
Надежность – это мера того, насколько хорошо система справляется с отказами и насколько хорошо система может восстановить себя в случае отказа.
Некоторые примеры показателей, измеряющих надежность, включают время, необходимое системе для восстановления после сбоя, процент инцидентов, приводящих к катастрофическому сбою, и вероятность повреждения файлов данных после сбоя системы.
Это важные показатели, поскольку пользователи ожидают, что системы могут иногда выходить из строя без потери всех данных или повреждения файлов.
6. Портативность
Показатели переносимости измеряют, насколько легко программное обеспечение может быть перенесено в различные системы или перемещено на новое место в сети.
Некоторые примеры метрик, измеряющих переносимость, включают процент непортируемого кода и количество систем, на которых может работать программное обеспечение.
В идеале, программное обеспечение, которое может работать на множестве различных систем, является более портативным и, следовательно, более удобным для использования в условиях, которые могут потребовать частых переносов или переездов.
Стратегии проведения нефункциональных тестов
Когда вы начинаете нефункциональное тестирование, важно подойти к этому этапу тестирования со стратегией в голове. Руководители ОК и менеджеры по тестированию ПО должны рассмотреть риски тестирования, доступные им ресурсы и цель тестирования до начала нефункционального тестирования.
Разработка стратегии может помочь вам оптимизировать нефункциональные тесты с самого начала.
1. Распределите роли и обязанности
Прежде чем приступить к нефункциональному тестированию, распределите роли и обязанности между ключевыми членами команды тестирования. Это облегчает управление объемом работы по нефункциональному тестированию и обеспечивает ответственность опытных тестировщиков за поддержание качества и эффективности проводимых вами тестов.
Убедитесь, что люди, которых вы выбрали на эти роли, обладают знаниями и опытом, необходимыми для выполнения задач, которые вы от них ожидаете, особенно если эти задачи требуют технических навыков.
2. Соберите соответствующие инструменты для тестирования
Соберите вместе все технологии и инструменты, которые вы хотите использовать для проведения нефункционального тестирования. Убедитесь, что все члены вашей команды знают, как эффективно их использовать, и при необходимости проведите обучение, чтобы восполнить пробелы в навыках.
Убедившись, что все знают, какие инструменты тестирования и как их использовать, до начала нефункционального тестирования, снижается риск приостановки тестирования или повторного проведения тестов из-за недостатка знаний.
3. Определите приоритеты тестирования
Прежде чем приступить к нефункциональному тестированию, составьте список всех аспектов системы, которые необходимо протестировать, и определите их приоритетность на основе срочности и важности.
Вы можете определить приоритетность нефункционального тестирования на основе уровня риска, связанного с каждым аспектом системы, которую вы тестируете.
Например, может проводиться базовое тестирование безопасности, поскольку адекватная безопасность считается чрезвычайно важной в современном программном обеспечении. Чем раньше вы выявите дефекты с высоким риском, тем меньше потенциальное влияние этих дефектов на другие аспекты системы.
7 лучших инструментов для нефункционального тестирования
Инструменты для нефункционального тестирования могут рационализировать процесс тестирования, упростить и сделать более экономически эффективной автоматизацию тестирования и помочь специалистам QA управлять процессом тестирования и документирования.
В Интернете можно найти множество бесплатных инструментов для нефункционального тестирования, а также некоторые инструменты, за обновление которых взимается ежемесячная плата.
1. ZAPTEST FREE edition
ZAPTEST – это популярный инструмент тестирования программного обеспечения, который позволяет пользователям быстро и легко проводить как функциональные, так и нефункциональные тесты программного обеспечения. Вы можете использовать ZAPTEST для автоматизации тестирования программного обеспечения и использовать технологию RPA для эмуляции различных функций и условий при нефункциональном тестировании.
Редакция ZAPTEST FREE – это лишь урезанная версия корпоративной версии, предлагающая многие из тех же функций в меньшем масштабе. Вы можете обратиться за поддержкой на форум ZAPTEST и провести тесты производительности с неограниченным количеством виртуальных пользователей.
2. Appium
Appium – это бесплатный инструмент тестирования программного обеспечения, который больше всего подходит для тестирования мобильных приложений на различных платформах, включая устройства iOS и Android. Appium предлагает пользователям большую гибкость в разработке собственных рамок и стратегий тестирования, одновременно пользуясь возможностями автоматизации, которые предлагает Appium.
3. Loadium
Loadium – это инструмент нефункционального тестирования, который лучше всего использовать для проведения тестирования производительности и нагрузочного тестирования, двух видов нефункционального тестирования, которые гораздо проще проводить с помощью средств автоматизации.
Loadium позволяет пользователям проводить крупномасштабные нагрузочные тесты и предлагает индивидуальные решения, чтобы вы могли адаптировать свои тесты к целям вашего программного обеспечения.
Вы можете попробовать Loadium бесплатно или заплатить, чтобы загрузить полную версию приложения.
4. Obkio
Obkio – это инструмент для тестирования программного обеспечения, который помогает руководителям QA и менеджерам по тестированию определять приоритеты и классифицировать проблемы в зависимости от степени их серьезности. Obkio может обнаружить проблемы раньше пользователей, предлагает пользователям интеллектуальные уведомления и может помочь определить, где находится проблема.
Obkio предназначен не только для нефункционального тестирования, это очень полезный бесплатный инструмент тестирования, который может быть использован на всех этапах жизненного цикла тестирования.
5. SonarQube
SonarQube – это инструмент тестирования безопасности с открытым исходным кодом, который может автоматически анализировать код для обнаружения ошибок и уязвимостей. Написанный на Java, SonarQube можно использовать для анализа кода на более чем двадцати различных языках программирования, а чистый интерфейс системы позволяет легко обнаружить проблемы, которые могут стать причиной уязвимостей в системе безопасности в будущем.
6. Цунг
Tsung – еще один инструмент для нефункционального тестирования, который идеально подходит, если вы хотите автоматизировать нагрузочное и стресс-тестирование, но не справляетесь с бесплатной версией Loadium.
Tsung – это инструмент с открытым исходным кодом, который позволяет пользователям проводить нагрузочное тестирование большого объема по нескольким протоколам и серверам, включая HTTP и SOAP.
Tsung совершенно бесплатен и может помочь тестировщикам убедиться, что программное обеспечение, над которым они работают, обеспечивает высокий уровень производительности в различных сложных условиях.
7. Сикули
Sikuli – еще одно приложение, которое использует роботизированную автоматизацию процессов для автоматизации процесса тестирования. Приложение может автоматизировать все, что можно увидеть на экране. Вы можете использовать Sikuli для тестирования приложений, не основанных на веб-технологиях, и для быстрого воспроизведения ошибок.
Контрольный список, советы и рекомендации по нефункциональному тестированию
Перед началом нефункционального тестирования убедитесь, что у вас есть все необходимое для проведения тщательного нефункционального тестирования в подготовленной среде.
Перед началом нефункционального тестирования следуйте приведенному ниже контрольному списку советов и рекомендаций.
1. Работайте по расписанию
Включаете ли вы его в план тестирования или создаете для него отдельный документ, структурируйте свои тесты программного обеспечения на основе графика тестирования.
Если вы обнаружите больше ошибок и дефектов, чем ожидаете, вы можете иногда отклоняться от графика, но наличие графика для начала может помочь направлять тестировщиков и мотивировать их на эффективную работу, особенно при проведении трудоемких ручных тестов.
2. Определите команду тестировщиков
Делегирование обязанностей и наделение членов команды тестирования официальными ролями и названиями может помочь обеспечить бесперебойность процесса тестирования.
Четко определите роли и обязанности в команде до начала тестирования и назначьте разных тестировщиков ответственными за различные аспекты нефункционального тестирования, чтобы каждый отвечал за свои задачи.
3. Выбор инструментов и технологий перед тестированием
Если вы решите работать с определенными инструментами и технологиями только после начала нефункционального тестирования, это может затянуть процесс тестирования и вызвать путаницу среди тестировщиков.
Вместо этого проведите исследование заранее и решите, есть ли инструменты, которые вы хотите использовать до начала тестирования. Это позволяет легко включить эти инструменты в план тестирования и обучить тестировщиков их использованию до начала тестирования.
4. Всегда получайте официальную подпись на тестах и документации
Тестирование – это процесс обеспечения качества, и лучший способ максимизировать ценность тестов, которые вы проводите, – это выполнить базовое QA для тестов, которые вы планируете и проводите.
Внедрите простые протоколы, которые требуют, чтобы тестировщики просили руководителей QA и менеджеров просмотреть и подписать планы тестирования и отчеты о тестировании, прежде чем переходить к следующему этапу.
Это значительно повышает вероятность того, что ошибки тестирования будут обнаружены и исправлены на ранней стадии.
7 ошибок и подводных камней, которых следует избегать при внедрении нефункциональных тестов
Если вы новичок в области нефункционального тестирования, вам будет легко совершить несколько распространенных ошибок, которые часто допускают тестировщики и QA-специалисты.
Нефункциональное тестирование – это сложная работа, которая включает в себя рассмотрение сборки программного обеспечения со всех сторон и точек зрения.
Ниже приведен список наиболее распространенных “подводных камней”, которые допускают тестировщики при проведении нефункционального тестирования.
1. Не планировать
Если вы новичок в нефункциональном тестировании, вы можете подумать, что можно просто погрузиться в этап тестирования без предварительного создания тщательного плана тестирования.
Некоторые команды тестировщиков могут составлять неполные документы по тестированию или поверхностные резюме плана тестирования, в которых неадекватно описаны действия, которые тестировщики должны предпринять во время нефункционального тестирования.
2. Неправильное управление тестированием
Проблемы могут возникнуть при неправильном управлении тестами на любом этапе процесса тестирования. Неадекватное управление может означать, что у тестировщиков нет необходимых ресурсов для проведения тщательного тестирования или что тестировщикам не предоставляется достаточно времени для тестирования каждого аспекта сборки.
Менеджеры по тестированию должны уметь учиться на допущенных ошибках и разрабатывать более эффективные планы тестирования на будущее.
3. Плохая коммуникация
Плохая коммуникация может стать причиной множества проблем в процессе тестирования, особенно в рамках нефункционального тестирования.
Это может означать плохую коммуникацию внутри команды тестирования или плохую коммуникацию между тестировщиками, разработчиками и заинтересованными сторонами.
Это часто происходит, когда тестировщики не ведут должным образом тестовую документацию или не общаются регулярно с другими отделами в процессе тестирования.
4. Игнорирование разработчиков
Тестировщики и разработчики обычно работают совершенно отдельно друг от друга, но команды тестировщиков, которые тесно сотрудничают с разработчиками, могут извлечь пользу из дополнительных знаний о том, как работает программное обеспечение и как различные модули взаимодействуют друг с другом.
Вовлечение разработчиков в процесс тестирования или запрос обратной связи от разработчиков в ключевые моменты может помочь командам тестирования составить более эффективные и тщательные планы тестирования.
5. Цель тестирования
Многие тестировщики до сих пор считают, что цель тестирования – проверить, что программное обеспечение работает, или продемонстрировать заинтересованным лицам и инвесторам, что программное обеспечение работает.
Вместо этого тестировщики должны подходить к тестированию с позиции, что цель тестирования – поиск дефектов.
Тестировщики, которые не находят дефектов, могут быть довольны тем, что тестируемое ими программное обеспечение свободно от ошибок, только если они уверены, что искали везде, где могут быть обнаружены дефекты.
6. Ошибки ручного управления и автоматизации
Важно потратить время на рассмотрение того, какое тестирование – ручное или автоматизированное – лучше для каждого типа проводимого вами тестирования.
Методы автоматизированного тестирования чрезвычайно хорошо подходят практически для всех форм нефункционального тестирования, и команды тестировщиков, привыкшие к функциональному тестированию, могут совершить ошибку, полагая, что они могут так же легко тестировать нефункциональные функции вручную.
7. Использование неправильных инструментов тестирования
Перед началом нефункционального тестирования легко выбрать неправильные инструменты и технологии тестирования, особенно если команды тестировщиков привыкли проводить ручное тестирование и не привыкли использовать инструменты тестирования.
Заранее изучите методы нефункционального тестирования, которые вы хотите использовать, и выберите программные инструменты и средства автоматизации, отвечающие специфическим требованиям вашего проекта.
Заключение
Нефункциональное тестирование – это важный этап процесса тестирования, который позволяет тестировщикам проверить, насколько хорошо работает система и насколько она соответствует нефункциональным требованиям, таким как время загрузки, пропускная способность и защита безопасности.
Существует множество различных способов проведения нефункционального тестирования, но современные средства автоматизации позволяют максимально увеличить охват и точность тестов без ущерба для качества результатов.
Вопросы и ответы и ресурсы
Если вы хотите узнать больше о нефункциональном тестировании, в Интернете можно найти множество часто задаваемых вопросов и ресурсов.
Просмотрите наши любимые онлайн-ресурсы по нефункциональному тестированию ниже или прочитайте ответы на некоторые из наиболее часто задаваемых вопросов о нефункциональном тестировании.
1. Лучшие курсы по нефункциональному тестированию
В Интернете можно найти множество курсов, которые помогут вам расширить свои знания о методах и подходах нефункционального тестирования.
Некоторые из этих курсов доступны бесплатно, а другие могут предложить сертификат или квалификацию за определенную плату. Если вы хотите пройти аккредитованный курс, вы можете спросить у своего работодателя, не окажет ли он вам спонсорскую поддержку и не покроет ли расходы на обучение.
Некоторые из лучших курсов по нефункциональному тестированию включают:
- TSG: Нефункциональный тренинг 2-дневный курс
- Udemy: Полный учебный курс по тестированию программного обеспечения 2023
- Edx: Сертификат специалиста по тестированию программного обеспечения
- Образовательный: Автоматизация тестирования производительности 101
2. Каковы 5 лучших вопросов на собеседовании по нефункциональному тестированию?
Если вы готовитесь к собеседованию для работы в области тестирования программного обеспечения, интервьюер может задать вам вопросы о нефункциональном тестировании, чтобы убедиться, что вы понимаете, как работает этот важный этап тестирования программного обеспечения. Подготовьтесь к собеседованию, заранее подготовив эффективные ответы на распространенные вопросы интервью.
● Чем подходы и методы, которые вы используете в нефункциональном тестировании, отличаются от подходов, которые вы используете в функциональном тестировании?
● Чем отличается нефункциональное тестирование от функционального?
● Какие существуют различные виды нефункционального тестирования?
● Как вы определяете приоритеты функциональных тестов и тест-кейсов?
● На каком этапе тестирования программного обеспечения обычно проводится функциональное тестирование?
3. Лучшие учебники по нефункциональному тестированию на YouTube
Если вы предпочитаете учиться, просматривая видео, возможно, вы найдете на YouTube учебники по нефункциональному тестированию полезным способом узнать больше об этом виде тестирования программного обеспечения.
Ниже приведены некоторые из лучших YouTube-уроков по тестированию программного обеспечения, доступных на сегодняшний день.
Что такое нефункциональное тестирование программного обеспечения? Учебник по тестированию программного обеспечения
Помощь в тестировании программного обеспечения: Нефункциональное тестирование
Нефункциональное тестирование в тестировании программного обеспечения
Посетите W3Schools
Функциональное и нефункциональное тестирование
4. Как поддерживать нефункциональные тесты
Правильное обслуживание тестов гарантирует, что тесты программного обеспечения можно повторять без ущерба для качества результатов тестирования.
Поддерживая нефункциональные тесты, вы можете гарантировать, что тестирование на каждом этапе процесса разработки является адекватным и что ваши тесты всегда обновляются в соответствии с постоянно меняющимся кодом.
Вы можете поддерживать нефункциональные тесты, следуя нашим советам ниже.
● Четко общаться в команде тестирования при создании тестовых примеров и написании документации
● Всегда следуйте лучшим практикам разработки тестов
● Переоценка протоколов тестирования на различных этапах процесса тестирования
● Обновляйте изменения в своем тесте по ходу дела
Учитывайте будущие проекты при внесении изменений в текущие тесты
5. Является ли нефункциональное тестирование тестированием “черного ящика” или тестированием “белого ящика”?
Нефункциональное тестирование является разновидностью тестирования “черного ящика”, что означает, что тестировщиков не интересует внутренняя работа системы, а только ее внешние результаты.
Это отличается от тестирования “белого ящика”, которое проверяет, как система работает внутри. Примерами тестирования “белого ящика” являются модульное тестирование и интеграционное тестирование.
Функциональное и нефункциональное тестирование требований являются примерами тестирования “черного ящика”. Это означает, что для проведения тестирования методом “черного ящика” тестировщикам не требуются развитые технические навыки или знания компьютерного программирования, им также не нужно изучать, как реализовать тестируемые системы.