12/08/2018, 10:24

Performance Testing using Jmeter

Performance testing là việc thực hiện test để xác định một hệ thống có thể đáp ứng và ổn định với yêu cầu độ tải cao. Nó có thể phục vụ để điều tra, đo đạc, xác nhận hoặc xác minh chất lượng các thuộc tính của hệ thống như: khả năng thay đổi, tính tin cậy, và tài nguyên sử dụng. ...

Performance management.jpg

  • Performance testing là việc thực hiện test để xác định một hệ thống có thể đáp ứng và ổn định với yêu cầu độ tải cao.
  • Nó có thể phục vụ để điều tra, đo đạc, xác nhận hoặc xác minh chất lượng các thuộc tính của hệ thống như: khả năng thay đổi, tính tin cậy, và tài nguyên sử dụng. PerformanceTesting1.png
  • Jmeter là một phần mềm kiểm thử mã nguồn mở, nó là 100% ứng dụng Java cho sự tải và việc kiểm thử hiệu năng. Nó được thiết kế để bao quát các loại kiểm thử như là độ tải, chức năng, hiệu năng, etc... và nó yêu cầu JDK 5 hoặc cao hơn.
  • Jmeter có thể sử dụng để kiểm thử hiệu năng của hai nguồn tài nguyên tĩnh như là Javascript và HTML và tài nguyên động như JSP, Servlets, và AJAX.
  • Jemeter có thể phát hiện ra một số lượng lớn các users trong cùng một thời điểm mà website có thể xử lý.
  • Jmeter có thể cung cấp phần lớn các phân tích đồ họa của báo cáo performance.
  • JMeter Performance Testing bao gồm:
    JMeterPerformanceTest2.png
  • Load testing: Mô hình hóa dự kiến sử dụng bởi nhiều người dùng truy cập một dịch vụ website trong cùng thời điểm.
  • Stress testing: Tất cả các web server có thể tải một dung lượng lớn, khi mà tải trọng vượt ra ngoài giới hạn thì web server bắt đầu phản hồi chậm và gây ra lỗi. Mục đích của stress testing là có thể tìm ra độ tải lớn mà web server có thể xử lý.
  • Cấu hình dưới đây chỉ ra Jmeter mô phỏng tải trọng lớn như thế nào:
    JMeterApacheSampler3.png

Chúng ta sẽ làm một nghiên cứu của trang Google.com cho 1000 người dùng. Trước khi kiểm tra performace của hệ thống web chúng ta cần xác định:

  • Độ tải bình thường: Số lượng người dùng trung bình truy cập vào trang web của bạn
  • Độ tải lớn: Một số lượng lớn người dùng truy cập vào trang web của bạn
  • Mục tiêu test của bạn là gì?

Trước khi thực hiện performance testing điều đầu tiên chúng ta cần cài đặt Jmeter
Các bước thực hiện cài đặt chi tiết Jmeter tham khảo Link: http://www.tutorialspoint.com/jmeter/jmeter_quick_guide.htm
Đây là các bước để thực hiện performance test: JMeterTestPlanFlow4.png

5.1. Thêm Thread Group##

  • Nhấn chuột phải trên Test Plan và thêm một Thread Group mới Add -> Threads (Users) -> Thread Group
  • Trên cửa sổ Thread Group ta thực hiện nhập Thread properties như dưới đây: ThreadGroupJMeterPerformance6.png
  • Number of Threads: 100 (Số lượng người sử dụng truy cập vào website: 100)
  • Loop Count: 10 (Số thời gian thực hiện kiểm tra)
  • Ramp-Up Period: 100
  • Sự khác biệt của Thread Count và Loop Counts ThreadCountVSLoopCount7.png
  • Ramp-Up sẽ nói trước với Jmeter sẽ mất bao nhiêu thời gian trì hoãn trước khi bắt đầu một người sử dụng tiếp theo.
  • Ví dụ: Nếu chúng ta có 100 người dùng và 100 Ram-up trước đó thì sự chậm trễ giữa những người dùng sẽ là 1 giây (100 người dùng/ 100 giây) UserDelayHTTP8.png

