лекции, страница 16
Описание файла
PDF-файл из архива "лекции", который расположен в категории "". Всё это находится в предмете "тестирование на основе моделей" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 16 страницы из PDF
Однако обеспечиваемая ими полнота тестирования варьируетсяслучайным и плохо предсказуемым заранее образом — в одних случаях оказываетсядостаточно хорошей, в других очень плохой. С помощью вероятностных методовхорошо находятся случайные ошибки и опечатки, все другие виды ошибок — неочень хорошо. Используются они, когда о тестируемой системе почти ничегонеизвестно, а получение дополнительной информации и построение тестов другимиметодами не может быть осуществлено в рамках проекта.•Методы, нацеленные на полное покрытие.В рамках этих методов тесты строятся целенаправленно таким образом, чтобыобеспечить покрытие выделенных критерием покрытия классов ситуаций.Эти методы автоматизируются плохо, в основном используются при ручнойразработке тестов и достаточно трудоемки.
Обеспечиваемая ими полнота приадекватном выборе критерия полноты тестирования очень высока. Позволяютнаходить любые виды ошибок. Используются при наличии практически полнойинформации о системе, достаточных ресурсов и необходимости провестисистематическое и аккуратное тестирование.•Комбинаторные методы.Эти методы основаны на разбиении тестовых воздействий на некоторые элементы исоставлении различных комбинаций из этих элементов по определенным правилам сцелью получить достаточно систематический перебор тестовых воздействий.Они хорошо автоматизируются, более трудоемки, чем вероятностные, нозначительно проще, чем нацеленные на покрытие методы.
Обеспечиваемая имиполнота тестирования возрастает вместе с количеством получаемых тестов и можетбыть достаточно высокой. Позволяют находить случайные и достаточно простыеошибки. Используются при наличии лишь самой поверхностной информации оработе системы и при ограниченных ресурсах на тестирование.•Автоматные методы.Автоматные методы построения тестов используют модели тестируемой системы ввиде конечных автоматов и их различных обобщений.Они хорошо автоматизируются, но требуют определенных затрат на выполнениетестов.
Обеспечивают очень высокие значения полноты тестирования. Позволяютнаходить ошибки разных видов, в том числе и очень сложные, практически необнаруживаемые другими методами. Используются при наличии четкой и полнойинформации о системе, достаточных ресурсов и повышенных требований к еенадежности и качеству.•Алгебраические методы.Эти методы используют алгебраическое описание тестируемой системы.Хорошо автоматизируются, требуют средних затрат ресурсов. Обеспечивают средниепоказатели полноты тестирования. Обнаруживают различные виды ошибок.
Напрактике почти никогда не используются, потому что требуют описать тестируемуюсистему в виде алгебраической системы или набора абстрактных типов данных сполным набором аксиом.Такие методы довольно экзотичны и приведены здесь для полноты информации оразличных подходах к созданию тестов.Далее разные виды методов построения тестов описаны более детально.В этой лекции обсуждаются вероятностные, алгебраические методы и методы,нацеленные на покрытие.Следующая лекция посвящена различным комбинаторным методам построения тестов.Следующие за ней две лекции — автоматным техникам тестирования.Вероятностные методыВероятностные методы нацелены прежде всего на снижение трудоемкости разработкитестов при минимуме информации о тестируемой системе.
При этом они пытаютсямаксимизировать вероятность обнаружения достаточно серьезных ошибок.В самом простом случае тестовые воздействия генерируются совершенно случайнымобразом.При более обоснованном подходе для построения более-менее адекватных тестовделаются предположения о распределении вероятностей использования тех или иныхвоздействий. Обоснованность таких предположений можно проверить, только имея профильиспользования системы — достаточно представительные фактические данные о том, какиеоперации и функции системы с какой частотой используются на практике.
Если известнавероятность использования заданного воздействия при реальной работе системы, можновыполнять это воздействие в тестах ровно с такой же вероятностью.Если известно распределение возможного ущерба от ошибок при различныхвоздействиях, то можно использовать и его — вероятность выполнения воздействия в тестеимеет смысл сделать пропорциональной и возможному ущербу при некорректной работесистемы в результате этого воздействия.
Это позволит минимизировать ущерб отнеобнаруженных в ходе тестирования ошибок.Наконец, дополнительным фактором могут быть трудозатраты на устранение ошибок.Если известно распределение затрат ресурсов на исправление ошибок, возникающих приразличных воздействиях, стоит сделать вероятность воздействия в тесте пропорциональнойтаким затратам. Теоретически, это позволит быстрее найти ошибки, для исправлениякоторых необходимы значительные усилия.Таким образом, распределение вероятностей воздействий во время теста формируетсяпропорционально распределениям вероятностей использования этих воздействий приэксплуатации системы, размеру возможного ущерба от ошибки, вызванной этимивоздействиями и затратам на исправление этих ошибок. Если какие-то из этихраспределений неизвестны, на их месте используются равномерные распределения.Необходимая вероятность выполнения определенного воздействия в тесте вычисляетсякак произведение вероятности его использования на величину возможного ущерба принеправильной работе системы и на величину затрат на устранение ошибки, если она будетобнаружена, деленное на сумму всех таких произведений для всех воздействий.Pa =Pa∑usePb b⋅ Vauserisk⋅ Vb⋅ Variskdebug⋅ Vbdebug,или, в интегральной форме для плотностей вероятностиp=p use ⋅ v risk ⋅ v debug∫puse⋅ v risk ⋅ v debugСтоит, однако, отметить, что в подавляющем большинстве случаев адекватно оценитьвероятности использования различных воздействий, величину возможного ущерба илизатрат на исправления ошибки весьма сложно.
Для новых, только разрабатываемых систем,таких данных нет вообще. Для новых версий уже долгое время эксплуатировавшихся системможно использовать оценки по аналогии со старой системой, но они также могут быть неаккуратными. Поэтому на практике вероятностное построение тестов часто основывается наслабо обоснованных предположениях о равномерности распределения вероятностейвоздействий, если их различных видов не много, или о нормальном или пуассоновскомзаконе их распределения, если воздействия включают числовые параметры. Проводимое тактестирование способно выявить некоторые ошибки, но дать сколь-либо серьезные гарантиинадежности системы оно не может.Поэтому вероятностные методы построения тестов применяются в тех случаях, когданеобходимо провести тестирование с минимальными затратами на него и практически безвсякой информации об особенностях реализации или требований к системе.
Они позволяютполучить много тестов с очень небольшими усилиями, и в этом основное достоинство такихметодов. Однако, достигаемая при этом полнота тестирования случайна и частонепредсказуема заранее — если повезет, можно получить хорошо оттестированную систему,но убедиться в этом можно только при помощи других методов тестирования.Обнаружить сложные ошибки, особенно ошибки, возникающие из непониманияспецифических деталей требований, при помощи вероятностного тестирования можнотолько случайно. В основном, обнаруживаемые таким способом ошибки являютсядостаточно простыми опечатками или, наоборот, возникают из-за настолько большихпробелов в понимании задач, решаемых тестируемой программной системой, чтообнаружить их достаточно просто.Методы, нацеленные на покрытиеПри использовании методов, нацеленных на покрытие, тесты строятся с основной целью— покрыть ситуации, выделяемые выбранной метрикой тестового покрытия.
Такие методытяжело автоматизировать и, в основном, с их помощью тесты разрабатываются вручную. Напрактике это означает, что проводится анализ достижимости различных ситуаций, которыеопределяются метрикой покрытия, и для тех из них, которые достижимы, соответствующиетестовые данные просто подбираются.Основные достоинства таких методов — высокие значения полноты тестирования приаккуратном и систематичном применении и возможность нацеливать тесты на различныевиды ошибок. Недостатки — довольно высокая трудоемкость разработки тестов,необходимость анализировать достижимость различных сложных ситуаций.В качестве метрик покрытия чаще всего используются структурные метрики покрытия,метрики покрытия структуры входных данных и метрики покрытия требований (см.Лекцию 3, там же можно найти ряд примеров наборов тестовых данных, полностьюпокрывающих выделенные ситуации).Доменное тестированиеОдним из специфических методов построения тестов, нацеленных на покрытиетребований, является доменное тестирование.Доменное тестирование используется для тестирования функций, зависящих от числовыхпараметров или числовых элементов состояния системы.