Сделай Сам Свою Работу на 5

Тестирование программного обеспечения





Тестирование – процесс исследования программного обеспечения с целью получения информации о качестве продукта. На начальных этапах ведения проекта следует отдавать себе отчёт в том, что мы не можем протестировать программу абсолютно во всех аспектах. Это обусловлено тем, что число инвариантов работы нетривиальной компьютерной программы может быть неограниченным. Следовательно, тестирование не может доказать отсутствия ошибок в программе, в то время как доказательство корректности способно это сделать.

Основной целью тестирования является точное определение мест неудовлетворительного функционирования программного продукта.

Тестирование оценивается более чем половиной времени, затраченного на проект. Наградой за нахождение дефекта на ранней стадии процесса является по крайней мере десятикратная экономия по сравнению с обнаружением этого же дефекта на этапе интеграции или, ещё хуже, после отправки заказчику.

Тестирование программного обеспечения, как правило, включает в себя целый комплекс действий, аналогичный последовательности разработки ПО. В него входят:

– Определение целей тестирования, постановка задачи теста.



– Планирование тестирования - создание графика разработки тестов, оценка человеческих, программных и аппаратных ресурсов, планирование проведения тестовых циклов.

– Проектирование, разработка и написание тестов.

– Выполнение тестов.

– Анализ результатов тестирования.

Выделяют три уровня тестирования:

Модульное тестирование — процесс, позволяющий проверить на корректность отдельные модули исходного кода программы. Основной целью модульного программирования является изоляция отдельных частей программы и демонстрация работоспособности этих частей (исследование структуры кода). Как правило, модульное тестирование осуществляется разработчиками ПО.

Интеграционное тестирование — процесс проверки корректного функционирования подсистем, интерфейсов между компонентами и подсистемами. Основная задача интеграционного тестирования – поиск дефектов, связанных с ошибками в реализации и интерпретации интерфейсного взаимодействия между модулями. Тестирование проводится итерационно, с постепенным подключением или отключение различных подсистем.



Системное тестирование — это тестирование, выполняемое на полной, интегрированной системе, с целью проверки соответствия системы исходным требованиям. Системное тестирование относится к методам тестирования чёрного ящика, и, тем самым, не требует знаний о внутреннем устройстве системы. Основной задачей системного тестирования является проверка как функциональных, так и не функциональных требований к системе в целом. При этом выявляются дефекты, такие как неверное использование ресурсов системы, непредусмотренные комбинации данных пользовательского уровня, несовместимость с окружением, непредусмотренные сценарии использования, отсутствующая или неверная функциональность, неудобство использования и т.д. Для минимизации рисков, связанных с особенностями поведения системы в той или иной среде, во время тестирования рекомендуется использовать окружение максимально приближенное к тому, на которое будет установлен продукт после выдачи.

На этапе модульного тестирования широко распространены следующие подходы к проведению процесса тестирования: тестирование «белого ящика», тестирование «чёрногоящика», тестирование «серогоящика».

При тестировании «белого ящика» предполагается, что разработчик тестов имеет доступ к исходному коду и может писать код, связанный с библиотеками или подсистемами тестируемого ПО. Целью тестирования «белого ящика» является тестирование наиболее ненадёжных путей программы. Для выполнения тестирования «белого ящика» мы сначала разбиваем проект программы на отдельные элементы и ищем пути прослеживающие все или некоторые из этих путей, и проверяем все составные части.



Тестирование «серого ящика» рассматривает внутреннюю работу программы или модуля, но только до некоторой степени. Сюда могут быть также отнесены и некоторые аспекты тестирования «чёрного ящика».

Когда мы интересуемся исключительно тем, как программа или её часть предоставляет соответствующие выходные данные, мы тестируем её на каждое требование, используя подходящие входные данные. Это называется тестированием «чёрного ящика». Тесты «чёрного ящика» могут быть эффективны, если мы можем убедиться, что они исчерпывают все комбинации входных данных. Это докажет заказчику что все требования удовлетворены. С практической точки зрения, для проведения тестирования по этому методу необходимо подготовить две группы входных условий. Одна группа должна содержать правильные входные данные для программы, вторая группа - неправильные, основанные на задании ошибочных входных значений. После прогона программы на входных данных из обеих групп устанавливаются несоответствия между реальным поведением функций и ожидаемым.

К основным этапам тестирования в процессе интеграции можно отнести следующие:

