Thước đo góc - Khái niệm về Kiểm tra Javascript

Vì kiến ​​thức về JavaScript rất cần thiết để làm việc với Thước đo góc, nên trong chương này, chúng ta hãy hiểu chi tiết các khái niệm về kiểm thử JavaScript.

Kiểm tra và tự động hóa JavaScript

JavaScript là ngôn ngữ kịch bản được đánh máy và thông dịch động phổ biến nhất, nhưng nhiệm vụ thách thức nhất là kiểm tra mã. Đó là bởi vì, không giống như các ngôn ngữ biên dịch khác như JAVA và C ++, không có bước biên dịch nào trong JavaScript có thể giúp người thử nghiệm tìm ra lỗi. Bên cạnh đó, việc kiểm tra dựa trên trình duyệt rất tốn thời gian; do đó cần có các công cụ hỗ trợ kiểm tra tự động cho JavaScript.

Các khái niệm về kiểm tra tự động

Luôn luôn là một thực hành tốt để viết bài kiểm tra vì nó làm cho mã tốt hơn; vấn đề với kiểm tra thủ công là nó hơi tốn thời gian và dễ xảy ra lỗi. Quá trình kiểm tra thủ công cũng khá nhàm chán đối với lập trình viên vì họ cần phải lặp lại quy trình, viết thông số kỹ thuật kiểm tra, thay đổi mã và làm mới trình duyệt nhiều lần. Bên cạnh đó, kiểm thử thủ công cũng làm chậm quá trình phát triển.

Do những lý do trên, luôn hữu ích khi có một số công cụ có thể tự động hóa các bài kiểm tra này và giúp các lập trình viên thoát khỏi những bước lặp đi lặp lại và nhàm chán này. Nhà phát triển nên làm gì để làm cho quá trình thử nghiệm trở nên tự động?

Về cơ bản, một nhà phát triển có thể triển khai bộ công cụ trong CLI (Bộ thông dịch dòng lệnh) hoặc trong IDE phát triển (Môi trường phát triển tích hợp). Sau đó, các bài kiểm tra này sẽ chạy liên tục trong một quy trình riêng biệt ngay cả khi không có đầu vào từ nhà phát triển. Kiểm tra tự động JavaScript cũng không phải là mới và rất nhiều công cụ như Karma, Protractor, CasperJS, v.v. đã được phát triển.

Các loại kiểm tra cho JavaScript

Có thể có các bài kiểm tra khác nhau cho các mục đích khác nhau. Ví dụ: một số bài kiểm tra được viết để kiểm tra hoạt động của các chức năng trong một chương trình, trong khi một số bài kiểm tra khác được viết để kiểm tra luồng của một mô-đun hoặc tính năng. Do đó, chúng tôi có hai loại kiểm tra sau:

Kiểm tra đơn vị

Việc kiểm tra được thực hiện trên phần nhỏ nhất có thể kiểm tra được của chương trình được gọi là đơn vị. Về cơ bản, thiết bị được kiểm tra độc lập mà không có bất kỳ loại phụ thuộc nào của thiết bị đó vào các bộ phận khác. Trong trường hợp JavaScript, phương thức hoặc hàm riêng lẻ có một hành vi cụ thể có thể là một đơn vị mã và các đơn vị mã này phải được kiểm tra theo cách riêng biệt.

Một trong những ưu điểm của kiểm thử đơn vị là việc kiểm thử các đơn vị có thể được thực hiện theo bất kỳ thứ tự nào vì các đơn vị này độc lập với nhau. Một ưu điểm khác của kiểm thử đơn vị thực sự quan trọng là nó có thể chạy kiểm tra bất kỳ lúc nào như sau:

  • Ngay từ đầu của quá trình phát triển.
  • Sau khi hoàn thành việc phát triển bất kỳ mô-đun / tính năng nào.
  • Sau khi sửa đổi bất kỳ mô-đun / tính năng nào.
  • Sau khi thêm bất kỳ tính năng mới nào trong ứng dụng hiện có.

Để kiểm tra đơn vị tự động của các ứng dụng JavaScript, chúng tôi có thể chọn từ nhiều công cụ và khuôn khổ kiểm tra như Mocha, Jasmine và QUnit.

Kiểm tra từ đầu đến cuối

Nó có thể được định nghĩa là phương pháp thử nghiệm được sử dụng để kiểm tra xem luồng của ứng dụng từ đầu đến cuối (từ đầu này đến đầu kia) có hoạt động tốt theo thiết kế hay không.

