57.34K
Category: softwaresoftware

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

1.

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

2.

• Тестирование — процесс выявления имеющихся в программе
ошибок
• Отладка — процесс их устранения.

3.

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

4.

Существуют три альтернативных варианта тестирования:
• нисходящее
• восходящее
• раздельное

5.

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

6.

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

7.

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

8.

Первой проверяется (с использованием при необходимости
заглушек) управляющая логика.
Некоторые системы реализуются очередями, причем вначале, до
полного тестирования программы, обрабатывается некоторое
подмножество данных.
Такой порядок реализации системы возможен, поскольку при
разработке каждой программы нетрудно предусмотреть
отдельные ветви для обработки различных данных. Это может
оказаться весьма полезным, т. к. часто 10 % обрабатываемых типов
данных могут на 90 % обеспечить потребности пользователей.

9.

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

10.

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

11.

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

12.

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

13.

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

14.

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

15.

Классификация ошибок
Синтаксические ошибки:
• Синтаксические ошибки выявляются транслятором, поэтому их
устранение не вызывает особых трудностей.
Опечатки:
• Опечатки, как правило, вызваны невнимательностью
программиста при механическом наборе или редактировании
исходного текста. В результате появляется синтаксически
правильный, но абсолютно неверный логически участок
программы.

16.

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

17.

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

18.

Заповеди отладки программного средства
• Заповедь 1. Считайте тестирование ключевой задачей разработки
ПС, поручайте его самым квалифицированным и одаренным
программистам; нежелательно тестировать свою собственную
программу.
• Заповедь 2. Хорош тот тест, для которого высока вероятность
обнаружить ошибку, а не тот, который демонстрирует
правильную работу программы.
• Заповедь 3. Готовьте тесты как для правильных, так и для
неправильных данных.

19.

• Заповедь 4. Документируйте пропуск тестов через компьютер;
детально изучайте результаты каждого теста; избегайте тестов,
пропуск которых нельзя повторить.
• Заповедь 5. Каждый модуль подключайте к программе только
один раз; никогда не изменяйте программу, чтобы облегчить ее
тестирование.
• Заповедь 6. Пропускайте заново все тесты, связанные с
проверкой работы какой-либо программы ПС или ее
взаимодействия с другими программами, если в нее были
внесены изменения (например, в результате устранения ошибки).
English     Русский Rules