12/08/2018, 14:13

PERFORMANCE TESTING & JMETER TOOL

Tại sao bạn nên thực hiện kiểm thử hiệu năng phần mềm - Performance Testing? Kiểm thử hiệu năng phần mềm sẽ làm rõ ràng những rủi ro của việc triển khai phần mềm, từ đó giảm bớt những rủi ro của ứng dựng, nâng cấp và phát triển phần mềm. Ngăn ngừa hệ thống downtime và sẵn sàng trước các vấn đề ...

Tại sao bạn nên thực hiện kiểm thử hiệu năng phần mềm - Performance Testing?

Kiểm thử hiệu năng phần mềm sẽ làm rõ ràng những rủi ro của việc triển khai phần mềm, từ đó giảm bớt những rủi ro của ứng dựng, nâng cấp và phát triển phần mềm. Ngăn ngừa hệ thống downtime và sẵn sàng trước các vấn đề gặp phải.

Với những lợi ích về kiểm thử hiệu năng phần mềm như đã nêu trên, bài viết dưới đây sẽ giới thiệu tổng quan về kiểm thử hiệu năng phần mềm - Performance Testing và giới thiệu một công cụ kiểm thử hiệu năng hữu ích - Jmeter.

I. Kiểm thử hiệu năng phần mềm - Performance Testing

1. Khái niệm

Seminar_Jmeter_01.png

2. Hoạt động chính

2.1 Xác định tải công việc của hệ thống: (15% công việc)

Workload: Mô tả khối lượng công việc bằng các tham số định lượng và chức năng, để tìm được mô hình có thể hiển thị, ghi lại và tái tạo hành vi của khối lượng công việc và tính năng quan trọng. Bao gồm:

  • Sức tải người sử dụng :
    • Số lượng mỗi loại người dùng.
    • Số lượng lớn nhất mỗi loại người dùng đồng thời.
    • Tỷ lệ người dùng đồng thời của mỗi loại trong 1 khoảng thời gian.
    • Thời gian các phiên làm việc của người sử dụng mỗi loại
    • Số lượng mỗi loại hoạt động duy nhất thực hiện bởi người sử dụng
  • Sức tải của ứng dụng:
    • Các hoạt động thể hiện về mặt tốc độ của dịch vụ (số thao tác/ giây, tốc độ tuyền dữ liệu)
    • Tỷ lệ các trang được yêu cầu bởi người sử dụng
    • Các giao tác được yêu cầu bởi người sử dụng
    • Bất kỳ yêu cầu nào đối với hệ thống hay ứng dụng nhằm đáp ứng nhu cầu người dùng

2.2 Cài đặt môi trường kiểm thử hiệu năng: (5% công việc)

  • Nắm bắt chức năng hệ thống và quy trình kinh doanh
  • Nắm bắt các hoạt động người dùng
  • Nắm bắt được kiến trúc logic và vật lý

2.3 Xây dựng kịch bản kiểm thử hiệu năng: (30% công việc)

  • Kiểm thử với user cần đăng nhập vào hệ thống.
  • Kiểm thử với user không cần đăng nhập vào hệ thống (người dùng vãng lai).

2.4 Thực hiện kiểm thử hiệu năng: (45% công việc)

  • Tạo dữ liệu kiểm thử
  • Thiết lập tham số của bộ kiểm thử (test suite)
  • Thực thi các kiểm thử
  • Điều chỉnh các kiểm thử
  • Thực thi lại các kiểm thử

2.5 Báo cáo kiểm thử hiệu năng: (5% công việc)

  • Mô tả đặc điểm của hệ thống
  • Phân tích dữ liệu và tìm nguyên nhân của các vấn đề về hiệu năng

3. Các công cụ hỗ trợ kiểm thử hiệu năng

Seminar_Jmeter_02.png

II. Jmeter Tool

1. Khái niệm

Seminar_Jmeter_03.png

  • Apache JMeter: Là một phần mềm nguồn mở được viết bằng Java nhằm mục đích kiểm thử chức năng và hiệu suất.

  • Ưu điểm: Miễn phí, bộ cài nhẹ, hỗ trợ nhiều môi trường. Giả lập được nhiều user ảo.

  • Nhược điểm: Giao diện xấu, đồ thị kết quả không rõ ràng, khá khó khăn trong việc recorder và cho người mới bắt đầu, bị giới hạn khá nhiều về mặt Script.

2. Phạm vi ứng dụng

  • Giả lập một nhóm người dùng
  • Gửi các yêu cầu tới một máy chủ mục tiêu
  • Nhận và xử lý các response từ máy chủ
  • Trình diễn các kết quả đó cho người dùng dưới dạng bảng biểu, đồ thị,…

3. Đặc trưng

  • Mã nguồn mở, giao diện đơn giản => Miễn phí, trực quan dễ sử dụng
  • Có thể kiểm thử nhiều kiểu server: Web - HTTP, HTTPS, SOAP, LDAP, JMS, Mail – POP3, Database - JDBC …
  • Có thể chạy trên nhiều nền tảng hệ điều hành khác nhau
  • Đa luồng => Giúp xử lý tạo nhiều request cùng một khoảng thời gian, xử lý các dữ liệu thu được một cách hiệu quả
  • Tự động kiểm thử hiệu năng và tính năng của ứng dụng

4. Cài đặt

Điều kiện cần:

  • Cài đặt Java cho hệ điều hành đang sử dụng: Windows, Linux,...

Điều kiện đủ:

  • Tải mã nguồn của chương trình tại đường link sau: http://jmeter.apache.org/download_jmeter.cgi
  • Giải nén file vừa tải về và chuyển vào thư mục bin/
    • Windows: chạy file jmeter.bat
    • Linux: chạy file jmeter.sh

Giao diện chính:

Seminar_Jmeter_04.png

5. Sử dụng

Seminar_Jmeter_05.png

5.1 Thêm 1 Thread Group mới

  • Add -> Threads (Users) -> Thread Group
  • Nhập Thread properties:
    • Number of Threads: Số lượng người sử dụng truy cập vào website
    • Loop Count: Số thời gian thực hiện kiểm tra
    • Ramp-Up Period: Thời gian trì hoãn trước khi bắt đầu một người sử dụng tiếp theo

5.2 Thêm phần tử Jmeter

  • Add -> Config Element -> HTTP Request Defaults.
  • Add -> Sampler -> HTTP Request.
  • HTTP Request Control, trường Path sẽ chỉ ra URL request nào bạn muốn gửi tới máy chủ

5.3 Thêm Grap Result

  • Add -> Listener -> Graph Results

5.4 Chạ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

III. Ứng dụng Jmeter kiểm tra hiệu năng Website

1. Giới thiệu Website

Kết hợp quản lý thông minh và thích ứng đầy đủ nhu cầu của khách hàng với kiến ​​thức chuyên sâu trong kiểm tra thủ công và tự động hóa, StrongQA góp phần giảm chi phí cho việc phát triển các sản phẩm của bạn do đó tăng doanh thu.

2. Kịch bản Test

Có 2 loại kịch bản test:

  • Tạo ra các user và gửi HTTP request lên một trang web .
  • Khả năng đáp ứng và xử lý của một trang web khi có nhiều người dùng đăng nhập vào hệ thống cùng một lúc.

3. Thực hiện Test

Hướng dẫn tạo một Test plan:

Chuột phải vào Testplan -> Add -> Threads(user) -> Thread Group

  • Name: Đặt tên cho ThreadGroup (ở đây mình đặt là JmeterUser)
  • Number of Threads(users): Số lượng người dùng mà mình muốn mô phỏng.
  • Ramp-up Period (in seconds): Cho biết thời gian để Jmeter tạo ra tất cả những thread cần thiết.
  • Loop Count Forever: 1 thread được tạo ra sẽ được thực hiện 1 lần (thay 1 bằng n thì số các thread sẽ lặp lại n lần).

Tạo request đến server

Click chuột phải vào ThreadGroup -> Chọn Add -> Sampler -> HTTP Request

  • Name: Đặt tên Request
  • Server name of IP: Điền vào Domain hoặc IP trang web mà mình đang cần test
  • Port Number: Chỉ ra port của web, nếu để trống thì sẽ default là 80
  • Protocol: Giao thức được sử dụng là HTTP hoặc HTTPs
  • Method: Phương thức để các HTTP request. có các method: GET, POST, HEAD, PUSH..
  • Path: Đường dẫn các nguồn để xử lý các request
  • Parameter: Biểu diễn danh sách các tham số để gửi cùng request. (có thể thêm hoặc xoá thông số này)
  • Send files with the request: Giả lập việc upload file
  • Retrieve All embedded Resources: Dùng để download các trang java applet được nhúng trên trang web đang test.

Ngoài ra, còn có các thông số cấu hình cho Timeout, respon,….

4. Reports

Các loại reports trong Jmeter:

Click chuột phải vào Thread Group -> chọn Add -> Chọn Listener -> Chọn các loại report

  • Aggregate Report

  • Summary Report

Các thông số trong Report: Aggregate Report & Summary Report

- Label: Hiển thị tên của từng requests có trong test plan

- #Samples: Tổng số lần run của request

- Công thức:
- Đối với giá trị trong report thì:

- Average (millisecond): Thời gian phản hồi trung bình (Response Time) của request, tính cho đến lần run cuối cùng.

- Median (millisecond): 50% số request có response time nhỏ hơn giá trị (hiển thị trên table), và 50% số request còn lại có response time lớn hơn giá trị này.

- 90% Line (90th Percentile) (millisecond): 90% số requests sẽ có response time nhỏ hơn giá trị hiển thị trong table, 10% số requests còn lại sẽ có response time lớn hơn giá trị hiển thị trong table.

- Min (millisecond): Respone Time thấp nhất của request tính cho toàn bộ tất cả các lần run.

- Max (millisecond): Respone Time cao nhất của request tính cho toàn bộ tất cả các lần run.

- Error %: % số lượng request bị fail, lỗi.

- Throughput/ Thông lượng: Lượng requests được hệ thống (server) xử lý trong 1 đơn vị thời gian, có thể là giây, phút, hoặc giờ.

    -Throughput = (Tổng số lượng requests) / (Tổng thời gian) * (Đơn vị chuyển đổi).
    -KB/sec: Cũng là thông lượng, nhưng ko đo lường bằng số request, mà đo Kilobytes/second. Công thức là
    -Throughput KB/sec = (Throughput * Average Bytes) / 1024

- Avg. Bytes: dung lượng trung bình của 1 lần response tính bằng bytes.

- Std.Dev.(Standard Deviation): độ lệch chuẩn đo lường sự thay đổi của 1 tập hợp data, dựa trên thống kê.

- Total: Trong report có 1 dòng cuối cùng đó là Total, nó sẽ tổng kết lại toàn bộ kết quả từ những request bên trên. Ngoại trừ:

 -   # Samples, Throughput, KB/sec: được cộng lại theo đúng nghĩa "Total".
 -   Các thông số còn lại: tính Total bằng cách lấy giá trị trung bình từ tất cả những request ở trên.

5. Phân tích Report

- Response Time: chỉ ra được việc xử lý request NHANH hay CHẬM. Response Time thì phải càng THẤP càng tốt.

- Throughput: chỉ ra được số lượng requests được server xử lý trong một đơn vị thời gian.

Dựa vào đó, chúng ta có những trường hợp như sau:

1. Response Time: THẤP and Throughput: THẤP --> Trường hợp này sẽ không bao giờ xảy ra. Vì Response Time THẤP nghĩa là thời gian đáp ứng rất nhanh, nhưng Throughput THẤP lại chỉ ra rằng số request được xử lý rất ít. Điều này là vô lý

2. Response Time: THẤP and Throughput: CAO --> Đây là một kết quả lý tưởng . Thời gian xử lý thấp và số lượng request xử lý cùng đồng thời lại cao. Điều này chứng tỏ rằng Server đang rất tốt.

3. Response Time: CAO and Throughput: THẤP --> Test chỉ ra rằng thời gian xử lý quá cao, và lượng request được xử lý lại rất thấp. Phải xem xét để improve về phía sever.

4. Response Time: CAO and Throughput: CAO --> Throughput cao, tức là server đang làm việc rất tốt, vậy tại sao thời gian xử lý lại cũng cao (không tốt). Có thể vấn đề lúc này đế từ phía Client, hoặc cụ thể là đến từ JMeter, có thể đoạn script của bạn viết chưa được tối ưu, khiến quá trình nó xử lý mất nhiều thời gian chẳng hạn?

IV. Kết luận

Trong sự phát triển của công nghệ, việc phát triển các ứng dụng web, ngoài các yêu cầu về giao diện, khả năng tương thích, bảo mật... thì việc kiểm thử hiệu năng các ứng dụng web là cần thiết.

Một trong những vấn đề cần quan tâm của ứng dụng web là số người dùng đồng thời, thời giam đáp ứng yêu cầu và thông lượng của máy chủ web cũng như khả năng tương thích khi kết nối truy cập vào hệ thống.

Mặc dù còn một số hạn chế so với các công cụ khác như LoadRuner,... nhưng bằng việc hỗ trợ nhiều giao thức và sử dụng được trên nhiều môi trường, miễn phí... Jmeter đã trở thành 1 công cụ phổ biến và được ưa chuộng để thực hiện kiểm thử hiệu năng của website.

Hi vọng bài viết đã cung cấp các thông tin hữu ích cho những ai quan tâm đến việc kiểm thử hiệu năng phần mềm - Performance Testing.

Nguồn tham khảo:

https://jmetervn.wordpress.com/2016/10/10/analyze-the-aggregate-report-in-jmeter http://learntesting123.blogspot.com/2014/09/gioi-thieu-cong-cu-test-hieu-nang.html

0