Sobes.tech
Middle

Kross-brauzer testida tajribangiz haqida gapiring.

sobes.tech AI

AIdan javob

Kross-brauzerli test qilish veb-ilovalar uchun majburiy bosqich bo'lib, turli brauzerlar va ularning versiyalarida to'g'ri ko'rsatilishi va funksionallikni ta'minlaydi.

Mening tajribam quyidagilarni o'z ichiga oladi:

  1. Qo'lda test qilish:

    • Har qanday muhim funksionallik yoki UI o'zgarishidan so'ng, asosiy brauzerlarda (Chrome, Firefox, Edge, Safari) turli operatsion tizimlar (Windows, macOS, Linux) va ekran o'lchamlarida qo'lda muhim ssenariylarni tekshirdim.
    • CSS renderlash xususiyatlari, JavaScript ishlashi va moslashuvchan dizaynga alohida e'tibor qaratdim.
    • Dasturchi vositalaridan (Developer Tools) foydalanib, muammolarni tahlil qilish va debugging qilish.
  2. Haqiqiy qurilmalarda va virtual muhitlarda test qilish:

    • Eski brauzer versiyalarida yoki maxsus OS konfiguratsiyalarida test qilish uchun virtual mashinalardan (masalan, Windows va macOS ning turli versiyalarida) foydalanish.
    • Mobil qurilmalar uchun emulyatorlar va simulyatorlardan (masalan, Xcode Simulator iOS-Safari uchun) foydalanish.
    • Brauzerlar va qurilmalarni boshqarish uchun xizmatlardan (masalan, BrowserStack, Sauce Labs) foydalanish, bu esa katta hajmdagi haqiqiy qurilmalar va brauzerlar bo'yicha testlarni kengaytirishga imkon beradi.
  3. Kross-brauzer testlarni avtomatlashtirish:

    • Har kuni yoki har bir commitdan so'ng turli brauzerlarda bajariladigan avtomatlashtirilgan testlarni CI/CD pipeline ga integratsiya qilish.
    • Frameworklardan foydalanish:
      • Selenium WebDriver: turli tillarda (Java, Python, JavaScript) yozilgan testlarni va ularni brauzer uchun mos drayverlar yordamida ishga tushirish.
      • Playwright va Cypress: yangi loyihalarda, tez va ishonchli avtomatlashtirish uchun, turli brauzerlarni "korpusdan" qo'llab-quvvatlash bilan.
    • Testlarni parallel yoki multiplexing yordamida bajarish (masalan, Selenium Grid yoki bulut xizmatlaridan foydalanib) testlarni bajarish vaqtini qisqartirish.
    • Vizual regressiyalarni tekshirish uchun (masalan, Applitools, Percy) ekran suratlarini solishtirish orqali avtomatlashtirish.
  4. Strategiya va vositalarni belgilash:

    • Maqsadli auditoriya tomonidan eng ko'p ishlatiladigan brauzerlar va qurilmalarni aniqlash uchun Google Analytics kabi veb-analitikani tahlil qilish.
    • Analitika, loyiha talablari va xavf asosida brauzerlar, OS va qurilmalar kombinatsiyalarini o'z ichiga olgan test matritsasini tuzish.
    • Yangi brauzer versiyalarini va ularning xususiyatlarini doimiy o'rganish va test strategiyasini moslashtirish.

Selenium yordamida Chrome va Firefox uchun test ishga tushirish kodining misoli:

// TestNG yoki JUnit konfiguratsiya qilingan deb hisoblanadi
// va kerakli drayverlar (chromedriver, geckodriver) PATH ga qo'shilgan

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; // Drayver o'zgaruvchisi

    @BeforeClass // Bu metod barcha testlardan oldin bajariladi
    public void setup() {
        // Drayverlar uchun yo'llarni sozlash, agar PATH da bo'lmasa
        // System.setProperty("webdriver.chrome.driver", "yo'l/chromedriver");
        // System.setProperty("webdriver.gecko.driver", "yo'l/geckodriver");
    }

    @Parameters("browser") // XML konfiguratsiya faylidan parametr
    @Test // Test ssenariysi
    public void testHomepageTitle(String browserName) { // XML dan keladigan parametr
        if (browserName.equalsIgnoreCase("chrome")) {
            driver = new ChromeDriver(); // Chrome drayverini ishga tushurish
        } else if (browserName.equalsIgnoreCase("firefox")) {
            driver = new FirefoxDriver(); // Firefox drayverini ishga tushurish
        } else {
            throw new IllegalArgumentException("Qo'llab-quvvatlanmaydigan brauzer " + browserName);
        }

        driver.manage().window().maximize(); // Brauzer oynasini kengaytirish
        driver.get("https://www.example.com"); // URL ni ochish

        String pageTitle = driver.getTitle(); // Sahifa sarlavhasi
        System.out.println("" + browserName + " brauzerida sahifa sarlavhasi: " + pageTitle);
        // Assert.assertEquals(pageTitle, "Example Domain");

        // Qo'shimcha tekshiruvlar...
    }

    @AfterMethod // Har testdan so'ng bajariladi
    public void tearDown() {
        if (driver != null) {
            driver.quit(); // Brauzerni yopish
        }
    }
}
<!-- Chrome va Firefox uchun testng.xml misoli -->
<?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">
        <parameter name="browser" value="chrome"/>
        <classes>
            <class name="CrossBrowserTest"/>
        </classes>
    </test>

    <test name="Firefox Test">
        <parameter name="browser" value="firefox"/>
        <classes>
            <class name="CrossBrowserTest"/>
        </classes>
    </test>

</suite>

Mening yondashuvim maksimal qamrovga erishish uchun harakat qilish, qo'lda tekshiruvlar bilan nozik nuqtalarni aniqlash va avtomatlashtirish bilan regressiya testlarini o'tkazishni birlashtirishga qaratilgan.