Основные типы системных тестов.
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. Экспериментальные – базируются на использовании вспомогательных средств отладки (трассировка процесса, вспомогательная печать), позволяющие уточнить характер поведения программы при тех или иных исходных данных.
Общая стратегия отладки:
Ø обратное прохождение от замеченного симптома ошибки к исходным аналогам (месту в программе, где ошибка совершена).
Цель отладки:
Ø найти оператор программы, при исполнении которого правильные аргументы приводят к неправильным результатам. Данное прослеживание организуется в зависимости от методов отладки.
В аналитических методах на основе логических заключений о поведении программы шаг за шагом уменьшают область программы, подозреваемую в наличии ошибки.
Преимущество аналитических методов:
Исходная программа остается без изменений.
В экспериментальных методах для прослеживания выполняется:
ü выдача значений переменных в указанных точках;
ü трассировка
ü переменных;
ü трассировка потоков управления (имен вызываемых процедур, меток на которые передается управление).
Преимущество экспериментальных методов:
– основная рутинная работа по анализу процесса вычислений перекладывается на компьютер.
Недостаток экспериментальных методов:
– в программу вносятся изменения, при исключении которых могут появиться ошибки.