1.3 Анализ видов и методов тестирования
В настоящее время существует достаточно большое число методов
тестирования программного обеспечения.
При тестировании приложения, любой вид тестирования является
необходимым. Важно понимать, с какой целью выполняется тестирование и что
необходимо делать с полученным результатом. Если произвести тестирование и
при этом результат просто проигнорировать, то совершенно не было смысла
проводить тестирование, так как в таком случае это пустая трата времени и сил.
Стоит отметить, что любое тестирование включает в себя:
1. Планировка теста, здесь необходимо исходить из целей тестирования.
2. Проектирование теста, здесь необходимо разработать сами тесты, то
есть, скрипты, сценарии и т.д.
3. Воспроизведение теста, собственно выполнения задуманного, с
помощью средств которые заранее были подготовлены.
4. Анализ результатов, здесь необходимо установить, что необходимо в
дальнейшем делать с полученными результатами, и что необходимо сделать
для исправления.
К наиболее важным и основным методами тестирования относятся:
1. функциональное тестирование;
2. тестирование производительности;
3. тестирование безопасности;
4. тестирование удобства пользования (юзабилити-тестирование);
5. тестирование совместимости;
6. тестирование на восстановление.
При этом стоит, отметь, что это далеко не все методы тестирования, есть
так же и другие виды которые включают в себя достаточно большое количество
этих методов.
Эти самые виды и методы, не смотря на то, что не были описаны ранее,
являются не менее важными в любом процессе тестирования, виды и методы
продемонстрированы ниже на рисунке 1.8
18
Рисунок 1.5 – Классификация видов и методов тестирования
Стоит подчеркнуть, что одной из наиболее развитых классификаций
является по объекту тестирования. На рисунке так же указана данная
классификация. Именно в эту классификацию входит метод нагрузочного
19
тестирования, который будет рассматриваться. Классификация и методы
тестирования, которые в нее входят, указаны на рисунке 1.9
Рисунок 1.6 – Классификация по объекту тестирования
В этой связи можно выделить следующие виды тестирования, связанные
с этим:
1. Функциональное тестирование.
2. Нефункциональное тестирование.
Функциональное тестирование в наши дни является наиболее
приоритетным видом тестирования.
Задачей данного тестирования является установление соответствия
программного обеспечения требованиям заказчика с точки зрения
функциональности программного продукта.
Другими словами, проведение функциональных тестов позволяет
проверить
способность
информационной
системы
решать
задачи
пользователей.
20
Нефункциональное
тестирование
позволяет
оценить
работу
нефункциональных частей готового программного продукта.
Другими
словами,
нефункциональным
тестированием является
тестирование всех свойств программы, не относящихся к функциональности
системы. В качестве таких свойств можно выделить следующие
характеристики:
1. Производительность (способность системы работать на максимальных
нагрузках).
2. Удобство
(исследование
удобства
работы
пользователя
с
приложением).
3. Масштабируемость (возможность масштабировать приложение как
вертикально, так и горизонтально).
4. Безопасность (исследование ситуаций, при которых может быть
нарушена
работа
приложения
и
кража
персональных
данных
злоумышленниками).
5. Портируемость (возможность перенесения приложения на другие
платформы).
Другими видами нефункционального тестирования также являются:
1. Тестирование пользовательского интерфейса.
2. Тестирование удобства использования.
3. Тестирование безопасности.
4. Установочное тестирование.
5. Конфигурационное тестирование.
6. Тестирование надежности и восстановления после сбоев
7. Тестирование локализации.
8. Нагрузочное тестирование.
9. Тестирование стабильности.
10.
Объемное тестирование.
11.
Тестирование переносимости.
21
На основании этих данных рассматривается комплексное тестирование и
выявление необходимости проведения такого тестирования.
При выполнения работы основным условием заказчика, являлось уделить
наибольшее внимание тестированию производительность. В тестировании
производительности есть свои методологии тестирования такие как:
1. Нагрузочное (load).
2. Стресс (stress).
3. Тестирование стабильности (endurance or soak or stability).
4. Конфигурационное (configuration).
Так
же
возможно
несколько
подходов
при
тестировании
производительности программного обеспечения:
1. В термине рабочей нагрузки: программное обеспечение подвергается
тестированию по сценариям максимально приближенным к реальным
условиям.
2. В рамках, бета-тестирования, когда приложение подвергается
тестированию реальным пользователем.
1) Тестирование нагрузки представляется собой простую форму
тестирования производительности. Такое тестирование обычно выполняется с
целью оценки поведения приложения при различных вариациях и степенях
нагрузки. Такой нагрузкой может быть: большое число пользователей,
одновременно работающих с приложение, число каких либо транзакций,
совершаемое за определённый интервал времени. С помощью такого типа
тестирования чаще всего удаётся получить время отклика основных
транзакций. Если же проводить наблюдение за базой данных, сервером
приложения, сетью и т.п., то с помощью такого типа тестирования можно так
же выявить уязвимые места в приложении.
2) Стрессовое тестирование, такой тип используется в основном, для
установления пределов пропускной способности приложения. Он так же
необходим для определения надёжности системы во время экстремальных или
22
диспропорциональных нагрузок, и показывает результат производительности в
момент превышения текущий нагрузки ожидаемого максимума. 3)
3) Тестирование стабильности, такое тестирование позволит убедиться,
что приложение во время длительной работы сможет выдержать определенную
нагрузку. Во время тестирования, внимание уделяется потреблению ресурса
памяти, тестируемым приложением, это позволит обнаружить потенциальные
утечки. Так же с помощью такого типа тестирования можно выявить какую-
либо деградацию производительности, которая будет выражаться в
значительном снижении скорости обработки информации, а так же обнаружить
в процессе длительной работы приложения, с момента начала тестирования,
происходит ли увеличение времени ответа, после продолжительной работы по
сравнению с началом теста.
4) Конфигурационное тестирование, представляет собой еще один тип
тестирования производительности. Во время проведения такого тестирования,
производительность оценивается не со стороны повышения нагрузки, а
выявляется эффект влияния на изменения в конфигурации. Конфигурационное
тестирование, можно совмещать с другими типами тестирования
производительности: тестированием нагрузки, стрессоустойчивости и
стабильности.
В тестировании производительности есть так же свои определенные
принципы и экспериментальные факты, которые применяются при проведении
данного типа тестирования. Если рассматривать в целом, то применяются они
при тестировании производительности, к любому из типов тестирования, в
частности, к тестированию нагрузки.
Далее, необходимо рассмотреть, что же представляют собой принципы и
факты, которые применяются в тестирования производительности, поскольку
они будут являться важными аспектами при проведении данного вида
тестирования.
Принципы
и
экспериментальные
факты
тестирования
производительности:
23
1. Уникальность запросов.
Когда формируются сценарии работы с тестируемой системой,
основываясь на ее статистики, важно учесть факт того, что даже при самом
реалистично сформулированном сценарии, могут обнаружиться исключения.
2. Время отклика системы.
Такой показатель находится в подчинении у функции нормального
распределения. Под этим подразумевается, что при условии, достаточного
количества измерений, появляется возможность определения вероятности, с
которой отклик системы на запрос, будет попадать в какой-либо
фиксированный интервал времени.
3. Зависимости между временем отклика системы и степенью
распределённости системы.
Под этим подразумевается, что дисперсия нормального распределения
отклика системы на какой-либо запрос, будет пропорциональная отношению
числа узлов в системе, где запросы обрабатываются параллельно и количество
запросов которые приходятся на каждый узел
.
Под этим подразумевается, что
количество запросов, которые приходятся на каждый узел в системе, добавляют
случайную величину задержки, при обработке запросов, оказывают влияние на
разброс значений времени отклика.
4. Разброс времени отклика системы.
Исходя из вышеупомянутого утверждения, можно прийти к выводу, что
при наличии большого числа измерений, значений времени обработки запроса
в системе, всегда обнаружатся запросы, время обработки которых будет
превышать установленный требованиями максимум, при этом стоит заметить,
что новые максимумы будут выше, это будет обусловлено повышением
суммарного времени проведения эксперимента. При формировании требований
к производительности системы очень важно это учитывать, так же не менее
важно учесть это, при регулярном выполнении тестирования нагрузки.
5. Точность воспроизведения профилей нагрузки.
24
Если в системе содержится большое количество компонентов,
необходимая точность воспроизведения нагрузки будет обходиться дороже.
Как бывает в большинстве случаев, нет возможности, учесть все критерии
профиля нагрузки для сложных систем. Это обусловлено сложностью системы,
ведь от этого будет зависеть количество времени, затраченное на
проектирование, программирование и поддержку естественного профиля
нагрузки для этой системы, стоит отметить, что это не всегда является
необходимостью. В таком случае, оптимальный подход, будет обеспечиваться в
балансе между стоимостью разработки теста и покрытием функциональности
системы, вследствие чего, появиться возможность обнаружить допущения,
которые в значительной степени будут влиять на общую производительность, в
определенной части тестируемой системы.
Достарыңызбен бөлісу: |