– Возможность повторного тестирования модулей в контексте системы (в пакетах);

– Тестирование интерфейсов подразумевает валидацию интерфейсов между модулями;

– Цель регрессионного тестирования заключается в проверке того, что добавления к системе не уменьшили её возможностей. Другими словами, регрессионное тестирование проводится согласно требованиям, которые уже были выполнены перед добавлением новых возможностей. Только когда артефакт прошёл регрессионное тестирование, мы будем готовы тестировать работу добавленного кода.

– Интегральное тестирование выполняется над частично сконструированной системой для проверки того, что результат интеграции дополнительных программ работает, как запланировано.

– Системное тестирование является кульминационным моментом интегрального тестирования. Основные свойства, которые подвергаются проверке при системном тестировании перечислены ниже:

1) Объём – тестируемый продукт исследуется при подаче больших объёмов входных данных.

2) Удобство и простота использования – требуется измерить реакцию пользователя в любой заданной шкале.

3) Производительность – измерение скорости в различных условиях.

4) Конфигурация – настройка системы под разные аппаратные и программные архитектуры с фиксацией временных затрат на этот процесс.

5) Совместимость с другими обозначенными программными приложениями – измерение времени адаптации.

6) Надёжность и доступность – измерение периода работоспособного состояния в течение длительного времени.

7) Безопасность – среднее время взлома системы.

8) Использование ресурсов – измеряется степень использования оперативной памяти, жёсткого диска и т.д.

9) Установка – программа устанавливается в разных условиях и измеряется время установки.

10) Восстанавливаемость – выполнение принудительных действий для зависания программы. Измеряется время восстановления.

11) Удобство в эксплуатации – выполняется обслуживание программы в разных ситуациях. Измеряется время обслуживания.

12) Загрузка и стресс – программа подвергается экстремальному трафику данных и событий.

Выполнение тестов

Существует два основных подхода к выполнению тестов:

– Ручное тестирование выполняется человеком, который последовательно выполняет определённые действия, определяющие методику выполнения тестов и задающие порядок их выполнения.

– Автоматизированное тестирование программного обеспечения - это процесс тестирования, который выполняется автоматически при помощи специализированных инструментов. Существует два основных подхода к автоматизации тестирования: тестирование на уровне кода и GUI-тестирование. К первому типу относится, в частности, модульное тестирование. Ко второму - имитация действий пользователя с помощью специальных тестовых скриптов.

Инструментальные средства тестирования

Тестированиеочень трудоёмкий и дорогой процесс, поэтому создан широкий спектр инструментальных средств, облегчающих и оптимизирующих процесс тестирования.

Инструмент для автоматизированного тестирования - это программное обеспечение, посредством которого осуществляется создание, отладка, выполнение и анализ результатов тестирования. Данный вид тестирования становится важным механизмом проверки, гарантирующим точность и стабильность программ.

Выделяют следующие основные инструментальные средства тестирования:

1. Организатор тестов. Управляет выполнением тестов. Он отслеживает тестовые данные, ожидаемые результаты и тестируемые функции программы.

2. Генератор тестовых данных. Генерирует тестовые данные для тестируемой программы в заданных областях входных данных.

3. Оракул. Генерирует ожидаемые результаты тестов. В качестве оракулов могут выступать предыдущие версии программы или исследуемого объекта.

4. Компаратор файлов. Сравнивает результаты тестирования с результатами предыдущего тестирования и составляет отчет об обнаруженных различиях.

5. Генератор отчетов. Формирует отчеты по результатам проведения тестов.

6. Динамический анализатор. Добавляет в программу код, который подсчитывает, сколько раз выполняется каждый оператор. После запуска теста создает исполняемый профиль, в котором показано, сколько раз в программе выполняется каждый оператор.

7. Имитатор. Существует несколько типов имитаторов. Целевые имитаторы моделируют машину, на которой будет выполняться программа. Имитатор пользовательского интерфейса – это программа, управляемая сценариями, которая моделирует взаимодействия с интерфейсом пользователя. Имитатор ввода-вывода генерирует последовательности повторяющихся транзакций.

Методические рекомендации

Силами проектных групп требуется разработать наборы модульных и интеграционных тестов. Результатом прохождения этапа тестирования программного продукта должны быть журналы обнаружения/исправления дефектов. Желательным является использование современных инструментальных средств тестирования.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.