Как и зачем тестировать IT-систему: функциональные и нефункциональные тесты
Создание и внедрение любого IT-решения – процесс сложный и очень кропотливый. Поэтому так обидно, если внезапно что-то пойдет не так. Защититься от досадных внезапностей поможет профессиональное тестирование системы. Сегодня мы расскажем о 2 видах такого тестирования – функциональном и нефункциональном.
Функциональное тестирование
Основная цель – выяснить, соответствует ли IT-система заявленному функционалу.
Учитывая, что любая система состоит из множества отдельных компонентов, используется несколько видов тестирования:
Тестирование прототипа – применяется на ранних этапах разработки системы или внедряемого IT-решения. Как правило, в это время готов только основной костяк системы, а многих компонентов еще нет. Но глупо было бы их внедрять, когда непонятно, будет ли работать сам прототип. Поэтому отсутствующие компоненты заменяют так называемыми заглушками, после чего систему прогоняют по разным тестам. Если она функционирует некорректно, прототип нужно дорабатывать.
Компонентное тестирование – направлено на проверку отдельных компонентов. Часто применяется в тех случаях, когда в систему добавляют новые компоненты, и нужно узнать, выполняют ли они заложенный функционал.
Интеграционное тестирование – логическое продолжение предыдущего пункта. Даже если все компоненты работают корректно, не факт, что они будут нормально взаимодействовать между собой. Такой тест показывает, как работает целая система, состоящая из отдельных компонентов. Сложные системы разбивают на несколько подсистем и тестируют сначала по компонентному, а потом по интеграционному принципу.
Любое тестирование предполагает создание так называемых тестовых случаев. Специалист вводит разные параметры функционирования системы (например, тип ввода и объем данных) и оценивает, как она справляется с поставленными задачами.
Для создания тестовых случаев можно брать 2 критерия – функциональные требования, указанные в спецификациях, или требования, приоритетные для бизнеса. В первом случае создаются именно test cases, то есть тестовые случаи, учитывающие именно функционал системы. Во втором же вводятся use cases – сценарии использования системы потенциальными пользователями.
Нефункциональное тестирование
Здесь основная задача – проверить, соответствует ли IT-система нефункциональным требованиям. К ним относится производительность, надежность, масштабируемость, эргономичность, безопасность и другие параметры, которые очень важны для системы, но не имеют прямого отношения к ее функционалу.
Такое тестирование тоже делится на несколько видов:
Нагрузочное (Load Testing) – тестирование в условиях средней запланированной нагрузки. Например, если по плану система должна обрабатывать по 100 запросов в час, в ходе теста проверяют, справляется ли она с такой нагрузкой и не превышает ли при этом заданное время отклика.
Стрессовое (Stress Testing) – тестирование в условиях максимальной нагрузки и минимальных ресурсов. Например, количество запросов перевалило за 500, а сервер занят другими вычислениями. Как будет работать система в такой стрессовой ситуации?
Объемное (Volume Testing) – тестирования в условиях предельно допустимой информационной загрузки. Например, проверяется производительность и время отклика при максимальной загрузке базы данных.
Тестирование отдельных показателей: стабильности (Stability Testing – как долго система способна нормально работать при средней загрузке), надежности (Reliability Testing – сможет ли система вернуться к нормальной работе после стрессовых ситуаций) и т.д.
В сумме оба вида тестирования (функциональное и нефункциональное) позволяют проверить, сможет ли система выполнять заявленные требования в различных ситуациях.
Но есть и другие виды тестирования, которые дают возможность управлять качеством IT-системы на всех этапах ее создания. О них мы и расскажем в следующий раз!