Smoke = «работает ли вообще». Regression matrix = «работает ли всё, что было, и в каком состоянии». Это не выборочный тест, а структурированный pass с галочкой на каждую функцию.
Без matrix регрессии незаметны: фича B сломалась после релиза, никто не открыл этот flow в smoke — пользователь поймает первым.
Product: {{product_url}} Scope: {{scope}}
1. Что такое «функция»
Функция = одна observable действие, которое пользователь может вызвать и проверить outcome.
- ✓ «Кликнуть Save в settings — изменения сохраняются» — функция
- ✓ «Скролл вверх по странице с длинным контентом» — функция
- ✓ «Cmd+K открывает search palette» — функция
- ✗ «Settings page exists» — это не функция, это страница
- ✗ «UI выглядит хорошо» — это не функция, это design audit
Каждая функция: action → expected outcome → fail criteria.
2. Inventory всех функций (часть 1)
Это самое долгое. Сядь и пройди по всем surfaces из product-capability-map. Для каждой страницы / экрана / поверхности выпиши:
Navigation functions
- header → каждая ссылка → destination + state
- sidebar → каждая ссылка / collapse / expand
- breadcrumbs → каждый сегмент кликабелен и работает
- search palette → открытие / закрытие / навигация по результатам / select
- back button → возвращает на previous + scroll position
- forward button → если был back
Interactive functions per page
Для каждой страницы:
- все buttons → каждая (включая secondary, tertiary, link-style)
- все forms → каждое поле + submit + error states
- все toggles / switches / radios / checkboxes
- все modals → открыть / закрыть / dismiss outside / ESC
- все dropdowns / selects → open / select / multi-select
- все sortable / filterable / paginatable lists
Cross-cutting functions
- copy-to-clipboard на caждой иконке копирования
- share buttons (если есть)
- favorite / bookmark / pin
- export / download
- print stylesheet
- theme switch (light/dark)
- locale switch (если bilingual)
- keyboard shortcuts (все)
- drag-and-drop (если есть)
- file upload (если есть)
Auth / session functions
- login (каждый provider)
- signup
- logout
- password recovery
- email verify
- session expire → re-auth flow
- multi-tab session sync
Notifications / async functions
- toast appears на success
- error toast на failure
- email-уведомление дошло
- push (если есть)
- in-app notification badge
3. Матрица состояний
Когда у тебя список ~80-200 функций, разнеси по матрице:
| Function | Browser | Device | Status | Last tested | Issue |
|---|---|---|---|---|---|
| Cmd+K search | Chrome 132 | Desktop | pass | 2026-05-20 | — |
| Cmd+K search | Safari 18 | Desktop | partial | 2026-05-20 | Cmd+K не работает на Safari, нужен Cmd+K + clear |
| Cmd+K search | Chrome | Mobile | pass | 2026-05-20 | Touch open работает |
| Copy code button | All | All | pass | 2026-05-20 | — |
| Favorite toggle | All | All | fail | 2026-05-20 | После logout teряет state — bug #234 |
| ... | ... | ... | ... | ... | ... |
Status definitions
- pass — работает 100% expected
- partial — работает но с известным limitation (i.e. без анимации, без скролла, не работает offline)
- fail — broken — пользователь не может выполнить
- not tested — не проверено в этом раунде (важно: НЕ assume «pass»)
- flaky — иногда работает, иногда нет (race condition или non-determinism)
Matrix coordinates
- Browser: Chrome (latest + Chrome-2), Safari (latest), Firefox (latest), mobile Safari, mobile Chrome
- Device: Desktop (≥1280px), Tablet (768-1024), Mobile (≤640px)
- Network: WiFi (default), Slow 3G (для critical flows)
- Auth: logged-out, logged-in, admin (если roles есть)
Не tested all coordinates всё — выбрать coverage. Для критических — все coordinates. Для edge — main coordinate.
4. Что приоритизировать
После заполнения у тебя ~80-200 строк × 3-5 coordinates = ~300-1000 ячеек. Не «протестировать всё» — это работа на неделю. Approach:
Tier 1 (test always)
- Все auth functions (signup, login, logout, recovery)
- Все navigation (header, sidebar, primary CTAs)
- Все search / filter / sort
- Все critical flows (5-7 из
critical-flow-e2e-plan) - Все payment / billing
Tier 2 (test на major release)
- Settings / preferences
- Sharing / exports
- Notifications
- Theme / locale switches
Tier 3 (test ежеквартально или при изменениях)
- Edge interactions (multi-tab, browser back, etc.)
- Print stylesheet
- Keyboard shortcuts depth
5. Workflow: как реально проходить
Round 1: full pass
Один человек, один день. Прокликать всё из inventory. Не углубляться в каждый bug — отметить status + одна строка описания. Цель: snapshot, не fix.
Round 2: drill into fails
Каждый fail → repro steps + screenshot/video + browser/device. Превратить в issue.
Round 3: re-test after fixes
Перед релизом — repeat Tier 1.
Maintenance: на каждый deploy
Перед deploy: re-test затронутых функций + Tier 1 smoke. После deploy: визуальный smoke (см. post-deploy-smoke-plan).
6. Tools
- Spreadsheet (Google Sheets, Excel) — primary tracking, простое и работает
- Test Management Tool (TestRail, Xray) — если команда >10 и формальные процессы
- Playwright + matrix — автоматизировать Tier 1 (см.
critical-flow-e2e-plan) - Browserstack / Sauce Labs — для cross-browser/device coverage без 5 устройств на столе
- Screenshot diffing (Percy, Chromatic, Argos) — для visual regression на каждый PR
7. Anti-patterns
- ❌ Тестировать «всё одинаково тщательно» — Tier 1 deep + Tier 3 surface ОК
- ❌ Matrix без status definitions — «работает» vs «partially работает» расходятся в interpretation
- ❌ Не пересматривать matrix — функции добавляются, matrix устаревает за месяц
- ❌ One-person matrix без peer review — bias, важные функции забываются
- ❌ Manual matrix навсегда — Tier 1 должен переходить в automated tests
- ❌ Status «not tested» = «pass» — assume → пропустишь bug
- ❌ Тестировать только в Chrome — Safari + Firefox разнятся в важных вещах
- ❌ Тестировать только desktop — half users на mobile
- ❌ Не записывать видео для fails — repro заняет вдвое больше времени
8. Output
- Inventory list: ~80-200 функций в Markdown / Spreadsheet
- Filled matrix с status per coordinate
- Top-10 critical fails + issue tracker links
- Tier 1 automation roadmap — что в первую очередь автоматизируем
- Re-test schedule — какие функции pre-release, какие quarterly
- Coverage report: % функций tested per coordinate (target ≥ 90% для Tier 1)
Полный UX-аудит сайта
Эвристическая оценка по Нильсену + проверка ключевых сценариев. На выходе — приоритизированный список проблем.
Аудит производительности (Core Web Vitals)
Глубокая проверка LCP, INP, CLS с привязкой к коду и приоритизированным планом исправлений.
Аудит доступности по WCAG 2.2 AA
Проверка контраста, клавиатурной навигации, скринридеров, фокус-индикаторов и ARIA.