163 страницы смеси ответов на вопросы с реальных собеседований, перевода интересного контента с зарубежных ресурсов и агрегации материала с отечественных.
В первую очередь хочу подчеркнуть, что этот материал от джуна – джунам, от intermediate – таким же и в данный момент предлагается AS IS, т.к. сорвал все предполагаемые ранее сроки, поэтому прошу прощения если вызову кровотечение из глаз у опытных коллег. Качество материала будет улучшаться по мере вычитки и вклада сообщества. Также будет добавляться новый материал по мере появления.
Здесь очень много перевода из зарубежных источников и в силу слабого английского и отсутствия коммерческого опыта там может быть откровенная ересь. Местами присутствует винегрет из русских и английских терминов. Изначально материал делался для себя, но он оказался предварительно востребованным, так что я привёл его в более-менее надлежащий вид, но и только.
Что касается источников и ресурсов, то список не полный. В первоначальном конспекте я не сохранял ссылки, так что, если увидели авторский контент, прошу не ругаться. Список полезных ресурсов я не пытался сделать всеобъемлющим, а лишь указал те, что пригодились лично мне.
Также отмечу, что и сам материал далеко не всеобъемлющий. Предполагается, что это некий гибрид ответов на вопросы и базовой теории и здесь темы раскрыты в той мере, что требуется на собеседовании. То есть ориентир и какая-то база есть, но при необходимости копаете дальше уже сами. Каждый термин, каждая тема представляется мне как трехмерный объект и не всегда можно достичь понимания, глядя в лоб (один источник). Порой требуется посмотреть под разными углами (в разных источниках). К тому же, как я уже сказал, это копание можно продолжать бесконечно и это был бы формат толстой книги, а не статьи.
Помимо глубины, ограничен материал и в ширину. Практически не раскрыто мобильное тестирование, в основном web. Это обусловлено вопросами с самих собеседований, как говорится, за что купил, за то и продаю. Тестирование в разных сферах добавлено просто для того, чтобы сориентировать новичка.
Эта статья не заменит хорошую книгу или курс, с другой стороны, здесь больше реальности.
ВНИМАНИЕ! Для того, чтобы увидеть материал целиком, нужно открыть первую или вторую часть в файлах на гитхабе (Manual part 1 или Manual part 2).
Оказалось, что такой объем практически нереально предоставить общественности. К сожалению, Хабр пока не умеет парсить исходники больше 150кб, а это означало бы разбиение материала на 8 статей (разработчики пообещали исправить, задача уже в активных).
На гите дополнительно пришлось поделить материал на 2 файла ввиду ограничения на размер одного в 1 мб. Если есть что исправить или дополнить – пишите тут/создавайте issue/форкайте и коммитьте! Призываю участвовать всех неравнодушных!
Оглавление
Manual part 1
- HR-часть
- Вопросы с реальных собеседований с этапа HR
- Общее о тестировании
- Что означает тестирование ПО?
- Почему требуется тестирование ПО?
- Что означает обеспечение качества (Quality Assurance — QA) при тестировании ПО?
- Что означает контроль качества (Quality Control — QC) при тестировании ПО?
- Что означает качество ПО? (Software Quality)
- Объясните отличия в QA, QC и тестировании
- Что означает Verification при тестировании ПО?
- Что означает Validation в тестировании ПО?
- Разница между Design Verification и Design Validation?
- Принципы тестирования?
- Что подразумевается под тестовым покрытием? (Test Coverage)
- Что такое модель зрелости тестирования (TMM — Test Maturity Model)?
- Что такое CMM?
- Что такое тестирование со сдвигом влево? (Shift left testing)
- Что такое независимое тестирование? (Independent testing)
- В чем разница между превентивным и реактивным подходами в тестировании? (Preventative and Reactive approaches)
- Перечислите типичные возможные обязанности инженера по обеспечению качества?
- Что такое аудит качества?
- Почему тестирование делится на отдельные этапы?
- Почему невозможно полностью протестировать ПО?
- Как вы тестируете продукт, если требования еще не зафиксированы?
- Как вы узнаете, было ли создано достаточно тестов для тестирования продукта?
- Как вы понимаете инспекцию?
- Какие есть роли/должности в команде?
- Опишите жизненный цикл продукта по этапам — какие участники на каждом этапе, какие у них роли? Какие артефакты на каждом этапе?
- Кто такой SDET?
- Что такое тестирование как сервис? (TaaS – testing as a Service)
- Что подразумевается под тестовой средой? (Test Environment/Test Bed)
- Что подразумевается под тестовыми данными?
- Основные фазы тестирования?
- Подробнее про бета-тестирование?
- Что означает пилотное тестирование? (Pilot)
- В чем отличие build от release?
- Что такое бизнес – логика (domain)?
- Ты – единственный тестировщик на проекте. Что делать?
- Основные инструменты тестировщика?
- Виды тестирования
- Какие существуют основные виды тестирования ПО?
- Типы тестирования? (White/Black/Grey Box)
- Что означает тестирование черного ящика?
- Что означает тестирование белого ящика?
- Что означает тестирование серого ящика? (Grey box)
- Основные отличия White/grey/black box?
- Что такое деструктивное/разрушающее/негативное тестирование? (DT — Destructive testing)
- Что такое недеструктивное/неразрушающее/позитивное тестирование? (NDT – Non Destructive testing)
- Что такое пирамида/уровни тестирования? (Testing Levels)
- Что подразумевается под компонентным/модульным/юнит тестированием? (Component/Module/Unit testing)
- Что подразумевается под интеграционным тестированием? (Integration testing)
- Разница между Unit testing и Integration testing?
- Что такое системное интеграционное тестирование? (SIT — System Integration testing)
- Что подразумевается под инкрементальным подходом? (Incremental Approach)
- Что подразумевается под подходом снизу-вверх? (Bottom-Up Approach)
- Что подразумевается под подходом сверху-вниз? (Top-Down Approach)
- Что подразумевается под гибридным/сэндвич-подходом? (Sandwich Approach)
- Что подразумевается под подходом Большого взрыва? (Big Bang Approach)
- В чем разница между тест-драйвером и тест-заглушкой? (Test Driver and Test Stub)
- Что подразумевается под системным тестированием?
- Можем ли мы провести системное тестирование на любом этапе?
- Что такое функциональное тестирование?
- Что такое тестирование совместимости/взаимодействия? (Compatibility/Interoperability testing)
- Что такое тестирование на соответствие? (Conformance/Compilance testing)
- Что такое нефункциональное тестирование?
- Основные понятия в тестировании производительности?
- Тестирование производительности клиентской части и серверной, в чем разница?
- В общем виде что такое тестирование производительности?
- Что такое тестирование емкости/способностей? (Capacity)
- Что означает тестирование масштабируемости? (Scalability)
- Разница между тестированием ёмкости/способностей и тестированием масштабируемости? (Capacity vs Scalability)
- Расскажите о стрессовом тестировании? (Stress testing)
- Расскажите о нагрузочном тестировании? (Load)
- Что такое объемное тестирование? (Volume testing)
- Тестирование выносливости/стабильности/надежности (Soak/Endurance/Stability/Reliability testing)
- Что такое спайк/шиповое тестирование? (Spike)
- Что такое тестирование устойчивости? (Resilence)
- Что такое тестирование времени отклика? (Response time testing)
- Что такое Ramp тестирование?
- Что такое тестирование хранилища? (Storage testing)
- Что такое тестирование на отказ и восстановление? (Failover and Recovery testing)
- Что вы знаете о Тестировании удобства пользования? (Usability testing)
- Отличия тестирование на удобство пользования и тестирования доступности? (Usability Vs. Accessibility testing)
- Что такое тестирование интерфейса? (UI testing)
- Что такое тестирование рабочего процесса/воркфлоу? (Workflow testing)
- Что вы знаете о пользовательском приемочном тестировании? (UAT – User Acceptance testing)
- Что такое эксплуатационное приемочное тестирование? (OAT — Operational Acceptance testing)
- Расскажите об инсталляционном тестировании?
- Что вы знаете о тестировании безопасности? (Security and Access Control testing)
- Что означает оценка уязвимости/защищенности? (Vulnerability Assessment)
- Расскажите подробнее о тестировании на проникновение? (Penetration testing)
- Отличия Vulnerability Assessment от Penetration testing?
- Что такое Fuzz тестирование?
- Можно ли отнести тестирование безопасности или нагрузочное тестирование к функциональным видам тестирования?
- Что вы знаете о конфигурационном тестировании? (Configuration testing)
- Что подразумевается под проверкой дыма/дымовым тестированием? (Smoke testing)
- Что такое тестирование встряхиванием? (Shake out testing)
- Что подразумевается под санитарным тестированием/согласованности/исправности? (Sanity testing)
- Отличие санитарного тестирования от дымового? (Sanity vs Smoke testing)
- Что вы знаете про регрессионное тестирование? (Regression testing)
- Объясните, что такое тестирование N+1?
- Что означает подтверждающее тестирование? (confirmation/re-testing)
- В чем разница между повторным и регрессионным тестированием?
- Типы регрессии по Канеру?
- Что вы знаете о тестировании сборки? (Build Verification Test)
- Что такое тестирование файлов cookie?
- Что такое тестирование потоков? (Thread testing)
- Что такое тестирование документации? (Documentation testing)
- Какие вы знаете уровни тестирования данных?
- Что такое подкожный тест? (Subcutaneous test)
- Расскажите о локализации, глобализации и интернационализации? (Localization/ globalization/internationalization testing)
- Что такое исследовательское тестирование? (Exploratory testing)
- Что такое Свободное или Интуитивное тестирование? (Adhoc)
- Что вы знаете о мутационном тестировании? (Mutation testing)
- Что означает механизм тестирования по ключевым словам? (Keyword Driven testing Framework)
- Что вы знаете о тестировании интерфейса прикладного программирования (API — Application Programming Interface)?
- Как протестировать API без документации/черным ящиком?
- А что такое endpoint?
- Frontend testing Vs. Backend testing?
- Что подразумевают под эталонным тестированием? (Baseline testing)
- В чем разница между Baseline и Benchmark testing?
- Что такое параллельное/многопользовательское тестирование? (Concurrency/Multi-user testing)
- Как вы думаете, что такое тестирование на переносимость?
- Что такое тестирование графического интерфейса/визуальное тестирование? (GUI — Graphical User Interface)
- Что такое A/B тестирование?
- Что означает сквозное тестирование? (E2E — End–to–End)
- В чем разница между E2E и системным тестированием?
- Что такое параллельное тестирование? (Parallel testing)
- Тест дизайн
- Тест дизайн? (Test Design)
- Перечислите известные техники тест-дизайна?
- Что такое статическое тестирование, когда оно начинается и что оно охватывает?
- Что такое динамическое тестирование, когда оно начинается и что оно охватывает?
- Какие виды Review вы знаете?
- Что вы знаете о Data Flow testing?
- Что вы знаете о Control Flow testing?
- Что такое Loop coverage?
- Что такое Race coverage?
- Тестирование пути и тестирование базового пути? (Path testing & Basis Path testing)
- Что вы знаете о Statement coverage?
- Что вы знаете о Decision coverage?
- Что вы знаете о Branch coverage?
- Что вы знаете о Condition coverage?
- Что вы знаете о FSM coverage?
- Что такое Function coverage?
- Что такое Call coverage?
- Что означает LCSAJ coverage?
- Сравнение некоторых метрик
- Что такое Equivalence Partitioning?
- Что такое Boundary Value Analysis?
- Что такое Error Guessing?
- Что такое Cause/Effect?
- Что такое Exhaustive testing?
- Какие вы знаете комбинаторные техники тест-дизайна?
- Что такое тестирование ортогональных массивов? (OAT — Orthogonal Array testing)
- Что такое Domain analysis/testing?
- Что такое Cyclomatic Complexity в тестировании ПО?
- Что такое State Transition testing?
- Что такое Scenario (use case) testing?
- Что такое Decision Table testing?
- Что такое Random testing?
- Что такое Syntax testing?
- Что вы знаете о Classification tree method?
- Как мы узнаем, что код соответствует спецификациям?
- Что включает в себя матрица отслеживания требований? (RTM — Requirement Traceability Matrix)
- В чем разница между Test matrix и Traceability matrix?
- Что такое анализ GAP?
- Что такое граф причинно-следственных связей? (Cause Effect Graph)
- В чем разница между предугадыванием ошибок и посевом? (Error guessing and error seeding)
- Стили тестов?
- Техники тестирования требований?
- Что такое эвристики?
- Тестовые артефакты и документация (Test Deliverables/TestWare/test artifacts)
- Виды тестовой документации?
- Отличия Test Suite от Test Scenario?
- Какие отличия у плана тестирования и стратегии тестирования?
- Виды тест планов?
- Что является основой для подготовки плана приемки? (PAP — Product Acceptance Plan)
- В чем разница между тест-кейсом и чек-листом?
- В чем разница между тест-кейсами высокого уровня и низкого уровня?
- Чем Test case отличается от сценария тестирования?
- Что такое тест-анализ/основа теста? (Test Analysis/Test Basis)
- Что такое документ бизнес-требований (BRD)?
- Что вы знаете о требованиях (уровни/виды и т. д.)?
- Рассажите, какие есть требования к самим требованиям?
Manual part 2
- Дефекты и ошибки
- Что такое дефект?
- Классы дефектов?
- Какие есть категории дефектов?
- Error/Mistake/Defect/Bug/Failure/Fault?
- Каково содержание эффективного сообщения об ошибке?
- Несколько ключевых моментов, которые следует учитывать при написании отчета об ошибке?
- Серьезность и Приоритет Дефекта (Severity & Priority)
- Может ли быть высокий severity и низкий priority? А наоборот?
- Жизненный цикл дефекта?
- Пришёл баг из продакшена, что делаем?
- Что такое утечка дефектов и релиз бага? (Bug Leackage & Bug Release)
- Что означает плотность дефектов при тестировании ПО?
- Что означает процент обнаружения дефектов при тестировании ПО?
- Что означает эффективность устранения дефектов при тестировании ПО? (DRP)
- Что означает эффективность Test case в тестировании ПО? (TCE)
- Возраст дефекта в тестировании ПО?
- Что такое принцип Парето в тестировании ПО?
- Каковы различные способы применения принципа Парето в тестировании ПО?
- В чем основное отличие отладки от тестирования? (Debugging Vs. Testing)
- Почему в программном обеспечении есть ошибки?
- Что вы будете делать, если во время тестирования появится ошибка?
- Как вы справляетесь с невоспроизводимой ошибкой?
- Если продукт находится в производстве и один из его модулей обновляется, то необходимо ли провести повторную проверку?
- Что такое анализ рисков?
- В чем разница между coupling и cohesion?
- Что такое скрытый дефект? (Latent defect)
- Что такое маскировка ошибок, объясните примером?
- Категории отладки? (Debugging)
- Что такое Эффективность удаления дефектов? (DRE — Defect Removal Efficiency)
- Что такое сортировка дефектов? (Bug triage)
- SDLC и STLC
- Что вы знаете о жизненном цикле разработки ПО? (SDLC — Software Development Lifecycle)
- Что такое цикл/колесо Деминга? (Deming circle/cycle/wheel)
- Модели разработки ПО?
- Что такое Agile?
- Что такое Scrum?
- В чем отличие Canban от scrum?
- Что знаете о User stories в гибких подходах к разработке?
- Что значит жизненный цикл тестирования ПО? (STLC – Software Testing Lifecycle)
- Что вы знаете о техниках оценки теста? (Test Estimation)
- В чем разница между SDLC и STLC?
- Что такое быстрая разработка приложений? (RAD — Rapid Application Development)
- Что такое разработка через тестирование (TDD — Test Driven Development)?
- TDD в Agile Model Driven Development (AMDD)
- Тестирование на основе моделей (MDD — Model-driven Development)
- Тестирование на основе данных (DDT — Data Driven testing)
- Тестирование на основе риска (RBT — Risk Based Testing)
- Что вы знаете о потоковом тестировании? (BFT — BusinessFlowTesting)
- Тестирование в разных сферах/областях (testing different domains)
- Что такое веб-тестирование и как его производить?
- Тестирование банковского ПО
- Тестирование электронной коммерции (eCommerce)
- Тестирование платежного шлюза (Payment Gateway)
- Тестирование систем розничной торговли (POS — Point Of Sale)
- Тестирование в сфере страхования (Insurance)
- Тестирование в сфере телекоммуникаций (Telecom)
- Тестирование протокола: L2 и L3 OSI
- Тестирование интернета вещей (IoT — Internet of Things)
- Что такое облачное тестирование? (Cloud testing)
- Что такое тестирование сервис-ориентированной архитектуры? (SOA — Service Oriented Architecture)
- Что такое тестирование планирования ресурсов предприятия? (ERP — Enterprise Resource Planning)
- Тестирование качества видеосвязи WebRTC-based сервиса видеоконференций
- Что такое тестирование ETL?
- Мобильное тестирование
- Каковы особенности в тестировании мобильных приложений? В чем отличия тестирования мобильного приложения от десктопного?
- В чем отличия тестирования мобильного приложения от web?
- Что вы знаете о симуляторах и эмуляторах?
- Типы мобильных приложений?
- Что основное проверить при тестировании мобильного приложения?
- Последнее обновление Android/iOS, что нового?
- Основные различия iOS и Android?
- Виды жестов и т.п.?
- Как проверить использование процессора на мобильных устройствах?
- Объясните критические ошибки, с которыми вы сталкиваетесь при тестировании на мобильных устройствах или в приложениях?
- Сети и около них
- Что такое http?
- Компоненты HTTP?
- Методы HTTP-запроса?
- Что такое ресурс?
- Что такое веб-сервис? (WS — Web service)
- Отличие сервиса от сервера?
- Отличие сервиса от веб-сайта?
- Что такое REST, SOAP? В чем отличия?
- Что такое JSON, XML?
- Коды ответов/состояния сервера с примерами? (HTTP status code)
- Почему ошибка 404 относится к 4** — клиентской, если по идее должна быть 5**?
- Какие еще бывают протоколы?
- TCP/IP это?
- Что такое куки (cookies)?
- Разница между cookie и сессией/сеансом?
- Отличие stateless и stateful?
- Различия методов GET и POST?
- Клиент — серверная архитектура?
- Уровни OSI?
- Что вы подразумеваете под потоковыми медиа? (Streaming media)
- Основные команды Linux?
- Почему важно тестировать в разных браузерах?
- Адаптивный веб-дизайн vs. Отзывчивый веб-дизайн, в чем разница? (Adaptive Vs. Responsive)
- Как сервер узнаёт, с какого типа устройства/браузера/ОС/языка вы открываете веб-сайт? (Например, для Adaptive design)
- Чем отличается авторизация от аутентификации?
- Как работает авторизация/аутентификация? Как сайт понимает, что ты залогинен?
- Почему важно делать подтверждение e-mail при регистрации?
- Что такое кэш и зачем его очищать при тестировании?
- Что такое AJAX в вебе?
- Как работает браузер (коротко)?
- Как работает сотовая связь?
- Как работает подключение к Wi-Fi?
- Базы данных
- Может ли у ПО быть сразу несколько баз данных?
- Что такое SQL?
- Что вы знаете о NoSQL?
- Что такое нормальные формы?
- Понятие хранимой процедуры?
- Понятие триггера?
- Что такое индексы? (Indexes)
- Какие шаги выполняет тестер при тестировании хранимых процедур?
- Как бы вы узнали для тестирования базы данных, сработал триггер или нет?
- Как тестировать загрузку данных при тестировании базы данных?
- Основные команды SQL?
- Подробнее о джойнах? (Join)
- Типы данных в SQL?
- ПРАКТИКА
- Дана форма для регистрации. Протестируйте.
- Определение серьезности и приоритета
- Определение граничных значений и классов эквивалентности
- Логические задачи
- Еще примеры
- Набор небольших задач по SQL
- Тестирование чашки для кофе
- HR: Как вы будете решать конфликты между членами вашей команды?
- HR: Что делать, если разработчик утверждает, что найденный дефект таковым не является?
- Вот тебе комп и работающий сайт. Сделай мне 401-ю ошибку.
- С чего начать абсолютному новичку?
- Путь
- CV
- Собеседование
- Ошибки в работе у начинающих тестировщиков
- Полезное
- Youtube-каналы
- Telegram
- Web
- Книги
- Курсы
- Источники
Автор: Владислав Еремеев