Phỏng vấn TestNG: Gợi ý trả lời hay nhất cho lập trình viên

Share on facebook
Share on google
Share on twitter
Share on linkedin

testng là gì

Khi phỏng vấn lập trình chắc hẳn các bạn chuyên viên IT cũng gặp không ít khó khăn đối với các câu hỏi phỏng vấn testNG. Vậy nên chuẩn bị những gì để phỏng vấn testNG thành công? Hãy cùng Monday Career tìm hiểu qua bài viết dưới đây nhé.

Thông tin chung về TestNG

Trong lĩnh vực lập trình, hẳn các lập trình viên đều đã quen thuộc với các thuật ngữ “Framework” (một thư viện các lớp đã được xây dựng hoàn chỉnh , bộ khung để phát triển các Phần mềm ứng dụng), “Testing Framework” hay “Testing Automation Framework” (mô hình kiểm thử tự động – một cách đơn giản – là một tập hợp các quy luật, nguyên tắc dùng trong quá trình viết mã kiểm thử).

Có ba Testing Framework thường gặp là JUnit, Nunit và TestNG. Trong đó TestNG được xem là công cụ tân tiến nhất trong số các Testing Framework.

Bài viết này sẽ liệt kê ra một số các câu hỏi liên quan đến công cụ TestNG mà các bạn có thể sẽ gặp khi phỏng vấn xin việc ở vị trí của một lập trình viên.

TestNG là một tên gọi của một công cụ Testing Framework được tạo ra bởi một kỹ sư lập trình google mang tên Cedric Beust. Thuật ngữ TestNG (Next Generation) mang ý nghĩa như một thế hệ tiếp theo của lĩnh vực này.

Đây cũng được biết đến như một là phiên bản nâng cấp của JUnit hay Nunit với nhiều tính năng mạnh mẽ và vượt trội dễ dàng sử dụng và là công cụ kiểm thử tự động được sử dụng phổ biến hiện nay.

Dưới đây là một số câu hỏi liên quan đến công cụ này mà nhà tuyển dụng có thể đặt ra cho bạn:

Phỏng vấn ý nghĩa của file <testNG.xml> là gì?

testng là gì
testng là gì

Gợi ý trả lời:

Trong dự án Selenium TestNG, ta sử dụng file <testNG.xml> để cấu hình các bộ test đã hoàn thành vào trong một file cụ thể. File này giúp cho chúng ta gom nhóm các bộ test case và các tham số của bộ đó một cách dễ dàng trong file đó. Đồng thời cũng cung cấp khả năng tạo các tập hợp con cho các test hoặc tách thời gian gian chạy các test theo cấu hình.

Sử dụng file <testNG.xml> có tác dụng gì?

Một số công việc ta có thể dùng nhóm trong file .xml này xử lí như:

  1. Có thể cấu hình bộ test bao gồm nhiều test case cụ thể nào đó để chạy từ một nơi duy nhất. Như cho phép bộ test này chỉ run test trên FireFox, hoặc chỉ trên IE thôi.
  2. Bao gồm hoặc không bao gồm các test method được thực thi việc test ứng dụng
  3. Có thể chỉ định cụ thể một nhóm nào sẽ được chạy hoặc không
  4. Có thể sử dụng các tham số cho các test, như việc set tham số để chọn trình duyệt sẽ sử dụng này, linh động trong việc kết nối cơ sở dữ liệu…
  5. Bạn cũng có thể cấu hình để chạy test song song cho ứng dụng, ví dụ như cấu hình để chạy bộ test nào đó chạy cùng một lúc trên các trình duyệt là FireFox, Chrome và IE chẳng hạn.

Cách sử dụng tham số trong file .xml và trong các test case như thế nào?

Cách sử dụng tham số trong file .xml và trong các test case như thế nào?
Cách sử dụng tham số trong file .xml và trong các test case như thế nào?

Gợi ý trả lời:

Chúng ta có thể định nghĩa các tham số trong file .xml theo cú pháp dưới đây:

<parameter name=”browser” value=”FireFox” />

Ví dụ:

<suite name=”My suite”>

<parameter name=”first-name”  value=”Cedric”/>

      <test name=”Simple example”>

 <– … –>

Bên cạnh đó, ta cũng sẽ sử dụng các parameter theo cú pháp dưới đây trong test case:
Ở đây, thuộc tính name định nghĩa tên của tham số, thuộc tính value là giá trị của thuộc tính đó.

@Parameters ({“browser”})


Ví dụ:

@Parameters({ “first-name” })

@Test

public void testSingleString(String firstName) {

System.out.println(“Invoked testString ” + firstName);

assert “Cedric”.equals(firstName);

}

Trong trường hợp một test case có nhiều method @Test, nhưng khi thực thi test case thì lại không muốn run một method test nào đó, có thể làm gì để giải quyết vấn đề này?

method @test
method @test

Gợi ý trả lời:

Ở đây chúng ta chỉ cần thêm tên method mà ta không muốn chạy vào trong tag exclude trong file <testNG.xml> theo cú pháp hướng dẫn dưới đây:

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

<suite name=”Test Exclusion Suite”>

   <test name=”Exclusion Test” >

      <classes>

          <class name=”Your Test Class Name”>

              <methods>

                   <exclude name=”Tên test method mà bạn muốn Exclude”/>

              </methods>

          <class>

       </classes> 

   </test>

</suite>

Sắp xếp thứ tự các thẻ dưới đây theo cấp cha-con trong file <testNg.xml> khi phỏng vấn

testng
testng

<test>

 <suite>

 <class>

 </methods>

 </classes>

Gợi ý trả lời:

Trong file <testNg.xml> ta có:

Tag cha trong file testNg.xml  là tag <suite>

Trong tag <suite> có thể bao gồm một hoặc nhiều tag <test>

Trong tag <test> có thể bao gồm tag <classes>

Tag <classes> có thể bao gồm một hoặc nhiều tag <class>

Tag <class> chứa các tag <method> – nơi mà chúng ta định nghĩa các test method có thể được thực thi hoặc là không.

Do đó, thứ tự các thẻ theo cấp cha-con được sắp xếp như sau:

<suite>

  <test>

    </classes>

      <class>

        </methods>

Set thứ tự ưu tiên của các @Test method như thế nào? Nó có ý nghĩa gì?

Set thứ tự ưu tiên của các @Test method

Gợi ý trả lời:

Trong số các test case cho ứng dụng web mà chúng ta có, ta có thể thực hiện gắn độ ưu tiên thực hiện cho các test case ấy bằng cách thêm tham số vào trong anotation @Test theo cú pháp sau:

@Test(priority=0)

Bằng cách sử dụng việc này ta có thể dễ dàng điều khiển thứ tự thực thi các test case theo ý muốn, hoặc theo yêu cầu nhất định nào đó. Cụ thể với những test case được gắn trọng số priority = 0 thì sẽ được ưu tiên chạy trước những test case có trọng số bằng 1, rồi 2… Như vậy sẽ tăng tỉ lệ thành công khi phỏng vấn testNG.

Kể tên ít nhất 5 assertion của testNG mà chúng ta có thể sử dụng trong Selenium webdriver khi phỏng vấn testNG

Gợi ý trả lời:

Có nhiều loại assertion khác nhau trong testNG, dưới đây là một số loại assert thường được sử dụng như:

  1. assertEquals
  2. assertNotEquals
  3. assertTrue
  4. assertFalse
  5. assertNull
  6. assertNotNull

Hãy đưa ra một số cách khác nhau để run TestNG?

Gợi ý trả lời:

Chúng ta có thể run TestNG bằng một số cách sau:

  1. Thực hiện run trực tiếp từ Eclipse IDE
  2. Hoặc run thông qua IntelliJ’s IDEA IDE
  3. Thực hiện run với ant build tool
  4. Hoặc run từ command line

Để disable một test trong testNG bạn làm cách nào?

Gợi ý trả lời:

Để disable một test case, ta có thể thêm tham số enable vào trong annotation @Test theo cú pháp dưới đây:

@Test(enabled = false)

Parametric testing trong TestNG là gì?

Gợi ý trả lời:

Parametric testing cho phép chúng ta chạy lại cùng một test case nhưng với các giá trị test data khác nhau. Ví dụ với trường hợp đăng nhập, ta có thể đăng nhập với nhiều dữ liệu test có cặp username và pass word khác nhau. TestNG cho phép chúng ta có thể truyền các tham số vào trong các test method bằng hai cách dưới đây:

  1. Sử dụng trong file TestNG.xml
  2. Với Data providers.

Các cách để xuất báo cáo trong TestNG khi phỏng vấn

Mô hình TestNG
Mô hình TestNG

Gợi ý trả lời:

TestNg cung cấp hai cách giúp chúng ta có thể xuất báo cáo, đó là:

  1. Sử dụng Listeners: một class listenter sẽ thực thi một interface là org.testng./TestListener. Trong khi run test, TestNg sẽ gửi thông tin tới các class đó mỗi khi các test case đó ở các trạng thái như: est begins, finishes, skips, passes hoặc fails.
  2. Sử dụng Reporters: đối với một class reporting, nó cũng sẽ thực thi cái interface là org.testng/Reporter. Khi mà tất cả các test suite chạy xong, những class này sẽ được gọi đến, lúc này tất cả các thông tin của các đối tượng trong toàn bộ quá trình thực hiện test sẽ được gửi đến class này.

Liệt kê những ưu điểm của TestNG so với Junit?

Gợi ý trả lời:

Dưới đây là một số ưu điểm của TetsNG so với Junit:

  1. TestNG có các anotation logic hơn và dễ hiểu hơn
  2. TestNG class không yêu cầu bắt buộc khai báo @BeforeClass và @AfterClass.
  3. Trong Selenium TestNG không có các ràng buộc về method name
  4. TestNG hỗ trợ thêm một số annotations:
  5. @Before/AfterSuite,
  6. @Before/AfterTest, and
  7. @Before/AfterGroup.
  8. Trong Selenium TestNG project, thì bạn không cần phải extend class nào
  9. Trong TesNG, bạn có thể thực hiện chạy song song các test case
  10. TestNG hỗ trợ bạn gom nhóm các test case, điều mà Junit không làm được.
  11. Từ các nhóm, TestNG cho phép bạn chạy các test case nằm trong các nhóm ấy.
  12. TestNG cho phép bạn xác định các test case phụ thuộc.

Lời kết

Trên đây là tổng hợp một số câu hỏi mà các ứng viên lập trình có thể gặp phải. Mong rằng bài viết này có thể phần nào giúp các bạn chuẩn bị. Hãy tự tin trước buổi phỏng vấn của mình.

MC Chung

Booking.com
Klook.com
Booking.com