Sobes.tech
Middle

Պատմեք ձեր փորձի մասին բրաուզերների միջև թեստավորման մեջ։

sobes.tech AI

Պատասխան AI-ից

Կրոս-բրաուզերային փորձարկումը պարտադիր փուլ է վեբ հավելվածների համար, որը ապահովում է ճիշտ ցուցադրում և գործառույթ տարբեր բրաուզերներում և նրանց տարբերակներում:

Իմ փորձը ներառում է՝

  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 պայլին՝ ամենօրյա կամ յուրաքանչյուր կոմիտից հետո տարբեր բրաուզերներում։
    • Օգտագործում էի ֆրեյմվորկեր՝
      • 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 կոնֆիգուրացիոն ֆայլից
    @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>

Իմ մոտեցումը կրոս-բրաուզերային փորձարկմանը միշտ ուղղված է առավելագույն ծածկույթի հասնելու և ռեսուրսների օպտիմալ օգտագործմամբ՝ համատեղելով ձեռնարկային ստուգումները՝ նյուանսները բացահայտելու և ավտոմատացումը՝ ռեգրեսիոն փորձարկումների համար։