Selenium Kerangka: Data, Kata Kunci & Berbasis Hibrid

โšก Ringkasan Cerdas

Selenium Kerangka kerja: Pendekatan Data, Kata Kunci, dan Hibrida mendefinisikan bagaimana penguji mengatur kode otomatisasi, memisahkan data pengujian, dan menggunakan kembali logika. Artikel ini menjelaskan setiap jenis kerangka kerja, arsitekturnya, keunggulannya, dan cara mengimplementasikannya langkah demi langkah dengan contoh praktis. Selenium Contoh kode WebDriver.

  • โœ… Definisi Inti: A Selenium Framework adalah arsitektur kode terstruktur yang meningkatkan kemampuan penggunaan kembali, portabilitas, dan pemeliharaan skrip pengujian otomatis.
  • ๐Ÿ“Š Implementasi Berbasis Data: Pisahkan data uji dari logika menggunakan Excel, CSV, atau XML, dan baca input melalui Apache POI (HSSF untuk XLS, XSSF untuk XLSX).
  • ๐Ÿ”‘ Desain Berbasis Kata Kunci: Arahkan aksi UI melalui lembar kata kunci dan repositori objek sehingga penguji manual dapat membangun kasus tanpa perlu menulis kode. Java kode.
  • โš™๏ธ Optimasi Hibrida: Menggabungkan TestNG penyedia data dengan eksekusi kata kunci untuk mendapatkan fleksibilitas, skalabilitas, dan mengurangi biaya pemeliharaan skrip.
  • ๐Ÿงฉ Manfaat Repositori Objek: Sentralisasikan locator dalam file properti sehingga perubahan elemen hanya memerlukan pembaruan di satu lokasi di semua kasus uji.

Selenium Kerangka

Apa itu Selenium Kerangka?

The Selenium Kerangka otomatisasi Framework adalah arsitektur kode terstruktur yang membuat pemeliharaan pengujian menjadi sederhana, terukur, dan efisien. Tanpa framework, penguji sering menempatkan kode dan data di lokasi yang sama, yang tidak dapat digunakan kembali dan tidak mudah dibaca. Mengadopsi framework memberikan manfaat yang terukur seperti penggunaan kembali kode yang lebih tinggi, portabilitas yang lebih baik, pengurangan biaya pemeliharaan skrip, peningkatan keterbacaan, dan pemisahan tanggung jawab yang lebih jelas antara logika pengujian dan data input.

Mengapa Menggunakan a Selenium Kerangka Kerja Otomatisasi?

A dirancang dengan baik Selenium Framework ini memecahkan tiga masalah yang terus-menerus muncul dalam otomatisasi pengujian: duplikasi kode, locator yang rapuh, dan data pengujian yang sulit dikelola. Dengan menerapkan struktur yang jelas, tim dapat meningkatkan skala rangkaian pengujian mereka dari beberapa skrip hingga ratusan tanpa kehilangan kendali.

  • Pemeliharaan: Locator dan metode pembantu yang terpusat berarti satu perubahan saja akan memperbarui setiap pengujian yang menggunakan elemen tersebut.
  • Dapat digunakan kembali: Operasi umum seperti login, navigasi, atau pengisian formulir ditulis sekali dan dijalankan di banyak kasus uji.
  • Skalabilitas: Menambahkan kasus uji baru menjadi pembaruan data alih-alih tugas pengkodean, yang memungkinkan non-pengembang untuk berkontribusi dalam pembuatan skenario.
  • Pelaporan dan Kolaborasi: Struktur yang terstandarisasi memudahkan integrasi dengan alat pelaporan, pipeline CI/CD, dan kontrol versi.

Jenis dari Selenium Kerangka

Ada tiga yang utama jenis kerangka kerja dibangun di atas Selenium WebDriver untuk mengotomatisasi kasus uji manual. Setiap gaya menargetkan keseimbangan yang berbeda antara upaya pengembang, keterlibatan penguji, dan fleksibilitas data.

  • Kerangka Berbasis Data
  • Kerangka Berbasis Kata Kunci
  • Kerangka Kerja Berbasis Hibrid

Jenis dari Selenium Kerangka

Bagian selanjutnya akan menjelaskan setiap kerangka kerja secara detail, dimulai dari pendekatan berbasis data yang paling sederhana dan berlanjut ke model hibrida yang paling fleksibel.

Kerangka Kerja Berbasis Data di Selenium

Kerangka Kerja Berbasis Data di Selenium adalah metode untuk memisahkan kumpulan data uji dari logika kasus uji. Setelah data dipisahkan, Anda dapat memodifikasi input untuk fungsi tertentu tanpa menyentuh kode pengujian. Metode ini umumnya digunakan untuk mengambil kasus uji dan rangkaian uji dari sumber eksternal seperti Excel, .csv, .xml, atau tabel basis data.

Kerangka Kerja Berbasis Data di Selenium

Untuk membaca atau menulis file Excel, Apache menyediakan pustaka POI yang terkenal. Pustaka ini dapat menangani keduanya. xls ke XLSX format. Itu HSSF implementasi membaca file XLS lama, sementara XSSF Implementasi ini menangani file XLSX modern.

Kami sudah membahas Pengujian Berbasis Data di artikel kami sebelumnya. tutorial sebelumnya.

Kerangka Berbasis Kata Kunci di Selenium

Kerangka Berbasis Kata Kunci di Selenium adalah metode yang mempercepat otomatisasi dengan memisahkan kata kunci untuk fungsi dan instruksi umum. Semua operasi dan instruksi ditulis dalam file eksternal, biasanya lembar Excel. Penguji dapat menentukan fungsionalitas yang ingin mereka validasi tanpa memodifikasi Java kode, yang menjadikan gaya ini ideal untuk tim di mana analis bisnis atau QA manual berkontribusi dalam mendefinisikan pengujian.

Berikut tampilan kerangka kerja lengkapnya:

Kerangka Berbasis Kata Kunci di Selenium

Seperti yang Anda lihat, ini adalah kerangka kerja 5 langkah. Mari kita pelajari langkah demi langkah secara detail.

Langkah 1)

  • Skrip driver Execute.java memanggil Read.Guru99ExcelFile.java.
  • BacaGuru99ExcelFile.java berisi kode POI yang membaca data dari Excel.

Langkah 2)

  • BacaGuru99ExcelFile.java membaca data dari TestCase.xlsx.
  • Beginilah tampilan lembar tersebut:

Lembar Excel Kerangka Kerja Berbasis Kata Kunci Selenium

  • Berdasarkan kata kunci yang tertulis dalam file Excel, kerangka kerja tersebut melakukan tindakan yang sesuai pada antarmuka pengguna (UI).
  • Sebagai contoh, untuk mengklik tombol berlabel โ€œLoginโ€, lembar Excel menyimpan kata kunci โ€œKlikโ€. Untuk mengidentifikasi tombol Login di antara banyak tombol lainnya pada suatu halaman, baris Excel mendefinisikan Nama Objek sebagai loginButton dan Tipe Objek sebagai nama (lihat baris yang disorot pada gambar). Tipe Objek juga dapat berupa XPath, CSS, kelas, atau strategi pencari lokasi lainnya.

Langkah 3) BacaGuru99ExcelFile.java meneruskan data yang telah diuraikan kembali ke skrip penggerak Execute.java.

Langkah 4)

  • Untuk semua elemen UI web, Anda memelihara repositori objek yang menyimpan penunjuk elemen seperti XPath, nama, CSS, atau nama kelas.

Repositori objek dalam Kerangka Kerja Berbasis Kata Kunci

  • Execute.java (skrip penggerak) membaca seluruh repositori objek dan menyimpannya dalam sebuah variabel.
  • Kelas pembantu ReadObject mengekspos metode getObjectRepository yang memuat repositori pada saat runtime.

Kelas pembantu ReadObject untuk Kerangka Kerja Berbasis Kata Kunci (Keyword Driven Framework)

CATATAN: Anda mungkin bertanya-tanya mengapa repositori objek diperlukan. Jawabannya adalah kemudahan pemeliharaan. Jika sebuah tombol dengan nama = btnlogin digunakan dalam 10 kasus uji dan pengembang mengubah namanya menjadi submit, Anda harus mengedit 10 file. Dengan repositori objek, Anda mengubah locator di satu tempat.

Langkah 5)

  • Driver tersebut meneruskan data dari Excel dan repositori objek ke UI.Operakelas tion.
  • UIOperation berisi fungsi-fungsi yang memetakan setiap kata kunci seperti CLICK dan SETTEXT ke aksi WebDriver tertentu.
  • UIOperation adalah sebuah Java Kelas yang berisi implementasi sebenarnya untuk berinteraksi dengan elemen web.

UIOperakelas tion dalam Kerangka Kerja Berbasis Kata Kunci

Struktur proyek lengkapnya terlihat seperti ini:

Struktur proyek lengkap dari Keyword Driven Framework

Mari kita lihat contoh praktis:

Skenario Uji: Kami menjalankan 2 kasus uji.

objek.properti

url=https://demo.guru99.com/V4/
username=uid
password=password
title=barone
loginButton=btnLogin
resetButton=btnReset

BacaGuru99ExcelFile.java

package excelExportAndFileIO;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadGuru99ExcelFile {
    public Sheet readExcel(String filePath, String fileName, String sheetName) throws IOException {
        // Create a File object to open the xlsx file
        File file = new File(filePath + "\\" + fileName);
        // Create a FileInputStream to read the Excel file
        FileInputStream inputStream = new FileInputStream(file);
        Workbook guru99Workbook = null;
        // Detect the file extension
        String fileExtensionName = fileName.substring(fileName.indexOf("."));
        if (fileExtensionName.equals(".xlsx")) {
            guru99Workbook = new XSSFWorkbook(inputStream);
        } else if (fileExtensionName.equals(".xls")) {
            guru99Workbook = new HSSFWorkbook(inputStream);
        }
        // Read the sheet inside the workbook by its name
        Sheet guru99Sheet = guru99Workbook.getSheet(sheetName);
        return guru99Sheet;
    }
}

ReadObject.java

package operation;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadObject {
    Properties p = new Properties();

    public Properties getObjectRepository() throws IOException {
        // Read the object repository file
        InputStream stream = new FileInputStream(new File(System.getProperty("user.dir") + "\\src\\objects\\object.properties"));
        // Load all objects
        p.load(stream);
        return p;
    }
}

UIOperation.java

package operation;
import java.util.Properties;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class UIOperation {
    WebDriver driver;

    public UIOperation(WebDriver driver) {
        this.driver = driver;
    }

    public void perform(Properties p, String operation, String objectName, String objectType, String value) throws Exception {
        System.out.println("");
        switch (operation.toUpperCase()) {
            case "CLICK":
                driver.findElement(this.getObject(p, objectName, objectType)).click();
                break;
            case "SETTEXT":
                driver.findElement(this.getObject(p, objectName, objectType)).sendKeys(value);
                break;
            case "GOTOURL":
                driver.get(p.getProperty(value));
                break;
            case "GETTEXT":
                driver.findElement(this.getObject(p, objectName, objectType)).getText();
                break;
            default:
                break;
        }
    }

    private By getObject(Properties p, String objectName, String objectType) throws Exception {
        if (objectType.equalsIgnoreCase("XPATH")) {
            return By.xpath(p.getProperty(objectName));
        } else if (objectType.equalsIgnoreCase("CLASSNAME")) {
            return By.className(p.getProperty(objectName));
        } else if (objectType.equalsIgnoreCase("NAME")) {
            return By.name(p.getProperty(objectName));
        } else if (objectType.equalsIgnoreCase("CSS")) {
            return By.cssSelector(p.getProperty(objectName));
        } else if (objectType.equalsIgnoreCase("LINK")) {
            return By.linkText(p.getProperty(objectName));
        } else if (objectType.equalsIgnoreCase("PARTIALLINK")) {
            return By.partialLinkText(p.getProperty(objectName));
        } else {
            throw new Exception("Wrong object type");
        }
    }
}

Jalankan Tes.java

package testCases;
import java.util.Properties;
import operation.ReadObject;
import operation.UIOperation;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
import excelExportAndFileIO.ReadGuru99ExcelFile;

public class ExecuteTest {
    @Test
    public void testLogin() throws Exception {
        WebDriver webdriver = new FirefoxDriver();
        ReadGuru99ExcelFile file = new ReadGuru99ExcelFile();
        ReadObject object = new ReadObject();
        Properties allObjects = object.getObjectRepository();
        UIOperation operation = new UIOperation(webdriver);
        // Read keyword sheet
        Sheet guru99Sheet = file.readExcel(System.getProperty("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");
        // Find the number of rows in the Excel file
        int rowCount = guru99Sheet.getLastRowNum() - guru99Sheet.getFirstRowNum();
        for (int i = 1; i < rowCount + 1; i++) {
            Row row = guru99Sheet.getRow(i);
            if (row.getCell(0).toString().length() == 0) {
                System.out.println(row.getCell(1).toString() + "----" + row.getCell(2).toString() + "----" +
                        row.getCell(3).toString() + "----" + row.getCell(4).toString());
                operation.perform(allObjects, row.getCell(1).toString(), row.getCell(2).toString(),
                        row.getCell(3).toString(), row.getCell(4).toString());
            } else {
                System.out.println("New Testcase->" + row.getCell(0).toString() + " Started");
            }
        }
    }
}

Setelah dieksekusi, outputnya akan terlihat seperti ini:

Output eksekusi Kerangka Kerja Berbasis Kata Kunci

Download Selenium File Proyek untuk Demo dalam Tutorial ini

Kerangka Kerja Berbasis Hibrid

Kerangka Kerja Berbasis Hibrid in Selenium Menggabungkan kekuatan dari kerangka kerja Keyword Driven dan Data Driven. Ini adalah model yang mudah digunakan yang memungkinkan penguji manual untuk membuat kasus uji hanya dengan mengedit kata kunci, data uji, dan repositori objek, tanpa menulis kode kerangka kerja apa pun.

Di sini, file Excel menyimpan kata kunci untuk setiap langkah, dan TestNG'S penyedia data menyediakan data uji. Pemisahan ini memungkinkan Anda untuk menskalakan kosakata tindakan dan variasi input secara independen.

Arsitektur Kerangka Kerja Berbasis Hibrida

Untuk kerangka kerja hibrida kami, tidak ada perubahan dalam struktur berbasis kata kunci: kami hanya mengganti ExecuteTest.java dengan HybridExecuteTest.java.

Penggantian komponen Kerangka Kerja Berbasis Hibrida

File HybridExecuteTest ini berisi logika berbasis kata kunci lengkap yang dikombinasikan dengan TestNGmekanisme penyedia data.

Gambaran lengkap dari kerangka kerja hibrida tersebut tampak seperti ini:

Representasi lengkap Kerangka Kerja Berbasis Hibrida

HybridExecuteTest.java

package testCases;
import java.io.IOException;
import java.util.Properties;
import operation.ReadObject;
import operation.UIOperation;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import excelExportAndFileIO.ReadGuru99ExcelFile;

public class HybridExecuteTest {
    WebDriver webdriver = null;

    @Test(dataProvider = "hybridData")
    public void testLogin(String testcaseName, String keyword, String objectName, String objectType, String value) throws Exception {
        if (testcaseName != null && testcaseName.length() != 0) {
            webdriver = new FirefoxDriver();
        }
        ReadObject object = new ReadObject();
        Properties allObjects = object.getObjectRepository();
        UIOperation operation = new UIOperation(webdriver);
        operation.perform(allObjects, keyword, objectName, objectType, value);
    }

    @DataProvider(name = "hybridData")
    public Object[][] getDataFromDataprovider() throws IOException {
        Object[][] object = null;
        ReadGuru99ExcelFile file = new ReadGuru99ExcelFile();
        Sheet guru99Sheet = file.readExcel(System.getProperty("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");
        int rowCount = guru99Sheet.getLastRowNum() - guru99Sheet.getFirstRowNum();
        object = new Object[rowCount][5];
        for (int i = 0; i < rowCount; i++) {
            Row row = guru99Sheet.getRow(i + 1);
            for (int j = 0; j < row.getLastCellNum(); j++) {
                object[i][j] = row.getCell(j).toString();
            }
        }
        System.out.println("");
        return object;
    }
}

Download Selenium File Proyek untuk Demo dalam Tutorial ini

Pertanyaan Umum Demo Slot

Pilih Keyword Driven ketika penguji manual perlu membuat kasus tanpa melakukan pengkodean. Pilih Data Driven ketika skrip yang sama harus dijalankan terhadap banyak variasi input. Gunakan Hybrid ketika Anda membutuhkan fleksibilitas data dan pembuatan pengujian tingkat kata kunci secara bersamaan.

Apache POI membaca dan menulis file Excel yang digunakan sebagai sumber data. HSSF menangani file .xls lama, sedangkan XSSF memproses file .xlsx modern. Bersama-sama, keduanya memungkinkan skrip pengujian Anda untuk mengambil input dinamis dari spreadsheet tanpa perlu memasukkan data secara manual.

Repositori objek memusatkan pencari elemen seperti XPath, CSS, atau nama. Jika pengembang mengganti nama kontrol UI, Anda hanya perlu memperbarui satu entri, bukan setiap kasus uji, yang secara dramatis mengurangi waktu pemeliharaan dan risiko skrip yang rusak.

AI meningkat Selenium kerangka kerja melalui pencari lokasi yang dapat memperbaiki diri sendiri, prioritas pengujian cerdas, dan validasi visual. Mesin AI mendeteksi pergeseran pencari lokasi, merekomendasikan pemilih yang stabil, dan menganalisis pola kegagalan, yang menjaga keandalan rangkaian pengujian hibrida seiring berkembangnya aplikasi yang diuji.

Ya. Asisten AI modern menganalisis aplikasi yang sedang diuji dan menyarankan pustaka kata kunci, contoh input, dan kasus ekstrem. Penguji meninjau dan menyempurnakan saran tersebut, yang mempercepat pengaturan kerangka kerja sambil tetap menjagaping Pengawasan manusia terhadap logika validasi kritis.

Ringkaslah postingan ini dengan: