Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к ГОСАМ (все билеты).doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

Вопрос 3. Тестирование и отладка программного обеспечения. Структурное и функциональное тестирование. Особенности тестирования объектно-ориентированного по. Автоматизация процесса тестирования.

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

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

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

Удачным считается тест, который обнаружил ошибку. Если ни одна ошибка не была обнаружена, то тест считается неудачным.

  • Ошибки имеют свойство группироваться. Если в какой-то части программы найдено много ошибок, то там еще много осталось.

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

  • Следует избегать тестирования программы ее автором.. Программист подсознательно считает свою программу продолжением самого себя и не станет особенно тщательно ее тестировать.

  • Разработка тестов – творческий процесс, который требует, в некотором роде, разрушительного склада ума.

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

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

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

  • Избыток комментариев также усложняет поиск ошибок. Комментарии говорят, что делает программа по мнению автора, а не что она делает на самом деле.

После тестирования нельзя гарантировать отсутствие ошибок, можно лишь говорить о некотором уровне уверенности в правильности работы системы.

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

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

Виды тестирования:

  • структурное тестирование (белый ящик),

  • функциональное тестирование (черный ящик)

Структурное тестирование. При данном подходе считается, что текст программы виден (белый ящик). Тестируются блоки ветвлений, циклы и т.д.

Существует несколько типов структурного тестирования:

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

  • покрытие решений,

  • покрытие решений / условий,

  • комбинаторное покрытие условий,

  • тестирование циклов.

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

Существуют несколько видов функционального тестирования:

  • эквивалентные классы,

  • анализ граничных значений,

  • тестирование на предельных нагрузках,

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

  • тестирование защиты,

  • эксплуатация системы самим разработчиком (если возможно),

  • опытная эксплуатация.

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

Отладка

Отладка – это исправление найденных ошибок.

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

При исправлении ошибки высока вероятность внесения новой ошибки (примерно 20%). Если программу исправляет не автор, тогда вероятность еще выше.

При тестировании ООП ПО, тестируются сначала методы, а потом классы, использующие эти методы.

Автоматизирование процесса тестирования необходимо для формирования, сохранения и анализа тестов.

Примерами продуктов являются Ration Tester и Rational Robot, которые являются дорогостоящими продуктами.

Билет 8.