Kiểm thử end-to-end còn được gọi là kiểm thử chức năng / luồng. Không giống như kiểm thử đơn vị, kiểm thử đầu cuối kiểm tra cách các thành phần riêng lẻ hoạt động cùng nhau như một ứng dụng. Đây là sự khác biệt chính giữa kiểm thử đơn vị và kiểm thử đầu cuối.

Ví dụ: giả sử nếu chúng ta có một mô-đun đăng ký mà người dùng cần cung cấp một số thông tin hợp lệ để hoàn tất việc đăng ký thì quá trình kiểm tra E2E cho mô-đun cụ thể đó sẽ thực hiện theo các bước sau để hoàn tất kiểm tra -

  • Đầu tiên, nó sẽ tải / biên dịch biểu mẫu hoặc mô-đun.
  • Bây giờ, nó sẽ lấy DOM (Mô hình đối tượng tài liệu) của các phần tử của biểu mẫu.
  • Tiếp theo, kích hoạt sự kiện nhấp vào nút gửi để kiểm tra xem nó có hoạt động hay không.
  • Bây giờ, với mục đích xác nhận, hãy thu thập giá trị từ các trường đầu vào.
  • Tiếp theo, các trường đầu vào phải được xác thực.
  • Với mục đích thử nghiệm, hãy gọi một API giả để lưu trữ dữ liệu.

Mỗi bước đưa ra kết quả của riêng nó sẽ được so sánh với tập kết quả mong đợi.

Bây giờ, câu hỏi đặt ra là, trong khi loại E2E hoặc thử nghiệm chức năng này cũng có thể được thực hiện theo cách thủ công, tại sao chúng ta cần tự động hóa cho việc này? Lý do chính là tự động hóa sẽ giúp quá trình kiểm tra này trở nên dễ dàng. Một số công cụ có sẵn có thể dễ dàng tích hợp với bất kỳ ứng dụng nào, cho mục đích này là Selenium, PhantomJS và Protractor.

Công cụ & Khung kiểm tra

Chúng tôi có nhiều công cụ và khuôn khổ thử nghiệm khác nhau để thử nghiệm Angular. Sau đây là một số công cụ và khuôn khổ nổi tiếng -

Nghiệp

Karma, được tạo ra bởi Vojta Jina, là một người chạy thử nghiệm. Ban đầu dự án này được gọi là Testacular. Nó không phải là một khung thử nghiệm, có nghĩa là nó cung cấp cho chúng tôi khả năng dễ dàng và tự động chạy các thử nghiệm đơn vị JavaScript trên các trình duyệt thực. Karma được xây dựng cho AngularJS vì trước Karma không có công cụ kiểm tra tự động nào dành cho các nhà phát triển JavaScript dựa trên web. Mặt khác, với sự tự động hóa do Karma cung cấp, các nhà phát triển có thể chạy một lệnh đơn giản và xác định xem toàn bộ bộ thử nghiệm đã vượt qua hay không.

Ưu điểm của việc sử dụng Karma

Sau đây là một số ưu điểm của việc sử dụng Karma so với quy trình thủ công -

  • Tự động hóa các bài kiểm tra trên nhiều trình duyệt cũng như thiết bị.
  • Theo dõi các tập tin để tìm lỗi và sửa chúng.
  • Cung cấp hỗ trợ trực tuyến và tài liệu.
  • Dễ dàng tích hợp với một máy chủ tích hợp liên tục.

Nhược điểm của việc sử dụng Karma

Sau đây là một số nhược điểm của việc sử dụng Karma:

Nhược điểm chính của việc sử dụng Karma là nó yêu cầu một công cụ bổ sung để cấu hình và bảo trì.

Nếu bạn đang sử dụng trình chạy thử nghiệm Karma với Jasmine, thì sẽ có ít tài liệu hơn để tìm thông tin về cách thiết lập CSS của bạn trong trường hợp có nhiều id cho một phần tử.

Hoa nhài

Jasmine, một khung phát triển theo hướng hành vi để kiểm tra mã JavaScript, được phát triển tại Pivotal Labs. Trước khi có sự phát triển tích cực của khuôn khổ Jasmine, một khung thử nghiệm đơn vị tương tự có tên JsUnit cũng đã được phát triển bởi Pivotal Labs, có một trình chạy thử nghiệm có sẵn. Các bài kiểm tra trình duyệt có thể được chạy thông qua các bài kiểm tra Jasmine bằng cách bao gồm tệp SpecRunner.html hoặc bằng cách sử dụng nó như một trình chạy kiểm tra dòng lệnh. Nó có thể được sử dụng có hoặc không có Karma cũng được.

