Питання на співбесіді з тестування (Senior) з відповідями
75 запитань для співбесіди з теми Тестування (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Як вирішити, на який рівень піраміди/трофея поставити тест?
- 2.Чому стаття Google «Just Say No to More End-to-End Tests» застерігає від ставки на E2E?
- 3.Що таке «testing honeycomb» і де його застосовують?
- 4.На чому засновані «розміри тестів» Google (small, medium, large)?
- 5.Чому терміни «unit» та «інтеграційний» тест часто неоднозначні в обговореннях?
- 6.Чим solitary unit-тести відрізняються від sociable?
- 7.У чому різниця класичного та mockist-підходу (лондонська школа) в TDD?
- 8.Що пропонує правило «don't mock what you don't own»?
- 9.Який сигнал свідчить, що тести надто прив'язані до реалізації?
- 10.Як обґрунтувати команді вартість нового E2E-тесту?
- 11.Яке місце посідають контрактні тести між фронтендом і його API?
- 12.Що вимірює мутаційне тестування (наприклад, Stryker)?
- 13.Що таке property-based тестування (наприклад, fast-check)?
- 14.Чому цілі щодо покриття можуть зашкодити, якщо зробити їх KPI?
- 15.У чому головна цінність TDD на рівні senior, крім «наявності тестів»?
- 16.Які основні джерела недетермінізму в тестах, за Фаулером?
- 17.Тест проходить окремо, але падає під час запуску всього файлу. Яка причина найімовірніша?
- 18.Чим небезпечні автоматичні повтори в CI без моніторингу?
- 19.Як працює шардування Playwright у CI?
- 20.Чим workers у Playwright відрізняються від шардів?
- 21.Як організувати тестові дані для E2E-тестів, які паралельно працюють зі спільним середовищем?
- 22.Який порядок перевірок дає найшвидший зворотний зв'язок у CI-пайплайні?
- 23.Навіщо в CI запускати тести з
--ci(Jest) або аналогічними налаштуваннями? - 24.Чому
vi.mockмає підніматися (hoisting) і що з цього випливає? - 25.Як отримати свіжу копію модуля зі станом на рівні модуля в кожному тесті?
- 26.Які головні обмеження jsdom для тестів компонентів?
- 27.Чим happy-dom відрізняється від jsdom?
- 28.У чому компроміс між пулами Vitest
threadsіforks? - 29.Яке завдання розв'язує опція Vitest
projects(раніше - workspace)? - 30.Що тестує
expectTypeOfу Vitest? - 31.Що таке in-source тестування у Vitest?
- 32.Що таке контекст тесту у Vitest і чим він корисний для конкурентних тестів?
- 33.Чому з
vi.useFakeTimers()може зависнути тест, що чекає на проміс ізsetTimeoutвсередині? - 34.Що гарантує
act()у тестах React? - 35.Як тестувати асинхронні React Server Components?
- 36.Як покрити unit-тестом Server Action у Next.js?
- 37.Як протестувати компонент усередині error boundary без шуму в логах?
- 38.Як протестувати компонент, що рендериться через портал (модальне вікно)?
- 39.Коли кастомний хук краще тестувати через
renderHook, а не через компонент? - 40.Як протестувати Suspense із завантаженням даних у тесті компонента?
- 41.Чому мокати
useStateчи інші хуки React - погана ідея? - 42.Які межі перевірок jest-axe/axe-core у jsdom?
- 43.Чим фікстури Playwright відрізняються від хуків
beforeEach? - 44.Як у Playwright виконати авторизацію один раз на весь набір?
- 45.Що робить візуальні регресійні тести (
toHaveScreenshot) нестабільними і як це зменшити? - 46.Що дає змогу
page.clockу Playwright? - 47.Що перевіряє
toMatchAriaSnapshot? - 48.Які компроміси має Page Object Model у тестах Playwright?
- 49.Що робить
expect.soft? - 50.Що робить
await expect(async () => { ... }).toPass()? - 51.Як запускати E2E-тести на записаному API-трафіку?
- 52.Що дає
test.stepу тесті Playwright? - 53.Чому в E2E-тестах стан краще готувати через API, а не через UI?
- 54.Чому команди Cypress не можна змішувати з
async/await? - 55.Чому ця перевірка не повторюється і як це виправити?
- 56.Яке завдання розв'язує
cy.origin()? - 57.Коли Cypress може бути кращим вибором, ніж Playwright?
- 58.Чим мок відрізняється від фейка (fake)?
- 59.Коли перевірка взаємодій (що мок викликали) - правильна перевірка?
- 60.Чим впровадження залежностей (DI) допомагає тестованості?
- 61.Чим обробники MSW корисні крім unit-тестів?
- 62.Чим небезпечна розбіжність обробників MSW зі справжнім API?
- 63.Як замокати конструктор класу у Vitest/Jest?
- 64.Що дають interaction-тести в Storybook?
- 65.У чому сильна візуальна перевірка компонентів (наприклад, Storybook + Chromatic)?
- 66.Як тестувати фічу за feature-прапорцем?
- 67.З чого почати тестування великого legacy-фронтенду без тестів?
- 68.Як надійно тестувати форматування дати/часу для різних локалей і часових поясів?
- 69.Що вимагає від тестового коду паралелізм на рівні тестів?
- 70.Який підхід до test-id найпідтримуваніший, коли ролей та імен недостатньо?
- 71.Чому senior-інженер може заперечити проти набору тестів із суцільних
toMatchSnapshot()для компонентів? - 72.У чому головний ризик тестування лише через
data-testid? - 73.Яка метрика найкраще показує команді здоров'я тестового набору?
- 74.Як E2E-тести можуть впіймати помилки гідратації та інші помилки виконання, які не ламають видимий UI?
- 75.Що дає великому репозиторію
vitest --changed(або--changedSinceу Jest) і в чому його обмеження?