Вопросы:
- Тестирование JavaScript от А до Я (Jest, React Testing Library, e2e, screenshot)
- Jest & Enzyme. Полный курс: 1:06:09
- React Testing Library. Полный курс: 1:14:15
- Доклад: Эффективное тестирование фронтенда 0:57:17
Полезные курсы:
1. Основы тестирования
- Зачем нужны тесты? Какие виды тестов существуют?
- Какие цели преследует каждый из видов тестирования?
- В чем разница между Snapshot и Unit тестированием?
- Пирамида тестов и сколько тестов должно быть написано в приложении?
- Что такое трофей тестирования? Статическое тестирование
- Что такое fake ?
- Что такое dummy?
- Что такое stub?
- Что такое mock?
- Разница между mock и stub?
- Что такое UI-тестирование (BDD) ?
- Что такое TDD?
- Разница между TDD и BDD?
- Что такое White-Black-Grey Box-тестирование?
- Что такое Quality Gates?
2. Инструменты unit, snapshot и integration -тестирования
2.1 Общие вопросы
- Какие инструменты тестирования React-приложений ты знаешь?
- Что такое Vitest? Какую функцию выполняет? В чем отличие Vitest от Jest?
- Как можно использовать Jest в сочетании с другими библиотеками тестирования, такими как Enzyme или React Testing Library?
- Можете ли вы объяснить, для чего используется блок “describe” в Jest?
- В чем разница между “describe()” и “it()“?
- Опиши разницу между test и it. Когда бы ты использовал каждый из вариантов?
- Что такое expect? Разделяете ли вы expect на отдельные логические it-блоки?
- Паттерн написания модульных тестов
- Интеграция тестирования в процесс разработки
- Как следует настроить pipeline CI для запуска тестов, созданных с помощью Jest?
2.2 Настройки и конфигурация Jest
- Как бы вы настроили библиотеки тестирования Jest, RTL для приложения React?
- Что такое code coverage в Jest и как его создать?
- Какие инструменты оценки покрытия кода тестами вы знаете?
- Что такое istanbul? Какую роль играет в code coverage?
- Как интегрировать работу Jest с линтером?
- Как вы управляете globalSetup и globalTeardown в Jest?
2.3 Организация тестов и их отладка
- Как Jest работает под капотом, чтобы достичь высокого уровня производительности?
- Что такое test runner в Jest?
- Какова цель Jest CLI?
- Как настроить Jest для параллельного выполнения тестов?
- Какие стратегии вы используете для отладки тестов?
- Как бы вы Как бы вы использовали флаг –watch в Jest?
- Возможно ли запустить один или несколько тестовых файлов с помощью Jest? Если да, то каким образом?
- Что такое алиассы в Jest?
2.4 Jest, RTL и их особенности
2.4.1 Jest
- Как Jest изолирует каждый тест от других? Почему это важно?
- Как Jest моделирует зависимости?
- Как вы пишите mock для функции на Jest?
- Можете ли вы объяснить, как работает mock-функция в Jest?
- Что такое teardown -функция в Jest?
- В чём разница между afterEach() и afterAll() в Jest?
- Что такое setup -функция в Jest?
- В чём разница между beforeEach() и beforeAll() в Jest?
- Как вы используете beforeEach() и afterEach()?
- Набор мэтчеров для разметки
- Можете ли вы провести различие между toBe() и toEqual() в Jest?
- Какую функцию выполняет toHaveBeenCalledWith()?
- Опишите сценарий, в котором вы бы использовали метод .spyOn() в Jest
- Как можно протестировать функцию на основе таймера, например setTimeout или setInterval, с помощью Jest?
- Как вы тестируете ошибки в Jest ?
- Как бы вы написали тест для проверки того, что функция выдаёт ошибку при определённых условиях, используя Jest?
2.4.2 React Testing Library
- Что такое React Testing Library?
- Какие query-функции вы знаете в Jest?
- Какие by-функции вы знаете в Jest?
- Что такое aria-роли и как с ними работать?
- Что такое метод render() в RTL?
- Что делает метод renderHook() в RTL?
- Как тестировать кастомные хуки и что такое метод act() ?
- Что такое fireEvent() в RTL?
- Что делает метод cleanup() в RTL?
2.5 Тестирование API и асинхронного кода
- Как вы обрабатываете асинхронный код в тестах?
- Как вы можете использовать Jest для тестирования функции, вызывающей внешний API?
- Как вы имитируете вызовы внешних API в тестах Jest?
- Как можно протестировать HTTP-запросы в Jest?
- Как использовать callback «done» в Jest для асинхронного тестирования?
2.6 Тестирование SPA -приложений
- Как бы вы структурировали свои тесты и описательные блоки в сложном приложении с помощью Jest?
- Где вы будете хранить файлы *.test.ts в вашем приложении?
- Что обычно тестируют в приложении на React?
- Какие пользовательские действия вы знаете? Как вы будете их тестировать?
- Базовое тестирование React-компонента
- Как вы используете Jest для тестирования компонентов React, у которых есть состояние?
- Как вы будете тестировать хуки внутри компонента React?
- Как вы будете тестировать layout компоненты?
- Как тестировать routing приложения?
- Можете ли вы объяснить, как использовать Jest для тестирования actions и reducers в Redux?
- Какова цель интеграционного тестирования? Как вы будете писать интеграционные тесты для приложения на React?
- Как вы тестируете компоненты, у которых есть Children?
- Что происходит, когда вы пытаетесь отобразить или установить не подключённый компонент с помощью ReactDOM?
2.7. CodeStyle, BestPractice, Discussion
- Как можно оценить качество тестирования?
- Обязательно ли 100% покрытие кода тестами?
- Какие преимущества и недостатки в тестировании собственного кода?
- Советы по тестированию
- Проблемы при тестировании
- todo: Какие хелперы ты знаешь для организации тестов?
- Best Practies: testing