5.2. Thêm phần tử Jmeter##

Bây giờ chúng ta sẽ xác định Jmeter elements nào trong việc test

  • HTTP request default
    Yếu tố này có thể thêm vào bằng cách right-clicking trên thread group và lựa chọn: Add -> Config Element -> HTTP Request Defaults.

ThreadGroupAddJMeterPerformance9.png

Trên cửa sổ HTTP Request Defaults chúng ta nhập tên Website như dưới đây: HTTPRequestJMeterPerformance10.png

  • HTTP Request
    Right-click trên Thread Group và chọn: Add -> Sampler -> HTTP Request.

AddHTTPRequestJmeterPerformance11.png

Trên cửa sổ HTTP Request Control trường Path sẽ chỉ ra URL request nào bạn muốn gửi tới máy chủ Google. HTTPRequestControlPanelJMeter12.png Ví dụ nếu bạn input 'Calendar'trong Path Jmeter sẽ tạo URL request http://www.google.com/calendar tới máy chủ Google. HTTPRequestCalenderJMeter13.png Nếu bạn giữ trường Path trống JMeter sẽ tạo URL request http://www.google.com tới máy chủ Google.

5.3. Thêm Grap Result##

JMeter có thể chỉ ra kết quả test trong Graph format. Chuột phải vào Test plan, Add -> Listener -> Graph Results

5.4. Chạy test và lấy kết quả test##

Nhấn đồng thời phím (CTRL+R) trên toolbar để bắt đầu quá trình test. Bạn sẽ nhìn thấy kết quả test được hiển thị trên Graph với thời gian thực tế. Những hình ảnh dưới đây trình bày một đồ thị của test plan RunTestPlan1.gif

Ở phía dưới của ảnh là số liệu thống kê đại diện trong các màu sắc:

  • Màu đen: Tổng số Samples đã gửi hiện tại

  • Màu xanh dương: Trung bình Samples đã gửi hiện tại

  • Màu đỏ: Thống kê độ chênh lệch hiện tại

  • Màu xanh lá : Tỷ lệ lưu lượng miêu tả số lượng người dùng yêu cầu mày chủ xử lý mỗi phút Phân tích Performance của máy chủ Google như dưới đây: GraphResultGraphJMeter15.png Để phân tích Performance của Web server bạn nên tập trung vào hai thông số sau:

  • Throughput

  • Deviation
    Throughput là thông số quan trọng nhất, nó miêu tả cho khả năng server có thể xử lý được độ tải lớn.

  • Trong kết quả test thông số Throughput của máy chủ Google là 1,491.193/phút. Điều đó có nghĩa là có thể xử lý 1,491.193 yêu cầu trên mỗi phút. Thông số này là khá cao vì vậy chúng ta có thể quyết định rằng máy chủ Google có hiệu năng tốt.

  • Deviation được hiển thị màu đỏ nó cho thấy sự sai lệch hiện tại so với mức trung bình càng nhỏ càng tốt.

  • Hãy so sánh Performance của Google server với các web server khác. Đây là kết quả test performance của trang web: http://www.yahoo.com/ GraphToDisplayJMeter16.png

  • Throughput của website sau khi test là 867.326/minutes nó có nghĩa là server xử lý 867.326 yêu cầu trên một phút, thấp hơn Google.

  • Deviation là 2689 cao hơn Google (557), vì vậy chúng ta có thể xác định Performance của website này thấp hơn so với Google.
    Trên đây là nội dung về Performance testing using Jmeter bằng phương pháp sử dụng Graph. Tôi sẽ giới thiệu với các bạn nội dung tiếp theo của performance testing về cách sử dụng Timers, Controllers, Processor trong thời gian sắp tới.

0