Основные типы системных тестов.

1. Тестирование восстановления.

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

Ø В некоторых случаях система должна быть отказоустойчивой.

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

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

Ø При ручном восстановлении оценивается, находится ли среднее время восстановления в допустимых пределах.

2. Тестирование безопасности.

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

1) попытки узнать пароль с помощью внешних средств;

2) атака системы с помощью специальных утилит, анализирующих защиту;

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

4) целенаправленное введение ошибок, чтобы проникнуть в систему в ходе восстановления;

5) просмотр не секретных данных, чтобы найти ключ для входа в систему.

Задача проектировщика системы – сделать цену проникновения более высокой, чем цена получаемой в результате информации.

3. Стрессовое тестирование.

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

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

Пример:

1. 10 прерываний в секунду, при норме – 1-2;

2. формируются варианты, требующие максимум памяти и других ресурсов.

Таким образом, испытатель пытается разрушить систему.

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

4. Тестирование производительности.

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

Аксиомы тестирования.

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

2. Одна из самых сложных проблем при тестировании – решить, когда надо закончить.

3. Невозможно тестировать свою собственную программу. Тестирование выполняет внешняя группа. Комплексное тестирование выполняется независимой группой.

4. Необходимая часть любого теста – описание ожидаемых результатов.

5. Избегать невоспроизводимых тестов.

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

7. Надо детально изучать результаты каждого теста.

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

9. Тестирование поручают самым способным программистам.

10. Тестируемость – это ключевая задача программного обеспечения. Сложность тестирования программы зависит от её структуры и качества проектирования.

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

Отладка.

Отладка – это локализация и устранение ошибок. Является следствием успешного тестирования. Процессу отладки предшествует выполнение некоторого теста, результат которого оценивается, регистрируются несоответствия между ожидаемым результатом и реальным. Возможны два исхода процесса отладки:

1. Причина найдена, исправлена, уничтожена.

2. Причина не найдена.

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

Способы проявления ошибок:

1. Программа завершается нормально, но выдает неверный результат.

2. Программа зависает.

3. Программа завершается по прерыванию.

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

Симптомы ошибок:

­ постоянные;

­ мерцающие;

­ пороговые;

­ отложенные, проявляются после выявления маскирующих ошибок.

Две группы методов отладки:

1. Аналитические – базируются на анализе выходных данных тестов.

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

Общая стратегия отладки:

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

Цель отладки:

Ø найти оператор программы, при исполнении которого правильные аргументы приводят к неправильным результатам. Данное прослеживание организуется в зависимости от методов отладки.

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

Преимущество аналитических методов:

Исходная программа остается без изменений.

В экспериментальных методах для прослеживания выполняется:

ü выдача значений переменных в указанных точках;

ü трассировка

ü переменных;

ü трассировка потоков управления (имен вызываемых процедур, меток на которые передается управление).

Преимущество экспериментальных методов:

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

Недостаток экспериментальных методов:

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

Наши рекомендации