12/08/2018, 17:59

REST Assured vs. JMeter: A Comparison of REST Test Tools

Việc kiểm tra các API (REST) có thể là một việc phức tạp. Nhiều người sử dụng những cách thủ công để test các REST API mà bỏ qua những cách mà có thể giúp họ tiết kiệm thời gian. Bất kỳ REST API service nào đang được test đúng cách sẽ cần: Kiểm tra xem API service có tuân thủ các tiêu chuẩn REST ...

Việc kiểm tra các API (REST) có thể là một việc phức tạp. Nhiều người sử dụng những cách thủ công để test các REST API mà bỏ qua những cách mà có thể giúp họ tiết kiệm thời gian. Bất kỳ REST API service nào đang được test đúng cách sẽ cần:

  • Kiểm tra xem API service có tuân thủ các tiêu chuẩn REST hay không.
  • Kiểm tra code phản hồi của API service
  • Xác nhận nội dung phản hồi của API service
  • Đánh giá hiệu suất của API service

Apache JMeter và REST Assured là hai công cụ kiểm tra REST phổ biến để kiểm tra các REST API service. Bạn có thể tìm hiểu thêm về cách bạn có thể sử dụng chúng trong thực tế từ đây và đây.

Trong bài viết này, chúng ta sẽ tìm hiểu các ưu và nhược điểm của cả hai công cụ, và đâu là chỗ nó phù hợp với dự án REST API hiện có của bạn.

Dễ dàng setting

Có một điều kiện tiên quyết: Cả JMeter và REST Assured đều yêu cầu Java, vì vậy bạn cần phải cài đặt Java trên máy tính của mình để chạy JMeter hoặc REST Assured. Cài đặt Apache JMeter rất đơn giản: Truy cập trang download jmeter, chọn ZIP hoặc tgz để tải xuống, giải nén.

Vào folder mà bạn vừa giải nén, đi đến thư mục con bin và chạy jmeter.bat (Nếu bạn sử dụng ubuntu bạn có thể tham khảo cách cài đặt tại đây). Hoặc để biết thêm thông tin chi tiết và cách setting Apache JMeter, bạn có thể tham khảo tại đây.

Về phần REST Assured thì nó không phải là một công cụ độc lập mà nó là một thư viện Java. Để sử dụng nó, bạn phải set-up một dự án Java mới và include nó như một thư viện cho dự án của bạn. Tất nhiên, có nhiều công cụ hỗ trợ, vì vậy bạn chỉ cần trỏ dependency của bạn tới một số public repo (Maven).

Documentation

Tài liệu về Apache JMeter có thể được tìm thấy trên trang web chính thức của JMeter. Nó cung cấp một số tài liệu khá kỹ lưỡng từ việc bắt đầu với các tính năng phức tạp. Ngoài ra, bạn có thể tìm thấy các liên kết đến một số tài nguyên rất phong phú như video hướng dẫn. Nếu bạn xem nhiều hơn thì điều này chắc chắn là một lợi thế cho bạn.

Về phần tài liệu của REST Assured thì nó được bảo đảm như chính tool/library của nó, có thể được tìm thấy trên Github repository. Nó có một danh sách lớn các tính năng được liệt kê trong tài liệu trực tuyến với các giải thích rất chi tiết về cách sử dụng. Tuy nhiên, toàn bộ tài liệu là một trang web lớn - không phải là cách thân thiện với người dùng nhất để khám phá một công cụ.

Automated REST Test Creation and Maintenance

Apache JMeter, là một ứng dụng độc lập với giao diện người dùng (GUI), cho phép bạn tạo các test của mình từ GUI. Điều này có thể hữu ích đặc biệt là do các hệ thống phân cấp thực thể được giới thiệu từ JMeter. Tất cả mọi thứ bạn tạo bên trong bài kiểm tra của bạn sẽ được hiển thị trong một đại diện giống cây trong JMeter GUI.

Để tạo ra một bài kiểm tra, chúng ta không cần phải có bất kỳ kỹ năng viết code nào. Tuy nhiên, GUI không giới hạn bất kỳ khả năng nào khi lập kế hoạch test. Nếu bạn vẫn muốn thêm một số chương trình hoặc flow thì các thành phần BeanShell sẽ cho phép bạn thực hiện điều đó.

Khi bạn save án JMeter, tất cả những gì bạn đã tạo sẽ được lưu vào một tệp XML khổng lồ (với phần mở rộng .jmx). Và ngay cả đối với những thay đổi nhỏ trong một phần test, bạn sẽ (rất có thể) phải mở lại dự án trong GUI để thực hiện thay đổi. Nếu bạn cần cộng tác với những người khác trên cùng một folder dự án JMeter, thì tệp XML khổng lồ này sẽ không dễ dàng duy trì bằng cách sử dụng bất kỳ hệ thống kiểm soát quản lý (SCM) nào (chẳng hạn như Git, SVN, Perforce, v.v.).

Mặt khác REST Assured, lại đòi hỏi các kỹ năng về code Java để tạo ra các bài test. Không có GUI thân thiện với người dùng để tạo test. Tuy nhiên, REST Assured cho phép bạn viết các bài test bằng cách sử dụng ngôn ngữ Gherkin (Cú pháp Given-When-Then) vì vậy ngay cả khi bạn cần một số kỹ năng code Java, thì các bài test cũng khá dễ đọc.

given(http://via.placeholder.com/2000x200?text=image+placeholder).
    config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))).
when(http://via.placeholder.com/2000x200?text=image+placeholder).
    get(“/price”).
then(http://via.placeholder.com/2000x200?text=image+placeholder).
    body(“price”, is(new BigDecimal(12.12)));

Vì REST Assured là một thư viện, bạn có thể tổ chức các bài test của bạn trong các file Java riêng biệt, và khi bạn cần phải thay đổi một bài test, bạn chỉ cần mở và sửa 1 file. Bạn không cần một GUI, bằng cách sử dụng thiết bị đầu cuối SSH, cộng tác với những người khác khá đơn giản vì nó rất dễ dàng để duy trì file Java bằng cách sử dụng bất kỳ SCM nào.

Types of REST Tests

JMeter được biết đến như một công cụ kiểm tra performance của các ứng dụng và web service. Ngoài ra, nó có các tùy chọn hiển thị các loại biểu đồ khác nhau để hiển thị số liệu kiểm tra hiệu suất.

Bạn có thể tạo các bài kiểm tra chức năng cho các API REST với JMeter, bao gồm xác nhận phản hồi.

Kịch bản sử dụng chính của REST Assured là để thử nghiệm chức năng của các REST API service. Nó thậm chí đi kèm với cơ chế xác nhận phản hồi của chính nó (cú pháp Gherkin). Vì REST Assured là một thư viện Java, nó có thể dễ dàng được tích hợp với các unit test. Khi nói đến kiểm tra performance, REST Assured không hỗ trợ kiểm tra hiệu suất "out of the box". Tuy nhiên, nếu bạn muốn sử dụng nó để kiểm tra performance, bạn phải phát triển custom framework của riêng mình để kiểm tra performance cùng với REST Assured.

Test Execution

JMeter test có thể được gọi theo hai cách.

Bằng cách nhấn vào nút Run từ giao diện người dùng:

Bằng dòng lệnh command line:

và chạy: ant run-tests

Types of Reports

Apache JMeter, do mục đích chính của nó, có một số lượng lớn các loại báo cáo mà bạn có thể tạo ra từ kết quả kiểm tra của bạn. Vì bạn có thể chạy test performance từ JMeter, các chỉ số performance không được sử dụng bằng cách sử dụng các biểu đồ như sau:

Bạn có thể tìm hiểu thêm về các báo cáo JMeter và các loại báo cáo bạn có thể tạo ra tại đây.

REST Assured không tự tạo ra bất kỳ báo cáo nào, do đó tùy thuộc vào bạn và khung test mà bạn đã chọn. Tuy nhiên, khi được tích hợp với một số khung unit test, bạn có thể nhận được các báo cáo khá hữu ích ở dạng HTML, text hoặc XML.

Integration with Jenkins

Khi nói đến việc tích hợp liên tục các sản phẩm đang thử nghiệm, điều rất quan trọng là tích hợp các khung test tự động của bạn với các CI tool cho cả chạy test và báo cáo kết quả.

JMeter auto test có thể dễ dàng tích hợp với Jenkins bằng cách sử dụng plugin Performance cho phép bạn thiết lập các actions Post-build và để get được một trang dashboard trên Jenkins job page.

REST Assured cũng có thể dễ dàng tích hợp với Jenkins bởi vì Jenkins có các plugin cho hầu như tất cả các testing frameworks; ví dụ, plugin TestNG có thể tạo một biểu đồ dựa vào kết quả test.

Community Activity

Đây là mục không thể đo dễ dàng. Hoạt động cộng đồng phụ thuộc vào một số yếu tố như "maturity" của tool hoặc số người đóng góp.

Hiện nay, Apache JMeter có một cộng đồng lớn hơn. Điều này chủ yếu là do JMeter đã xuất hiện trên thị trường từ lâu và được coi là tiêu chuẩn công nghiệp khi nói đến performance testing của các ứng dụng và web service. JMeter đưa các bản release mỗi 5-6 tháng. GitHub của nó cũng rất tích cực, với các commit mới liên tục. JMeter sử dụng Bugzilla làm trình theo dõi vấn đề và có danh sách các vấn đề mở thường xuyên thay đổi. Có 23000+ kết quả tìm kiếm cho JMeter trong StackOverflow. Và JMeter cũng có một tài khoản Twitter chính thức. Trên Facebook và LinkedIn, không có tài khoản chính thức cho JMeter, nhưng có một vài group, ví dụ group facebook này và group linkedIn này.

REST Assured đang đi đường tắt để đến giai đoạn chính và đã trở thành sự lựa chọn đầu tiên, một recommend từ nhiều nguồn, khi nói đến việc auto test REST API service. REST Assured đã release các version chính thức 6 tháng một lần trong hai năm qua. GitHub có rất nhiều người đóng góp tuy nó ít hoạt động hơn JMeter, nhưng nó cũng rất tích cực. REST Assured là tracking các issues trong GitHub repo. Trong StackOverflow, có hơn 2000 kết quả tìm kiếm cho REST Assured, vì vậy chúng ta có thể nói rằng nó thấp hơn đáng kể so với kết quả tìm kiếm của JMeter. Đối với các group mạng xã hội, chỉ group LinkedIn được tìm thấy với số lượng thành viên thấp hơn đáng kể so với JMeter. Cộng đồng REST có thể không lớn bằng cộng đồng JMeter, nhưng nó rất tích cực.

Summary

Cả JMeter và REST Assured đều có những điểm lợi thế hơn nhau. Cả hai đều rất mạnh mẽ, có các tùy chọn test hữu ích, khả năng đưa ra báo cá và có thể dễ dàng được tích hợp với các khung test tùy chỉnh. Dưới đây là tóm tắt tất cả các tiêu chí so sánh được khám phá trong bài viết này cho hai công cụ test REST API phổ biến này:

References

https://www.toptal.com/java/rest-assured-jmeter

0