Нефункциональное тестирование что это
Тестирование
Раздел: Тестирование > Виды Тестирования
Виды Тестирования Программного Обеспечения
Все виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы:
Далее, мы постараемся более подробно рассказать о каждом отдельном виде тестирования, его назначении и использовании при тестировании программного обеспечения.
Функциональные виды тестирования
Функциональные тесты базируются на функциях и особенностях, а также взаимодействии с другими системами, и могут быть представлены на всех уровнях тестирования: компонентном или модульном (Component/Unit testing), интеграционном (Integration testing), системном (System testing) и приемочном (Acceptance testing). Функциональные виды тестирования рассматривают внешнее поведение системы. Далее перечислены одни из самых распространенных видов функциональных тестов:
Нефункциональные виды тестирования
Нефункциональное тестирование описывает тесты, необходимые для определения характеристик программного обеспечения, которые могут быть измерены различными величинами. В целом, это тестирование того, «Как» система работает. Далее перечислены основные виды нефункциональных тестов:
Связанные с изменениями виды тестирования
После проведения необходимых изменений, таких как исправление бага/дефекта, программное обеспечение должно быть пере тестировано для подтверждения того факта, что проблема была действительно решена. Ниже перечислены виды тестирования, которые необходимо проводить после установки программного обеспечения, для подтверждения работоспособности приложения или правильности осуществленного исправления дефекта:
Функциональное VS Нефункциональное тестирование
В данной статье мы разберём, что такое функциональное и нефункциональное тестирование, чем они отличаются, а так же какие подвиды тестирования они имеют.
Функциональное тестирование (Functional testing) — Тестирование ПО, направленное на проверку того, что компонент либо система соответствует функциональным требованиям.
Функциональное требование (Functional requirement) — Требование, определяющее функцию, которую компонент или система должны выполнять.
Функциональность (Functionality) — Способность программного продукта обеспечивать функции, которые соответствуют установленным и предполагаемым потребностям, при использовании ПО в определенных условиях.
Простыми словами функциональное тестирование — это тестирование логики работы функций, т.е. ЧТО должна делать система или компонент.
Функциональное тестирование не включает в себя никакие другие подвиды тестирования!
Нефункциональное тестирование (Non-functional teting) — Тестирование атрибутов компонента или системы, не относящихся к функциональности, то есть надежность, эффективность, практичность, сопровождаемость и переносимость, удобство, доступность и т.д.
Почему у функционального тестирования нет подвидов?
Одна из главных целей видов тестирования — это проверка характеристик качества продукта.
Функциональное тестирование проверяет первую характеристику — функциональную пригодность.
Нефункциональное тестирование проверяет все остальные характеристики качества подукта.
Характеристи качества(Product Quality — ISO/IEC 25010)
Функциональное и нефункциональное тестирование может проводиться на любых уровнях и комбинироваться с другими группами тестов. Например, можно проводить функциональное тестирование при помощи техники исследовательского тестирования (Exploratory testing) или в рамках регрессионного тестирования проводить GUI тестирование при помощи техники свободного тестирования (Ad-hoc), методом серого ящика на уровнях интеграционного тестирования и тестирования критического пути.
Виды нефункционального тестирования:
Тестирование графического интерфейса (GUI testing) — анализ соответствия графического пользовательского интерфейса программы спецификациям, макетам, прототипам, стандартам.
Тестирование удобства использования (Usability testing) — Исследование, выполняемое с целью определения, удобна ли программа для ее предполагаемого применения и основанное на стандартах, лучших практиках и привлечении пользователей в качестве тестировщиков и суммировании и анализе полученных от них выводов.
Тестирование инсталляции (Installation testing) — Тестирование, направленное на проверку процессов установки, удаления, восстановления, обновления, лицензирования.
Тестирование безопасности (Safety testing) — Тестирование программного продукта с целью с целью определить его безопасность.
Безопасность (Safety) — Способность программного продукта при использовании оговоренным образом оставаться в рамках приемлемого риска причинения вреда здоровью, бизнесу, программам, собственности или окружающей среде.
Тестирование защищенности (Security testing) — Тестирование с целью оценить защищенность программного продукта.
Защищенность (Security) — Свойства программного продукта, отражающие его способность не допускать неавторизированный доступ, случайный или умышленный, к программам и данным.
Тестирование доступности (Accessibility testing) — Тестирование, направленное на определение степени легкости, с которой пользователи с ограниченными способностями могут использовать систему или ее компоненты.
Тестирование производительности (Performance testing) — Процесс тестирования с целью определить производительность программного продукта.
Нагрузочное тестирование (Load testing) — Вид тестирования производительности, проводимый с целью оценить поведение компонента или системы под увеличивающейся нагрузкой (число одновременно работающих пользователей и/или число транзакций) для определения максимально допустимого уровня нагрузки для исследуемого компонента или системы.
Стрессовое тестирование (Stress testing) — Вид тестирования производительности, оценивающий систему или компонент на граничных значениях рабочих нагрузок или за их пределами, или же в состоянии ограниченных ресурсов, таких как память или доступ к серверу.
Тестирование интернационализации (Internationalization testing) — Анализ приложения и его интерфейса на способность быть переведённым.
Тестирование локализации (Localization testing) — Анализ приложения и его сопроводительной документации на корректность в конкретной переведённой среде.
Тестирование совместимости (Compatibility testing):
Тестирование кроссбраузерности (Cross browser testing) — Вид тестирования совместимости, направленный на анализ работы приложения в разных браузерах либо разных версиях одного браузера.
Тестирование кроссплатформенности (Cross platform testing) — Анализ работы одного и того же приложения на разных операционных системах\платформах.
Не функциональное тестирование
Что такое нефункциональное тестирование?
НЕФУНКЦИОНАЛЬНОЕ ИСПЫТАНИЕ определяется как тип тестирования программного обеспечения для проверки нефункциональных аспектов (производительность, удобство использования, надежность и т. Д.) Программного приложения. Он предназначен для проверки готовности системы по нефункциональным параметрам, которые никогда не учитываются при функциональном тестировании.
Отличным примером нефункционального теста может быть проверка того, сколько людей могут одновременно войти в программное обеспечение.
Нефункциональное тестирование не менее важно, чем функциональное тестирование, и влияет на удовлетворенность клиентов.
В этом уроке мы узнаем
Цели нефункционального тестирования
Характеристики нефункционального тестирования
Параметры нефункционального тестирования
1) Безопасность:
2) Надежность:
Степень, в которой любая программная система непрерывно выполняет указанные функции без сбоев. Это проверено проверкой надежности
3) Живучесть:
Параметр проверяет, что система программного обеспечения продолжает функционировать, и восстанавливается в случае сбоя системы. Это проверено тестированием восстановления
4) Наличие:
Параметр определяет степень, в которой пользователь может зависеть от системы во время ее работы. Это проверено тестированием стабильности.
5) Удобство использования:
Легкость, с которой пользователь может учиться, работать, готовить входные и выходные данные посредством взаимодействия с системой. Это проверено юзабилити-тестированием
6) Масштабируемость:
Термин относится к степени, в которой любое программное приложение может расширить свои вычислительные мощности, чтобы удовлетворить увеличение спроса. Это проверено Scalability Testing
7) Совместимость:
Этот нефункциональный параметр проверяет взаимодействие программной системы с другими программными системами. Это проверено тестированием совместимости
8) Эффективность:
Степень, в которой любая программная система может обрабатывать емкость, количество и время отклика.
9) Гибкость:
Термин относится к легкости, с которой приложение может работать в различных аппаратных и программных конфигурациях. Как минимум оперативной памяти, требования к процессору.
10) Портативность:
Гибкость программного обеспечения для перехода от его текущей аппаратной или программной среды.
11) Возможность повторного использования:
Это относится к части системы программного обеспечения, которая может быть преобразована для использования в другом приложении.
Тип тестирования программного обеспечения
В общем, есть три типа тестирования
При этих типах тестирования у вас есть несколько уровней TESTING, но обычно люди называют их типами тестирования. Вы можете найти некоторые различия в приведенной выше классификации в разных книгах и справочных материалах.
Приведенный выше список не является полным, поскольку существует более 100 типов тестирования и подсчета. Не беспокойтесь, вы заберете их по мере старения в индустрии тестирования. Также обратите внимание, что не все типы тестирования применимы ко всем проектам, но зависят от характера и масштаба проекта. Подробнее об этом в следующем уроке.
Нефункциональные типы тестирования
Примеры тестовых случаев Нефункциональное тестирование
Ниже приведены примеры нефункционального тестирования.
говориМ о тестировании
простым языком
Виды тестирования по целям: нефункциональное
Сегодня давайте посмотрим, чем же нефункциональное тестирование отличается от функционального и есть ли между ними четкая грань.
Нефункциональное тестирование — это …
Для начала обратимся к ISTQB.
Нефункциональное тестирование системы выполняется для оценки таких характеристик системы и программного обеспечения, как удобство использования, производительность или безопасность.
За классификацией характеристик качества программного обеспечения ISTQB советует обращаться к стандарту ИСО (ISO/IEC 25010).
Нефункциональное тестирование – это проверка того, «насколько хорошо работает система».
То есть нефункциональное тестирование направлено на проверку качественных характеристик продукта, которые могут быть измерены.
Иными словами, нефункциональное тестирование – тестирование свойств, которые не относятся к функциональности системы.
Нефункциональные требования
Какие же могут быть нефункциональные требования/свойства, которые предъявляются к системе:
Существует множество видов тестирования, которые используются для проверки нефункциональных требований. Но о них мы подробно поговорим в следующей статье.
Когда и как?
Вопреки всеобщему заблуждению, нефункциональное тестирование может и, чаще всего, должно выполняться на всех уровнях тестирования, и как можно раньше. Несвоевременное обнаружение нефункциональных дефектов может быть угрозой успеха всего проекта.
Полноту нефункционального тестирования можно оценить через нефункциональное покрытие.
Нефункциональное покрытие – это степень, с которой какая-либо нефункциональная характеристика покрыта тестами, которая выражается в процентном соотношении покрытых тестами характеристик к их общему числу.
Например, используя трассируемость тестов к соответствующим им поддерживаемым устройствам для мобильного приложения, можно вычислить процент поддерживаемых устройств, используемых при тестировании совместимости, тем самым определив потенциальные пробелы в покрытии.
Отдельно стоит отметить, что проектирование и выполнение нефункциональных тестов может потребовать специальных навыков и знаний. Какие знания могут понадобиться? Например, знаний о слабых сторонах, свойственных той или иной структуре проекта или технологии, знание специфической базы пользователей и так далее.
Важное отступление
Еще раз напомню, что обычно в каждом из видов тестирования присутствуют обе составляющие (функциональная и нефункциональная). Но нам все же нужно на что-то опираться, поэтому за основу я беру ISTQB.
В рамках собеседования также будет не лишним отметить, что четкого разграничения между этими двумя видами нет. Можно даже привести в пример тестирование безопасности. Согласитесь, что для банковского приложения такое тестирование можно отнести к функциональному, так как это одно из основных требований к таким приложениям.
Я бы рассказывал об этих двух видах тестирования, заранее обозначив источник, на который я опираюсь, и упомянул бы о том, что существует несколько точек зрения на разделение тестирования на функциональное и нефункциональное.
Фундаментальная теория тестирования
В тестировании нет четких определений, как в физике, математике, которые при перефразировании становятся абсолютно неверными. Поэтому важно понимать процессы и подходы. В данной статье разберем основные определения теории тестирования.
Перейдем к основным понятиям
Тестирование программного обеспечения (Software Testing) — проверка соответствия реальных и ожидаемых результатов поведения программы, проводимая на конечном наборе тестов, выбранном определённым образом.
Цель тестирования — проверка соответствия ПО предъявляемым требованиям, обеспечение уверенности в качестве ПО, поиск очевидных ошибок в программном обеспечении, которые должны быть выявлены до того, как их обнаружат пользователи программы.
Для чего проводится тестирование ПО?
Принципы тестирования
QC (Quality Control) — Контроль качества продукта — анализ результатов тестирования и качества новых версий выпускаемого продукта.
К задачам контроля качества относятся:
К задачам обеспечения качества относятся:
Верификация и валидация — два понятия тесно связаны с процессами тестирования и обеспечения качества. К сожалению, их часто путают, хотя отличия между ними достаточно существенны.
Верификация (verification) — это процесс оценки системы, чтобы понять, удовлетворяют ли результаты текущего этапа разработки условиям, которые были сформулированы в его начале.
Валидация (validation) — это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, его требованиям к системе.
Пример: когда разрабатывали аэробус А310, то надо было сделать так, чтобы закрылки вставали в положение «торможение», когда шасси коснулись земли. Запрограммировали так, что когда шасси начинают крутиться, то закрылки ставим в положение «торможение». Но вот во время испытаний в Варшаве самолет выкатился за пределы полосы, так как была мокрая поверхность. Он проскользил, только потом был крутящий момент и они, закрылки, открылись. С точки зрения «верификации» — программа сработала, с точки зрения «валидации» — нет. Поэтому код изменили так, чтобы в момент изменения давления в шинах открывались закрылки.
Документацию, которая используется на проектах по разработке ПО, можно условно разделить на две группы:
Этапы тестирования:
Программный продукт проходит следующие стадии:
Требования
Требования — это спецификация (описание) того, что должно быть реализовано.
Требования описывают то, что необходимо реализовать, без детализации технической стороны решения.
Отчёт о дефекте (bug report) — документ, который содержит отчет о любом недостатке в компоненте или системе, который потенциально может привести компонент или систему к невозможности выполнить требуемую функцию.
Атрибуты отчета о дефекте:
Жизненный цикл бага
Severity vs Priority
Серьёзность (severity) показывает степень ущерба, который наносится проекту существованием дефекта. Severity выставляется тестировщиком.
Градация Серьезности дефекта (Severity):
Градация Приоритета дефекта (Priority):
Тестовые среды
Основные фазы тестирования
Основные виды тестирования ПО
Вид тестирования — это совокупность активностей, направленных на тестирование заданных характеристик системы или её части, основанная на конкретных целях.
Автор книги «A Practitioner’s Guide to Software Test Design», Lee Copeland, выделяет следующие техники тест-дизайна:
Методы тестирования
Тестирование белого ящика — метод тестирования ПО, который предполагает, что внутренняя структура/устройство/реализация системы известны тестировщику.
Согласно ISTQB, тестирование белого ящика — это:
Тестирование чёрного ящика — также известное как тестирование, основанное на спецификации или тестирование поведения — техника тестирования, основанная на работе исключительно с внешними интерфейсами тестируемой системы.
Согласно ISTQB, тестирование черного ящика — это:
Тестовая документация
Тест план (Test Plan) — это документ, который описывает весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков.
Тест план должен отвечать на следующие вопросы:
Чаще всего чек-лист содержит только действия, без ожидаемого результата. Чек-лист менее формализован.
Тестовый сценарий (test case) — это артефакт, описывающий совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или её части.
Атрибуты тест кейса: