DevOps AI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud
No Result
View All Result
DevOpsAI
No Result
View All Result
Home AI & Automation

Sử dụng Singleton design pattern trong Automation test

Huyen Tran by Huyen Tran
1 Tháng 5, 2025
in AI & Automation
2
Sử dụng Singleton design pattern trong Automation test
Share on FacebookShare on Twitter

Trong bài này chúng ta sẽ cùng nhau tìm hiểu cách sử dụng Singleton design pattern trong automation test. Chúng ta sẽ sử dụng Java và selenium WebDriver để làm ví dụ nhé. Tuy nhiên bạn cũng có thể ứng dụng tương tự với ngôn ngữ khác hoặc Automation Test framework khác.

Để bắt đầu, bạn cần biết những kiến thức sau:

  1. Design pattern là gì? Bạn có thể tìm hiểu tại đây.
  2. Singleton design pattern là gì?

Singleton Design Pattern

Singleton là một trong 5 design pattern thuộc nhóm Creational patterns.

Định nghĩa:

Đảm bảo một class chỉ có duy nhất một instance, đồng thời cung cấp một điểm truy cập toàn cục cho instance này.

  • Instance control – Ngăn các đối tượng khác khởi tạo các bản sao của đối tượng Singleton của riêng chúng, đảm bảo các đối tượng đều truy cập vào một phiên bản duy nhất
  • Flexibility – Vì đây là lớp kiểm soát quá trình khởi tạo, nên lớp có tính linh hoạt để thay đổi quá trình khởi tạo
  • Lazy initialization – Nó trì hoãn việc tạo đối tượng cho đến khi nó được sử dụng lần đầu tiên

Singleton design pattern có ích và được dùng trong trường hợp nào?

Nó rất hữu ích trong trường hợp chúng ta cần sử dụng cùng một đối tượng (object) trên toàn bộ framework. Môt singleton class trả về cùng một instance mỗi khi chúng ta khởi tạo một instance của lớp đó và hãy nghĩ về việc cung cấp quyền truy cập toàn cục cho đối tượng.

Singleton pattern được dùng trong các trường hợp:

Related Post

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
Selenium Tutorial – Java

Selenium Tutorial – Java

1 Tháng 5, 2025

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

1 Tháng 5, 2025

Cách xử lý các sự kiện bàn phím và chuột trong Selenium sử dụng class Actions

1 Tháng 5, 2025
  • Quản lý window
  • Kết nối cơ sở dữ liệu
  • Quản lý file
  • Cấp phát tài nguyên và bộ đệm

Một số ưu điểm khi dùng Singleton Design Pattern

  • Kiểm soát truy cập: lớp Singleton kiểm soát cách thức và thời điểm các clients có thể sử dụng phiên bản duy nhất của nó bằng cách sử dụng đóng gói (encapsulation).
  • Quản lý bộ nhớ tốt hơn: Singleton pattern không cho tạo các class instance mới, giúp giảm yêu cầu bộ nhớ.

Cách tạo một Singleton class như sau

  1. Khởi tạo một private static instance của class Singleton.
  2. Khởi tạo một private constructor của Singleton class để ngăn các đối tượng khác sử dụng toán tử new với class Singleton
  3. Khởi tạo một public static method cho phép truy cập vào đối tượng Singleton. Về cơ bản, phương thức này gọi hàm tạo riêng để tạo một đối tượng và lưu nó trong một trường tĩnh. Tất cả các lệnh gọi phương thức này sau đây đều trả về đối tượng được lưu trong bộ nhớ cache.

Ví dụ

package com.example.singletondesignpattern;

public class Singleton {
    private static Singleton singleton=null;
    private Singleton(){
        System.out.println("Object created.");
    }
    public static Singleton getInstance() {
        if(singleton==null)
            singleton = new Singleton();
        return singleton;
    }
}
package com.example.singletondesignpattern;

public class InstaltiateSingletonExample {
    public static void main (String[] args){
        // First thread
        Singleton first = Singleton.getInstance();
        Singleton second  = Singleton.getInstance();
        Singleton third  = Singleton.getInstance();

        //Print each object
        System.out.println(first);
        System.out.println(second);
        System.out.println(third);
    }
}

Khi bạn chạy đoạn chương trình trên, kết quả sẽ trả về duy nhất một “Object created.” dù bạn đã khởi tạo 3 lần, và hashcode của cả 3 object là như nhau.

Singleton pattern trong Test Automation

Chúng ta đã tìm hiểu Single design pattern rồi, vậy đối với Automation Test (ở đây là Selenium WebDriver) thì nó được áp dụng như thế nào?

 Thật ra bất cứ khi nào bạn thấy bạn nên có một phiên bản duy nhất của lớp nào đó thì bạn nên sử dụng Singleton design pattern.

Ví dụ như các trường hợp sau:

  1. Theo dõi cùng một driver instance trong suốt quá trình thực thi.
  2. Kết nối cơ sở dữ liệu.
  3. Tải các tệp tin (file) bên ngoài như properties file, excel, v.v. thay vì tải đi tải lại
  4. Logger

Ok, chúng ta sẽ cùng thực hiện sử dụng Singleton design pattern trong việc theo dõi trình điều khiển driver nhé.

