Обо мне
Я — QA Automation Engineer с опытом как ручного, так и автоматизированного тестирования, владею языками программирование - Java, JavaScript и Python, так же Библиотеками - Selenium и Playwright. Изучать программирование и веб-технологии я начал в 2021 году. С тех пор я выстроил прочную техническую базу благодаря структурированным курсам, личным проектам и постоянному самообучению.
Я специализируюсь на разработке и поддержке end-to-end автоматизированных тестовых наборов с использованием Page Object Model (POM). Мой опыт также включает проектирование тест-кейсов, создание баг-репортов, тестирование API и планирование тестирования. Я работал как самостоятельно, так и в команде над различными проектами, включая практический полную автоматизацию тестирования.
Я подхожу к каждому проекту с вниманием к деталям и стремлением к результату, делая упор на качество, масштабируемость и командное взаимодействие. В настоящее время я ищу возможности, где смогу внести вклад в создание надёжного и высококачественного программного обеспечения, продолжая профессионально развиваться в сфере QA.
Навыки
Языки программирования
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.
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`);
});
                        
                    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.