В некоторых источниках их относят к функциональному тестированию, а в некоторых к нефункциональному. Так как формулировки не до конца понятны, употребляются они очень по-разному. Недопонимание усугубляется применением этой терминологии в широком кругу участников разработки ПО – проектные планы, расписания, контракты могут использовать эти термины, не определив толком, а что же именно они значат.
Эти тесты могут найти проблемы в дизайне ПО и производительности архитектуры. Вряд ли в мире есть люди, которые смогут качественно и быстро проанализировать проекты с десятками миллионов строк кода на наличие ошибок или неточностей. «Метод прозрачного ящика» — более правильное название и оно встречается в англоязычной литературе, наряду с clear box testing, glass box testing, transparent box testing and structural testing. Функциональные тесты пишутся, основываясь на функциональных требованиях, которые можно найти в спецификациях, бизнес-требованиях, user story, use case и т.п. Функциональное тестирование предназначено для оценки функциональных характеристик качества. Для каждой их перечисленных выше целей существует отдельный тип тестирования.
Нефункциональное тестирование (Non-Functional Testing)
Тестирование защищенности (Security testing) — Тестирование с целью оценить защищенность программного продукта. Тестирование функциональной корректности (Functional correctness testing) — Анализ функций приложение на корректность, правильность расчётов и соответствие указанным или подразумеваемым требованиям. Одна из главных целей видов тестирования — это проверка характеристик качества продукта.
- Тестеры подают в приложение действительные и недействительные входные данные и проверяют, соответствуют ли сгенерированные выходные данные ожидаемым.
- Такая сегрегация ограничивает тестировщиков, ничем не помогает клиентам и заказчикам, и просто-напросто вредит профессии.
- Поведение системы в нескольких различных условиях, время отклика и опыт пользователя анализируются при нефункциональном тестировании.
- С помощью объемных тестов можно проверить, нет ли потери данных, предупреждений или сообщений об ошибках, а также проблем с сохранением данных при добавлении огромных объемов данных в продукт.
Я считаю, что с точки зрения восприятия продукта пользователями и заказчиками многие аспекты парафункционального тестирования не менее важны, чем относящиеся к функциональному. Они могут серьезно повлиять на качество взаимодействия клиента с ПО. Такой водораздел подчеркивает важность заказчика/пользователя, не упираясь слепо в спецификацию или требования (которые могут неэффективно отражать желания и потребности клиентов). Итак, парафункциональное тестирование может объединять множество разных видов тестирования (как и нефункциональное), но ставит проблему иначе, и иначе мотивирует тестировщика. Тестирование безопасности (Safety testing) — Тестирование программного продукта с целью с целью определить его безопасность. Как уже обсуждалось выше, функциональное тестирование проверяет такой аттрибут качества как функциональная пригодность.
Нагрузочные тесты
Нагрузочные тесты проверяют, как ведет себя программное обеспечение в нормальных и пиковых условиях. Это делается для того, чтобы определить, какую рабочую нагрузку может выдержать программа, прежде чем производительность будет снижена. Достаточно распространенной является автоматизация функционального тестирования. Хотим отдельно заметить, что все типы тестирования могут применяться на всех уровнях тестирования. Этот метод тестирования подразумевает, что у тестировщика есть доступ «внутрь» системы и он может увидеть, как «физически» работает система.
Функциональное тестирование тоже скрывает под собой кучу различных видов деятельности. Первое упоминание о парафункциональном тестировании, которое мне удалось найти, относится к 2004 году. Это понятие легко рассматривать исключительно как разумную замену нефункциональному тестированию – оба термина определяют тестирование, не относящееся к функциональному. Более того, выносить некоторые виды тестирования в нефункциональное бессмысленно. Наверное, не только я изумляюсь, каким образом туда попало юзабилити. Участники процесса разработки ПО могут легко стать жертвами плохой коммуникации и понять коллег неверно, и зачастую виной тому используемые слова.
Тестирование обновления и установки
Тестирование обновления и тестирование установки проверяют, что программное обеспечение будет правильно работать на всех машинах. Первое проводится для существующих пользователей, а второе – для новых. Объемные тесты проверяют, что система реагирует на определенные объемы данных в соответствии с ожиданиями. Нагрузочные тесты используются для проверки скорости и масштабируемости программного обеспечения.
Когда речь идет о новых идеях и технологиях, некоторая первоначальная путаница вполне естественна, однако не стоит использовать двусмысленную терминологию там, где этого можно избежать. Я полагаю, что “нефункциональное” и “функциональное” тестирование – это именно такая терминология. Тестирование удобства использования (Usability testing) – характеризует систему с точки зрения удобства использования конечного пользователя. Тестирование функциональной полноты (Function completeness testing) — Анализ степени, в которой набор функций покрывает все указанные задачи и цели пользователя. Нефункциональное тестирование не менее важно, чем функциональное тестирование, и влияет на удовлетворенность клиентов. Хорошим примером нефункционального теста было бы проверить, сколько людей могут одновременно войти в программное обеспечение.
В чем разница между функциональным и нефункциональным тестированием
Удобство (Исследование удобности работы с приложением с точки зрения пользователя). Тестирование графического интерфейса (GUI testing) non functional testing это — Анализ соответствия графического пользовательского интерфейса программы спецификациям, макетам, прототипам, стандартам.
Чаще всего ручное тестирование осуществляется специалистами, владеющими навыками программирования, которые могут разобраться, оценить и проанализировать код. Автоматизированная проверка — оценивают качество кода, а ручная проверка — правильность реализации логики. Уровень покрытия определяется как процент проверяемых функциональных требований. Тестовый сценарий (Test Case) — это документ, в котором содержатся условия, шаги и другие параметры для проверки реализации тестируемой функции или её части.
Как тестировать базу данных
Снижает риски потери пользовательских данных, потери работоспособности приложения и пр. Тестирование кроссплатформенности (Cross platform testing) — Анализ работы одного и того же приложения на разных операционных системах\платформах. Тестирование доступности (Accessibility testing) — Тестирование, направленное на определение степени легкости, с которой пользователи с ограниченными способностями могут использовать систему или ее компоненты. Проведение этих тестов важно для разработки безопасной, стабильной системы. С помощью объемных тестов можно проверить, нет ли потери данных, предупреждений или сообщений об ошибках, а также проблем с сохранением данных при добавлении огромных объемов данных в продукт. Тестирование производительности проверяет, насколько хорошо работают компоненты программы.
Нефункциональное тестирование – это тестирование качественных характеристик компонента или системы. Эти характеристики не относятся к конкретной функции или действию пользователя, при этом их можно измерить различными величинами. Тестирование производительности (Performance testing) — Процесс тестирования с целью определить производительность программного продукта. Функциональное и нефункциональное тестирование может проводиться на любых уровнях и комбинироваться с другими группами тестов.