NỘI DUNG BÀI HỌC

✅ Cài đặt môi trường Maven lên máy tính
✅ Cài đặt Maven project trên IntelliJ IDEA
✅ Cài đặt thư viện TestNG Framework
✅ Chạy test cases với TestNG

✅ Cài đặt môi trường Maven trên Windows


🔆 Cách tải và cài biến môi trường Maven trên windows

Để tải Apache Maven trên máy tính chạy hệ điều hành windows, điều đầu tiên chúng ta cần làm là tải file maven zip từ trang chủ và giải nén ra. Sau đó chúng ta cần cài biến môi trường cho Maven để có thể sử dụng trên máy.

Điều kiện cần

Để cài đặt và sử dụng Maven, trước tiên chúng ta cần đảm bảo máy tính đã cài sẵn JDK và đã cấu hình biến môi trường JAVA_HOME.

🔆 Tải Apache Maven

Apache Maven được tải miễn phí, các bạn có thể vào trang chủ của Apache Maven để tải xuống file zip. Chọn cái Binary zip archive

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Tại thời điểm bài viết là phiên bản 3.8.6 nhưng hiện tại mới nhất thì bản 3.9.5 đang là phiên bản mới nhất của Maven. Chúng ta nên dùng bản mới nhất.

Sau khi tải xong, các bạn tiến hành giải nén và đặt nó trong thư mục bất kỳ, nhưng hãy đặt trong thư mục ít đụng tới vì nếu lở các bạn xoá thì Maven sẽ không hoạt động được nữa. Sau khi giải nén thư mục sẽ trông giống như thế này.

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Bây giờ chúng ta move nó sang ổ đĩa C:\ cho an toàn vì cũng ít đụng đến. An suggest thôi nhé.

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

🔆 Cài đặt biến môi trường cho Maven

Bước cuối cùng để chúng ta có thể sử dụng Maven là cài biến môi trường cho nó bằng cách.

Vào thanh tìm kiếm của windows gõ View advanced system settings hoặc Variable nó sẽ ra như bên dưới:

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Trong System Properties dialog, chọn vào Advanced và chọn Environment Variables…

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester


Trong Environment variables dialog, vào phần System variables chọn New
Trong này chúng ta sẽ tạo biến môi trường MAVEN_HOME và trỏ đến thư mục mà chúng ta đã lưu trước đó. Y như JDK chúng ta từng làm.

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Nó sẽ như thế này

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Tiếp theo chúng ta sẽ trỏ cái biến MAVEN_HOME này vào biến Path của hệ thống

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Sau khi nhấn Edit thì sẽ hiện form tiếp tục nhấn New

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester

Chúng ta nhập giá trị như sau:  %MAVEN_HOME%\bin

[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester


Nghĩa là chúng ta chỉ định từ biến MAVEN_HOME trỏ đến thư mục bin của nó

Tiếp theo nhấn Ok Ok Ok là xong.


🔆 Kiểm tra phiên bản Maven đã cài đặt

Để kiểm tra quá trình cài đặt đã thành công hay chưa chúng ta cần mở CMD lên và chạy những lệnh sau:

mvn -version


[Selenium Java] Bài 4: Cài đặt môi trường Selenium với Java | Anh Tester


Nó sẽ hiển thị Maven version chúng ta vừa cài và cùng phiên bản JDK đã cài trước đó. Vậy là xong !!

Nếu các bạn check nó chưa ra thì ghi lệnh này thử nó có ra đường dẫn đúng chưa:  echo %MAVEN_HOME%

Khi nó ra đường dẫn rồi mà chưa hiểu biến môi trường thì chúng ta cần restart máy lại 😁


✅ Tạo Maven project trên IntelliJ IDEA


Bước 1: Mở IntelliJ IDEA và chọn File > New > Project

Bước 2: Chọn tab New Project và nhập thông tin như mẫu




🔆 Các bạn chú ý:

  • Số 4 chọn JDK 11 hoặc 17 cho ổn định (LTS)
  • Số 5 chọn Maven
  • Số 7 nhập gì cũng được. Không biết nhập gì thì để nguyên mẫu. Những thông tin này sẽ nằm trong file pom.xml sau khi create project.

Cuối cùng nhấn Create là xong !!



✅ Cài đặt thư viện TestNG Framework


✳️ Tổng quan về TestNG Framework

TestNG là 1 công cụ kiểm thử tự động được viết bằng Java, có chức năng quản lý việc tạo test case, thứ tự chạy test case và report sau khi test.

TestNG được xây dựng từ cảm hứng của 2 Framework là JUnit (Java) và NUnit (C#). NG là viết tắt của từ Next Generation.

Xem mindmap để có cái nhìn tổng quan hơn về testNG

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

 

Các tính năng nổi bật của TestNG

  • Mô tả các thiết lập khác nhau khi kiểm thử phần mềm bằng file XML
  • Phân nhóm kiểm thử
  • Tạo mối quan hệ ràng buộc lẫn nhau giữa các module
  • Xác lập thời điểm cho các xử lý trước và sau
  • Cung cấp các chỉ dẫn Annotation – based để nhận diện phương thức test
  • TestNG không yêu cầu có phương thức main()
  • Các phương thức không cần tĩnh (static)

Một số ưu điểm của TestNG

  • Nó cho phép tạo ra các bản báo cáo HTML của tiến trình thực thi.
  • Các chú thích giúp việc kiểm thử dễ dàng hơn.
  • Các trường hợp kiểm thử có thể được nhóm lại và được ưu tiên dễ dàng hơn.
  • TestNG có các annotation logic hơn và dễ hiểu hơn.
  • Có thể kiểm thử song song, tạo ra các log bug, tạo data Parameterized action.
  • TestNG cho phép bạn xác định các test case phụ thuộc.

Các bước viết một test case sử dụng TestNG

  • Viết các test case theo logic của phần cần kiểm thử 
  • Chèn các các chú thích của TestNG
  • Thêm các thông tin bài test của bạn trong file testng.xml
  • Chạy testNG


✳️ Cài đặt và sử dụng TestNG trên IntelliJ IDEA với Maven project


🔆 Cài đặt TestNG Framework

Các bạn chỉ cần add thư viện TestNG vào trong file pom.xml và build lại Maven.

Tải TestNG trên MVN repository: https://mvnrepository.com/artifact/org.testng/testng

Ở đây chúng ta sẽ dùng bản 7.4.0 cho nó ổn định và thích ứng với các thư viện khác nhé.

<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.4.0</version>
</dependency>

Các bạn chú ý là bỏ cái dòng <scope>test</scope> ra nhé. Nghĩa là mình sẽ cho framework áp dụng trên toàn project chứ không chỉ riêng vùng package test. Nôm na là nó sẽ áp dụng cho cả 2 package maintest

Chổ này chúng ta nên tách project cũ ra vì TestNG sẽ theo một cú pháp và cấu trúc chạy test cases mới nên nếu dùng chung sẽ bị ảnh hưởng nội dung bài cũ.

Tiếp theo là thêm TestNG Framework vào pom.xml và nhớ nhấn reload lại maven project

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.anhtester</groupId>
    <artifactId>RestAssuredTestNG2023</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.4.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.9</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>2.0.9</version>
        </dependency>

    </dependencies>

</project>



Thêm 2 cái thư viện SLF4J version mới nhất luôn nhé. Để nó thích ứng với Selenium bản mới nhất.

Còn về TestNG bản 7.4.0 thì nó thích ứng ở tất cả các phiên bản của các thư viện khác.

🔆 Sử dụng TestNG Framework tạo test case

Chúng ta tạo một package mới (com.anhtester) và tạo một class mới (DemoTestNG) để chạy thử xem mình cài đặt được chưa nhé.



Tiếp theo chúng ta thêm @Test trên mỗi function để tạo ra một test case. Nó tự hiểu là 1 test case nên sẽ hiển thị nút Run cho từng function.

package com.anhtester;

import org.testng.annotations.Test;

public class DemoTestNG {

    @Test
    public void testCreateUser() {
        System.out.println("Đây là test case testCreateUser");
    }

    @Test
    public void testEditUser() {
        System.out.println("Đây là test case testEditUser");
    }

}


Như vậy chúng ta không cần dùng hàm main trong Java nữa. Rất tiện lợi vì trong một class chúng ta có thể tạo ra nhiều test cases chứ không chỉ mỗi một hàm main.

 

✅ Cách chạy test theo Package, Class, Method trong file XML


🔆 Cách tạo file testng.xml

Bước 1: tạo một directory trong project vị trí bất kỳ để lưu trữ các file XML

Bước 2: right click vào directory chọn New > File > đặt tên file .xml
VD: SuiteTest01.xml


Thư mục mẫu An tạo nằm trong src/test/resources/suites/SuiteTest01.xml

Lưu ý:

  • File này tên là gì cũng được, không nhất thiết phải là testng.xml, miễn là nó là file xml. Tuy nhiên, nên tránh lấy trùng tên với file config của thằng khác ví dụ như file pom.xml của Maven.
  • File này nằm ở đâu trong Project cũng được, không nhất thiết phải nằm ở ngay dưới folder Project, nhưng tốt nhất là ko nên để nó trong package code nào, nên tách riêng ra.


Nội dung của file testng.xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite 1" verbose="1">
    <test name="Test 1">
        <classes>
            <class name="com.anhtester.DemoTestNG" />
        </classes>
    </test>
</suite>

 

  • Dòng đầu tiên khai báo !DOCTYPE có thể có hoặc không, nhưng nếu bạn ko có thì khi run TestNG sẽ thông báo “It is strongly recommended to add “<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd” >” at the top of your file, otherwise TestNG may fail or not work as expected.
  • TestNG bắt buộc phải có khai báo thẻ <suite> và <test>, nếu bạn bỏ 1 trong 2 cái khai báo đó thì TestNG sẽ báo lỗi.  Lưu ý: <test> ở đây không phải là 1 test case, test case là cái khai báo trong class java.
  • Thẻ <suite> và <test> có attribute name, có thể đặt tên tùy ý, không được đặt trùng tên cho các thẻ.
  • Một file TestNG chỉ có 1 thẻ <suite> duy nhất và <suite> có thể có nhiều thẻ <test>.
  • Trong thẻ <test> có thể có 0 hoặc nhiều đối tượng test: <packages>, <classes>, <methods>.


🔆 Cách run test theo Class

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite 1" verbose="1">
    <test name="Test 1">
        <classes>
            <class name="com.anhtester.DemoTestNG" />
            <class name="com.anhtester.DemoTestNG02" />
        </classes>
    </test>
</suite>
Java
  • Đối tượng phía trong của <test> là <classes>
  • Trong <classes> sẽ điền list các class mà mình muốn run test. name là [packageName].[className]. Ví dụ: com.anhtester.DemoTestNG


Tạo thêm class thứ 2 để có thể gọi dùng



Khi run xong, kết quả sẽ hiển thị như sau:



Nó sẽ chạy hết test cases trong các class mà mình chỉ định. Rất tiện lợi đúng không. Thay vì click chạy từng file class thì này chỉ cần click chạy 1 file XML là xong.

Tương tự thì chúng ta có thể chạy hết 1 package hoặc chỉ định cụ thể những test cases nào đó luôn.

🔆 Cách run test theo Package

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite by package" verbose="1">
    <test name="Test by package">
        <packages>
            <package name="com.anhtester"></package>
        </packages>
    </test>
</suite>​

 

  • Đối tượng phía trong của <test> là <packages>
  • Trong <packages> sẽ điền list các package mà ta muốn run test. Name là [packageName] Ví dụ: com.anhtester


LƯU Ý:
 chỉ được chọn package sau cùng chứa Class chứ không được gọi package còn chứa package con bên trong.


Khi run xong, kết quả sẽ hiển thị như sau:



🔆 Cách run test theo Method

​<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite by method" verbose="1">
    <test name="Test by method">
        <classes>
            <class name="com.anhtester.DemoTestNG">
                <methods>
                    <include name="testCreateUser"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
  • Để run được riêng <method> thì phải có <class>
  • Method muốn được run thì phải sử dụng <include>

Khi run xong, kết quả sẽ hiển thị như sau:




🔆 Cách run test hỗn hợp package, class và method

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite All" verbose="1">
    <test name="Test by Package">
        <packages>
            <package name="com.anhtester"/>
        </packages>
    </test>

    <test name="Test by Class and Method">
        <classes>
            <class name="com.anhtester.DemoTestNG">
                <methods>
                    <include name="testCreateUser"/>
                </methods>
            </class>

            <class name="com.anhtester.DemoTestNG02"/>
        </classes>
    </test>
</suite>​


Chúng ta có thể kết hợp nhiều kiểu chạy test lại với nhau theo ý muốn. Tuy nhiên cần xây dựng cho phù hợp, đảm bảo các quy tắt của từng kiểu như trên.



Khi run xong, kết quả sẽ hiển thị như sau:




🔆 Cách sử dụng chức năng Include và Exclude

Include: được dùng trong các trường hợp sau đây:

  • Trong 1 package có nhiều package, nhưng chỉ muốn run số ít package trong đó.
  • Trong 1 Class có nhiều method, chỉ muốn run số ít method (xem lại mục chạy với Method ở trên).

Exclude: được dùng trong các trường hợp sau đây:

  • Trong 1 package có nhiều package, nhưng muốn không run một vài package trong đó.
  • Trong 1 Class có nhiều method, nhưng muốn không run một vài method.

Ví dụ:



<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite by exclude method" verbose="1">
    <test name="Test by exclude method">
        <classes>
            <class name="com.anhtester.DemoTestNG">
                <methods>
                    <exclude name="testCreateUser"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>




Tương tự Package và Class cũng khai báo exclude như vậy nhé.

Teacher

Teacher

Anh Tester

Software Quality Engineer

Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu

Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học