Виды тестирования,  Виды, уровни, методы и техники тестирования,  Тестирование

Функциональное VS Нефункциональное тестирование

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

Функциональное тестирование (Functional testing) — Тестирование ПО, направленное на проверку того, что компонент либо система соответствует функциональным требованиям.

Функциональное требование (Functional requirement) — Требование, определяющее функцию, которую компонент или система должны выполнять.

Функциональность (Functionality) — Способность программного продукта обеспечивать функции, которые соответствуют установленным и предполагаемым потребностям, при использовании ПО в определенных условиях.

Простыми словами функциональное тестирование — это тестирование логики работы функций, т.е. ЧТО должна делать система или компонент.

Нефункциональное тестирование (Non-functional testing) — Тестирование атрибутов компонента или системы, не относящихся к функциональности, то есть надежность, эффективность, практичность, сопровождаемость и переносимость, удобство, доступность и т.д.

Одна из главных целей видов тестирования — это проверка характеристик качества продукта.

Функциональное тестирование проверяет первую характеристику — функциональную пригодность.

Нефункциональное тестирование проверяет все остальные характеристики качества подукта.

Характеристи качества(Product Quality — ISO/IEC 25010)

Функциональное и нефункциональное тестирование может проводиться на любых уровнях и комбинироваться с другими группами тестов. Например, можно проводить функциональное тестирование при помощи техники исследовательского тестирования (Exploratory testing) или в рамках регрессионного тестирования проводить GUI тестирование при помощи техники свободного тестирования (Ad-hoc), методом серого ящика на уровнях интеграционного тестирования и тестирования критического пути.

Подвиды функционального тестирования:

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

Поэтому в рамках этой характеристики можно выделить следующие подвиды:

Тестирование функциональной корректности (Functional correctness testing) — Анализ функций приложение на корректность, правильность расчётов и соответствие указанным или подразумеваемым требованиям. Проводится на всех уровнях тестирования.

Тестирование функциональной пригодности\целесообразности (Functional appropriateness testing) — Анализ пригодности функций приложения для выполнения какой-то бизнес задачи. Обычно проводится на системном уровне тестирования, но может и проводиться на поздних стадиях интеграционного уровня тестирования

Тестирование функциональной полноты (Function completeness testing) — Анализ степени, в которой набор функций покрывает все указанные задачи и цели пользователя. Проводится на всех уровнях тестирования.

Например, мы разрабатываем приложение для продаж какой-то продукции и знаем, что по закону мы должны учитывать VAT налоги (Value Added Tax).

Functional completeness — Проверка того, что мы можем списать налоги. Если да, степень завершённости увеличивается.

Functional correctness testing — Проверка того, что мы списываем правильный процент налогов.

Functional appropriateness testing — Проверка того, что реализованное поведение, действительно выполняет нашу бизнес цель, т.е. налоги действительно списываются, а администратор и пользователь знают об этом.

Виды нефункционального тестирования:

Тестирование графического интерфейса (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) — Анализ работы одного и того же приложения на разных операционных системах\платформах.