1. Trang chủ
  2. » Công Nghệ Thông Tin

Kcpm btcn09 huong dan su dung jmeter

27 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Công Cụ Kiểm Thử Hiệu Năng
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Hướng Dẫn
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 27
Dung lượng 1,83 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Startup delay seconds: nếu scheduler checkbox được chọn, có thể chọn độ trễ khởi động tương đối, JMeter sẽ sử dụng điều này để tính thời gian bắt đầu và bỏ qua giá trị thời gian bắt đ

Trang 1

CÔNG CỤ KIỂM THỬ

HIỆU NĂNG

Trang 2

MỤC LỤC

1 Tổng quan về JMeter 2

3.1 Jmeter là gì? 2

3.2 Tại sao sử dụng Jmeter 2

3.3 Các loại kiểm thử hiệu năng của JMeter 2

3.4 Cách thức hoạt động của Jmeter 3

3.5 Các element của Jmeter 3

1.5.1 Thread Group 3

1.5.2 Listener 5

1.5.3 Controller 8

1.5.4 Timer 11

1.5.5 Assertion 12

3.6 Các bước thực hiện JMeter 13

2 Hướng dẫn cài đặt Jmeter 13

3 Hướng dẫn sử dụng Jmeter 15

3.1 Scenario 1 15

3.2 Scenario 2 19

3.3 Scenario 3 22

3.4 Scenario 4: Dynamic Data 24

Trang 3

3.2 Tại sao sử dụng Jmeter

• Nguồn mở (Open Source): JMeter hoàn toàn miễn phí, cho phép developer sử dụng mã nguồn mở cho

sự phát triển

• Giao diện thân thiện: dễ sử dụng và không mất thời gian để làm quen với nó

• Nền tảng độc lập (Platform Independent): JMeter là ứng dụng Desktop Java thuần túy 100% Vì vậy,

JMeter có thể chạy nhiều nền tảng

• Đa luồng (Full Multithreading Framework): Jmeter cho mô phỏng đồng thời và cùng thời điểm nhiều sampler với các chức năng khác nhau trên các thread group khác nhau

• Hiển thị kết quả kiểm thử (Visualize Test Result): kết quả kiểm thử có thể được hiển thị ở định dạng

khác nhau như biểu đồ, bảng, cây và file log

• Khả năng mở rộng cao (High Extensible): tester có thể viết các kịch bản kiểm thử của riêng mình

JMeter cũng hỗ trợ các plugin trực quan

• Cài đặt dễ dàng: bạn chỉ cần sao chép và chạy tập tin *.bat để chạy JMeter, không cần cài đặt

• Nhiều chiến lược kiểm thử (Multiple Testing Strategy): JMeter hỗ trợ nhiều chiến lược kiểm thử như

Load Testing, Distributed Testing và Fuction Testing

• Mô phỏng (Simulation): JMeter có thể mô phỏng nhiều người dùng với các threads đồng thời, tạo tải

nặng đối với ứng dụng web đang được kiểm thử

• Hỗ trợ đa giao thức (Support multi-protocol): JMeter không chỉ hỗ trợ kiểm thử ứng dụng web mà

còn đánh giá hiệu năng máy chủ cơ sở dữ liệu Tất cả các giao thức cơ bản như HTTP, JDBC, SOAP, JMS và FPT đều được JMeter hỗ trợ

• Record và Playback: ghi lại hoạt động của người dùng trên trình duyệt và mô phỏng chúng trong một

ứng dụng web sử dụng JMeter

• Kịch bản Test (Script Test): JMeter có thể được tích hợp với Bean Shell và Selenium để kiểm thử tự

động

3.3 Các loại kiểm thử hiệu năng của JMeter

• Load Testing: tìm capacity của server, xác định ngưỡng có thể chịu tải được của hệ thống

Ví dụ: hệ thống chịu được 5000 request và không xảy ra lỗi Vượt quá 5000 sẽ bắt đầu có lỗi, response time bị chậm và sẽ có issue xảy ra → Vậy thì 5000 là capacity của server hoạt động ổn định

