В учебных программах по дисциплине "Обеспечение качества и тестирование программ" есть вопрос:
"Виды тестирования. Классификация по объекту тестирования, по уровню доступа к компонентам системы, по степени автоматизации, по степени изолированности компонентов, по фазе проведения тестирования, по признаку позитивности сценариев, по степени подготовки к тестированию".
В программе обучения базового уровня International Software Testing Qualifications Board "Сертифицированный тестировщик" указано на необходимость:
"Сравнить различные уровни тестирования: типичные объекты тестирования, цели различных видов тестирования (например, функционального или структурного) и работы, связанные с ними, тестировщиков, типы дефектов, которые могут быть найдены" и "Сравнить четыре типа тестирования (функциональное, нефункциональное. структурное и тестирование вносимых изменений). Привести примеры".
Прошелся по доступной литературе и составил конспект, который содержит различные классификации видов тестирования без углубления в подробности по каждому виду тестирования. То есть упора на терминалогический аппарат не будет. Упор на терминологию для каждого вида тестирования буду публиковать в отдельных конспектах.
«Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах», Роман Савин, Москва, Дело, 2007. 104 страница:
По знанию внутренностей системы:
- черный ящик (black box testing);
- серый ящик (grey box testing);
- белый ящик (white box testing).
По объекту тестирования:
- функциональное тестирование (functional testing);
- тестирование интерфейса пользователя (UI testing);
- тестирование локализации (localization testing);
- тестирование скорости и надежности (load/stress/perfor- mance testing);
- тестирование безопасности (security testing);
- тестирование опыта пользователя (usability testing);
- тестирование совместимости (compatibility testing).
По субъекту тестирования:
- альфа-тестировщик (alpha tester);
- бета-тестировщик (beta tester).
По времени проведения тестирования до передачи пользователю:
- альфа-тестирование (alpha- testing);
- тест приемки (smoke test, sanity test или confidence test);
- тестирование новых функциональностей (new feature testing);
- регрессивное тестирование (regression testing);
- тест сдачи (acceptance or certification test);
По времени проведения тестирования после передачи пользователю
- бета-тестирование (beta testing).
Покритерию "позитивности" сценариев:
- позитивное тестирование (positive testing);
- негативное тестирование (negative testing).
По степени изолированности тестируемых компонентов:
- компонентное тестирование (component testing);
- интеграционное тестирование (integration testing);
- системное (или энд-ту-энд) тестирование (system or end- to-end testing).
По степени автоматизированности тестирования:
- ручное тестирование (manual testing);
- автоматизированное тестирование (automated testing);
- смешанное/полуавтоматизированное тестирование (semi automated testing).
По степени подготовки к тестированию:
- тестирование по документации (formal/documented testing);
- эд хок-тестирование (ad hoc testing).
IEEE Standard for Software and System Test Documentation, IEEE Std 829-2008. 90-91 страницы:
Table D.1 ⎯ Optional Testing Tasks and suggested applications.
«Сертифицированный тестировщик Программа обучения Базового уровня», версия 2011 от 13 апреля 2011 года, International Software Testing Qualifications Board, Андрей Конушин (председатель), Александр Александров, Алексей Александров, Татьяна Смехнова, Елена Абрамова. 35-38/101 страница:
Типы тестирования определяются целями тестирования, которые могут быть следующими:
- Функция, выполняемая программой (Функциональное тестирование).
- Нефункциональная характеристика качества, такая как надежность или удобство использования (Нефункциональное тестирование).
- Структура или архитектура программы или системы (Структурное тестирование).
- Подтверждение изменений, т.е. подтверждение, что дефект был исправлен (подтверждающее тестирование) и поиск непреднамеренных изменений (регрессионное тестирование).
Модель программного обеспечения может быть разработана и\или использована во время структурного (например, модель потока управления или модель структуры меню), нефункционального тестирования например, модель нагрузки, модель удобства использования, модель угроз безопасности) и функционального тестирования (например, модель бизнес-процессов, модель переходов состояний или спецификация не естественном языке).
«Основы программной инженерии (по SWEBOK). Программная инженерия. Тестирование программного обеспечения» на базе IEEE Guide to SWEBOK® 2004, Сергей Орлик, 06-11 страницы:
2.1. Над чем производятся тесты (The target of the test) Тестирование обычно производится на протяжении всей разработки и сопровождения на разных уровнях. Уровень тестирования определяет “над чем” производятся тесты: над отдельным модулем, группой модулей или системой, в целом. При этом ни один из уровней тестирования не может считаться приоритетным. Важны все уровни тестирования, вне зависимости от используемых моделей и методологий.
- Модульное тестирование (Unit testing).
- Интеграционное тестирование (Integration testing).
- Системное тестирование (System testing).
2.2. Цели тестирования (Objectivies of Testing) Тестирование проводится в соответствии с определенными целями (могут быть заданы явно или неявно) и различным уровнем точности. Определение цели точным образом, выражаемым количественно, позволяет обеспечить контроль результатов тестирования.
Тестовые сценарии могут разрабатываться как для проверки функциональных требований (известны как функциональные тесты), так и для оценки нефункциональных требований. При этом, существуют такие тесты, когда количественные параметры и результаты тестов могут лишь опосредованно говорить об удовлетворении целям тестирования (например, “usability” – легкость, простота использования, в большинстве случаев, не может быть явно описана количественными характеристиками). Можно выделить следующие, наиболее распространенные и обоснованные цели (а, соответственно, виды) тестирования:
- Приемочное тестирование (Acceptance/qualification testing).
- Установочное тестирование (Installation testing).
- Альфа- и бета-тестирование (Alpha and beta testing).
- Функциональные тесты/тесты соответствия (Conformance testing/Functional testing/Correctness testing).
- Регрессионное тестирование (Regression testing).
- Тестирование производительности (Performance testing).
- Нагрузочное тестирование (Stress testing).
- Сравнительное тестирование (Back-to-back testing).
- Восстановительные тесты (Recovery testing).
- Конфигурационное тестирование (Configuration testing).
- Тестирование удобства и простоты использования (Usability testing).
3.1. Техники, базирующиеся на интуиции и опыте инженера (Based on the software engineer’s intuition and experience)
- Специализированное тестирование (Ad hoc testing).
- Исследовательское тестирование (Exploratory testing).
3.6 Техники, базирующиеся на природе приложения (Techniques based on the nature of the application) Описанные выше техники могут применяться к любым типам программных систем. В то же время, в зависимости от технологической или архитектурной природы приложений, могут также применять специфические техники, важные именно для заданного типа приложения. Среди таких техник:
- Объектно-ориентированное тестирование.
- Компонентно-ориентированное тестирование.
- Web-ориентированное тестирование.
- Тестирование на соответствие протоколам.
- Тестирование систем реального времени.
3.7 Выбор и комбинация различных техник (Selecting and combining techniques)
- Функциональное и структурное (Functional and structural). Техники тестирования, строящиеся на основе спецификаций или кода часто называют функциональными или структурными, соответственно. Оба подхода не должны противопоставляться, но дополнять друг друга.
Еще предстоит изучить следующие источники для пополнения конспекта:
08.05.2017