Виды тестирования ПО
Тестирование ПО
Тестирование ПО
Тестирование ПО
Тестирование ПО
Тестирование ПО
Функциональный подход
Функциональный подход
Другие виды тестирования ПО
Завершение тестирования
Завершение тестирования
Задание
Вопросы
636.50K

Виды тестирования ПО. Тестирование ПО

1. Виды тестирования ПО

Занятие 11

2. Тестирование ПО

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

3. Тестирование ПО

Современные технологии разработки ПО предусматривают раннее
обнаружение ошибок за счет выполнения контроля результатов всех
этапов и стадий разработки.
На начальных этапах такой контроль осуществляют в основном вручную
или с использованием CASE-средств, на последних - он принимает форму
тестирования.
Тестирование - это процесс выполнения программы, целью которого
является выявление ошибок.
Никакое тестирование не может доказать отсутствие ошибок в хоть
сколько-нибудь сложном ПО. Для такого программного обеспечения
выполнение полного тестирования, т. е. задания всех возможных
комбинаций исходных данных, становится невозможным, а
следовательно, всегда имеется вероятность того, что в программе
остались невыявленные ошибки.
Однако соблюдение основных правил тестирования и обоснованный
подбор тестов может уменьшить количество ошибок.
3

4. Тестирование ПО

Примечание.
Обычно на вопрос о цели тестирования начинающие программисты
отвечают, что целью тестирования является «доказательство
правильности программы».
Это неверное мнение.
В своей книге Г. Майерс предлагает аналогию для пояснения этого положения.
Представьте себе, что вы пришли на прием к врачу и пожаловались на боль в боку. Врач
выслушал вас и направил на обследование. Через некоторое время вы возвращаетесь к врачу
с ворохом заключений и результатов анализов, и во всех этих бумагах написано, что все
исследуемые параметры у вас в норме.
Но бок то болит, значит, что-то не в порядке, хотя анализы этого и не показывают...
Сложное программное обеспечение, безошибочно работающее на
всех тестовых наборах, может содержать и обычно содержит
некоторое количество ошибок.
4

5. Тестирование ПО

Процесс разработки ПО в том виде, как он определяется в современной
модели жизненного цикла ПО, предполагает три стадии тестирования:
• автономное тестирование компонентов программного обеспечения;
• комплексное тестирование ПО;
• системное или оценочное тестирование на соответствие основным
критериям качества.
Для повышения качества тестирования рекомендуется соблюдать
следующие основные принципы:
• предполагаемые результаты должны быть известны до тестирования;
• следует избегать тестирования программы автором;
• необходимо досконально изучать результаты каждого теста;
• необходимо проверять действия программы на неверных данных;
• необходимо проверять программу на неожиданные побочные эффекты
на неверных данных.
Следует также иметь в виду, что вероятность наличия необнаруженных
ошибок в определенной части программы пропорционально
количеству ошибок уже найденных в этой части.
5

6. Тестирование ПО

Формирование набора тестов имеет большое значение, поскольку
тестирование является одним из наиболее трудоемких этапов
(от 30 до 60% общей трудоемкости) создания программного продукта.
Необходимо подбирать такие наборы тестов, каждый из которых с
максимальной вероятностью может обнаружить ошибку.
Существуют два принципиально различных подхода к формированию
тестовых наборов:.
• Структурный подход базируется на том, что известна структура
тестируемого ПО, в том числе его алгоритмы («стеклянный ящик»).
В этом случае тесты строят так, чтобы проверить правильность
реализации заданной логики в коде программы.
• Функциональный подход основывается на том, что структура
программного обеспечения неизвестна («черный ящик»),
В этом случае тесты строят, опираясь на функциональные
спецификации. Этот подход называют также подходом, управляемым
данными, так как при его использовании тесты строят на базе
различных способов декомпозиции множества данных.
6

7. Функциональный подход

Рассмотрим подробнее функциональный подход.
Известно: входные данные и соответствующие выходные данные
(на основе ТЗ и спецификаций).
Исследуется: поведение программы при решении возложенных на нее
функциональных задач.
Составление тестов предполагает получение:
• наборов входных данных, которые приводят к аномалиям поведения;
• наборов выходных данных, которые демонстрируют дефекты.
Целевые категории ошибок:
• некорректные или отсутствующие функции;
• ошибки интерфейса;
• ошибки во внешних структурах данных или в доступе к базе данных;
• ошибки характеристик (необходимая емкость памяти и т. д.);
• ошибки инициализации и завершения.
7

8. Функциональный подход

Основные правила анализа граничных значений:
1. Если условие ввода задает диапазон m...n, то тестовые варианты
должны быть построены:
• для значений m и n;
• для значений чуть левее n и чуть правее m на числовой оси.
2. Если условие ввода задает дискретное множество значений, то
создаются тестовые варианты:
• для проверки минимального и максимального из значений;
• для значений чуть меньше минимума и чуть больше максимума.
3. Если внутренние структуры данных программы имеют
предписанные границы, то разрабатываются тестовые варианты,
проверяющие эти структуры на их границах.
4. Если входные или выходные данные программы являются
упорядоченными множествами (например, последовательным
файлом, линейным списком, таблицей), то тестируется обработка
первого и последнего элементов этих множеств.
8

9. Другие виды тестирования ПО

Интеграционное тестирование (тестирование интеграции).
• Объект тестирования – сборка программной системы.
Цель – проверка корректности сборки модулей в программную систему.
Основной способ тестирования – функциональное.
• Конкретный объект тестирования – межмодульные интерфейсы.
• Основные ошибки:
• потеря данных при прохождении интерфейса;
• отсутствие необходимого вызова;
• влияние одного модуля на другой (недопустимое сцепление);
• композиция подфункций не дает нужную функцию;
• некорректная работа с глобальными данными.
Ручной контроль ПО (ручное тестирование) способствует
существенному увеличению производительности и повышению
надежности программ.
Автоматизированное тестирование – разработка программ для поверки
других программ. Применяется для тестирования неизменного блока
системы, при добавлении нового функционала в систему.
9

10. Завершение тестирования

Поскольку невозможно гарантировать, что в разрабатываемом ПО
не осталось ошибок возникает вопрос:
Когда следует завершать тестирование?
Предложено много критериев, их можно разделить на группы:
• Критерии, основанные на методологиях проектирования тестов –
когда определенное количество тестов, полученных по методам
анализа причинно-следственных связей, анализа граничных значений и
предположений об ошибках, перестает выявлять ошибки.
• Критерии основанные на оценке возможного количества ошибок количество ошибок оценивают экспертно, или по специальным
методикам, а затем завершают тестирование при нахождении
примерно 93-95% ошибок.
10

11. Завершение тестирования

Часто тестирование завершают потому, что закончилось время,
отведенное на выполнение данного этапа.
Минимальное тестирование предполагает:
• тестирование граничных значений;
• тщательную проверку документации;
• тестирование минимальных конфигураций технических средств;
• тестирование возможности выполнения команд (функций) и повторения
их в любой последовательности;
• тестирование устойчивости к ошибкам пользователя.
Часть ошибок при этом остаются неисправленными «отложенными» до
выпуска следующей версии.
11

12. Задание

1. Протестировать простое веб-приложение (см. файл с заданием).
2. Сделать выводы и составить отчет.
3. Если выполнить задание №2, можно по нему подготовить презентацию
и выступить (по желанию).
12

13. Вопросы

www.roschinsm.ru
English     Русский Правила