Чем вы занимаетесь в текущей компании?

Ответ

В моей текущей роли я занимаюсь автоматизацией тестирования веб- и мобильных приложений. Мои основные обязанности включают:

  • Разработка автотестов: Пишу скрипты на Java и Python с использованием Selenium для веб-приложений и Appium для мобильных.
  • Интеграция в CI/CD: Настраиваю и поддерживаю пайплайны в Jenkins и GitHub Actions для автоматического запуска тестов.
  • Полный цикл тестирования: Участвую в планировании, анализирую результаты прогонов, составляю отчеты и работаю с системой учета дефектов (например, Jira).
  • Поддержка инфраструктуры: Занимаюсь оптимизацией и поддержкой тестового фреймворка, чтобы тесты были стабильными и быстрыми.
  • Обмен знаниями: Провожу обучение для ручных тестировщиков по основам автоматизации.

Пример простого UI-теста на Java с JUnit и Selenium:

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import static org.junit.Assert.assertTrue;

public class LoginTest {
    @Test
    public void successfulLoginTest() {
        WebDriver driver = new ChromeDriver();
        driver.get("https://example.com/login");

        driver.findElement(By.id("username")).sendKeys("test_user");
        driver.findElement(By.id("password")).sendKeys("secure_pass123");
        driver.findElement(By.id("submit-btn")).click();

        // Проверка успешного входа
        boolean isWelcomeDisplayed = driver.findElement(By.id("welcome-message")).isDisplayed();
        assertTrue("Welcome message should be displayed after login", isWelcomeDisplayed);

        driver.quit();
    }
}

Ответ 18+ 🔞

А, так вот ты чем занимаешься, да? Автоматизацией, говоришь? Ну, это ж, блядь, как на конвейере стоять, только вместо гаек закручиваешь скрипты, которые потом сами всё проверяют, пока ты кофе пьёшь. Ёпта, мечта, а не работа!

Ну, слушай, рассказывай, что там у тебя в обязанностях, я пока вникну.

Разработка автотестов. Ну, это понятно, пишешь на Java и Python. Selenium для веба — это когда ты браузеру командуешь, как дрессированной мартышке: «Нажми сюда! Введи туда!». А Appium для мобильных — это уже, блядь, высший пилотаж, там телефоном управляешь, как будто у него кнопки на пульте. Главное, чтобы тест не сломался от того, что всплыла какая-нибудь реклама «ХУЙ С ГОРЫ», а то потом полдня ищешь, почему он кликнул не туда.

Интеграция в CI/CD. А вот это уже серьёзно. Настраиваешь эти пайплайны в Jenkins или GitHub Actions. Это как поставить будильник на духовку: закинул код, а она сама всё запечёт, проверит и скажет — готово или сгорело. Красота, блядь. Только когда пайплайн падает в три часа ночи, а тебе приходит уведомление — вот тогда терпения ноль ебать.

Полный цикл тестирования. Тут уже не просто код пишешь. Ты планируешь, смотришь на результаты этих прогонов, которые иногда такие кривые, что удивление пиздец. Потом пишешь отчёты, которые никто не читает, и баги в Jira заводишь. А там тебе разработчики такие: «Это не баг, это фича!». И пошла писать губерния.

Поддержка инфраструктуры. А это, сука, самая незаметная и самая важная работа. Оптимизируешь фреймворк, чтобы тесты не бегали, как черепахи в сиропе. Чинишь всё, что ломается после каждого обновления. Без этого — доверия ебать ноль, все тесты будут падать, а тебя будут винить.

Обмен знаниями. Ага, учишь ручных тестировщиков автоматизации. Объясняешь им, что такое цикл for, а они смотрят на тебя, как на инопланетянина, и спрашивают: «А зачем? Я и так вручную всё проверю». В рот меня чих-пых, вот тут и начинается.

А вот, смотри, пример кода, который ты привёл. Классика жанра, ебушки-воробушки!

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import static org.junit.Assert.assertTrue;

public class LoginTest {
    @Test
    public void successfulLoginTest() {
        WebDriver driver = new ChromeDriver();
        driver.get("https://example.com/login");

        driver.findElement(By.id("username")).sendKeys("test_user");
        driver.findElement(By.id("password")).sendKeys("secure_pass123");
        driver.findElement(By.id("submit-btn")).click();

        // Проверка успешного входа
        boolean isWelcomeDisplayed = driver.findElement(By.id("welcome-message")).isDisplayed();
        assertTrue("Welcome message should be displayed after login", isWelcomeDisplayed);

        driver.quit();
    }
}

С виду всё просто и красиво. Открыл браузер, вбил логин-пароль, кликнул, проверил. Но жизнь-то, блядь, не такая! На практике вылезет элемент без id, страница не успеет загрузиться, кнопка «сабмит» окажется перекрыта другим элементом, и твой красивый тест накроется медным тазом. А потом ты сидишь и дописываешь Thread.sleep(5000) и кучу try-catch блоков, и код становится похож на лапшу, а не на тест.

В общем, работа, конечно, интересная. Сидишь, вроде бы, программируешь, но при этом постоянно вникаешь, как эта хитрая жопа — приложение — на самом деле работает. А когда всё сходится, тесты зелёные и пайплайн летит как швейцарские часы — вот тогда и чувствуешь себя немного богом. Ну, или хотя бы тем, кто наладил конвейер, чтобы другие не ебались.