Теория тестирования 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 тестирование - это процесс тестирования приложения на всех уровнях: начиная с фронтенда и заканчивая бэкэндом, включая интерфейс и конечные точки