Automation Test With Selenium

SeleniumJava.jpg

Tổng quan về Selenium

Trong giai đoạn bùng nổ về công nghệ thông tin hiện nay, nhu cầu phát triển phần mềm nói chung và các ứng dụng xây dựng trên nền web nói riêng về chất lượng và số lượng đang trở nên bức thiết. Kéo theo đó là nhu cầu kiểm thử giao diện ứng dụng web để đạt được chất lượng tối ưu trước khi đến tay khách hàng. Vì thế mà các công cụ hỗ trợkiểm tra tự động đang dần trở thành các trợ thủ đắc lực cho đội ngũ phát triển phần mềm. Một trong số đó, công cụ tiêu biểu là Selenium. Đây là bộ công cụ mã nguồn mở, mạnh mẽ, hỗ trợ các ứng dụng trên nền web, nhiều platform và các trình duyệt phổ biến.

SELENIUM(SE) là một phần mềm mã nguồn mở, được phát triển bởi Jason Huggins vào năm 2004 và được phát triển bởi Thoughtwork. Ông phát triển thư viên Javascript để tự động chạy các test trên nhiều trình duyệt, chính thư viện này đã trở thành Selenium Core tạo cơ sở cho Selenium IDE và Selenium Remote Control(RC). Selenium RC là một đột phá vì không sản phẩm nào cho phép bạn điều khiển trình duyệt với bất kì ngôn ngữ mình chọn.

Selenium gồm nhiều công cụ với cách tiếp cận khác nhau để hỗ trợ kiểm thử tự động. Bộ công cụ này rất linh hoạt cho phép lựa chọn các yếu tố giao diện hay so sánh kết quả thí nghiệm dự kiến với thực tiễn. Một trong những tính năng chính của Selenium là hỗ trợ kiểm thử trên nhiều trình duyệt. Selnium là một công cụ hỗ trợ kiểm tra tự động cho các ứng dụng chạy trên nền web. Selenium hỗ trợ kiểm tra hầu hết trên các trình duyệt phổ biến hiện nay như Firefox , Internet Explorer , Safari ,.. cũng như các hệ điều hành chủ yếu như Windows , Linux , Mac ,.. Selenium hỗ trợ một số lớn các ngôn ngữ lập trình như C# , Java , Perl , PHP , Python, Ruby,..

Selenium bao gồm một bộ công cụ hỗ trợ kiểm tra tự động tính năng của ứng dụng web bao gồm: Selenium IDE, Selenium Remote control(RC), Selenium Core và Selenium Grid. Selenium IDE được phát triển dưới dạng một ứng dụng mở rộng (add­on) cho Mozilla Firefox phiên bản 2.0 trở lên. Công cụ cung cấp chức năng Record and Playback. ­

Selenium Remote Control với bộ công cụ này cho phép nhận các Test script được thu bởi Selenium IDE, cho phép chỉnh sửa cải tiến linh động bằng ngôn ngữ lập trình khác nhau . Sau đó khởi động một trong các trình duyệt web được chỉ định để thực thi kiểm tra trực tiếp trên trình duyệt đó. Selenium RC còn cũng cấp khả năng lưu lại kết quả kiểm tra.

Selenium Grid thực hiện phương pháp kiểm tra phân bố, phối hợp nhiều kết quả Selenium RC để có thể thực thi trên nhiều trình duyệt web khác nhau trong cùng một lúc. Selenium Grid cũng cho phép lưu lại kết quả kiếm tra. ­ Selenium Core được tích hợp trong Selenium IDE, là một công cụ chạy các testscript viết bằng Selenese.

Selenium có nhiều cách sử dụng khác nhau. Chúng ta có thể dùng Test Runner mode(Bot mode) sử dụng Selenium Core, cách này dùng các test case và test suite dưới dạng hàng trong file html. Với Selenium Remote control (RC) là driven mode, ở đây các test case trong các ngôn ngữ lựa chọn (Java, C#, Python, Perl, Ruby...). Record mode sử dụng Selenium IDE để thu lại các thao tác và giao diện web.

Selenium IDE là công cụ giúp bạn phát triển ca kiểm thử được xây dựng dưới dạng add­ons của Fire­fox. Nó là cách tiện lợi nhất để xây dựng các ca kiếm thử, gồm các phần tử giao diện giúp bạn có thể lựa chọn thể hiện các thao tác, không chỉ tiết kiệm thời gian mà còn là cách thông minh để hiểu kịch bản Selenium. Bộ công cụ này cung cấp chức năng “thu và chạy lại”­Record and Playback. Nhờ đó Tester có thể nhanh chóng tạo một bộ kịch bản kiểm tra (test script) bằng cách trực tiếp “thu” các thao tác của mình trên đối tượng cần kiểm tra thành một tập những câu lệnh “Selenese” ( ngôn ngữ kịch bản được phát triển cho

Selenium IDESelenium Core – có dạng bản HTML ) . Sau đó chạy lại các câu lệnh này để kiểm tra. Chức năng năng này rất hữu dụng , cho phép tiết kiệm thời gian viết kịch bản kiểm tra. Selenium IDE cho phép lưu kịch bản đã thu dưới nhiều loại ngôn ngữ lập trình

  • Tóm lại IDE là một công cụ với tính năng mạnh mẽ là record và playback để kiểm tra mà user không cần có kỹ năng coding. Nếu muốn các bạn có thể tìm hiểu thêm. Có rất nhiều ví du, tool rất dễ dùng.

Ví dụ.

Bây giờ, mình sẽ hướng dẫn cách tạo 1 vài script test bằng Java. Yêu cầu phải có chút kỹ năng về lập trình.

Cài đặt môi trường như https://www.tutorialspoint.com/selenium/selenium_environment_setup.htm

Bài toán đặt ra là tester sẽ test login của 1 trang web nào đó. Kiểm tra xem với username, password truyền vào thì kết quả có đúng với mong đợi hay không. Script dưới đây mô phỏng các bước user sẽ làm khi trong trang login.

  1. Điền username

  2. Điền pass

  3. Click Login

  4. Verify

_Ví dụ một case gọi là pass khi expect result là “Welcom” ở title của trang web. Fail khi không thấy result “Welcom” Các bước phải làm như sau.

@BeforeClass
public void init() {
   WebDriver driver = new WebDriver();
}
private void login(String username, String pass) {
    driver.findElement(By.id("username")).sendKeys(username);
    driver.findElement(By.id("password")).sendKeys(pass);
    driver.findElement(By.id("login")).click();
    assertTitle(driver.getElementById("title").endsWith("Welcome"));
}
@Test
public void testAuthentication(){
    driver.get(‘fake/login’);
    login(“fake”, “fake”);
}

Bài toán đơn giản. Tester có thể làm rất nhanh mà k mất công code hay config môi trường.

Nhưng thử tưởng tưởng. Bạn phải test 200 tập user 😦

Với automation.

@Test
public void testAuthentication(){
    /*
    Ví dụ Code đọc user từ file excel => list<User> = [.....];
    */

    for (int i =0; i < 200; i ++) {
        driver.get(‘fake/login’);
        User user = list.get(i);
        login(user.getName(), user.getPass());
    }
}

=> Để máy chạy qua đêm sáng mai xem kết quả.

Tất nhiên để structure các test case tốt ta nên dùng 1 công cụ thêm vào như TestNG, nó giúp thực hiện unit test và tổ chức unit test dưới dạng các test case, test suite..(Rất dễ dùng nhưng trong phạm vi bài này mình chưa đề cập đc).

Trong thời điểm hiện tại , khi mà nhu cầu về phần mềm mới ngày càng nhiều và phức tạp hơn – thì yêu cầu tối ưu kiểm thử trước khi đưa đến tay người sử dụng càng đòi hỏi cấp thiết hơn . Việc tự động hóa một phần quy trình kiểm thử sẽ giúp hỗ trợ các tester nâng cao nâng suất và chất lượng dự án . Tuy nhiên , chi phí cho các phần mềm kiểm thử thương mại thường rất cao , đôi khi làm cho dự án không có khả năng sinh lời . Vì thế chọn lựa các công cụ kiểm tra tự động mã nguồn mở là một lựa chọn rất sáng suốt .Một trong số các lựa chọn đó là Selenium

Rất cảm ơn các bạn đã ghé đọc.

Mội ý kiến hay đóng góp xin vui lòng để lại bên dưới.

Tài liệu tham khảo:

http://docs.Seleniumhq.org/docs/

http://code.google.com/p/Selenium/

http://www.testingvn.com

http://www.slideshare.net/frankcohen/Selenium-basics-tutorial