
- •Ни одна из крайностей не является хорошей стратегией тестирования. Тестирование модулей
- •Комплексное тестирование
- •Отладка. Общие принципы.
- •Меню - Project | Build Project.
- •I/o Checking (Контроль ошибок ввода/вывода) и
- •Окно наблюдения Watches
- •Окно задания списка наблюдения Watch Properties
- •Выполнение приложения по шагам
- •Использование окна Инспектора Отладки Debug Inspector
Тестирование и отладка
Основы тестирования программ
Стратегии тестирования
Принципы тестирования
Тестирование модулей
Комплексное тестирование
Отладка. Общие принципы.
Отладка приложений
Технические возможности отладки приложений в ИСР Delphi
Варианты компиляции и сообщения компилятора.
Окно наблюдения Watches
Окно задания списка наблюдения Watch Properties
Выполнение приложения по шагам
Использование окна Инспектора Отладки Debug Inspector
Основы тестирования программ
Тестирование способствует повышению надежности программного обеспечения.
Правильное определение тестирования таково: тестирование – это процесс выполнения программы с целью найти ошибки, хотя, к сожалению, достаточно часто используется неправильное определение понятия тестирование - как подтверждение правильности работы программы и демонстрация, что ошибок в программе нет (такое определение в корне меняет цели тестирования).
Тестирование - процесс разрушительный. Тест считается удачным, когда с его помощью обнаружена ошибка. Доказательство правильности работы программы в этом случае ведётся от противного: если при выполнении значительного набора хорошо разработанных тестов ошибок не обнаружено, то программа работает правильно, хотя это не значит, что в ней совсем нет ошибок.
Тестирование состоит в том, чтобы найти немногочисленные ошибки, оставшиеся в хорошо спроектированной программе.
Тестирование (testing) – процесс выполнения программы с целью найти ошибки.
Отладка (debugging) – процесс поиска ошибки, наличие которой точно установлено, и исправление этой ошибки, после чего процесс тестирования возобновляется.
Тестовые данные продумываются и готовятся заранее. Результаты тестирования являются исходными данными для отладки.
Таким образом, тестирование и отладка – это два тесно взаимосвязанных процесса.
Стратегии тестирования
Стратегия черного ящика (тестирование с управлением по данным, или тестирование с управлением по входу-выходу). Программа рассматривается как «черный ящик», а тестовые данные используются без учета знаний о внутренней структуре программы, только в соответствии со спецификацией программы. Разработчику известно, что на входе и что должно быть на выходе программы. Такое тестирование имеет целью выяснение обстоятельств, в которых поведение программы не соответствует спецификации.
Стратегия «белого» (скорее, прозрачного) ящика - стратегия тестирования, управляемого логикой программы. Она опирается на знание внутренней структуры программы. Тестовые данные готовятся путем анализа логики программы. Подразумевается, что программа проверена полностью, если с помощью тестов удается осуществить выполнение этой программы по всем возможным маршрутам ее потока (графа) передач управления (теоретическое положение).
Принципы тестирования
Проектирование тестов и тестирование требует творческого подхода Процесс тестирования должен представлять собой попытки обнаружить в программе не найденные ранее ошибки.
Тестирование всегда должна выполнять внешняя группа. Это относится и к тестированию системы, и к тестированию внешних функций и даже отдельных модулей. Тестирование более эффективно, если оно выполняется кем-либо другим.
Тесты должны готовится как для правильных, так и для неправильных входных данных. Тесты, представляющие неожиданные или неправильные входные данные, часто лучше обнаруживают ошибки, чем «правильные» тесты.
И исходные данные, и результаты теста должны быть определены до его выполнения. Отсюда следует что:
необходимо избегать невоспроизводимых тестов,
нельзя тестировать экспромтом.
Это не даёт возможности верно оценить результаты.
Тестирование программы предполагает детальное изучение результатов каждого теста.
Тесты следует документировать и хранить для возможного использования их повторно.
Необходимо проверять не только, делает ли программа то, для чего она предназначена, но и не делает ли она то, что не должна делать.
Нельзя изменять программу, чтобы облегчить ее тестирование.
Тестирование программного обеспечения охватывает целый ряд действий. Сюда входят :
постановка задачи для теста,
проектирование,
написание тестов,
тестирование тестов
выполнение тестов
изучение результатов тестирования.
Возможен ряд подходов к выработке стратегии проектирования:
тестирование только методом «чёрного ящика»
тестирование только методом «белого ящика»
сочетание обоих методов.
Ни одна из крайностей не является хорошей стратегией тестирования. Тестирование модулей
Тестирование модулей (подпрограмм), в основном, ориентировано на принцип белого ящика, так как принцип белого ящика труднее реализовать при переходе к тестированию более крупных единиц, например, программ в целом. Кроме того, на последующих этапах тестирования обнаруживаются ошибки различного типа, в том числе и ошибки, не обязательно связанные с логикой программы, а возникающие, например, из-за несоответствия программы требованиям пользователя.
Рассмотрим два подхода к комбинированию модулей (подпрограмм):
монолитное тестирование - метод «большого скачка» (выполнить по отдельности тестирование каждого модуля, а затем сформировать рабочую программу, которая затем и тестируется целиком);
пошаговое тестирование (модули тестируются не изолированно друг от друга, а подключаются поочередно для выполнения теста к набору уже ранее оттестированных модулей, пока к набору оттестированных модулей не будет подключен последний модуль.).
Пошаговое тестирование является предпочтительным.
Две основные стратегии тестирования:
нисходящее и
восходящее.
При восходящем подходе программа собирается и тестируется снизу вверх, но только модули самого нижнего уровня тестируются автономно. Затем тестируются модули, непосредственно вызывающие уже проверенные. Эти модули более высокого уровня тестируются не автономно, а вместе с уже проверенными модулями более низкого уровня. Процесс повторяется до тех пор, пока не будет достигнута вершина. Здесь завершаются и тестирование модулей, и тестирование сопряжений программы.
При нисходящем подходе программа собирается и тестируется сверху вниз. Изолировано тестируется только головной модуль. После того как тестирование этого модуля завершено, с ним соединяются один за другим модули, непосредственно вызываемые им, и тестируется полученная комбинация. Процесс повторяется до тех пор, пока не будут собраны и проверены все модули. Модули добавляются таким образом, чтобы обеспечить функционирование операций физического ввода-вывода как можно быстрее.
Достаточно популярный подход к интеграции модулей – метод «большого скачка». В соответствии с этим методом каждый модуль тестируется автономно, а по окончании тестирования модулей они интегрируются в систему все сразу. Использование метода не рекомендуется.
Тестирование методом сандвича представляет собой компромисс между восходящим и нисходящим подходами. При использовании этого метода одновременно начинают восходящее и нисходящее тестирование, собирая программу как снизу, так и сверху и встречаясь в конце концов где-то в середине. Точка встречи зависит от конкретной тестируемой программы и должна быть заранее определена при изучении ее структуры. В модифицированном методе сандвича нижние уровни также тестируются строго снизу вверх. А модули верхних уровней сначала тестируются изолированно, а затем собираются нисходящим методом.