
- •1.Понятие о дружественности.
- •2.Динамическое распределение памяти.
- •3.Инкапсуляция и полиморфизм.
- •4.Наследование классов.
- •5.Виртуальные функции.
- •6.Восходящий подход программирования.
- •7.Нисходящий подход. Иерархический и операционный подходы.
- •8.Нисходящий подход. Смешанный подход.
- •9.Понятие о модульном программировании.
- •10.Прочность модулей.
- •11.Сцепление модулей.
- •12.Отладка программ на языке высокого уровня.
- •13.Тестирование в процессе создания программы.
- •14.Систематическое тестирование.
- •15.Стрессовое тестирование.
- •16.Автоматизация тестирования.
- •17.Тестирование белого и черного ящиков. Тестирование пользователями.
- •18.Верификация программного обеспечения.
- •19.Валидация программного обеспечения.
- •20.Система факторов качества по с позиции пользователя.
- •21.Система факторов качества по с позиции разработчика.
15.Стрессовое тестирование.
Под стрессовым тестированием понимается проверка программ большими объемами данных, которые зачастую удобнее сгенерировать компьютером. Большие объемы сами по себе могут стать причинами сбоев, вызывая переполнение буферов ввода, массивов, счетчиков. Большие объемы данных также очень полезны при поиске неоправданных ограничений в размерах структур данных.
Если при тестировании вводятся только осмысленные реалистичные данные, то большинство ошибок ввода никогда не случится и, следовательно, обрабатывающий их код не будет исполнен, а он может быть ошибочным.
Но важно не доводить дело до абсурда и не тратить время на исправление ошибок в ситуациях, когда их возникновение крайне маловероятно.
Некоторые виды тестов основаны на введении преднамеренно некорректных данных, так как любой не контролируемый ввод является потенциальной лазейкой для взлома системы.
Еще одним фактором, на который нужно обратить внимание при тестировании переполнений является преобразование типов.
Хорошие тесты и тестовые случаи часто могут быть использованы для большого количества программ. Например, каждая программа, читающая файлы, должна быть проверена вводом пустого файла. Каждая программа, читающая текст, должна быть оттестирована двоичным вводом, каждая программа, читающая строки текстов, должна быть проверена вводом очень длинных строк, пустых строк и файлами без употребления символа перевода строки вообще.
16.Автоматизация тестирования.
При большом количестве тестов, которые необходимо выполнить, полезно написать программу, которая последовательно запускает эти тесты.
Одной из основных форм автоматизации является возвратное тестирование, при котором выполняется последовательность тестов, сравнивающих очередную новую версию программы с предыдущей. Основное назначение возвратного тестирования – убедиться в том, что поведение программы изменилось только в предусмотренных рамках. В дополнение к возвратным тестам полезно использовать и замкнутые тесты, которые содержат в себе и вводимые данные, и ожидаемые результаты.
Существуют также инструменты, которые взаимодействуют с программой во время ее выполнения. Их основная цель – измерить качество тестирования, определить, в какой мере тесты проверяют алгоритм программы. Например, можно контролировать выполнение каждой подпрограммы, подсчитывая, сколько раз она вызывалась. Можно также учесть сколько раз выполняется каждый оператор исходной программы, или во всех ли направлениях выполняется каждый условный переход.
Часто такая статистика накапливается в отдельном файле или базе данных, что полезно при комплексном тестировании системы. Для автоматизации тестов разрабатываются также специальные языки.
17.Тестирование белого и черного ящиков. Тестирование пользователями.
Тестирование, проводимое создателем кода или кем-то другим, имеющим, тем не менее, доступ к исходному коду, называется тестированием белого ящика. При таком тестировании необходимо отрешиться от содержания самого программного кода и придумывать как можно больше изощренные проверки.
Цель тестирования – найти ошибки, а не объявить программу работающей. Следовательно, тесты должны быть жесткими, и если использование таких тестов приводит к обнаружению проблем, то это является доказательством правильно избранной стратегии тестирования.
Тестирование черного ящика – означает, что тестирующий не имеет доступа к коду и не представляет себе его внутреннее устройство. При тестировании черного ящика прежде всего необходимо проверить работу программы в нормальных условиях.
Стандартная последовательность действий после проверки нормальных условий – проверка граничных условий, проверка больших объемов, некорректный ввод.
Фактически, реальные пользователи также тестируют программу. Создание бета-версий программ – это как раз попытка привлечь к тестированию большое число конечных пользователей. Перед распространением бета-версий необходимо провести тестирование белого и черного ящиков.
При присоединении к работе над программой новых пользователей, часто находятся новые ошибки, так как эти пользователи используют программу неожиданными способами. На всех стадиях и этапах тестирования, когда используются автоматические тесты, эти тесты так же предварительно должны быть протестированы.