Trang 4

• Stress Testing: đánh giá hệ thống tại và bên trên ngưỡng limit (capacity của hệ thống), tìm ra breaking

point của hệ thống (làm cho hệ thống die hoặc response được nữa)

Ví dụ: 5000 là nó hoạt động ổn không lỗi, 7000 thì nó bắt đầu issue, 10000 thì nó chết luôn hệ thống → Vậy 10000 là break point

3.4 Cách thức hoạt động của Jmeter

3.5 Các element của Jmeter

1.5.1 Thread Group

• Thread Group là điểm bắt đầu của một test plan bất kỳ Tất cả các Controllers và Samplers phải được đặt dưới một Thread Group, Thread Group điều khiển số lượng threads mà JMeter sẽ sử dụng để thực thi kịch bản test

• Cách tạo: Click phải chuột vào Test Plan → Add → Threads (users) → Thread Group

Thread Group có những thành phần sau:

Trang 5

1.5.1.1 Action to be taken after a Sampler error

Nó xác định những gì sẽ xảy ra nếu một sampler xảy ra lỗi hoặc vì bản thân sampler bị lỗi Các lựa chọn

có thể là:

• Continue (default): bỏ qua lỗi và tiếp tục kiểm thử và chạy sampler tiếp theo

• Start Next Loop: bỏ qua lỗi, bắt đầu vòng lặp tiếp theo và tiếp tục với bài kiểm thử

• Stop Thread: thoát khỏi thread hiện tại

• Stop Test: toàn bộ kiểm thử được dừng lại ở cuối sampler hiện tại Nó có nghĩa là các sampler đang

chờ xử lý vẫn chạy cho đến khi hoàn tất

• Stop Test Now: toàn bộ kiểm thử được dừng lại và ngay lập tức Mọi sampler hiện tại đều bị gián đoạn

1.5.1.2 Thread Properties

• Name: có thể tạo bất cứ tên gì cho Thread Group

• Number of Threads (users): giả lập số user

• Ramp-up Period (in seconds): mất bao lâu để ramp-up cho toàn bộ các Threads đã chọn

Ví dụ: có 10 threads và ramp-up reriod là 100 giây, thì JMeter sẽ mất 100 giây để chạy 10 threads Mỗi thread sẽ bắt đầu 10 giây sau khi thread trước đó đươc bắt đầu

Lưu ý: nếu ramp-up period = 0, kiểm thử sẽ được diễn ra cho đến khi tất cả các threads được tạo ra, sau

đó bắt đầu tất cả các thread cùng một lúc

• Loop Count: số lần thực thi kiểm thử cho mỗi thread group, giá trị mặc định là 1 nghĩa là không lặp

lại (Forever: lặp lại vô hạn số lần kiểm thử)

• Delay Thread creation until needed: làm chậm việc tạo ra thread mới Hữu ích khi tạo Thread Group

với lượng user lớn Khi đó tránh được tải lớn do tạo ra một lượng user lớn ngay lập tức

• Scheduler: khi được tích, tùy chọn cho scheduler sẽ được enable để thiết lập việc chạy/ dừng test lại

Trang 6

những thời điểm nhất định Nếu không chọn, bản test sẽ chạy ngay khi chúng ta bấm Start

1.5.1.3 Scheduler Configuration

• Duration (seconds): nếu scheduler checkbox được chọn, có thể chọn thời gian kết thúc tương đối

JMeter sẽ sử dụng tính năng này để tính thời gian kết thúc và bỏ qua giá trị thời gian kết thúc Khi kiểm thử chạy hết thời gian này, nó sẽ dừng lại và đang sử dụng chế độ Stop Test như trên

• Startup delay (seconds): nếu scheduler checkbox được chọn, có thể chọn độ trễ khởi động tương đối,

JMeter sẽ sử dụng điều này để tính thời gian bắt đầu và bỏ qua giá trị thời gian bắt đầu

• Start time: nếu scheduler checkbox được chọn, có thể chọn thời gian bắt đầu tuyệt đối Khi bắt đầu

kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt đầu được chỉ định bắt đầu kiểm thử

• End time: nếu scheduler checkbox được chọn, có thể chọn thời gian kết thúc tuyệt đối Khi bạn bắt

đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt đầu được chỉ định bắt đầu kiểm thử và nó sẽ dừng lại ở thời gian kết thúc được chỉ định

1.5.2 Listener

1.5.2.1 Định nghĩa Listener

• Cung cấp thông tin mà JMeter thu thập được về các test case trong lúc JMeter chạy

• Cho phép xem những kết quả thu được từ việc chạy thử nghiệm dưới các dạng khác nhau như: tables, graphs, trees hoặc một vài log files đơn giản… Lưu ý: tất cả Listener đều lưu trữ cùng một dữ liệu/ kết quả test, chỉ khác nhau ở cách mà data hiển thị trên màn hình

• Listener có thể trích xuất data thu thập ra file cho người dùng Mỗi listener cung cấp một field để chỉ định file sẽ chứa data Có thể tùy chọn định dạng file là csv hoặc xml

• Listener có thể đặt bất cứ nơi đâu trong test plan Chúng sẽ chỉ thu thập data từ các elements cùng cấp hoặc dưới cấp

1.5.2.2 Phân loại Listener

Có rất nhiều dạng Listener được JMeter cung cấp, có thể kể đến một số Listener thường được sử dụng để cung cấp như Aggregate Result, View Results in Table, View Results Tree, Summary Report, Graph Results, …

1.5.2.2.1 Aggregate Result

Aggregate Result: là một report dạng table, với 12 coulumn ứng với 12 thông số

Trang 7

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

Lưu ý: mặc định tất cả những request bị trùng tên trong test plan, sẽ chỉ hiển thị 1 dòng duy nhất trong table này, cho dù nội dung của các request đó có khác nhau hay nằm khác Thread Group Vì vậy, khi đặt tên cho các request, nên lưu ý là đặt tên khác nhau

- Include group name in label? Mặc định là UNCHECK

Nếu Include group name in label = CHECK, thì những request sẽ được gán thêm tiền tố = tên của

Thread Group chứa request đó

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

Công thức: #Samples = Number of Threads (users) * Loop Count

Ví dụ: Thread Group có cấu hình

Number of Threads (users): 100, Loop Count: 1, chạy 2 trang (trang chủ và trang báo thể thao) → thì 1 HTTP Request của Thread Group này sẽ run 100 x 1 x 2 = 200 (lần)

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

Ví dụ: một request run tổng cộng 2 lần với các kết quả response time tương ứng là 662ms và 212ms → response time trung bình là 437ms

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

Ví dụ: Min = 75ms

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

Ví dụ: Min = 3550ms

- Percentiles (millisecond): là một con số x và đi kèm theo 1 giá trị A Nghĩa là sẽ có x% có giá trị

thấp hơn giá trị A, còn lại (100-x)% sẽ có giá trị lớn hơn giá trị A

- Median (millisecond): nó gần giống với trung bình, nhưng ý nghĩa thì khác hoàn toàn, Median + một

giá trị A, sẽ chia toàn bộ các giá trị của bạn thành 2 phần khác nhau, một phần sẽ chứa những giá trị

< A, phần còn lại sẽ chứa những giá trị > A Median sẽ chỉ ra, sẽ có 50% số request có response time nhỏ hơn giá trị và 50% số request còn lại có response time lớn hơn giá trị này

- 90% line (90th Percentile) (millisecond): nghĩa là 90% số requests sẽ có response time nhỏ hơn giá

trị hiển thị trong table, 10% số request còn lại sẽ có request time lớn hơn giá trị hiển thị trong table

Trang 8

- 95% line (90th Percentile) (millisecond): nghĩa là 95% số requests sẽ có response time nhỏ hơn giá

trị hiển thị trong table, 5% số request còn lại sẽ có request time lớn hơn giá trị hiển thị trong table

- 99% line (90th Percentile) (millisecond): nghĩa là 99% số requests sẽ có response time nhỏ hơn giá

