Лекция №7. Тестирование программного обеспечения




Скачать 47.98 Kb.
Дата02.08.2016
Размер47.98 Kb.
Лекция №7.

Тестирование программного обеспечения

Тестирование программного обеспечения — процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.
Тестирование программного обеспечения

Существует несколько признаков, по которым принято производить классификацию видов тестирования. Обычно выделяют следующие:


По объекту тестирования:

  • Функциональное тестирование (functional testing)

  • Тестирование производительности (performance testing)

    • Нагрузочное тестирование (load testing)

    • Стресс-тестирование (stress testing)

    • Тестирование стабильности (stability / endurance / soak testing)

  • Юзабилити-тестирование (usability testing)

  • Тестирование интерфейса пользователя (UI testing)

  • Тестирование безопасности (security testing)

  • Тестирование локализации (localization testing)

  • Тестирование совместимости (compatibility testing)


Функциональное тестирование — это тестирование ПО в целях проверки реализуемости функциональных требований, то есть способности ПО в определённых условиях решать задачи, нужные пользователям. Функциональные требования определяют, что именно делает ПО, какие задачи оно решает.

Функциональные требования включают в себя:

Функциональная пригодность (англ. suitability).

Точность (англ. accuracy).

Способность к взаимодействию (англ. interoperability).

Соответствие стандартам и правилам (англ. compliance).

Защищённость (англ. security).
Основные показатели (метрики) производительности

1. Потребление ресурсов центрального процессора (CPU, %)

2. Потребление оперативной памяти (Memory usage, Mb)

3. Потребление сетевых ресурсов

4. Работа с дисковой подсистемой (I/O Wait)

5. Время выполнения запроса (request response time, ms)
Тестирование безопасности — оценка уязвимости программного обеспечения к различным атакам.

В ходе тестирования безопасности испытатель играет роль взломщика. Ему разрешено все:



При неограниченном времени и ресурсах хорошее тестирование безопасности взломает любую систему. Задача проектировщика системы — сделать цену проникновения более высокой, чем цена получаемой в результате информации.
Тестирование совместимости (англ. compatibility testing) — вид нефункционального тестирования, основной целью которого является проверка корректной работы продукта в определенном окружении. Окружение может включать в себя следующие элементы:

  • Аппаратная платформа;

  • Сетевые устройства;

  • Периферия (принтеры, CD/DVD-приводы, веб-камеры и пр.);

  • Операционная система (Unix, Windows, MacOS, ...)

  • Базы данных (Oracle, MS SQL, MySQL, ...)

  • Системное программное обеспечение (веб-сервер, файрвол, антивирус, ...)

  • Браузеры (Internet Explorer, Firefox, Opera, Chrome, Safari)


По знанию системы:

  • Тестирование чёрного ящика (black box)

  • Тестирование белого ящика (white box)

  • Тестирование серого ящика (grey box)


По степени автоматизации:

  • Ручное тестирование (manual testing)

  • Автоматизированное тестирование (automated testing)

  • Полуавтоматизированное тестирование (semiautomated testing)


По степени изолированности компонентов:

  • Компонентное (модульное) тестирование (component/unit testing)

  • Интеграционное тестирование (integration testing)

  • Системное тестирование (system/end-to-end testing)


Модульное тестирование, или юнит-тестирование (англ. unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.

Этот тип тестирования обычно выполняется программистами.


Интеграционное тестирование (англ. Integration testing, иногда называется англ. Integration and Testing, аббревиатура англ. I&T) — одна из фаз тестирования программного обеспечения, при которой отдельные программные модули объединяются и тестируются в группе. Обычно интеграционное тестирование проводится после модульного тестирования и предшествует системному тестированию.
Системное тестирование программного обеспечения — это тестирование программного обеспечения (ПО), выполняемое на полной, интегрированной системе, с целью проверки соответствия системы исходным требованиям. Системное тестирование относится к методам тестирования чёрного ящика, и, тем самым, не требует знаний о внутреннем устройстве системы.

Альфа-тестирование и бета-тестирование являются подкатегориями системного тестирования.


По времени проведения тестирования:

  • Альфа-тестирование (alpha testing)

    • Дымовое тестирование (smoke testing)

    • Тестирование новой функциональности (new feature testing)

    • Регрессионное тестирование (regression testing)

    • Тестирование при сдаче (acceptance testing)

  • Бета-тестирование (beta testing)


Регрессионное тестирование (англ. regression testing, от лат. regressio — движение назад) — собирательное название для всех видов тестирования программного обеспечения, направленных на обнаружение ошибок в уже протестированных участках исходного кода. Такие ошибки — когда после внесения изменений в программу перестает работать то, что должно было продолжать работать, — называют регрессионными ошибками (англ. regression bugs).

Регрессионное тестирование является неотъемлемой частью экстремального программирования. В этой методологии проектная документация заменяется на расширяемое, повторяемое и автоматизированное тестирование всего программного пакета на каждой стадии процесса разработки программного обеспечения.

Регрессионное тестирование может быть использовано не только для проверки корректности программы, часто оно также используется для оценки качества полученного результата. Так, при разработке компилятора, при прогоне регрессионных тестов рассматривается размер получаемого кода, скорость его выполнения и время компиляции каждого из тестовых примеров.
Покрытие кода — мера, используемая при тестировании программного обеспечения. Она показывает процент, насколько исходный код программы был протестирован.

Техника покрытия кода была одной из первых методик, изобретённых для систематического тестирования программного обеспечения. Первое упоминание покрытия кода в публикациях появилось в 1963 году


Критерии

Существует несколько различных способов измерения покрытия, основные из них:



  • покрытие операторов — каждая ли строка исходного кода была выполнена и протестирована;

  • покрытие условий — каждая ли точка решения (вычисления истинно ли или ложно выражение) была выполнена и протестирована;

  • покрытие путей — все ли возможные пути через заданную часть кода были выполнены и протестированы;

  • покрытие функций — каждая ли функция программы была выполнена;

  • покрытие вход/выход — все ли вызовы функций и возвраты из них были выполнены.

  • покрытие значений параметров — все ли типовые и граничные значения параметров были проверены.


База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница