SELENIUM Bài 12: Parallel Testing - Test song song

 I. Giới thiệu về Parallel Testing

1. Parallel Testing là gì ?

Parallel Testing là chúng ta chạy nhiều test cùng một lúc.

  • Ưu điểm: Parallel Testing giúp chúng ta tiết kiệm được thời gian chạy toàn bộ test suite, một test suite có chứa rất là nhiều testcase, nếu như chúng ta test được nhiều test case cùng một lúc thì sẽ giúp tiết kiệm được rất nhiều thời gian.
  • Nhược điểm: Test case có thể bị conflict lẫn nhau, ví dụ xung đột về data, về browser, giảm độ tin cậy khi mở nhiều browser cùng một lúc cho nên chúng ta nên hạn chế dùng test song song, thay vì chúng ta chạy Parallel Testing thì chúng ta có thể chạy test vào những lúc rỗi thời gian như ban đêm.

Hình 1: Parallel Testing

2. Làm sao để có thể sử dụng Parallel Testing ?

Để sử dụng Parallel Testing chúng ta nhấn chuột phải vào tên Project - chọn testNG - covert to TestNG, khi chúng ta chọn vào đây thì nó sẽ tạo ra file test suite dùng chung cho toàn bộ Project của chúng ta nó sẽ liệt kê toàn bộ các cái class trong giao diện mình sẽ giải thích từng tùy chọn trong giao diện này:

Parallel mode:  Mặc định nó sẽ để ở none tuy nhiên sẽ có 3 tùy chọn nữa đó là chạy theo methods, chạy theo classes và chạy theo tests
  • Nếu chúng ta chọn methods thì các method sẽ được chạy song song với nhau bất kỳ nó nằm ở class nào
  • Nếu chúng ta chọn Classes thì các class sẽ được chạy song song với nhau tuy nhiên thì các method trong cùng class sẽ không chạy song song với nhau mà chỉ các method ở khác class sẽ chạy song song với nhau.
  • Nếu chúng ta chọn Tests thì các test sẽ được chạy song song với nhau
Thông thường thì chúng ta thường để chạy song song tests với nhau

Thread count: Là số testcase được chạy cùng một lúc, tham số này có thể được khai báo ở trong test suite và trong test, tuy nhiên chúng ta nên khai báo ở trong test suite thì nó sẽ apply cho toàn bộ test suite


Hình 2: Giao diện convert to testNG

 II. Ví dụ về Parallel Testing

Đề bài: Chạy các test case song song thay vì lần lượt trong ví dụ Multi Browser Test ở Bài 11 (SELENIUM Bài 11: TestNG Multi Browser Testing) các bạn có thể xem lại Bài 11 TẠI ĐÂY
Cách làm: 
  • Code phần test case thì sẽ không thay đổi, chúng ta chỉ thay đổi một số thành phần của file Test Suite để có thể chạy song song được.
  • Đầu tiên chúng ta sẽ thực hiện như toàn bộ bài trong phần ví dụ trong Multi Browser, sau đó chúng ta nhấn chuột phải vào tên Project - chọn testNG - covert to TestNG, Parallel Mode chọn tests , Thread count điền 2( Vì hiện IE đang bị lỗi nên chỉ chạy 2 test case mở Chrome và mở Firefox để đăng nhập website song song với nhau), sau đó nhấn Finish.
  • Lúc này Eclipse sẽ tạo ra một file testng.xml có nội dung như sau: 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="2" parallel="tests" name="Suite">
  <test thread-count="2" parallel="tests" name="Test">
    <classes>
      <class name="tests.LoginTestExcelDataProvider"/>
      <class name="tests.MultiBrowserTest"/>
      <class name="tests.LoginDataProvider"/>
      <class name="tests.LoginTestGroup"/>
      <class name="tests.LoginTestExcel"/>
      <class name="tests.TakeScreenShotTest"/>
      <class name="tests.LoginTestDepend"/>
      <class name="tests.LoginTestParameter"/>
      <class name="tests.LoginTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

  • Tuy nhiên chúng ta sẽ lược bỏ đi một số class để nó chạy ví dụ cho suôn sẻ tránh bị xung đột và thêm một số  parameter để cho nó phù hợp với Multi Browser Test, sau đó chúng ta được file testng.xml như sau:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="2" parallel="tests" name="Suite">

//Nó chỉ khác file test suite MultiBrowserTest.xml ở chỗ có thêm này suite thread-count này 
parallel lúc này có có giá trị là tests mà không phải là false nữa, suite thread-count sẽ bằng 2 và sẽ chỉ được khi báo trong test suite cho nó chạy chung cho cả test suite chứ không khai báo riêng biệt trong từng test case nữa.

    <test name="Test Chrome">
  <parameter name ="browser" value = "chrome"/>
    <classes>
      <class name="tests.MultiBrowserTest"/>
    </classes>
  </test> <!-- Test -->
  
  <test name="Test FireFox">
  <parameter name ="browser" value = "firefox"/>
    <classes>
      <class name="tests.MultiBrowserTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

  • Sau đó chúng ta nhấn vào file testng.xml và Run as TestNG Suite thì nó sẽ mở ra 2 cửa sổ cùng lúc, mỗi của sổ nó sẽ chạy cho một test riêng, như vậy là xong.


Giới thiệu về HIENDV94

Mình là Hiển. Đây là blog ghi chép lại những thứ mình trải qua và học được hàng ngày, mình luôn luôn muốn học hỏi để trau dồi kinh nghiệm, hoàn thiện bản thân. Rất mong được làm quen mọi người. Hãy kết bạn với mình qua Facebook các bạn nhé.

0 Bình luận:

Đăng nhận xét