Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
рекомендации.doc
Скачиваний:
70
Добавлен:
27.03.2016
Размер:
314.88 Кб
Скачать

Краткие теоретические сведения

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

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

Тестирование должно быть организовано по следующим принципам (согласно Майерсу):

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

  2. желательно, чтобы кроме автора тестирование проводили и другие люди. Т.к. обнаружение недостатков в своей деятельности противоречит человеческой психологии, восприятие человека "со стороны" ближе к восприятию пользователя, чем психология автора, однако отладка программы эффективнее всего выполняется именно автором программы;

  3. по тем же соображениям организация - разработчик программного обеспечения - не должна "единолично " его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств);

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

  5. тесты для неправильных (непредусмотренных) данных должны подбираться так же тщательно, как и для правильных (предусмотренных) входных данных;

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

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

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

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

  10. следует всегда помнить, что тестирование - творческий процесс, а не относиться к нему как к рутинному занятию.

По степени охвата проекта различают:

  • изолированное тестирование

  • промежуточное тестирование

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

Изолированное тестирование

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

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

Второй вариант: вместо неготовых компонент можно использовать так называемые программы-заглушки и программы-драйверы. Заглушка не несет серьезной функциональности, а как правила просто выдает сообщение на экран. Программа драйвер передает тестируемому компоненту необходимые тестовые данные и отображает результаты.

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

Модули, содержащие операции ввода-вывода, а так же критические модули (т.е. наиболее важные для программы в целом) должны тестироваться как можно раньше.