trị hiển thị trong table, 1% số request còn lại sẽ có request time lớn hơn giá trị hiển thị trong table

- Error (%): % số lượng request bị fail

Ví dụ: run 200 lần, thấy 0% nghĩa là request không có lỗi

- Throughput (thông lượng) con số cho bạn biết được số lượng requests được hệ thống (server) xử lý

trong 1 đơn vị thời gian, có thể giây, phút, giờ

Công thức tính throughput = (Tổng số lượng requests) / (tổng thời gian * đơn vị chuyển đổi)

Tổng số lượng requests = tổng số lần request này được run

Tổng thời gian = (thời gian bắt đầu chạy của request cuối cùng) + (thời gian chạy/response time của request cuối cùng) – (thời gian bắt đầu chạy của request đầu tiên)

Đơn vị chuyển đổi: mặc định nó sẽ tính theo millisecond, nên để đổi về second thì số này sẽ là 1000 hoặc 1000*60 nếu bạn muốn chuyển về phút

- KB/sec: cũng là thông lượng, nhưng không đo lường bằng số request, mà đo bằng kilobytes/second Công thức thoughput KB/sec = (thoughput * average bytes) /1024

- Total: tổng kết lại toàn bộ kết quả từ request bên trên Ngoại trừ #samples, throughput và KB/sec, nó

sẽ được cộng lại theo đúng nghĩa total Còn các thông số còn lại đều được tính total bằng cách lấy trung bình từ tất cả những request ở trên

1.5.2.2.2 Graph Result

Những thông số của graph này được biểu thị bằng những màu sắc khác nhau:

- Đen: tổng số samples hiện đang gửi

- Đỏ: độ lệch chuẩn hiện tại

- Xanh lá: tỷ lệ throughput hiện tại đại diện cho số request là server đang xử lý

- Xanh dương: trung bình samples hiện tại

1.5.2.2.3 View Result in Table

Hiển thị những thông số về thời gian phản hồi của từng yêu cầu, những yêu cầu thực hiện thành công và thất bại… dưới dạng bảng

1.5.2.2.4 View Result Tree

Hiển thị kết quả dạng cây của tất cả các sample responses, các request xanh là pass, các request đỏ là fail

1.5.2.2.5 Summary Report

Hiển thị kết quả, bảng thống kê bao gồm:

- Label: tên request

- Sample: số request

Trang 9

- Average: thời gian trung bình xử lý

- requestMin: thời gian nhỏ nhất xử lý

- requestMax: thời gian lớn nhất xử lý

- requestStd.Dev: độ lệch chuẩn của thời gian xử lý

- requestError: phần trăm bị lỗi các request (lỗi kết nối hoặc lỗi đầu ra không mong muốn)

- thoughput: số request/s của serveravg

- bytes: số bytes trung bình

- responseKB/sec = (agv.bytes *thoughput) /1024

- …

1.5.2.3 Phân tích Report

Hãy tập trung vào 2 thông số quan trọng nhất của mọi performance report

1 Response Time: chỉ ra được việc xử lý request nhanh hay chậm → response time thì càng thấp càng

tốt

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

một thời gian, càng xử lý được càng nhiều càng tốt → throughput càng cao càng tốt

Có các trường hợp xảy ra bao gồm:

• Trường hợp 1: Response time thấp và throughput thấp → trường hợp này 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 nghĩa là số request xử

lý rất ít → KẾT LUẬN VÔ LÝ

• Trường hợp 2: Response time thấp và throughput cao → kết quả lý tưởng thời gian xử lý thấp và số

request xử lý đồng thời lại cao → KẾT LUẬN SERVER ĐANG RẤT TỐT

• Trường hợp 3: Response time cao và throughput thấp → performance test của bạn đã bị fail Test chỉ rằng thời gian xử lý quá cao và lượng request được xử lý lại rất thấp→ KẾT LUẬN PHẢI XEM XÉT

ĐỂ IMPROVE VỀ PHÍA SERVER

