Что такое нефункциональное тестирование
Тестирование
Раздел: Тестирование > Виды Тестирования
Виды Тестирования Программного Обеспечения
Все виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы:
Далее, мы постараемся более подробно рассказать о каждом отдельном виде тестирования, его назначении и использовании при тестировании программного обеспечения.
Функциональные виды тестирования
Функциональные тесты базируются на функциях и особенностях, а также взаимодействии с другими системами, и могут быть представлены на всех уровнях тестирования: компонентном или модульном (Component/Unit testing), интеграционном (Integration testing), системном (System testing) и приемочном (Acceptance testing). Функциональные виды тестирования рассматривают внешнее поведение системы. Далее перечислены одни из самых распространенных видов функциональных тестов:
Нефункциональные виды тестирования
Нефункциональное тестирование описывает тесты, необходимые для определения характеристик программного обеспечения, которые могут быть измерены различными величинами. В целом, это тестирование того, «Как» система работает. Далее перечислены основные виды нефункциональных тестов:
Связанные с изменениями виды тестирования
После проведения необходимых изменений, таких как исправление бага/дефекта, программное обеспечение должно быть пере тестировано для подтверждения того факта, что проблема была действительно решена. Ниже перечислены виды тестирования, которые необходимо проводить после установки программного обеспечения, для подтверждения работоспособности приложения или правильности осуществленного исправления дефекта:
Не функциональное тестирование
Что такое нефункциональное тестирование?
НЕФУНКЦИОНАЛЬНОЕ ИСПЫТАНИЕ определяется как тип тестирования программного обеспечения для проверки нефункциональных аспектов (производительность, удобство использования, надежность и т. Д.) Программного приложения. Он предназначен для проверки готовности системы по нефункциональным параметрам, которые никогда не учитываются при функциональном тестировании.
Отличным примером нефункционального теста может быть проверка того, сколько людей могут одновременно войти в программное обеспечение.
Нефункциональное тестирование не менее важно, чем функциональное тестирование, и влияет на удовлетворенность клиентов.
В этом уроке мы узнаем
Цели нефункционального тестирования
Характеристики нефункционального тестирования
Параметры нефункционального тестирования
1) Безопасность:
2) Надежность:
Степень, в которой любая программная система непрерывно выполняет указанные функции без сбоев. Это проверено проверкой надежности
3) Живучесть:
Параметр проверяет, что система программного обеспечения продолжает функционировать, и восстанавливается в случае сбоя системы. Это проверено тестированием восстановления
4) Наличие:
Параметр определяет степень, в которой пользователь может зависеть от системы во время ее работы. Это проверено тестированием стабильности.
5) Удобство использования:
Легкость, с которой пользователь может учиться, работать, готовить входные и выходные данные посредством взаимодействия с системой. Это проверено юзабилити-тестированием
6) Масштабируемость:
Термин относится к степени, в которой любое программное приложение может расширить свои вычислительные мощности, чтобы удовлетворить увеличение спроса. Это проверено Scalability Testing
7) Совместимость:
Этот нефункциональный параметр проверяет взаимодействие программной системы с другими программными системами. Это проверено тестированием совместимости
8) Эффективность:
Степень, в которой любая программная система может обрабатывать емкость, количество и время отклика.
9) Гибкость:
Термин относится к легкости, с которой приложение может работать в различных аппаратных и программных конфигурациях. Как минимум оперативной памяти, требования к процессору.
10) Портативность:
Гибкость программного обеспечения для перехода от его текущей аппаратной или программной среды.
11) Возможность повторного использования:
Это относится к части системы программного обеспечения, которая может быть преобразована для использования в другом приложении.
Тип тестирования программного обеспечения
В общем, есть три типа тестирования
При этих типах тестирования у вас есть несколько уровней TESTING, но обычно люди называют их типами тестирования. Вы можете найти некоторые различия в приведенной выше классификации в разных книгах и справочных материалах.
Приведенный выше список не является полным, поскольку существует более 100 типов тестирования и подсчета. Не беспокойтесь, вы заберете их по мере старения в индустрии тестирования. Также обратите внимание, что не все типы тестирования применимы ко всем проектам, но зависят от характера и масштаба проекта. Подробнее об этом в следующем уроке.
Нефункциональные типы тестирования
Примеры тестовых случаев Нефункциональное тестирование
Ниже приведены примеры нефункционального тестирования.
Функциональное 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) — Анализ работы одного и того же приложения на разных операционных системах\платформах.
Типы тестирования
В статье разберем типы тестирования и их особенности, приведем несколько примеров 🙂
Типы тестирования
Что такое типы тестирования?
Тип тестирования — набор активностей, направленных на проверку качества системы, которые основываются на конкретных целях.
Для каждой их перечисленных выше целей существует отдельный тип тестирования.
Функциональное тестирование (Functional Testing)
Функциональное тестирование предназначено для оценки функциональных характеристик качества.
Другими словами, оно проверяет что делает система.
Если взять сайт, как пример системы, которую нужно протестировать, то функциональные тесты будут проверять:
Функциональные тесты пишутся, основываясь на функциональных требованиях, которые можно найти в спецификациях, бизнес-требованиях, user story, use case и т.п.
Иногда, можно слышать фразу “проверить функционал приложения”. Имеется ввиду как раз этот тип тестирования 🙂
Для оценки функционального тестирования иногда используют метрику «покрытие функциональности тестами».
Уровень покрытия определяется как процент проверяемых функциональных требований.
Например, существует 100 функциональных требований, из которых тесты написаны для 57.
Значит, покрытие функциональности тестами равно:
Нефункциональное тестирование (Non-Functional Testing)
Нефункциональное тестирование предназначено для оценки нефункциональных характеристик качества: удобства использования, производительности, безопасности и т.п. 🙂
Другими словами это проверка насколько хорошо работает система.
Из-за большого количества нефункциональных характеристик, выделяют под-типы, каждый из которых имеет свои особенности:
Для сайта из примера выше, нефункциональные тесты будут проверять:
Нефункциональные характеристики можно найти в спецификациях или нефункциональных требованиях к системе.
Часто бывает, что нефункциональные требования могут не описываться (привет слово «очевидно»), но это не значит, что их не существует!
Оценка скорости работы системы, удобности, кроссплатформенности, безопасности — все это нужно тестировать, потому что эти характеристики очень сильно влияют на качество.
Мало кто захочет пользоваться “лагающим”, вечно “лежащим” или не безопасным сайтом, даже если он супер-пупер функциональный 🙂
Для оценки нефункционального тестирования иногда используют метрику «нефункциональное покрытие».
Уровень покрытия определяется как процент проверяемых нефункциональных требований.
Например, есть 30 нефункциональных требований, из которых тесты написаны для 23.
Значит, покрытие функциональности тестами равно:
Тестирование методом черного ящика (Black box testing)
К тестированию методом черного ящика относятся все активности тестирования, не связанные с проверкой внутренней структуры (кода).
К таким активностям относятся как функциональное, так и нефункциональное тестирование.
У вас может возникнуть вопрос:
Почему «черного ящика»? Откуда появилось это название?
В процессе тестирования методом черного ящика тестировщик видит только «внешнюю» часть системы. Он не знает что находится «внутри», что с чем связано и как «физически» работает система.
Из-за того, что внутренней части не видно, появилась ассоциация с «черным ящиком».
Ведь действительно, если вы возьмете прозрачный ящик, положите в него что-либо, закроете ящик, и покрасите его в черный цвет — вряд ли кто-то сможет догадаться, что находится внутри.
Тестирование методом белого ящика (White Box Testing)
Тестирование методом белого ящика предназначено для проверки внутренней структуры ПО (кода) на соответствие требованиям.
Этот метод тестирования подразумевает, что у тестировщика есть доступ «внутрь» системы и он может увидеть, как «физически» работает система.
Если говорить о названии метода, мы считаем, что он более «странный» и менее очевидный, чем метод черного ящика.
Ведь на самом деле — какая разница какого цвета ящик — вы все равно не увидите, что внутри, если он будет покрашен!
«Метод прозрачного ящика» — более правильное название и оно встречается в англоязычной литературе, наряду с clear box testing, glass box testing, transparent box testing and structural testing.
Знайте, имеется ввиду одно и тоже!
Анализ и тестирование кода — дело сложное и рутинное.
Вряд ли в мире есть люди, которые смогут качественно и быстро проанализировать проекты с десятками миллионов строк кода на наличие ошибок или неточностей.
Для ускорения проверки кода на наличие ошибок придумано множество инструментов автоматического анализа кода, поиска ошибок и измерения покрытия кода / компонентов / модулей тестами которые очень помогают как разработчикам, так и QA (ошибки находятся и исправляются практически моментально).
Тем не менее, какими бы полезными и быстрыми не были автоматические инструменты, они не смогут найти неточности в логике работы.
С точки зрения кода (структуры, правильности написания, форматирования…) все может быть идеально, но с точки зрения логики работы — нет 🙂
Например, в коде невозможно найти следующую неточность используя анализаторы кода (линтеры, Linters, IDE):
Активировать кнопку “Купить”, после выбора трех товаров.
Разработчик ошибается и активирует ее после выбора двух товаров.
Конкретно в коде, ошибка может выглядеть как неправильное число в одном из файлов проекта.
Но в мире не существует инструментов, которые смогут понять, что число 2 в каком-то конкретном месте это ошибка. Для инструмента — это просто число, будь то 2, 3, или 100500 🙂
Из-за нюанса с логическими ошибками в коде тестирование условно делится на 2 части: автоматизированную и ручную проверку.
Автоматизированная проверка — оценивают качество кода, а ручная проверка — правильность реализации логики.
Чаще всего ручное тестирование осуществляется специалистами, владеющими навыками программирования, которые могут разобраться, оценить и проанализировать код.
Тестирование, связанное с изменениями
Тестирование, связанное с изменениями предназначено для проверки исправления дефектов и проверки работоспособности системы после внесения изменений, таких как добавление нового функционала или корректировка старого.
Его разделяют на 2 под-типа: подтверждающее и регрессионное.
Подтверждающее тестирование (Retesting)
Производят после исправления дефектов, используя тесты, которые приводили к возникновению отклонения.
Основная цель тестирования — удостовериться, что дефект исправлен, и система работает в соответствии с требованиями.
Иногда возникают ситуации, когда исправление одного дефекта “показывает” другой, который был “недоступен” из-за первого 🙂
Разработчики не очень любят исправлять допущенные ошибки, по этому делают правки “торопясь” и могут допускать новые ошибки..
Поэтому при подтверждающем тестировании нужно быть очень внимательным!
Регрессионное тестирование (Regression Testing)
Изменения, внесенные на этапе поддержки жизненного цикла ПО, иногда могут непреднамеренно “ломать” старый функционал.
Например, вы добавили кнопку в меню на сайте и на телефонах оно перестало помещаться в экран 🙂
Или, вы убрали поле из формы заказа, а на это поле была “завязана” логика отправки email клиенту. Теперь без убранного поля — смысла в email нету.
Такие “непреднамеренные побочные эффекты” называются регрессиями. Если хочешь разобраться более глубоко — читай отдельную, более подробную статью о регрессионном тестировании.
Резюме
В статье мы рассмотрели основные типы тестирования.
Теперь вы сможете точно определить, к какому типу относиться конкретный тест, базово оценить покрытие функциональных / нефункциональных требований тестами, и дописать тесты, где их не хватает 🙂
Хотим отдельно заметить, что все типы тестирования могут применяться на всех уровнях тестирования.
Это не обязательно, но чем больше типов применяется на конкретном уровне — тем качественнее будет продукт 🙂
Если вам интересна тема тестирования, и вы хотели бы получать актуальную информацию по этой теме — подписывайтесь на наш телеграм канал, там интересно: статьи, тесты, опросы, нет спама! 🙂
говориМ о тестировании
простым языком
Виды тестирования по целям: нефункциональное
Сегодня давайте посмотрим, чем же нефункциональное тестирование отличается от функционального и есть ли между ними четкая грань.
Нефункциональное тестирование — это …
Для начала обратимся к ISTQB.
Нефункциональное тестирование системы выполняется для оценки таких характеристик системы и программного обеспечения, как удобство использования, производительность или безопасность.
За классификацией характеристик качества программного обеспечения ISTQB советует обращаться к стандарту ИСО (ISO/IEC 25010).
Нефункциональное тестирование – это проверка того, «насколько хорошо работает система».
То есть нефункциональное тестирование направлено на проверку качественных характеристик продукта, которые могут быть измерены.
Иными словами, нефункциональное тестирование – тестирование свойств, которые не относятся к функциональности системы.
Нефункциональные требования
Какие же могут быть нефункциональные требования/свойства, которые предъявляются к системе:
Существует множество видов тестирования, которые используются для проверки нефункциональных требований. Но о них мы подробно поговорим в следующей статье.
Когда и как?
Вопреки всеобщему заблуждению, нефункциональное тестирование может и, чаще всего, должно выполняться на всех уровнях тестирования, и как можно раньше. Несвоевременное обнаружение нефункциональных дефектов может быть угрозой успеха всего проекта.
Полноту нефункционального тестирования можно оценить через нефункциональное покрытие.
Нефункциональное покрытие – это степень, с которой какая-либо нефункциональная характеристика покрыта тестами, которая выражается в процентном соотношении покрытых тестами характеристик к их общему числу.
Например, используя трассируемость тестов к соответствующим им поддерживаемым устройствам для мобильного приложения, можно вычислить процент поддерживаемых устройств, используемых при тестировании совместимости, тем самым определив потенциальные пробелы в покрытии.
Отдельно стоит отметить, что проектирование и выполнение нефункциональных тестов может потребовать специальных навыков и знаний. Какие знания могут понадобиться? Например, знаний о слабых сторонах, свойственных той или иной структуре проекта или технологии, знание специфической базы пользователей и так далее.
Важное отступление
Еще раз напомню, что обычно в каждом из видов тестирования присутствуют обе составляющие (функциональная и нефункциональная). Но нам все же нужно на что-то опираться, поэтому за основу я беру ISTQB.
В рамках собеседования также будет не лишним отметить, что четкого разграничения между этими двумя видами нет. Можно даже привести в пример тестирование безопасности. Согласитесь, что для банковского приложения такое тестирование можно отнести к функциональному, так как это одно из основных требований к таким приложениям.
Я бы рассказывал об этих двух видах тестирования, заранее обозначив источник, на который я опираюсь, и упомянул бы о том, что существует несколько точек зрения на разделение тестирования на функциональное и нефункциональное.