Тестирование Flashcards
Что такое тестирование?
Проверка продукта на соответствие требованиям.
Тестирование - процесс в рамках жизненного цикла разработки программного обеспечения, который оценивает качество компонента или системы, а также связанных с ними рабочих продуктов. [ISTQB Glossary]
Тестирование программного обеспечения — процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта. [Святослав Куликов]
Тестирование ПО — проверка соответствия между реальным и ожидаемым поведением программы [Что-то из интернета]
Контроль качества (QC) - набор действий, предназначенных для оценивания качества компонента или системы. [ISTQB Glossary]
Обеспечение качества (QA) - активности, направленные на обеспечение уверенности в том, что требования к качеству будут выполнены [ISTQB Glossary]
Давайте разберемся на примере создания мобильного приложения, потому что определения не всегда отражают суть:
- В рамках тестирования мы выполним проверки и задокументируем дефекты, убедимся, что продукт соответствует требованиям.
- В рамках контроля качества мы проанализируем полученные данные и убедимся, что соблюдены все требования, предъявляемые к качеству как продукта, так и самого процесса. Мы должны убедиться, что уровень качества нашего продукта высокий и он готов к релизу.
- В рамках обеспечения качества мы формируем процесс QA для соответствия стандартам качества на всех этапах SDLC, еще до этапа создания нашего продукта, который будет минимизировать количество дефектов и предупреждать их.
Основные отличия процессов:
- Контроль качества и тестирование (как его часть) направлены на продукт, а обеспечение качества на процесс.
- Тестирование и контроль качества являются контролирующими мерами, а обеспечение качества - превентивными, или предупреждающими.
Зачем тестировать ПО?
- Проверка на соответствие требованиям
- Выявление ошибок в коде и требованиях
- Предоставление актуальной информации о состоянии продукта на данный момент.
Какие этапы тестирования?
- Общее планирование и анализ требований
- Уточнение критериев приемки
- Уточнение стратегии тестирования
- Разработка тест-кейсов
- Выполнение тест-кейсов
- Фиксация найденных дефектов
- Анализ результатов тестирования
- Отчетность
Русов
Какие типы тестирования вы можете назвать?
- На основе тест-кейсов
- Исследовательское тестирование
- Свободное тестирование (ad hoc)
- Регрессионное (Regression testing)
- Тест работоспособности (Sanity testing)
- Дымовое (Smoke testing)
- Позитивные
- Негативные
- Статическое
- Динамическое
- Black box
- Grey box
- White box
- Компонентное
- Интеграционное
- Системное
- Ручное
- Автоматизированное
- Полуавтоматизированное
- Альфа-тестирование
- Бета-тестирование
- По доступности кода:
- Black box
- Grey box
- White box
- По исполнению кода
- Статическое
- Динамическое
- По степени формализации
- На основе тест-кейсов
- Исследовательское тестирование
- Свободное тестирование (ad hoc)
- По уровням тестирования
- Компонентное
- Интеграционное
- Системное
- По позитивности
- Позитивные
- Негативные
- По степени автоматизации
- Ручное
- Автоматизированное
- Полуавтоматизированное
- Связанное с изменениями:
- Регрессионное (Regression testing)
- Тест работоспособности (Sanity testing)
- Дымовое (Smoke testing)
- По исполнителям
- Альфа-тестирование
- Бета-тестирование
- По целям и задачам
- Инсталляционное
- Usability (удобства использования)
- Доступности (accessibility testing, A11Y)
- Безопасности
- Интернационализации (internationalization testing, i18n testing, globalization testing, localizability testing)
- Локализации (localization testing, l10n)
- Совместимости (compatibility testing, interoperability testing)
- Надёжности (reliability testing)
- Восстанавливаемости (recoverability testing)
- Отказоустойчивости (failover testing)
- Производительности (performance testing)
- Нагрузочное тестирование (load testing, capacity testing)
- Тестирование масштабируемости (scalability testing)
- Объёмное тестирование (volume testing)
- Стрессовое тестирование (stress testing)
- Конкурентное тестирование (concurrency testing)
Какие уровни тестирования знаете?
- Модульное
- Интеграционное
- Системное
- Приёмочное
Модульное тестирование (Unit Testing)
Это процесс проверки отдельных компонентов программного обеспечения, таких как функции, методы или классы. Цель этого уровня тестирования — убедиться, что каждый отдельный компонент работает корректно в изоляции от остальной части системы.
Пример: Проверка функции сложения в программе калькулятора.
Интеграционное тестирование (Integration Testing)
На нем проверяется взаимодействие между различными модулями или компонентами системы. Цель интеграционного тестирования — обнаружить дефекты в взаимодействии и передаче данных между различными частями программы.
Пример: Проверка того, как модуль калькулятора обрабатывает данные, полученные от пользовательского интерфейса.
Системное тестирование (System Testing)
Проверяется вся система в целом. Системное тестирование направлено на выявление дефектов в комплексе, включая требования к функциональности, надёжности, производительности и безопасности.
Пример: Тестирование веб-приложения в различных браузерах и на разных устройствах.
Приемочное тестирование (Acceptance Testing)
Это финальный этап тестирования, на котором проверяется, соответствует ли программа ожиданиям и требованиям конечных пользователей.
Пример: Бета-тестирование программы с участием реальных пользователей.
Какие техники тест-дизайна знаете?
- Эквивалентное разбиение
- Граничные значения
- Попарное тестирование
- Таблицы решений
- Тестирование переходов состояний
- Предугадывание ошибки
Что такое техника анализа классов эквивалентности?
Техника при которой разделяются все возможные входные данные на группы или классы таким образом, чтобы все значения внутри одного класса считались эквивалентными.
Принципы:
- Определение эквивалентных классов: Входные данные или условия тестирования разделяют на классы, внутри которых система должна вести себя одинаково. Эти классы могут быть как допустимыми (валидными), так и недопустимыми (невалидными).
- Выбор представителей: Для каждого эквивалентного класса выбирается хотя бы один представитель (тестовый случай), который будет использован в тестировании.
- Тестирование: Проводится тестирование на основе выбранных представителей каждого класса. Результаты тестирования для представителя класса экстраполируются на весь класс.
Что такое техника анализа граничных значений?
В чем ценность этой техники?
Суть: Проверяются все значения на границах эквивалентных классов
Метод анализа граничных значений является продолжением метода эквивалентного разбиения, но может быть применим, только если классы состоят из упорядоченных числовых значений. Максимальное и минимальное значение класса являются его границами [Beizer 1990]. Некорректное поведение более вероятно на границах класса, чем внутри класса. [ISTQB CTFL Syllabus 2018]
Почему она важна:
- Высокая эффективность: большое количество ошибок с минимальным количеством тестов.
- Экономия времени и ресурсов: Сосредоточение усилий на наиболее вероятных местах возникновения ошибок - сокращает время на тестирование и оптимизирует использование ресурсов.
- Улучшение качества продукта: Гарантия корректной обратоки данных на границах значений
Что такое Regression и Confirmation тестирования, какая между ними разница?
Краткая суть: проверка уже протестированного функционала для того, чтобы убедиться, что при внесении изменений ничего не поломалось
Повторное/Подтверждающее тестирование (re-testing/confirmation testing) - тестирование, во время которого исполняются тестовые сценарии, выявившие ошибки во время последнего запуска, для подтверждения успешности исправления этих ошибок.
Регрессионное тестирование (regression testing) - тестирование уже протестированной программы после модификации для уверенности в том, что процесс модификации не внес или не активизировал ошибки в областях, не подвергавшихся изменениям. Проводится после изменений в коде ПО или его окружения.
Как часто следует проводить регрессионное тестирование продукта?
При каждом изменении в системе.
Какие виды интеграционного тестирования?
- Big bang - все компоненты приложения тестируются сразу после того, как они были разработаны, без поэтапного интегрирования. Этот подход обычно используется в небольших проектах.
-
Инкрементное тестирование - разработка приложения разбивается на отдельные этапы, после завершения каждого из которых происходит интеграция уже готовых компонентов. Этот подход позволяет обнаруживать проблемы на ранних этапах и быстрее реагировать на изменения в требованиях.
- Нисходящий подход
- Восходящий подход
- Гибридный подход
Снизу вверх (Bottom Up Integration). Все низкоуровневые модули, процедуры или функции собираются воедино и затем тестируются. После чего собирается следующий уровень модулей для проведения интеграционного тестирования. Данный подход считается полезным, если все или практически все модули, разрабатываемого уровня, готовы. Также данный подход помогает определить по результатам тестирования уровень готовности приложения.
Сверху вниз (Top Down Integration). Вначале тестируются все высокоуровневые модули, и постепенно один за другим добавляются низкоуровневые. Все модули более низкого уровня симулируются заглушками с аналогичной функциональностью, затем по мере готовности они заменяются реальными активными компонентами. Таким образом мы проводим тестирование сверху вниз.
Что такое Configuration Testing?
Краткая суть:
Тестирование различных конфигураций системы - железа, драйверов, операционных систем
Конфигурационное тестирование (configuration testing) - тестирование, направленное на проверку работы ПО при различных конфигурациях системы (заявленных платформах, поддерживаемых драйверах, при различных конфигурациях компьютеров и системного ПО и т.д.).
Что такое Exploratory Testing?
Краткая суть: неформальный метод, где проектирование тестов и тестирование происходит в реальном времени. Полученная информация в ходе тестирования используется для проектирования новых и улучшенных тестов
Неформальный метод, при котором тестировщик активно контролирует проектирование тестов, в то время как эти тесты выполняются, и использует полученную информацию для проектирования новых улучшенных тестов. Такое тестирование определяется как одновременное обучение, проектирование теста и его исполнение.
Какие существуют стандарты UI?
- Material Design
- Apple Human Interface Guidelines
- Microsoft Design Language
- Bootstrap
- Materialize
Что такое Black/Grey/White Box Testing?
Краткая суть:
- Черный ящик: Нет доступа ко внутренней структуре приложения и коду. Тестирование проводится с точки зрения конечного пользователя.
- Белый ящик: Основывается на внутренней структуре системы или ее реализации (код, архитектура, принципы работы и\или потоки данных внутри системы)
- Серый ящик: доступ к базам данных, архитектурным схемам и документации API.
Тестирование белого ящика (white box testing) - тестирование, основанное на анализе внутренней структуры компонента или системы и на знании исходного кода, к которому тестировщик (как правило, это программист) имеет полный доступ.
Тестирование серого ящика (gray box testing) - тестирование, ориентированное на имитацию работы пользователей, в условиях, когда часть внутренней структуры программы известна.
Тестирование чёрного ящика (black box testing) - тестирование, основанное на анализе функциональной или нефункциональной спецификации системы, при котором программа рассматривается как объект, внутренняя структура которого неизвестна.
Что такое Performance Testing?
Краткая суть: проверка поведения системы при рабочей нагрузке: скорость, время отклика, стабильность, надежность, мастштабируемость и использование ресурсов ПО при определенной рабочей нагрузке.
Тестирование производительности (performance testing) - определение степени, с которой система выполняет заложенные в нее функции в установленных рамках на время обработки и пропускную способность. Достаточно часто при тестировании производительности проверяется сразу несколько его подвидов.
Что такое Smoke и Sanity тестирование и какая между ними разница?
Smoke - проверка стабильности билда, что он вообще работает
Sanity - более глубокая проверка важного функционала
Что такое Traceability Matrix?
Краткая суть:
Таблица для отслеживания взаимосвязей между требованиями проекта и выполненной по ним работе. (Учёт реализации требований)
Матрица соответствия требований (traceability matrix) — двумерная таблица, содержащая соответсвие функциональных требований (functional requirements) продукта и подготовленных тестовых сценариев (test cases).
В заголовках колонок таблицы расположены требования, а в заголовках строк — тестовые сценарии. На пересечении — отметка, означающая, что требование текущей колонки покрыто тестовым сценарием текущей строки.
Матрица соответсвия требований используется QA-инженерами для валидации покрытия продукта тестами. МСТ является неотъемлемой частью тест-плана.
Что такое Sanity Testing?
Sanity - подвид регрессионного тестирования, используется на более стабильных билдах для определения работоспособности определенной части приложения после внесения изменений.
Тест работоспособности (sanity test): См. тест “на дым”. (ISTQB)
Другие источники:
Sanity testing также является подмножеством регрессионного тестирования и выполняется до или вместо полной регрессии, но после smoke. Эти два подвида похожи, но в целом Sanity используется на более стабильных билдах для определения работоспособности определенной части приложения после внесения изменений.
Примечание. Санитарным это тестирование в русскоязычной среде назвалось по совершенно непонятным причинам, но гуглится только так. На самом же деле дословно переводится как тестирование на вменяемость / разумность / работоспособность / согласованность или по версии ISTQB “Тест работоспособности”.
Sanity тестирование (от англ. “sanity” — “здравомыслие”) — это вид тестирования, который проводится для подтверждения того, что после внесения небольших изменений или исправлений в программный продукт основные функции по-прежнему работают корректно. Этот тип тестирования обычно выполняется в конце тестового цикла и перед выпуском продукта для убеждения в том, что внесенные изменения не привели к возникновению новых критических ошибок в уже проверенных и работающих частях программы.
Данное тестирование часто путают с Smoke тестированием, но между ними есть различия. Smoke тестирование выполняется для проверки стабильности и работоспособности всего программного продукта или его ключевых компонентов и обычно проводится в начале тестового цикла. В то время как Sanity фокусируется на конкретных функциях или изменениях, которые были внесены в программный продукт, и проводится для подтверждения того, что эти последние изменения не нарушили основную функциональность.
Пример:
Допустим, команда разработки вносит изменения в модуль регистрации пользователей в веб-приложении. После внесения изменений QA инженер проводит Sanity тестирование этого модуля, чтобы убедиться, что регистрация по-прежнему работает корректно: пользователь может зарегистрироваться, получить подтверждение регистрации и войти в систему используя новые учетные данные.
Цели:
- Быстрая проверка: Убедиться, что после небольших изменений или исправлений в программном продукте не возникло критических проблем.
- Сосредоточение на изменениях: Проверка только тех аспектов программного продукта, которые подверглись изменениям, без проведения глубокого и всеобъемлющего тестирования.
- Экономия времени и ресурсов: Позволяет быстро оценить влияние внесенных изменений, не тратя время на полный цикл тестирования.
- Такое тестирование является важной частью процесса обеспечения качества программного продукта, так как оно позволяет быстро и эффективно подтвердить, что внесенные изменения не повлияли негативно на уже проверенную и работающую функциональность. Этот тип тестирования особенно полезен в условиях ограниченного времени и ресурсов, когда необходимо сделать быструю проверку перед выпуском продукта или передачей его на дальнейшие этапы тестирования.
Sanity тестирование — это быстрая проверка того, что после внесения небольших изменений в программное обеспечение основные функции продолжают работать корректно. Этот тип тестирования помогает подтвердить здравомыслие программного продукта перед его дальнейшим тестированием или выпуском.
Что такое End-to-End тест?
Сквозное тестирование - тестирование от начала до конца (от регистрации до финальной покупки), включая все интеграции
Сквозное тестирование - Сквозное тестирование (End-to-end, E2E, Chain testing) — используется для проверки ПО от начала до конца, а также его интеграцию с внешними интерфейсами.
Цель сквозного тестирования состоит в проверке всего программного обеспечения на предмет зависимостей, целостности данных и связи с другими системами, интерфейсами и базами данных для проверки успешного выполнения полного производственного сценария.
Пример: На примере интернет магазина, это одна объемная проверка, которая включает в себя все шаги пользователя, начиная от регистрации в системе и заканчивая покупкой товара в магазине.
Что такое тестирование безопасности?
Тестирование безопасноcти/защищённости (security testing) – тестирование ПО с целью определить его защищённость.
Основные понятия, которые должны быть охвачены тестированием: конфиденциальность, целостность и сохранность данных, аутентификация, авторизация и невозможность отказа от авторства.
Что такое тестирование на основе рисков?
Краткая суть приоритеты в тестировании устанавливаются на основе оценки рисков. Акцент на частях системы с наибольшим риском возникновения серьёзных проблем, влияющих на работоспособность продукта и удовлетворённость пользователя.
Подход позволяет оптимизировать процесс тестирования, обеспечивая наибольшую эффективность при ограниченных ресурсах.
Тестирование на основе рисков/Риск-тестирование (risk-based testing) — метод тестирования ПО, который базируется на вероятности рисков. Их вероятность определяется путем анализа, в котором учитываются сложность программы, критичность функции для бизнеса, частота ее использования и количество возможных дефектов. При тестировании на основе рисков наибольший приоритет получает проверка самых важных и потенциально имеющих недостатки функций.
Что такое динамическое тестирование?
Краткая суть: через выполнение кода (через запуск программы.
Что такое «парадокс пестицида»?
Суть: Повторное использование одних и тех же тестовых сценариев со временем становится всё менее эффективным в обнаружении новых дефектов.
эффект, при котором при регулярном прогоне тестовых сценариев ошибки перестают находиться. Происходит из-за того, что ошибки которые ловились данными тестами уже пойманы, а остальные оказываются не попадающими в тестовые сценариями.