Sobes.tech
Middle

Rääkige mulle oma kogemusest ristpuhverserverite testimisel.

sobes.tech AI

Vastus AI-lt

Kross-brauseri testimine on kohustuslik etapp veebirakenduste jaoks, mis tagab õige kuvamise ja funktsionaalsuse erinevates brauserites ja nende versioonides:

Minu kogemus hõlmab:

  1. Käsitsi testimine:

    • Pärast iga olulist funktsiooni või UI muudatust kontrollisin käsitsi põhijuhte peamistes brauserites (Chrome, Firefox, Edge, Safari) — erinevates operatsioonisüsteemides (Windows, macOS, Linux) ja ekraani resolutsioonides.
    • Pöörasin erilist tähelepanu CSS-i renderdamise eripäradele, JavaScripti tööle ja reageerivale disainile.
    • Kasutasin arendustööriistu (Developer Tools) probleemide tõrkeotsinguks ja analüüsiks erinevates brauserites.
  2. Reaalne testimine füüsilistel seadmetel ja virtuaalsetes keskkondades:

    • Kasutasin virtuaalseid masinaid (näiteks erinevate Windowsi ja macOS versioonidega) vanemate brauserite või spetsiifiliste OS konfiguratsioonide testimiseks.
    • Kasutasin emulaatoreid ja simulatoreid (näiteks Xcode Simulator iOS-Safari jaoks) mobiilseadmetes.
    • Töötasin kaugtööseadmete ja brauserite haldamise teenustega (näiteks BrowserStack, Sauce Labs), et laiendada katvust ja testida suurel hulgal seadmeid ja brausereid.
  3. Kross-brauseri automatiseerimine:

    • Integreerisin automatiseeritud testid CI/CD toru, et neid jooksutada iga päev või iga commit'i järel erinevates brauserites.
    • Kasutasin raamistikke:
      • Selenium WebDriver: erinevates keeltes (Java, Python, JavaScript) testide kirjutamiseks ja nende käivitamiseks vastavate draiveritega.
      • Playwright ja Cypress: uutes projektides, et pakkuda kiiremat ja usaldusväärsemat automatiseerimist erinevate brauserite toega "välkkiire".
    • Kasutasin mulgipleximist või paralleelset testide täitmist erinevatel sõlmedel (näiteks Selenium Grid või pilveteenused), et vähendada täitmise aega.
    • Automatiseerinud visuaalsete regressioonide kontrolli tööriistadega (näiteks Applitools, Percy), võrdledes lehtede ekraanipilte erinevates brauserites.
  4. Strateegia ja tööriistade määratlemine:

    • Analüüsisin veebianalüütikat (Google Analytics), et määrata kõige kasutatavamad brauserid ja seadmed.
    • Koostasin testimise maatriksi vajalike brauseri-, OS- ja seadmekombinatsioonide loendiga, lähtudes analüütikast, projekti nõuetest ja riskidest.
    • Pidevalt uurisin uute brauseri versioonide ja nende omaduste kohta, kohandades testimisstrateegiat.

Näide Seleniumi test Chrome ja Firefox jaoks:

// Eeldatakse, et on paigaldatud TestNG või JUnit ning vastavad draiverid (chromedriver, geckodriver) PATH-is

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; // Draiveri muutuja deklareerimine

    @BeforeClass // Meetod käivitub enne kõiki klasse testid
    public void setup() {
        // Draiverite teede konfiguratsioon, kui need ei ole PATH-is
        // System.setProperty("webdriver.chrome.driver", "tee/ chromedriver");
        // System.setProperty("webdriver.gecko.driver", "tee/ geckodriver");
    }

    // Meetod draiveri initsialiseerimiseks vastavalt parameetrile "browser"
    @Parameters("browser") // XML konfiguratsioonist saadud parameeter
    @Test // Test stsenaarium
    public void testHomepageTitle(String browserName) { // Sisendparameeter testng.xml-st
        if (browserName.equalsIgnoreCase("chrome")) {
            driver = new ChromeDriver(); // Chrome draiveri initsialiseerimine
        } else if (browserName.equalsIgnoreCase("firefox")) {
            driver = new FirefoxDriver(); // Firefox draiveri initsialiseerimine
        } else {
            throw new IllegalArgumentException("Brauserit " + browserName + " ei toetata");
        }

        driver.manage().window().maximize(); // Brauseriakna suurendamine
        driver.get("https://www.example.com"); // URL avamine

        // Lehekülje pealkirja kontroll
        String pageTitle = driver.getTitle();
        System.out.println("Brauseri " + browserName + " lehekülje pealkiri: " + pageTitle);
        // Assert.assertEquals(pageTitle, "Example Domain"); // Kasutades assert-eid

        // Järgmised tegevused või kontrollid...
    }

    @AfterMethod // Meetod käivitub pärast iga testmeetodi
    public void tearDown() {
        if (driver != null) {
            driver.quit(); // Brauseri sulgemine ja sessiooni lõpetamine
        }
    }
}
<!-- Näidistestng.xml Chrome ja Firefox testimiseks -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Cross Browser Suite"> <!-- Testide kogumi nimi -->

    <test name="Chrome Test"> <!-- Eraldi test Chrome jaoks -->
        <parameter name="browser" value="chrome"/> <!-- Brauseri valiku parameeter -->
        <classes>
            <class name="CrossBrowserTest"/> <!-- Testide klassi link -->
        </classes>
    </test>

    <test name="Firefox Test"> <!-- Eraldi test Firefox jaoks -->
        <parameter name="browser" value="firefox"/> <!-- Brauseri valiku parameeter -->
        <classes>
            <class name="CrossBrowserTest"/> <!-- Testide klassi link -->
        </classes>
    </test>

</suite>

Minu lähenemine kross-brauseri testimisele on alati suunatud maksimaalse katvuse saavutamisele ja ressursside optimaalsele kasutamisele, kombineerides käsitsi kontrollid niansside avastamiseks ja automatiseerimise regressioonitestide jaoks.