Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование_и_отладка_в_Дельфи.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.21 Mб
Скачать

6

Тестирование и отладка

Основы тестирования программ

Стратегии тестирования

Принципы тестирования

Тестирование модулей

Комплексное тестирование

Отладка. Общие принципы.

Отладка приложений

Технические возможности отладки приложений в ИСР Delphi

Варианты компиляции и сообщения компилятора.

Окно наблюдения Watches

Окно задания списка наблюдения Watch Properties

Выполнение приложения по шагам

Использование окна Инспектора Отладки Debug Inspector

Основы тестирования программ

Тестирование способствует повышению надежности программного обеспе­чения.

Правильное определение тестирования таково: тестирование – это процесс выполнения программы с целью найти ошибки, хотя, к сожалению, достаточно часто используется неправильное определение понятия тестирование - как подтверждение правильности работы програм­мы и демонстрация, что ошибок в программе нет (такое определение в корне меняет цели тестирования).

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

Тестирование состоит в том, чтобы найти немногочислен­ные ошибки, оставшиеся в хорошо спроектированной программе.

Тестирование (testing) – процесс вы­полнения программы с це­лью найти ошибки.

Отладка (debugging) – процесс поиска ошибки, наличие которой точно установлено, и исправление этой ошибки, после чего процесс тестирования возобновляется.

Тестовые данные продумываются и готовятся заранее. Результаты тестирования являются ис­ходными данными для отладки.

Таким образом, тестирование и отладка – это два тесно взаимосвязанных процесса.

Стратегии тестирования

Стратегия черного ящика (тестирование с управ­лением по данным, или тестирование с управлением по входу-выходу). Программа рассматривается как «черный ящик», а тестовые данные используются без учета знаний о внутренней струк­туре программы, только в соответствии со спецификацией программы. Разработчику известно, что на входе и что должно быть на выходе программы. Такое тестирование имеет целью выяс­нение обстоятельств, в которых поведение программы не соответствует спецификации.

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

Принципы тестирования

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

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

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

И исходные данные, и результаты теста должны быть определены до его выполнения. Отсюда следует что:

  • необходимо избегать невоспроизводимых тестов,

  • нельзя тестировать экспромтом.

Это не даёт возможности верно оценить результаты.

Тестирование программы предпо­лагает детальное изучение результатов каждого теста.

Тесты следует документировать и хранить для возможного использования их повторно.

Необходимо проверять не только, делает ли программа то, для чего она предназначена, но и не делает ли она то, что не должна делать.

Нельзя изменять программу, чтобы облегчить ее тестиро­вание.

Тестирование программного обеспечения охватывает целый ряд действий. Сюда входят :

  • поста­новка задачи для теста,

  • проектирование,

  • написание тестов,

  • тести­рование тестов

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

  • изучение результа­тов тестирования.

Возможен ряд подходов к выработке стратегии проектирования:

  • тестирование только методом «чёрного ящика»

  • тестирование только методом «белого ящика»

  • сочетание обоих методов.

Ни одна из крайностей не является хорошей стратегией тестирования. Тестирование модулей

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

Рассмотрим два подхода к комбинированию модулей (подпрограмм):

    • монолитное тестирование - метод «большо­го скачка» (выполнить по отдель­ности тестирование каждого модуля, а затем сформировать рабочую программу, которая затем и тестируется целиком);

    • пошаговое тестирование (модули тестируются не изолированно друг от друга, а подключаются поочередно для выполнения теста к набору уже ранее оттестированных модулей, пока к набору оттес­тированных модулей не будет подключен последний мо­дуль.).

Пошаговое тестирование является предпочти­тельным.

Две основные стратегии тестирования:

  • нисходящее и

  • восходящее.

При восходящем подходе программа собирается и тестируется снизу вверх, но только модули самого нижнего уровня тестируются автономно. Затем тес­тируются модули, непосредственно вызывающие уже проверенные. Эти модули более высокого уровня тестируются не автономно, а вместе с уже проверенными модулями более низкого уровня. Про­цесс повторяется до тех пор, пока не будет достигнута вершина. Здесь завершаются и тестирование модулей, и тестирование сопря­жений программы.

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

Достаточно популярный подход к интеграции мо­дулей – метод «большого скачка». В соответствии с этим методом каждый модуль тестируется автономно, а по окончании тестирования модулей они интегрируются в систему все сразу. Использование метода не рекомендуется.

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