Codecept.js là một thư viện kiểm thử tự động End to End Testing. End to End Testing là phương pháp kiểm thử sản phẩm cuối cùng giả lập tương tác của người dùng theo kịch bản. End to End Testing khác với Unit Testing (chỉ kiểm thử từng bộ phận), Manual Testing (kiểm thử thủ công, giống ở chỗ là kiểm thử sản phẩm cuối cùng, khác ở chỗ End to End Testing kiểm thử tự động).

Ưu điểm của End to End Testing

  • Kiểm thử tự động hệ thống phát triển qua thời gian thì chi phí kiểm thử sẽ giảm xuống
  • Rút ngắn thời gian kiểm thử rất nhiều so với kiểm thử thủ công
  • Gia tăng được số test case theo thời gian. Có tính tích luỹ và lặp lại.
  • Có thể lập trình những kỹ thuật phức tạp ví dụ nhập dữ liệu vào form, rồi truy vấn vào cơ sở dữ liệu để kiểm tra. Hoặc kích hoạt một sự kiện, rồi kiểm tra email gửi tới sau đó vài phút...

Nhược điểm của End to End Testing

  • Phải lập trình: lập trình viên phải tự kiểm thử thủ công từng bước một rồi sau đó ghi lại, chuyển hoá sang code. Lập trình viên sẽ phải hiểu cơ chế DOM, CSS vững để bóc tách từng thành phần.
  • Khi giao diện thay đổi liên tục thì kịch bản có thể không đúng nữa. Do đó phải lập trình web, đặt tên các DOM element, các CSS class có quy tắc chặc chẽ, ổn định

Codecept.js và Selenium

Selenium là thư viện kiểm thử web site dựa trên cơ chế tự động hoá tương tác lên trình duyệt. Trong một thời gian dài, Selenium là thư viện defacto (mặc định sử dụng) để viết kiểm thử tự động End to End Testing. Selenium có thể lập trình kiểm thử bằng Java, Javascript hoặc Python.

CodeCept.js là thư viện kiểm thử End to End testing, chỉ lập trình bằng JavaScript. Rõ ràng với lập trình viên web thì JavaScript sẽ là ngôn ngữ thuận tiện nhất, dễ hiểu, dễ dùng nhất và không phải học lại.  CodeCept.js còn làm được nhiều thứ hay ho hơn mà Selenium làm chưa tốt hoặc không làm được:

  1. Cho phép tuỳ chọn thư viện hỗ trợ (helpers) phù hợp với tình huống kiểm thử nhất: hỗ trợ nhiều loại trình duyệt cross browser sử dụng Selenium - Test Cafe, nếu cần tốc độ dùng Chrome Puppeteer.
    Kiến trúc thư viện CodeCept.js
  2. CodeCept.js hỗ trợ rất nhiều helpers
    • WebDriver: thư viện của Selenium
    • Protractor: kiểm thử web site viết bằng Angular
    • Puppeteer: kiểm thử sử dụng trình duyệt Chrome, chiếm 90% thị phần tốc độ thực thi nhanh
    • Playwright: thư viện Node.js tự động hoá trình duyệt Chrome, Edge, Firefox, Web Kit do Microsoft viết. Đang phát triển rất mạnh
    • Nightmare: thư viện tự động hoá trình duyệt, hiện không còn cập nhật nhiều nữa. Hãy chuyển sang Pupetter hoặc Playwright sẽ tốt hơn.
    • TestCafe: thư viện tương tự như CodeCept.js. Nếu bạn đã quen CodeCept.js bạn có thể chuyển sang TestCafe và ngược lại. TestCafe tích hợp với nhiều thư viện CI/CD.
    • CodeCept.js còn hỗ trợ test REST API, mobile app dùng Appmium.

Rõ ràng CodeCept.js và TestCafe tốt hơn, hiện đại hơn, tích hợp với CI/CD tiện hơn Selenium. Selenium ra đời trước, hỗ trợ nhiều loại ngôn ngữ lập trình. Tuy nhiên với sự phổ biến của JavaScript, và buộc phải dùng khi lập trình Web, hỗ trợ tốt JavaScript để bổ xung nhanh nhiều tính năng mạnh lại là lựa chọn khôn ngoan.

Hẹn các bạn bài tiếp theo, tôi sẽ hướng dẫn các bạn cài đặt lập trình CodeCept.js và cả TestCafe!