• Trường hợp 4: Response time cao và throughput cao → throughput cao, tức là server đang làm việc rất tốt, response time cao nghĩa là thời gian xử lý cao (không tốt) → KẾT LUẬN ĐOẠN SCRIPT VIẾT CHƯA ĐƯỢC TỐI ƯU, KHIẾN QUÁ TRÌNH XỬ LÝ MẤT NHIỀU THỜI GIAN 1.5.3 Controller

Trang 10

• Có rất nhiều Sampler cho kiểu request như: HTTP, FTP, JDBC, Java, SOAP/XML, RPC, MongoDB, TCP …

Giải thích cụ thể 1 loại sampler là HTTP Request

HTTP Request này cho phép bạn gửi yêu cầu HTTP, HTTPs tới máy chủ web Nó cũng cho phép bạn

kiểm soát hoặc không kiểm soát JMeter phân tích cú pháp các tệp HTML cho hình ảnh, các resources được nhúng khác và gửi yêu cầu HTTP để truy xuất chúng Các loại resource nhúng sau đây được truy xuất: hình ảnh, applet, bảng định kiểu (css) và tài nguyên được tham chiếu từ các tệp đó, external scripts, frames, iframes, background images (body, table, TD, TR), background sound

• HTTP Request Properties

- Name: đặt tên cho HTTP Request

Trang 11

- 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, nếu bỏ trống mặc định là HTTP

- 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 các danh sách các tham số để gửi cùng request (có thể thêm hoặc xóa 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 …

1.5.3.2 Logic Controller

• Logic controller giúp bạn định nghĩa thứ tự xử lý request trong một Thread Ví dụ, bạn có thể sử dụng Random Controller để gửi HTTP Request tới server một cách ngẫu nhiên

• Logic controller định nghĩa thứ tự request để thực thi

• Cách tạo: Click phải chuột vào Thread Group → Add → Logic Controller

Trang 12

Loop controller làm cho các request chạy trong số lần chỉ định hoặc forever, ngoài giá trị vòng lặp mà bạn

đã thiết lập cho thread group

1.5.3.2.4 Once Only Controller

Thiết lập once only controller cho phép Jmeter xử lý các bộ điều khiển bên trong nó chỉ một lần cho mỗi thread Nếu once only controller được thiết lập thì nó sẽ chạy duy nhất trong lần đầu tiên của thread group, còn các lần chạy sau đó thì request được pass over

Trang 13

yêu cầu kế tiếp nhau mà người dùng ảo gửi đến server Điều này sẽ tạo ra một mô phỏng thực tế nhất so với hoạt động thực tế của người dùng trên website JMeter cung cấp nhiều Timer với các dạng khác nhau

để thiết lập thời gian nghỉ giữa việc thực hiện 2 yêu cầu như:

• Constant Timer: xác lập thời gian là một hằng số

• Uniform Random Timer: xác lập thời gian nghỉ ở một khoảng xác định

• …

1.5.5 Assertion

• Assertion để xác nhận và kiểm tra lại các kết quả trả về

• Assertion có nhiều loại như Response Assertion, Duration Assertion, Size Assertion, XML Assertion, MD5Hex Assertion, HTML Assertion, Xpath Assertion…

1.5.5.1 Response Assertion

Response Assertion xác nhận phản hồi cho phép bạn thêm một chuỗi được so sánh với các trường khác nhau của request hoặc response

Cách tạo: Click phải chuột vào HTTP Request → Add → Assertions → Response Assertion

Chi tiết các field trong Response Assertion:

• Name: tên

• Apply to: điểu này là để sử dụng với các samplers có thể tạo các sub sampler

o Main sample and sub-samplers: áp dụng cho cả hai

o Main sample only: chỉ áp dụng cho sample chính

o Sub-samples only: chỉ áp dụng cho sample phụ

o JMeter Variable Name to use: áp dụng cho nội dung biến được đặt tên

• Field to test: chọn các field nào của request hay response để kiểm tra

o Text Response: kiểm tra text trả về từ server

o Request data: kiểm tra text của request đã gửi đến server

Ngày đăng: 06/04/2023, 20:55

w