Sobes.tech
Middle

Реците ми о вашем искуству у тестирању преко прегледача.

sobes.tech АИ

Одговор од АИ

Крос-браузер тестирање је обавезан корак за веб апликације, који обезбеђује исправно приказивање и функционалност у различитим прегледачима и њиховим верзијама.

Моје искуство укључује:

  1. Ручно тестирање:

    • Након сваке значајне промене у функционалности или UI-ју, ручно сам проверавао кључне сценарије у главним прегледачима (Chrome, Firefox, Edge, Safari) на различитим оперативним системима (Windows, macOS, Linux) и резолуцијама екрана.
    • Посебну пажњу сам посвећивао специфичним особинама рендеринга CSS-а, раду JavaScript-а и одзивном дизајну.
    • Користио сам алате за развојне програмере (Developer Tools) за дебаговање и анализу проблема у различитим прегледачима.
  2. Тестирање на стварним уређајима и у виртуелним окружењима:

    • Користио сам виртуелне машине (нпр. са различитим верзијама Windows-а и macOS-а) за тестирање у старим верзијама прегледача или специфичним конфигурацијама ОС-а.
    • Користио сам емулаторе и симулаторе (нпр. Xcode Simulator за iOS-Safari) за мобилне уређаје.
    • Радио сам са услугама за управљање уређајима и прегледачима на удаљеним серверима (нпр. BrowserStack, Sauce Labs) за проширење покривености и тестирање на великом броју стварних уређаја и прегледача.
  3. Аутоматизација крос-браузер тестирања:

    • Интегрисао сам аутоматизоване тестове у CI/CD pipeline за свакодневно или после сваког комита извршавање на различитим прегледачима.
    • Користио сам оквире:
      • Selenium WebDriver: за писање тестова на различитим језицима (Java, Python, JavaScript) и њихово покретање преко одговарајућих драйвера за сваки прегледач.
      • Playwright и Cypress: у новијим пројектима, за бржу и поузданију аутоматизацију са подршком за различите прегледаче "из кутије".
    • Користио сам мултиплексирање или паралелно извршавање тестова на различитим чворовима (нпр. са Selenium Grid или облачним услугама) за скраћење времена извршења.
    • Аутоматизовао сам проверу визуелних регресија помоћу алата (нпр. Applitools, Percy), поређењем скриншотова страница у различитим прегледачима.
  4. Дефинисање стратегије и алата:

    • Анализирао сам веб аналитике (Google Analytics) за одређивање најкоришћенијих прегледача и уређаја од стране циљне публике.
    • Формулисао сам матрицу тестирања са списком потребних комбинација прегледача, ОС и уређаја на основу аналитике, захтева пројекта и ризика.
    • Постоянно сам истраживао нове верзије прегледача и њихове особине, прилагођавајући стратегију тестирања.

Пример кода за покретање Selenium теста на Chrome и Firefox:

// Предпоставља се да је подешен TestNG или JUnit
// и одговарајући драйвери (chromedriver, geckodriver) су у PATH-у

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class CrossBrowserTest {

    WebDriver driver; // Декларација променљиве драйвер

    @BeforeClass // Метода се извршава пре свих тестова у класи
    public void setup() {
        // Подешавање путева до драйвера, ако нису у PATH-у
        // System.setProperty("webdriver.chrome.driver", "пут/до/chromedriver");
        // System.setProperty("webdriver.gecko.driver", "пут/до/geckodriver");
    }

    // Метода за иницијализацију драйвера у зависности од параметра "browser"
    @Parameters("browser") // Параметар из XML конфигурационог фајла TestNG
    @Test // Тест сценарио
    public void testHomepageTitle(String browserName) { // Улазни параметар из testng.xml
        if (browserName.equalsIgnoreCase("chrome")) {
            driver = new ChromeDriver(); // Иницијализација Chrome драйвера
        } else if (browserName.equalsIgnoreCase("firefox")) {
            driver = new FirefoxDriver(); // Иницијализација Firefox драйвера
        } else {
            throw new IllegalArgumentException("Неподржани прегледач: " + browserName);
        }

        driver.manage().window().maximize(); // Максимизовање прозора прегледача
        driver.get("https://www.example.com"); // Отварање URL-а

        // Провера насловне странице
        String pageTitle = driver.getTitle();
        System.out.println("Наслов странице у " + browserName + ": " + pageTitle);
        // Assert.assertEquals(pageTitle, "Example Domain"); // Коришћење асерција за проверу

        // Даљи кораци или провере...
    }

    @AfterMethod // Метода се извршава након сваког тест метода
    public void tearDown() {
        if (driver != null) {
            driver.quit(); // Затварање прегледача и завршетак сесије драйвера
        }
    }
}
<!-- Пример testng.xml за покретање теста на Chrome и Firefox -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Cross Browser Suite"> <!-- Назив тестног скупа -->

    <test name="Chrome Test"> <!-- Посебан тест за Chrome -->
        <parameter name="browser" value="chrome"/> <!-- Параметар за избор прегледача -->
        <classes>
            <class name="CrossBrowserTest"/> <!-- Веза са класом са тестовима -->
        </classes>
    </test>

    <test name="Firefox Test"> <!-- Посебан тест за Firefox -->
        <parameter name="browser" value="firefox"/> <!-- Параметар за избор прегледача -->
        <classes>
            <class name="CrossBrowserTest"/> <!-- Веза са класом са тестовима -->
        </classes>
    </test>

</suite>

Мој приступ крос-браузерном тестирању увек је усмерен ка постизању максималног покрића уз оптималне ресурсе, комбинујући ручне провере за уочавање нијанси и аутоматизацију за регресионно тестирање.