SingletonDriver.java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SingletonDriver {

    private WebDriver driver;

    // 1. Define instance of singleton class
    private static SingletonDriver instanceOfSingletonDriver= null;

    // 2. Define Constructor
    private SingletonDriver(){
        System.setProperty("webdriver.chrome.driver","./src/main/resources/chromedriver.exe");
        driver= new ChromeDriver();
    };

    // 3. Define method to create instance of class
    public static SingletonDriver getInstance(){
        if(instanceOfSingletonDriver==null){
            instanceOfSingletonDriver = new SingletonDriver();
        }
        return instanceOfSingletonDriver;
    }

    // 4. Define method to get driver
    public WebDriver getDriver()
    {
        return driver;
    }
}

LoadWebpage.java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class LoadWebPage {
    public static void main (String[] args){
        SingletonDriver sDriver1 = SingletonDriver.getInstance();
        WebDriver driver1 = sDriver1.getDriver();
        driver1.get("https://devopsify.co/");

        SingletonDriver sDriver2 = SingletonDriver.getInstance();
        WebDriver driver2 = sDriver2.getDriver();
        driver2.get("https://www.google.com");

        WebDriver driver3;
        System.setProperty("webdriver.chrome.driver","./src/main/resources/chromedriver.exe");
        driver3= new ChromeDriver();
        driver3.get("https://devopsify.co/");

        System.out.println(driver1);
        System.out.println(driver2);
        System.out.println(driver3);
    }
}

Khi bạn chạy LoadWebPage.java, bạn sẽ thấy kết quả chạy:

  1. Chrome browser thứ 1 được bật lên và trang https://devopsify.co/ được mở tiếp sau đó là trang web https://www.google.com được mở trên cùng một tab của browser đó. Chúng ta đã khởi tạo 2 instance của class SingletonDriver, nhưng cho chúng cùng một instance của driver.
  2. Chrome browser thứ 2 được bật lên và trang https://devopsify.co/ được mở vì driver3 không cùng một instance với driver1 và driver2

Console

ChromeDriver: chrome on WINDOWS (32c91ef49aeb7eeeff411dcfd343ecd2)
ChromeDriver: chrome on WINDOWS (32c91ef49aeb7eeeff411dcfd343ecd2)
ChromeDriver: chrome on WINDOWS (08a46a5a8550c9395b22b82fb1f81b8f)

Process finished with exit code 0

Với ví dụ sử dụng singleton design pattern ở trên, chúng ta chỉ có duy nhất một driver instance, như các bạn biết việc chỉ có một driver instance sẽ không thể thực thi việc chạy test song song. Vậy thì phải làm sao đây? 

Các bạn xem bài viết ở đây nhé.

Cheers! 🙂

Tags: automation testdesign patternsingleton
Huyen Tran

Huyen Tran

Related Posts

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
AI & Automation

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

by devopsify
16 Tháng 6, 2025
Selenium Tutorial – Java
AI & Automation

Selenium Tutorial – Java

by Huyen Tran
1 Tháng 5, 2025
Detox – gray box end-to-end testing automation framework cho ứng dụng React Native
AI & Automation

Detox – gray box end-to-end testing automation framework cho ứng dụng React Native

by Huyen Tran
1 Tháng 5, 2025
Next Post
TestNG Singleton Design Pattern: Run tests parallel

TestNG Singleton Design Pattern: Run tests parallel

Comments 2

  1. Pingback: Selenium Tutorial - Java - DevOpsify
  2. Pingback: TestNG Singleton Design Pattern: Run tests parallel - DevOpsify

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recommended

Các website demo hay được sử dụng cho thực hành Automation Test

Các website demo hay được sử dụng cho thực hành Automation Test

11 Tháng 6, 2025
Cài đặt Maven trên Windows

Cài đặt Maven trên Windows

11 Tháng 6, 2025
Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

Hướng dẫn cài đặt Kubernetes trên Ubuntu 22.04

1 Tháng 5, 2025
Tổng hợp các phiên bản Stable Diffusion: So sánh, tính năng và yêu cầu phần cứng

Tổng hợp các phiên bản Stable Diffusion: So sánh, tính năng và yêu cầu phần cứng

13 Tháng 6, 2025
Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent

16 Tháng 6, 2025
MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật

16 Tháng 6, 2025
DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

13 Tháng 6, 2025
GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

GitHub Action DevOpsify Check Tool – Tự động kiểm tra bảo mật & hiệu suất

11 Tháng 6, 2025
DevOpsify

Cộng đồng DevOps Việt Nam chia sẽ kiến thức giúp tăng tốc quá trình phát triển ứng dụng và tự động hóa trong lĩnh vực Cloud DevOps & AI.

Bài viết mới

  • Sử dụng VS Code và Playwright MCP tự động test demo website Demoblaze thông qua GitHub Copilot Agent
  • MCP server 2025 tốt nhất : Hướng dẫn chọn & bảo mật
  • DevOpsify Check Tool hỗ trợ MCP – Tự động hóa kiểm tra qua AI Claude & VS Code

Categories

  • AI & Automation
  • Bảo mật
  • Chưa phân loại
  • DevOps & Cloud
  • Tin tức
No Result
View All Result
  • Home
  • Bảo mật
  • AI & Automation
  • DevOps & Cloud
  • Bộ đề luyện thi cloud

© 2025 DevOpsify