Теория тестирования Flashcards
Что такое тестирование?
Тестирование - проверка объекта тестирования на соответствие требованиям: явным, неявным, скрытым
Цель тестирования?
1 Проверить, все ли указанные требования выполнены
2 Предотвратить появление дефектов
3 Найти максимально возможное количество дефектов
4 Укрепить уверенность в уровне качества объекта тестирования
5 Предоставить информацию о качестве продукта заинтересованным лицам
Чем отличается тестирование и контроль качества ?
Testing (Тестирование) – самый “нижний”, первый уровень, проверка создаваемого программного продукта на
соответствие требованиям к этому продукту. По факту это реактивная работа (выдали – проверил – описал
дефекты – исправили), которая может помочь исправить дефекты в уже созданном программном обеспечении,
но не более того. Основная задача тестирования – выявить и зафиксировать дефекты.
QC (Quality Control, контроль качества) – второй уровень, включающий в себя тестирование, но не
ограничивающийся им. Quality Control обеспечивает не только проверку продукта на соответствие
требованиям, но и соответствие заранее согласованному уровню качества продукта и готовность к выпуску
продукта в продакшен. Основная задача контроля качества – предоставить объективную картину того, что
происходит с качеством продукта на разных этапах разработки.
Как определить критичность дефекта (серьезность)?
Классы серьезности дефекта: Blocker, Critical, Major, Minor, Trivial
Пирамида тестирования
«Пирамида тестов» — абстракция, которая означает группировку тестов программного обеспечения по разным
уровням детализации.
Из этой пирамиды главное запомнить два принципа:
1.Писать тесты разной детализации.
2.Чем выше уровень, тем меньше тестов.
Модульные тесты должны составлять основную часть автоматизированного тестирования.
- Задачи автоматизации не закрываются до тех пор, пока эти скрипты не будут запущены на реализованной
функциональности;
- Разработка одновременно с модульными тестами заставляет разработчиков задуматься о проблеме,
которую они решают, и о любых крайних случаях, с которыми они могут столкнуться;
- Тесты являются детальными и могут помочь точно определить дефект;
- Время выполнения невероятно быстрое, потому что им не нужно полагаться на какой-либо пользовательский
интерфейс или внешние системы, такие как база данных или API;
- Они недорогие, просто пишутся, легко поддерживать.
Интеграционные тесты должны занимать середину пирамиды.
Используйте этот уровень для проверки бизнес-логики без использования пользовательского интерфейса (UI);
Тестируя за пределами пользовательского интерфейса, вы можете тестировать входы и выходы API или
сервисов без всех сложностей, которые вводит пользовательский интерфейс;
Эти тесты медленнее и сложнее, чем модульные тесты, потому что им может потребоваться доступ к базе
данных или другим компонентам.
Тесты пользовательского интерфейса должны размещаться на вершине пирамиды.
Большая часть вашего кода и бизнес-логики должна быть уже протестирована до этого уровня;
Тесты интерфейса пишутся, чтобы убедиться, что сам интерфейс работает правильно;
Тесты пользовательского интерфейса медленнее и тяжелее в написании и поддержке, поэтому необходимо
сводить их к минимуму.
Что такое : ошибка, дефект, сбой, баг?
Ошибка — действие человека, приводящее к неправильному результату.
Дефект — недостаток в компоненте
или системе, способный привести к ситуации сбоя или отказа.
Сбой - событие, при котором система не выполняет требуемую функцию
Баг - несоответствие реального поведения программы с ожидаемым
Атрибуты баг репорта
1 Название,
2 краткое описание
3 проект
4 компонент
5 билд
6 окружение
7 на кого назначен
8 серьёзность
9 приоритет,
10 шаги воспроизведения
11 ожидаемый результат
12 фактический результат
13 приложение (пруфы)
Тестирование документации относится к функциональному или нефункциональному?
Нефункциональное
Тестирование usability относится к функциональному или нефункциональному?
Нефункциональное
zero bug policy - Что это?
Найденные баги не отправляются в беклог, а фиксятся сразу
В каких случаях нужно проводить регресс?
- Когда новая фича сделана, и она может затронуть смежный функционал.
- Когда работа над всеми модулями приложения закончена, и нужно провести регрессионное тестирование
взаимодействие всех модулей.
Регресс и smoke. В чем различие?
Отличаются полнотой охвата. Регресс - полная проверка. Smoke - быстрая проверка критических функций.
Отличие sanity тестирования от smoke
В отличии от дымового (Smoke testing), санитарное тестирование (Sanity testing) направлено вглубь
проверяемой функции, в то время как дымовое направлено вширь, для покрытия тестами как можно большего
функционала в кратчайшие сроки.
Определение граничных значений
Значения, являющиеся границами классов эквивалентности. При использовании техники граничных значений берутся значения каких-то диапазонов, первое это границы, второе с одним шагом внутри, и как отрицательный с шагом за границу
Автоматизированное тестирование - это отдельный вид тестирования?
Автоматизированное тестирование или автоматизация тестирования – это метод тестирования программного обеспечения, который выполняется с использованием специальных программных средств, которые, в свою очередь необходимы для выполнения набора тестовых примеров.
Расскажите занимались ли вы статическим тестированием?
- Анализ и тестирование требований
- Проверка макетов дизайнеров
- Архитектура проекта
- Тестовая документация
Что такое end-to-end тестирование?
End-to-end тестирование - это процесс тестирования приложения на всех уровнях: начиная с фронтенда и заканчивая бэкэндом, включая интерфейс и конечные точки
Чем отличается серьёзность от приоритета?
Серьезность (Severity) - это атрибут, характеризующий влияние дефекта на работоспособность приложения. Приоритет (Priority) - это атрибут, указывающий на очередность выполнения задачи или устранения дефекта.
Компонентное (модульное), интеграционное, системное, приёмочное
1 Компонентное (модульное) тестирование проверяет функциональность и ищет дефекты в частях приложения, которые доступны и могут быть протестированы по-отдельности (модули программ, объекты, классы, функции и т.д.)
2 Интеграционное тестирование предназначено для проверки связи между компонентами, а также взаимодействия с различными частями системы (операционной системой, оборудованием либо связи между различными системами).
3 Системное - проверка как функциональных, так и не функциональных требований в системе в целом.
4 Приёмочное - формальный процесс тестирования, который проверяет соответствие системы требованиям и проводится с целью:
- определения удовлетворяет ли система приемочным критериям;
- вынесения решения заказчиком или другим уполномоченным лицом принимается приложение или нет.
Чем отличается системное тестирование от компонентного?
В компонентном тестирование мы тестируем отдельный компонент или функцию внутри него, а при системном тестировании мы тестируем нашу программу, как единое целое, в среде под которую она написана
Какие типы тестирования вы знаете?
Функциональное, нефункциональное, структурное, изменений.
Что такое состояние и что такое переход ?
Состояние - состояние приложения, которое ожидает одно или более событие. Состояние запоминает входные данные и показывает, как приложение будет реагировать на полученные события
Переход - преобразование одного состояния в другое
Из каких этапов состоит процесс тестирования?
1) Общее планирование и анализ требований;
2) Уточнение критериев приёмки;
3) Уточнение стратегии тестирования;
4) Разработка тест-кейсов;
5) Выполнение тест-кейсов;
6) Фиксация найденных дефектов;
7) Анализ результатов тестирования;
8) Отчетность
Отличия тест анализа и технического анализа
Тест анализ - процесс поиска и рассмотрения информации необходимой для тестирования (люди со знанием приложения и документация)
Технический анализ - направлен на выявление дефектов в рабочем продукте
Чем прямые требования отличаются от косвенных?
Прямые требования прописаны в документации и требованиях, а косвенные требования вытекают из прямых.
Какие техники тест-дизайна использовали?
Эквивалентное разбиение, граничные значения, таблица принятия решений, попарное тестирование, тестирование состояний и переходов
Премущества и недостатки чек листов в сравнении с тест кейсами
Плюсы: Легко поддерживать, менее вероятен парадокс пестицида
Минусы: вхождение нового сотрудника по чек листам более проблематичное в отличии от тест кейсов
Парадокс пестицида
Если повторять те же тесты снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты
Что такое accessibility тестирование?
Тестирование приложения на соответствие рекомендациям документа W3C, а именно положению Web Content Accessibility Guidelines (WCAG)
При Accessibility тестировании специалисты проверяют, насколько то или иное приложение доступно людям с ограниченными возможностями
Что такое матрица трассируемости?
Матрицу соответствия требований («Traceability Matrix») – двумерная таблица, содержащая соответствия функциональных требований (functional requirements) продукта и подготовленных тестовых сценариев (test cases)
Последовательность создания тестовых артефактов
Тест план, тест кейс/чек лист, баг репорт, отчёт о тестировании
Что такое позитивное и негативное тестирование?
Позитивное - Тестирование проводимое с валидными значениями (тестирование на прохождение)
Негативное - тестирование проводимое хотя бы с одним невалидным значением.
Как связаны с собой тест-план и тест-кейс?
И то, и другое - тестовая документация. Тест-кейсы пишутся на основе тест-плана.
Какие типы интеграций знаете?
Снизу вверх, сверху вниз, большой взрыв
В какой момент времени (когда) можно сказать что тестирование закончено?
Рассказать про критерии окончания тестирования:
1 Время
2 Бюджет
3 Все тест кейсы пройдены, найденные баги исправлены и перепроверены
Что знаете про waterfall? Подходит ли waterfall для небольших проектов?
Модель процесса разработки программного обеспечения, в которой процесс разработки выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, реализации, тестирования, интеграции и поддержки.
Подходит для небольших проектов
Когда на проекте стоит вводить автоматизацию?
Когда есть устоявшиеся части продукта, которые не планируется изменять в ближайшее время. Когда затраты на автоматизацию ниже чем стоимость ручного тестирования.
Разница симуляции и эмуляции
Эмулятор старается имитировать максимально полностью работу реального устройства на низкоуровневом слое, взаимодействие с реальным железом, команды процессора.
Симулятор имитирует скорее больше программную среду, его правдоподобность зависит от того насколько полна она проработана, можно сказать создаёт искусственную среду чтобы работать конкретно с некоторыми возможностями реального устройства
Что такое тест-план?
Документ, описывающий и регламентирующий перечень работ по тестированию, а также соответствующие техники и подходы, стратегию, области ответственности, ресурсы, расписание и ключевые даты.
Что такое качество? Какие есть характеристики качества?
Качество - это степень того, насколько компонент или система соответствует сформулированным и подразумеваемым потребностям различных заинтересованных лиц.
Качество - это степень того, насколько продукт соответствует требованиям и ожиданиям пользователя.
Характеристики:
1. Функциональность - способность по решать задачи, нужные пользователям
2. Надежность - способность ПО поддерживать определённую работоспособность в заданных условиях.
3. Удобство в использовании - способность ПО быть удобным в обучении и использовании, а также привлекательным для пользователей.
4. Эффективность - способность ПО эффективно использовать доступные ресурсы.
5 Портативность - способность ПО сохранять работоспособность при переносе из одного окружения в другое
Принципы тестирование
(ТОРТИК)
1. Тестирование доказывает наличие дефектов, а не их отсутствие
2. Отсутствие ошибок - не гарантирует качество
3. Ранее тестирование сохраняет время и деньги
4. Тестирование зависит от контекста
5. Исчерпывающее тестирование невозможно
6. Кластеризация дефектов (скопление дефектов)
7. Парадокс пестицида
Чем отличается валидация от верификации
Верификация - это проверка того, что продукт разработан согласно требованиям. Верификация = статическое тестирование
Валидация - поверка того, что продукт соответствует ожиданиям пользователей. Валидация = динамическое тестирование
Назовите основные критерии качества требований
Полнота, точность, однозначность, непротиворечивость, необходимость, осуществимость, проверяемость, приоритезируемость
Расскажите про жизненный цикл дефекта
- Тестировщик находит дефект и создает баг репорт [открыт]
- Программист берет баг репорт в работу [в процессе]
- Программист завершил исправление дефекта [исправлен]
- Тестировщик проверяет, что дефект действительно исправлен [тестирование]
- Тестировщик завершил проверку, дефект исправлен [закрыт]