Обо мне
Я — QA Automation Engineer с опытом как ручного, так и автоматизированного тестирования, владею языками программирование - Java, JavaScript и Python, так же Библиотеками - Selenium и Playwright. Изучать программирование и веб-технологии я начал в 2021 году. С тех пор я выстроил прочную техническую базу благодаря структурированным курсам, личным проектам и постоянному самообучению.
Я специализируюсь на разработке и поддержке end-to-end автоматизированных тестовых наборов с использованием Page Object Model (POM). Мой опыт также включает проектирование тест-кейсов, создание баг-репортов, тестирование API и планирование тестирования. Я работал как самостоятельно, так и в команде над различными проектами, включая практический полную автоматизацию тестирования.
Вы можете просмотреть или скачать мой CV.
Навыки
Языки программирования
Java
✓ Core
✓ Коллекции и дженерики
✓ Обработка исключений и I/O
✓ Строки, массивы, списки, карты
✓ Unit-тесты с TestNG
✓ Maven
✓ Архитектура тестов (POM)
✓ Debugging
Python
✓ Core и ООП
✓ Структуры данных
✓ Обработка исключений и I/O
✓ Pytest и unittest
✓ Архитектура тестов (POM)
✓ Debugging
JavaScript
✓ Core и ООП
✓ Работа с DOM и селекторами
✓ Асинхронный JS
✓ Автоматизация Web UI
✓ API тестирование
✓ Архитектура тестов (POM)
✓ Debugging & browser devtools
Инструменты и фреймворки тестирования
Playwright
✓ Core и работа с асинхронностью
✓ Локаторы и селекторы
✓ Test runner и фикстуры
✓ Кроссбраузерное тестирование
✓ Параллельное и headless выполнение
✓ Page Object Model (POM)
✓ Отладка и трассировка
✓ Поддержка TypeScript
✓ Повторы тестов и таймауты
Selenium
✓ WebDriver
✓ Локаторы
✓ Ожидания и синхронизация
✓ Работа с alert, frame, окнами
✓ Page Object Model и Page Factory
✓ Интеграция с TestNG
✓ Оптимизация скриптов
Postman
✓ Сборка API-запросов
✓ Управление переменными и окружениями
✓ Написание тест скриптов
✓ Pre-request скрипты
✓ Автоматизация коллекций тестов
✓ Валидация и проверки ответов
✓ Коллекции и рабочие пространства
Контроль версий
GitHub
✓ Основы контроля версий
✓ Ветвление и слияние
✓ Pull request и code review
✓ Решение конфликтов
✓ GitHub Actions для CI/CD
✓ Управление репозиториями
✓ Совместная работа в команде
Тестирование
Техники проектирования
✓ Анализ граничных значений
✓ Разделение на эквивалентные классы
✓ Таблицы решений
✓ Тестирование по use case
Типы
✓ Функциональное тестирование
✓ Регрессионное тестирование
✓ Smoke и sanity тесты
✓ Интеграционное тестирование
✓ Производительное тестирование
✓ Исследовательское тестирование
Управление и процессы
✓ Планирование и оценка тестирования
✓ Управление тест-кейсами
✓ Отслеживание и отчетность дефектов
✓ Метрики тестирования
✓ Непрерывная интеграция (CI)
✓ Agile и Scrum основы
Концепции автоматизации
✓ Page Object Model (POM)
✓ Проектирование тестовых фреймворков
✓ Интеграция CI/CD
✓ Web тестирование
✓ UI тестирование
✓ API тестирование
Портфолио
Swag Labs
2023 Дек, 2025 ИюнАвтоматизация тестирования - UI
О проекте
Автоматизация тестирования демо e-commerce сайта Swag Labs с использованием Java и Selenium, а также TypeScript и Playwright. Реализованы тесты входа, выбора товара, корзины и оформления заказа по паттерну Page Object Model (POM). Тест-кейсы структурированы, переиспользуемы и интегрированы с Maven.
Save All
2024 ОктябрьРучное тестирование — UI
Использованные инструменты
Google Documents, Google Sheets, Chrome DevTools
Обязанности
- Разрабатывал четкую и структурированную тестовую документацию.
- Создавал полные и понятные тест-кейсы, включая UI, функциональные и usability сценарии.
- Выполнил более 150 тест-кейсов и задокументировал все результаты.
- Писал отчёты о выявленных дефектах с подробными шагами воспроизведения, severity и информацией о тестовой среде.
Результаты
- Выявил 16% неуспешных кейсов по основным пользовательским сценариям.
- Обнаружил критические и крупные дефекты, что повысило стабильность сайта.
- Обеспечил полный тестовый контроль всех ключевых e-commerce функций.
О проекте
Ручное тестирование демо e-commerce сайта Save All. Были созданы комплексные тест-кейсы, основанные на требованиях, охватывающие функциональность, UI и usability. Подготовил детализированные отчеты о дефектах с четкими шагами воспроизведения и оценкой severity.
Продемонстрированные навыки
Ручное UI-тестирование, Test Case Design, Bug Reporting, Regression Testing, Анализ требований, Подготовка тестовой документации, Критическое мышление.
Your Store
2025 МайАвтоматизация тестирования - UI
Исходный код:
О проекте
Автоматизация тестирования демо e-commerce сайта Your Store с использованием TypeScript и Playwright. Реализованы тесты регистрации, выбора товара, корзины, оформления заказа, меню, поиска и слайдов по паттерну Page Object Model (POM). Тест-кейсы структурированы и переиспользуемы.
Reqres
2025 АпрАвтоматизация тестирования - API
Исходный код:
О проекте
Проект для автоматизации тестирования API Reqres с использованием JavaScript и Playwright. Включает тест-кейсы для проверки эндпоинтов, целостности данных и структуры ответов. Построен на Node.js с использованием возможностей Playwright.
Json Place Holder
2025 АпрАвтоматизация тестирования - API
Исходный код:
О проекте
Проект для автоматизации тестирования API с использованием JavaScript и Playwright. Включает тест-кейсы для проверки эндпоинтов, целостности данных и структуры ответов. Построен на Node.js с использованием возможностей Playwright.
Pet Friend
2025 ФевАвтоматизация тестирования - API
Исходный код:
О проекте
Проект для автоматизации тестирования API с использованием Python и Pytest. Включает тест-кейсы для проверки эндпоинтов, целостности данных и структуры ответов.
Rostelecom
2025 МарАвтоматизация тестирования - UI
Исходный код:
О проекте
Проект предоставляет структурированную основу с POM для написания автотестов авторизации Ростелеком. Включает все ключевые компоненты для хорошо документированного open-source или приватного проекта. Автоматизация UI с использованием Python и Selenium. Включает тесты регистрации.
Персональный сайт-резюме
2025 ИюнВеб-разработка
О проекте
Разработан адаптивный персональный сайт-резюме с использованием HTML, CSS и JavaScript. Включает разделы навыков, опыта, портфолио и интерактивный просмотр сертификатов. Демонстрирует навыки frontend и структурированный UI.
Swag Labs – Пример тест-кейса
| ID | Название | Предусловия | Шаги | Ожидаемый результат |
|---|---|---|---|---|
| TC001 | Вход с валидными данными | Пользователь на странице входа | 1.Открыть сайт 2.Ввести данные 3.Нажать "Войти" |
Пользователь вошел и перенаправлен на дашборд |
Swag Labs – Пример автотеста
@Test
public void loginWithValidCredentials() {
loginPage.enterUsername("standard_user");
loginPage.enterPassword("secret_sauce");
loginPage.clickLogin();
Assert.assertTrue(homePage.isHeaderVisible());
}
Swag Labs – Пример автотеста
test('Checkout without authorization', async ({ page }) => {
await cart.open();
let errorMsg = await loginPage.getErrorMessage();
expect (errorMsg).toContain(`Epic sadface: You can only access
'${cart.endpoint}' when you are logged in`);
await checkout.open();
errorMsg = await loginPage.getErrorMessage();
expect (errorMsg).toContain(`Epic sadface: You can only access
'${checkout.endpoint}' when you are logged in`);
});
SaveAll — Bug Report: Изображение не сохраняется в профиле
| Bug ID | Project | Component | Date | Tester |
|---|---|---|---|---|
| Account 001 | saveall.ru/profile | Мой Аккаунт | 25.10.2024 | Меликян С. М. |
| Title | Problem | Environment |
|---|---|---|
| Изображение не сохраняется | После загрузки изображения оно не отображается ни в одном разделе профиля. Фактическое поведение — изображение не сохраняется и отсутствует после обновления страницы. |
ОС: Windows 10 Браузер: Google Chrome 129.0.6668.90 |
| Bug Overview | Attachments |
|---|---|
| После добавления изображения и подтверждения обрезки файл не отображается в разделе "Мой Аккаунт". Ошибка воспроизводится стабильно. | Видео |
| No. | Steps | Expected Result | Actual Result |
|---|---|---|---|
| 1 | Пользователь авторизован и находится на странице «Мой Аккаунт». | Изображение должно сохраниться и корректно отображаться на странице «Мой Аккаунт». | Изображение не отображается на странице, загрузка не сохраняется. |
| 2 | Нажать кнопку «Обзор». | ||
| 3 | Выбрать изображение в файловом проводнике и нажать «Открыть». | ||
| 4 | Нажать кнопку «Обрезать». |
| Severity | Priority | Assigned To | Notes |
|---|---|---|---|
| Medium | Medium | — | — |
SaveAll — Bug Report: Invalid Date Filter Causes 500 Error
| Bug ID | Project | Component | Date | Tester |
|---|---|---|---|---|
| TC-CLI-013 | saveall.ru/clients | Clients | 10/18/2024 | Харитонова М.А. |
| Title | Problem | Environment |
|---|---|---|
| 500 Error When Applying Invalid Date in Filter | A 500 server error appears when entering an invalid date range in the “Created” filter on the Clients page. After returning to the page, the filter cannot be reopened. |
OS: Windows 11 Browser: Google Chrome 129.0.6668.90 |
| Bug Overview | Attachments |
|---|---|
| When invalid date values are entered into the "Created" filter and the filter is applied, a 500 error appears. After returning to the Clients page, the filter cannot be opened again. | Screenshot / Video Evidence |
| No. | Steps | Expected Result | Actual Result |
|---|---|---|---|
| 1 | Click the filter icon for the “Created” column on the Clients page. | Invalid date values should be automatically cleared. The filter window should remain open. User should be able to reopen the filter panel again. | First field clears invalid input, but second field accepts it. After clicking “Apply,” a 500 error appears. After returning to the Clients page, opening the “Created” filter becomes impossible. |
| 2 | Enter invalid numeric values into the date range fields. | ||
| 3 | Click “Apply”. |
| Severity | Priority | Assigned To | Notes |
|---|---|---|---|
| Minor | Medium | — | — |
Your Store – Пример автотеста
test.describe('User Registration ', () => {
test.beforeEach(async ({ page }, testInfo) => {
if (testInfo.title !== 'Register with valid data')
await page.goto('?route=account/register');
});
test.describe('Invalid email format', () => {
const invalidEmails = [
'', // Empty string
'plainaddress',
'@missingusername.com',
'username@.com',
'username@domain..com',
'username@domain,com',
'username@domain.c',
]
for (let email of invalidEmails){
test(`should show error using email: ${email}`, async ({ page }) => {
const url = await page.url();
await fillForm(page, 'Lena', 'Joy', email, generatePhone(), password);
await page.getByRole('checkbox').check();
await page.getByRole('button', { name: 'Continue' }).click();
await expect(page.url()).toBe(url);
await expect(page.getByRole('heading', { name: 'Your Account Has Been Created!' })).not.toBeVisible();
});
}
});
});
Reqres – Пример автотеста API
test.describe('Create a user (POST)', () => {
test('Create a new user', async ({request}) => {
const response = await request.post('/api/users', {
data:{
name: "Morpheus",
job: "leader"
}
});
const data = await response.json();
expect(response.ok()).toBeTruthy();
expect(response.status()).toBe(201);
expect(data.name).toBe("Morpheus");
expect(data.job).toBe("leader");
expect(data).toHaveProperty('createdAt');
expect(data).toHaveProperty('id');
// Clean up the fixture.
const id = data.id;
const deleteResponse = await request.delete(`/api/users/${id}`, {});
if(deleteResponse.ok())
console.log(`User with ID ${data.id} deleted successfully`);
else
console.log(`Failed to delete User with ID ${data.id}`);
});
});
Reqres – Пример автотеста API
test('Successful post creation with valid data', async ({ request }) => {
const newPost = {
title: 'Valid Title',
body: 'This is a valid post body.',
type: 1
};
const response = await request.post('/posts', { data: newPost });
expect(response.status()).toBe(201);
const data = await response.json();
expect(data).toHaveProperty('id');
expect(data).toMatchObject(newPost);
});
Reqres – Пример автотеста API
def test_get_api_key_for_invalid_email(pf):
"""Проверка, что при невалидном email возвращается статус 403
и ключ API не выдается сервером.
Args:
email (str): Невалидный email.
password (str): Валидный пароль.
Asserts:
- Код ответа 403.
- В ответе нет ключа API."""
status, result = pf.get_api_key(invalid_email, valid_password)
assert status == 403
assert not 'key' in result
Reqres – Пример автотеста API
def test_auth_page_is_available(self, web_browser):
"""Проверка доступности страницы авторизации
и правильности заголовка."""
auth_page = AuthPage(web_browser)
text = auth_page.title.get_text()
assert text == "Авторизация", "Неверный заголовок страницы"
Образование
2025 Фев 11 - 2025 Июн 4
Mastering QA Automation with Playwright
Armenian-Indian IT Center
✓ JavaScript и TypeScript
✓ Тестирование API
✓ Тестирование UI
✓ Playwright Framework
2024 Июн 13 - 2025 Мар 13
Тестировщик-автоматизатор на Python
Skill Factory
✓ Ручное тестирование
✓ Тестовая документация
✓ SQL основы
✓ Алгоритмы
✓ Python и ООП
✓ Selenium Framework
✓ Тестирование API
✓ Тестирование UI
2022 Мар 1 - 2022 Авг 31
QA Automation с Java и Selenium
Gyumri IT Center
✓ Java и ООП
✓ Основы автоматизации
✓ Selenium Framework
✓ Тестирование UI
✓ Тестирование API
2021 Окт 10 - 2021 Дек 10
JavaScript | HTML | CSS
Microsoft IT Center
✓ JavaScript
✓ HTML
✓ CSS
Опыт
Проекты по автоматизации тестирования
Самостоятельные и учебные проекты — 2022 – настоящее время
- Разработка и выполнение автотестов с использованием Selenium (Java) и Playwright (TypeScript).
- Создание и поддержка структуры Page Object Model для масштабируемого тестирования.
- Писал позитивные и негативные UI и API тест-кейсы с Postman, TestNG и Pytest.
- Использовал GitHub для контроля версий и командной работы.
Практика ручного тестирования
Баг-репорты и тестовая документация
- Создавал четкие и структурированные баг-репорты с воспроизводимыми шагами.
- Разрабатывал тест-кейсы, чек-листы и тест-планы на основе требований продукта.
- Тестировал веб-приложения на функциональность, UI и кроссбраузерность.
Личные проекты по веб-разработке
Frontend-разработка
- Создал этот персональный сайт-резюме на HTML, CSS, JavaScript для демонстрации навыков.
- Разрабатывал адаптивные макеты и интерактивные элементы для лучшего UX.