Тестирование программного обеспечения - основные понятия и определения
Тестирование программного обеспечения (Software Testing) - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. [IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004] В более широком смысле, тестирование - это одна из техник контроля качества, включающая активности по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).
Верификация (Verification) - это процесс оценки системы или ее компонентов с целью определения, удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа [IEEE]. То есть. выполняются ли наши цели, сроки, задачи разработки проекта, определенные в начале текущей фазы.
Валидация (Validation) - это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, требованиям к системе [BS7925-1].
План Тестирования (Test Plan) - это документ, описывающий весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков с вариантами их решения.
Тест дизайн (Test Design) - это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (тест кейсы), в соответствии с определенными ранее критериями качества и целей тестирования.
Тестовый случай (Test Case) - это артефакт, описывающий совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или ее части.
Баг/Дефект Репорт (Bug Report) - это документ, описывающий ситуацию или последовательность действий, приведшую к некорректной работе объекта тестирования, с указанием причин и ожидаемого результата.
Тестовое Покрытие (Test Coverage) - это одна из метрик оценки качества тестирования, представляющая собой плотность покрытия тестами требований или исполняемого кода.
Детализация Тест Кейсов (Test Case Specification) - это уровень детализации описания тестовых шагов и требуемого результата, при котором обеспечивается разумное соотношение времени прохождения к тестовому покрытию
Время прохождения Тест Кейса (Test Case Pass Time) - это время от начала прохождения шагов тест кейса до получения результата теста.
Усі види тестування програмного забезпечення, залежно від переслідуваних цілей, можна умовно розділити на такі групи:
функціональне тестування (functional testing);
дослідницьке тестування (exploratory testing);
тестування продуктивності (performance testing);
навантажувальне тестування (load testing);
димне тестування (smoke testing);
стрес-тестування (stress testing);
тестування стабільності (stability / endurance / soak testing);
тестування зручності використання (usability testing);
тестування інтерфейсу користувача (ui testing);
тестування безпеки (security testing);
тестування локалізації (localization testing);
тестування сумісності (compatibility testing).
функціональне тестування (functional);
нефункціональне тестування (non-functional);
тестування пов’язане зі змінами.
тестування чорної скриньки (black box);
тестування білої скриньки (white box);
тестування сірої скриньки (gray box).
ручне тестування (manual testing);
автоматизоване тестування (automated testing);
напівавтоматизоване тестування (semiautomated testing).
компонентне (модульне) тестування (component / unit testing);
інтеграційне тестування (integration testing);
системне тестування (system / end-to-end testing).
Альфа-тестування (alpha testing):
тестування нової функціональності (new feature testing);
регресійне тестування (regression testing);
тестування при здачі (acceptance testing);
Бета-тестування (beta testing).
позитивне тестування (positive testing);
негативне тестування (negative testing).
тестування за документацією (formal testing);
Ad Hoc Testing (інтуїтивне) тестування (ad hoc testing).
Функціональне тестування – один із видів тестування, спрямованого на перевірку відповідностей функціональних вимог ПЗ його реальним характеристикам. Основним завданням функціонального тестування є підтвердження того, що програмний продукт, який розробляється, володіє усім необхідним замовнику функціоналом.
Залежно від мети, функціональне тестування може проводитися:
На основі функціональних вимог, зазначених у специфікації вимог. При цьому для тестування створюються тестові випадки (test cases), створення яких враховує пріоритетність функцій ПЗ, які необхідно покрити тестами. Таким чином ми можемо переконатися в тому, що всі функції продукту, що розробляється, працюють коректно при різних типах вхідних даних, їх комбінацій, кількості і т.д.
На основі бізнес-процесів, які має забезпечити додаток. У цьому випадку, нас цікавить не так працездатність окремих функцій ПЗ, як коректність виконуваних операцій, з точки зору сценаріїв використання системи. Таким чином, тестування в даному випадку буде грунтуватися на варіантах використання системи (use cases).
Описані вище аспекти реалізуються за допомогою таких напрямків і рівнів тестування:
Модульного (компонентного).
Інтеграційного;
Системного;
Регресійного;
Приймального.
Та багатьох інших видів, які забезпечують повноцінне та всеохоплююче тестування функціональних вимог до ПЗ.