Современные
информационные технологии/ 2. Вычислительная техника и программирование
Коваленко Любовь Викторовна
Карагандинский Государственный
Технический Университет
Уровни тестирования программного обеспечения
Тестирование обычно
производится на протяжении всей разработки и сопровождения на разных уровнях. Уровень тестирования определяет “над чем”
производятся тесты: над отдельным модулем, группой модулей или системой, в
целом. При этом ни один из уровней тестирования не может считаться
приоритетным. Важны все уровни тестирования, вне зависимости от используемых
моделей и методологий.
Модульное тестирование тестирования позволяет
проверить функционирование отдельно взятого элемента системы. Что считать
элементом – модулем системы определяется контекстом. Наиболее
полно данный вид тестов описан в стандарте IEEE 1008-87 “Standard for Software Unit Testing”,
задающем интегрированную концепцию систематического и документированного
подхода к модульному тестированию.
Интеграционное тестирование (Integration testing) является процессом проверки взаимодействия
между программными компонентами/модулями.
Классические стратегии интеграционного
тестирования – “сверху-вниз” и “снизу-вверх” – используются для традиционных,
иерархически структурированных систем и их сложно применять, например, к
тестированию слабосвязанных систем, построенных в сервисно-ориентированных
архитектурах (SOA).
Интеграционное тестирование – постоянно
проводимая деятельность, предполагающая работу на достаточно высоком уровне
абстракции. Наиболее успешная практика интеграционного тестирования базируется
на инкрементальном подходе, позволяющем избежать проблем проведения разовых
тестов, связанных с тестированием результатов очередного длительного этапа
работ, когда количество выявленных дефектов приводит к серьезной переработке
кода.
Системное тестирование охватывает целиком всю
систему. Большинство функциональных сбоев должно быть идентифицировано еще на
уровне модульных и интеграционных тестов. В свою очередь, системное
тестирование, обычно фокусируется на нефункциональных требованиях –
безопасности, производительности, точности, надежности т.п.
На этом уровне также тестируются интерфейсы к
внешним приложениям, аппаратному обеспечению, операционной среде и т.д.
Тестирование проводится в
соответствии с определенными целями (могут быть заданы явно или неявно) и
различным уровнем точности. Определение цели точным образом, выражаемым
количественно, позволяет обеспечить контроль результатов тестирования.
Тестовые сценарии могут разрабатываться как
для проверки функциональных требований (известны как функциональные тесты), так
и для оценки нефункциональных требований. При этом, существуют такие тесты,
когда количественные параметры и результаты тестов могут лишь опосредованно
говорить об удовлетворении целям тестирования (например, “usability” – легкость, простота использования, в
большинстве случаев, не может быть явно описана количественными
характеристиками).
Можно выделить следующие, наиболее
распространенные и обоснованные цели (а, соответственно, виды) тестирования:
Приёмочное тестирование проверяет поведение
системы на предмет удовлетворения требований заказчика. Это возможно в том
случае, если заказчик берет на себя ответственность, связанную с проведением
таких работ, как сторона “принимающая” программную систему, или специфицированы
типовые задачи, успешная проверка (тестирование) которых позволяет говорить об
удовлетворении требований заказчика.
Такие тесты могу проводиться как с
привлечением разработчиков системы, так и без них.
Установочное тестирование проводятся с целью
проверки процедуры инсталляции системы в целевом окружении.
Перед тем, как выпускается программное обеспечение,
как минимум, оно должно проходить стадии альфа (внутреннее пробное
использование) и бета (пробное использование с привлечением отобранных внешних
пользователей) версий. Отчеты об ошибках, поступающие от пользователей этих
версий продукта, обрабатываются в соответствии с определенными процедурами,
включающими подтверждающие тесты (любого уровня), проводимые специалистами
группы разработки.
Определение успешности регрессионных тестов (IEEE 610-90 “Standard Glossary of Software Engineering Terminology”)
гласит: “повторное выборочное тестирование системы или компонент для проверки
сделанных модификаций не должно приводить к непредусмотренным эффектам”. На
практике это означает, что если система успешно проходила тесты до внесения
модификаций, она должна их проходит и после внесения таковых. Основная проблема
регрессионного тестирования заключается в поиске компромисса между имеющимеся
ресурсами и необходимостью проведения таких тестов по мере внесения каждого
изменения.
Тестирование производительности -
специализированные тесты проверки удовлетворения специфических требований,
предъявляемых к параметрам производительности. Существует особый подвид таких
тестов, когда делается попытка достижения количественных пределов,
обусловленных характеристиками самой системы и ее операционного окружения.
Литература:
1 Тестирование программного обеспечения.
Фундаментальные концепции менеджмента бизнес-приложений, Сэм Канер, Джек Фолк,
Енг Кек Нгуен, М.
2 Введение в тестирование программного
обеспечения, Луиза Тамре, М.
3
http://swebok.sorlik.ru/4_software_testing.html