Ưu điểm của việc sử dụng hoa nhài

Sau đây là một số ưu điểm của việc sử dụng Jasmine -

  • Một khuôn khổ độc lập với trình duyệt, nền tảng và ngôn ngữ.

  • Hỗ trợ phát triển theo hướng kiểm tra (TDD) cùng với phát triển theo hướng hành vi.

  • Có tích hợp mặc định với Karma.

  • Cú pháp dễ hiểu.

  • Cung cấp các chức năng gián điệp kiểm tra, giả mạo và chuyển qua hỗ trợ kiểm tra như các chức năng bổ sung.

Nhược điểm của việc sử dụng hoa nhài

Sau đây là một mẹo sử dụng Jasmine -

  • Người dùng phải trả lại các bài kiểm tra khi chúng thay đổi vì không có tính năng xem tệp nào khả dụng trong Jasmine khi đang chạy thử nghiệm.

Mocha

Mocha, được viết cho các ứng dụng Node.js, là một khung thử nghiệm nhưng nó cũng hỗ trợ thử nghiệm trình duyệt. Nó khá giống Jasmine nhưng sự khác biệt chính giữa chúng là Mocha cần một số plugin và thư viện vì nó không thể chạy độc lập như một khung thử nghiệm. Mặt khác, Jasmine là độc lập. Tuy nhiên, Mocha sử dụng linh hoạt hơn Jasmine.

Ưu điểm khi sử dụng Mocha

Sau đây là một số ưu điểm của việc sử dụng Mocha:

  • Mocha rất dễ cài đặt và cấu hình.
  • Tài liệu thân thiện với người dùng và đơn giản.
  • Chứa các plugin với một số dự án nút.

Nhược điểm của việc sử dụng Mocha

Sau đây là một số nhược điểm của việc sử dụng Mocha:

  • Nó cần các mô-đun riêng biệt để xác nhận, gián điệp, v.v.
  • Nó cũng yêu cầu cấu hình bổ sung để sử dụng với Karma.

QUnit

QUint, ban đầu được phát triển bởi John Resig vào năm 2008 như một phần của jQuery, là một bộ kiểm tra đơn vị JavaScript mạnh mẽ nhưng dễ sử dụng. Nó có thể được sử dụng để kiểm tra bất kỳ mã JavaScript chung nào. Mặc dù nó tập trung vào việc thử nghiệm JavaScript trong trình duyệt, nhưng nó rất thuận tiện để sử dụng bởi nhà phát triển.

Ưu điểm của việc sử dụng QUnit

Sau đây là một số ưu điểm của việc sử dụng QUnit:

  • Dễ dàng cài đặt và cấu hình.
  • Tài liệu thân thiện với người dùng và đơn giản.

Nhược điểm của việc sử dụng QUnit

Sau đây là một vấn đề của việc sử dụng QUnit:

  • Nó chủ yếu được phát triển cho jQuery và do đó không tốt để sử dụng với các khung công tác khác.

Selen

Selenium, ban đầu được phát triển bởi Jason Huggins vào năm 2004 như một công cụ nội bộ tại ThoughtWorks, là một công cụ tự động hóa thử nghiệm mã nguồn mở. Selenium tự định nghĩa là “Selenium tự động hóa các trình duyệt. Đó là nó!". Tự động hóa các trình duyệt có nghĩa là các nhà phát triển có thể tương tác với các trình duyệt rất dễ dàng.

Ưu điểm của việc sử dụng Selenium

Sau đây là một số ưu điểm của việc sử dụng Selenium:

  • Chứa bộ tính năng lớn.
  • Hỗ trợ thử nghiệm phân tán.
  • Có hỗ trợ SaaS thông qua các dịch vụ như Sauce Labs.
  • Dễ sử dụng với các tài liệu đơn giản và tài nguyên phong phú có sẵn.

Nhược điểm của việc sử dụng Selenium

Sau đây là một số nhược điểm của việc sử dụng Selenium:

  • Một nhược điểm chính của việc sử dụng Selenium là nó phải được chạy như một quá trình riêng biệt.
  • Cấu hình hơi rườm rà vì nhà phát triển cần thực hiện theo một số bước.