Лекция: В чем отличие стратегий тестирования и какие практические рекомендации можно дать по их применению (ТП)

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

Решающую роль играет проектирование тестов. Возможны разные подходы к стратегии проектирования тестов, от случайного набора до целенаправленного тестирования выбранных свойств программы. Случайный набор тестов является худшим из вариантов тестирования, поскольку не гарантируют проверку работоспособности программы в разных режимах. При целенаправленном тестировании возможны два подхода. Первый состоит в том, что тесты проектируются на основе внешних спецификаций программ и модулей, либо спецификаций сопряжения программы или модуля. Программа при этом рассматривается как черный ящик (стратегия ‘черного ящика’). Существо такого подхода — проверить соответствует ли программа внешним спецификациям. При этом логика модуля совершенно не принимается во внимание.

Второй подход основан на анализе логики программы (стратегия ‘белого ящика’). Существо подхода — в проверке каждого пути, каждой ветви алгоритма. При этом внешняя спецификация во внимание не принимается.

В литературе последних лет терминология изменилась, в результате чего стратегию “черного ящика” называют функциональным тестированием, а стратегию “белого ящика” – структурным. Эти новые термины лучше отражают суть соответствующих классов методов тестирования.

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

Проанализируем теперь второй подход к тестированию.

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

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

Структурное тестирование (“белого ящика”) применяют на ранних стадиях кодирования и тестирования для выявления и устранения в основном алгоритмических ошибок. Функциональное тестирование (“черного ящика”) применяют на более поздних стадиях тестирования для выявления и устранения ошибок интерфейса, а также некорректных и отсутствующих функций обработки данных.

Процесс разработки программного обеспечения предполагает три стадии тестирования:

· автономное тестирование компонентов программного обеспечения (методы ручного контроля, покрытия операторов, покрытия решений, покрытия условий, комбинаторного покрытия, эквивалентного разбиения, анализа граничных значений, функциональных диаграмм (анализ причинно-следственных связей, таблиц решений);

· комплексное тестирование разрабатываемых программ (восходящее и нисходящее тестирование);

· системное или оценочное тестирование на соответствие основным критериям качества.

 

Билет 2

еще рефераты
Еще работы по информатике