Вопрос 9

Классификация тестирование ПО

Вопрос 8

Критерии качества программных средств.

Тестирование

Вопрос 7

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

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

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

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

С точки зрения ISO 9126, Качество (программных средств) можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

1. Надежность. Программа должна работать корректно даже при неверных данных.

2. Сопровождаемость. Комментирование.

3. Практичность. Программу должно быть выгодно использовать на практике.

4. Эффективность. От применения программы должен быть эффект. Она должна решать задачу быстро и правильно.

5. Мобильность. Программный код может быть перенесен на другую систему без значительных изменений.

6. Функциональность. Должна выполнять свои функции.

Более полный список атрибутов и критериев можно найти в стандарте ISO 9126 Международной организации по стандартизации. Состав и содержание документации, сопутствующей процессу тестирования, определяется стандартом IEEE 829-1998 Standard for Software Test Documentation.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i. Тестирование при приёмке (smoke testing)

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

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

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

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

6. По признаку позитивности сценариев:

a. Позитивное тестирование (positive testing)

b. Негативное тестирование (negative testing)

7. По степени подготовленности к тестированию:

a. Тестирование по документации (formal testing)

b. Тестирование ad hoc или интуитивное тестирование (ad hoc testing)