3. Тестирование по. Основные принципы тестирования. Структурное и функциональное тестирование. Методы функционального тестирования. (тп)
Тести́рование программного обеспечения — процесс выявления ошибок в программном обеспечении (ПО). К сожалению, существующие на сегодняшний день методы тестирования ПО не позволяют однозначно и полностью установить корректность функционирования анализируемой программы. Поэтому все существующие методы тестирования действуют в рамках формального процесса проверки исследуемого ПО.
Такой процесс формальной проверки или верификации может доказать, что дефекты отсутствуют, с точки зрения используемого метода. (Т.е. нет никакой возможности точно установить или гарантировать отсутствие дефектов в программном продукте с учётом человеческого фактора, присутствующего на всех этапах жизненного цикла ПО).
Существует множество подходов к решению задачи тестирования ПО, но эффективное тестирование сложных программных продуктов — это процесс в высшей степени творческий, не сводящийся к следованию строгим и чётким процедурам или созданию таковых.
Конечной целью любого процесса тестирования является обеспечение такого ёмкого (совокупного) понятия как Качество, с учётом всех или наиболее критичных для данного конкретного случая составляющих.
Если нет систематического способа выбора подмножества входных условий, то чаще всего формируется нерепрезентативный тестовый набор. Метод диаграмм причинно-следственных связей (метод функциональных диаграмм) позволяет сформировывать репрезентативные наборы тестовых данных и осуществлять систематическую генерацию высокорезультативных тестов. Построение тестов методом причинно-следственных связей происходит в несколько этапов:
Анализ спецификации. Определяются причины (классы эквивалентности) и следствия (выходное условие или преобразование системы), уточняются их отношения.
Построение булевого графа по результатам анализа. Визуализация причин, следствий и множества отношений между ними.
Формирование таблицы решений. Преобразование булевого графа в таблицу решений путём методического прослеживания состояний условий диаграммы.
Генерация тестового набора по столбцам таблицы решений.
Статическое и динамическое тестирование
При статическом тестировании программный код не выполняется — анализ программы происходит на основе исходного кода, который вычитывается вручную, либо анализируется специальными инструментами. В некоторых случаях, анализируется не исходный, а промежуточный код (такой как байт-код или код на MSIL).
Стати́ческий ана́лиз ко́да (англ. static code analysis) — анализ программного обеспечения, производимый без реального выполнения исследуемых программ (анализ, производимый с выполнением программ называется динамический анализ кода). В большинстве случаев анализ производится над какой-либо версией исходного кода, хотя иногда анализу подвергается какой-нибудь вид объектного кода, например P-код или код на MSIL. Термин обычно применяют к анализу, производимому специальным ПО, тогда как ручной анализ называют пониманием или постижением программы.
В зависимости от используемого инструмента, глубина анализа может варьировать — от определения поведения отдельных операторов до анализа, включающего весь имеющийся исходный код. Способы использования полученной в ходе анализа информации также различны — от выявления мест, возможно содержащих ошибки, до формальных методов, позволяющих математически доказать какие-либо свойства программы (например, соответствие поведения спецификации).
Динамический анализ кода — анализ программного обеспечения, выполняемый при помощи выполнения программ на реальном или виртуальном процессоре (анализ, выполняемый без запуска программ называется статический анализ кода). Утилиты динамического анализа могут требовать загрузки специальных библиотек или даже перекомпиляцию программного кода.
При тестировании чёрного ящика (Функциональное тестирование) (англ. black-box testing), тестировщик имеет доступ к ПО только через те же интерфейсы, что и заказчик или пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру либо другому процессу подключиться к системе для тестирования. Например, тестирующий модуль может виртуально нажимать клавиши или кнопки мыши в тестируемой программе с помощью механизма взаимодействия процессов, с уверенностью в том, все ли идет правильно, что эти события вызывают тот же отклик, что и реальные нажатия клавиш и кнопок мыши. Как правило, тестирование чёрного ящика ведётся с использованием спецификаций или иных документов, описывающих требования к системе.
Если «альфа-» и «бета-тестирование» относятся к стадиям до выпуска продукта (а также, неявно, к объёму тестирующего сообщества и ограничениям на методы тестирования), тестирование «белого ящика» и «черного ящика» имеет отношение к способам, которыми тестировщик достигает цели.
Бета-тестирование в целом ограничено техникой чёрного ящика (хотя постоянная часть тестировщиков обычно продолжает тестирование белого ящика параллельно бета-тестированию). Таким образом, термин «бета-тестирование» может указывать на состояние программы (ближе к выпуску чем «альфа»), или может указывать на некоторую группу тестировщиков и процесс, выполняемый этой группой. Итак, тестировщик может продолжать работу по тестированию белого ящика, хотя ПО уже «в бете» (стадия), но в этом случае он не является частью «бета-тестирования» (группы/процесса).
Метод функциональных диаграмм демонстрирует высокую избирательность формируемых тестов, однако он является достаточно трудоёмким и требует значительных усилий на трансляцию спецификации в булевский граф. Процедуры преобразования булевого графа в таблицу решений и формирования тестового набора по таблице решений могут быть в значительной степени автоматизированы.
К наиболее популярным критериям функционального тестирования относятся критерии тестирования функций и тестирования спецификаций. Тестирование функций – один из наиболее применяемых на практике критериев. В соответствии с критерием тестирования функций необходимо проверить каждую функцию (метод), реализуемую программным модулем (классом). При тестировании спецификации необходимо построить набор тестов, обеспечивающий проверку каждого пункта требований хотя бы один раз. Спецификация требований может содержать сотни и тысячи требований, при этом тестирование спецификации должно проверить их все. Должны быть проверены не только все требования к каждому конкретному методу, но также все требования к классам и системе в целом.
С точки зрения программного кода черный ящик может представлять с собой набор классов (или модулей) с известными внешними интерфейсами, но недоступными исходными текстами.
Основная задача тестировщика для данного метода тестирования состоит в последовательной проверке соответствия поведения системы требованиям. Кроме того, тестировщик должен проверить работу системы в критических ситуациях - что происходит в случае подачи неверных входных значений. В идеальной ситуации все варианты критических ситуаций должны быть описаны в требованиях на систему и тестировщику остается только придумывать конкретные проверки этих требований. Однако в реальности в результате тестирования обычно выявляется два типа проблем системы.
Несоответствие поведения системы требованиям
Неадекватное поведение системы в ситуациях, не предусмотренных требованиями.
Отчеты об обоих типах проблем документируются и передаются разработчикам. При этом проблемы первого типа обычно вызывают изменение программного кода, гораздо реже - изменение требований. Изменение требований в данном случае может потребоваться из-за их противоречивости (несколько разных требований описывают разные модели поведения системы в одной и той же самой ситуации) или некорректности (требования не соответствуют действительности).
Проблемы второго типа однозначно требуют изменения требований ввиду их неполноты - в требованиях явно пропущена ситуация, приводящая к неадекватному поведению системы. При этом под неадекватным поведением может пониматься как полный крах системы, так и вообще любое поведение, не описанное в требованиях.
ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 11
- 1. Автоматы и формальные языки. Классификация формальных языков и автоматов. Концепция порождения и распознавания. (та)
- 2. Технологические процессы изготовления печатных плат. (ктоп)
- 3. Прерывания в мпс. Типы прерываний. (мпс)
- 1. Регулярные языки и конечные автоматы. (та)
- 2. Индуктивные паразитные наводки в цепях эва. (ктоп)
- 3. Обмен информацией между микропроцессором и внешним устройством. (мпс)
- 1. Контекстно-свободные грамматики и магазинные автоматы. (та)
- 2. Эффективность электромагнитного экранирования. Расчёт электромагнитных экранов. (ктоп)
- 3. Система ввода-вывода. Параллельный порт. (мпс)
- 1. Произвольные автоматы и машина Тьюринга. (та)
- 2. Емкостные паразитные наводки в цепях эва. (ктоп)
- 3. Понятие «технология программирования». Характеристики качества программного обеспечения. Сложность по. Пути ограничения сложности. (тп)
- 1. Абстрактный синтез конечных автоматов. Минимизация и детерминация конечных автоматов. Автоматы Мили и Мура. (та)
- 2. Понятие надёжности электронного аппарата. Расчёт времени безотказной работы. (ктоп)
- 3. Модели жизненного цикла по. Методологии разработки сложных программных систем. Примеры «тяжелого» и «легкого» процесса. (тп)
- 1. Структурный автомат. Канонический метод структурного синтеза автоматов. Этапы синтеза. (та)
- 2. Конструкции корпусов эа и механизмы переноса тепла в них. (ктоп)
- 3. Универсальный язык моделирования uml, его назначение. Варианты использования. Диаграммы вариантов использования. Диаграммы классов. (тп)
- 1. Память структурного автомата. Элементы памяти. Триггеры. (та)
- 2. Роль стандартизации в технике конструирования. Применение ескд и естд. (ктоп)
- 3. Универсальный язык моделирования uml, его назначение. Диаграммы взаимодействия: последовательные и кооперативные. Применение этих диаграмм. (тп)
- Кооперативные диаграммы
- 1. Экспертный метод весовых коэффициентов важности. (моделирование)
- 2. Понятие вычислительного процесса и ресурса, классификация ресурсов, основные виды ресурсов. (спо)
- 3. Универсальный язык моделирования uml, его назначение. Диаграммы деятельности. Диаграммы состояний. Применение этих диаграмм. (тп)
- 1. Планирование и обработка результатов расслоенного (ступенчатого) эксперимента. (моделирование)
- 2. Процессы, состояния процесса, операции над процессами, планирование и диспетчеризация процессов. (спо)
- 3. Тестирование и отладка по. Основные принципы тестирования. Стратегии тестирования программных модулей. Методы структурного тестирования. (тп)
- 1. Полный факторный эксперимент (пфэ). (моделирование)
- 2. Параллельная обработка процессов, проблемы критических участков, взаимоисключения. Синхронизация параллельных процессов на низком уровне. (спо)
- 3. Тестирование по. Основные принципы тестирования. Структурное и функциональное тестирование. Методы функционального тестирования. (тп)
- 1. Модифицированный метод случайного баланса (ммсб). (моделирование)
- 2. Параллельная обработка процессов, проблемы критических участков, взаимоисключения. Синхронизация параллельных процессов на высоком уровне. (спо)
- 3. Эволюция технологий программирования. Структурное программирование. Объектно-ориентированное программирование. (тп)
- 1. Метод наименьших квадратов с предварительной ортогонализацией факторов (мнко). (моделирование)
- 2. Тупики, типы ресурсов для изучения тупиковых ситуаций, необходимые условия возникновения тупиков, стратегии предотвращения тупиков (спо)
- 3. Стадии разработки новой сапр и программного обеспечения сапр. (сапр)
- 1. Планирование второго порядка. Типы планов, их особенности.
- 2. Стратегии управления памятью: стратегии вталкивания, стратегии размещения, стратегии выталкивания. (спо)
- 3. Основная функция сапр. Классификация объектов сапр. (сапр)
- 1. Задача оптимизации. Метод крутого восхождения (Бокса-Уилсона). (моделирование)
- 2. Файловая система, функции файловой системы, состав файловой системы, архитектура, примеры современных файловых систем. (спо)
- 3. Виды и назначение составляющих компонентов сапр. Аннотация. (сапр)
- 1. Оптимизация в условиях ограничений. (моделирование)
- 2. Иерархия памяти. Эволюция видов организации памяти. Особенности страничной, сегментной и сегментно-страничной организации памяти. (спо) Иерархия памяти
- Эволюция видов организации памяти
- Сегментация
- Страничная организация памяти
- Комбинированная сегментно-страничная организация памяти
- 3. Моделирование в сапр. Виды моделей. Применение.
- 1. Цифровые интегральные микросхемы. Серии интегральных микросхем. Параметры цифровых имс. (схемотехника)
- 2. Концепция файловых систем fat32 и ntfs: структура логического диска, возможности, преимущества. (спо)
- 3. Метод конечных элементов. Особенности р- и h-версий. Применение. (сапр)
- 1. Базовые логические элементы (блэ). Параметры и характеристики блэ. (схемотехника)
- 2. Стандартный интерфейс ieее-1284. (ипу)
- 3. Графические стандарты сапр. Уровни связи. Международные организации, устанавливающие стандарты. (сапр)
- 1. Основные типы (технологии) базовых логических элементов. Сравнительная характеристика серий ттл, ттлш, кмоп, эсл, иил (схемотехника)
- 2. Стандартный интерфейс rs-232c. (ипу)
- 3. Основные концепции графического программирования в сапр. Краткий обзор (сапр)
- 2. Шина расширения eisa. (ипу)
- 3. Виртуальная инженерия. Понятие. Компоненты. (сапр)
- 1. Комбинационные схемы: шинный формирователь, схема сравнения, сумматоры. (схемотехника)
- 1) Шинный формирователь
- Сумматор Сумматор (англ. – adder) – цифровой узел, вычисляющий код арифметической суммы входных кодов. Сумматор с последовательным переносом
- 2. Организация стандартной шины pci. (ипу)
- 3. Типы данных сапр, поддерживаемых субд. Классификация. (сапр)
- 1. Триггеры. Принцип действия основных типов триггеров. (схемотехника)
- 2. Вид и организация устройств памяти. Интерфейсы устройств памяти. (ипу)
- 3. Базы данных сапр. Особенности хранения и применения. (сапр)
- 1. Счётчики. Основные типы счётчиков. (схемотехника)
- 2) Организация стандартной шины pci (ипу)
- 2. Интерфейсы графических адаптеров и мониторов. (ипу)
- 3. Общие принципы построения вычислительных сетей. Состав сети, квалификация вычислительных сетей. Топологии сетей. (сети)
- 1. Постоянное запоминающее устройство (пзу). Характеристика основных типов пзу. (схемотехника)
- 2. Параллельный интерфейс нжмд ата и его последовательная модернизация Serial ata. (ипу)
- 3. Модель osi. Уровни модели osi. Функции, выполняемые уровнями. (сети)
- 1. Оперативное запоминающее устройство (озу). Статическое и динамическое озу. (схемотехника)
- 2. Функциональное устройство звуковой карты, интерфейс midi, электромузыкальный цифровой синтезатор. (ипу)
- Стандарт на аппаратуру и программное обеспечение
- 3. Система передачи данных в сети. Типы линий связи. Основные характеристики каналов связи. (сети)
- 1. Буферная память типа fifo ("очередь") и lifo ("магазин"). (схемотехника)
- 2. Структура центрального процессора. Основные блоки. (мпс)
- 3. Кодирование информации. Виды кодов. Самосинхронизирующиеся коды. (сети)
- 1. Базовый принцип конструирования и конструктивные модули. (ктоп)
- 2. Традиционная архитектура мпс по принципам фон Неймана. (мпс)
- 3. Способы доступа к сети. Метод доступа опроса/выбора. Маркерный метод доступа. (сети)
- 1. Показатели качества конструкции. (ктоп)
- 2. Система ввода-вывода. Последовательный порт. (мпс)
- 3. Технологии локальных сетей. Сравнить особенности технологий Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, fddi. Оборудование локальных сетей. (сети)
- 1. Влияние внешних факторов на работу эа и методы борьбы с ними. (ктоп)
- 2. Типы памяти микропроцессора. Подключение памяти. (мпс)
- 3. Технологии глобальных сетей X.25, Frame Relay, атм. Формат блока данных. Основные процедуры, используемые протоколы. (сети)