Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
1,83 MB
Nội dung
CÔNG CỤ KIỂM THỬ HIỆU NĂNG MỤC LỤC Tổng quan JMeter 3.1 Jmeter gì? 3.2 Tại sử dụng Jmeter 3.3 Các loại kiểm thử hiệu JMeter 3.4 Cách thức hoạt động Jmeter 3.5 Các element Jmeter 1.5.1 Thread Group 1.5.2 Listener 1.5.3 Controller 1.5.4 Timer 11 1.5.5 Assertion 12 3.6 Các bước thực JMeter 13 Hướng dẫn cài đặt Jmeter 13 Hướng dẫn sử dụng Jmeter 15 3.1 Scenario 15 3.2 Scenario 19 3.3 Scenario 22 3.4 Scenario 4: Dynamic Data 24 Trang 1 Tổng quan JMeter 3.1 Jmeter gì? • Apache JMeter TM phần mềm mã nguồn mở Java túy, phát triển lần đầu Stefano Mazzocchi tổ chức phần mềm Apache • JMeter thiết kế để thực kiểm tra hiệu năng, kiểm tra tải (load testing) đo lường hiệu suất ứng dụng web nhiều dịch vụ 3.2 Tại sử dụng Jmeter • Nguồn mở (Open Source): JMeter hồn tồn miễn phí, cho phép developer sử dụng mã nguồn mở cho phát triển • Giao diện thân thiện: dễ sử dụng không thời gian để làm quen với • Nền tảng độc lập (Platform Independent): JMeter ứng dụng Desktop Java túy 100% Vì vậy, JMeter chạy nhiều tảng • Đa luồng (Full Multithreading Framework): Jmeter cho mô đồng thời thời điểm nhiều sampler với chức khác thread group khác • Hiển thị kết kiểm thử (Visualize Test Result): kết kiểm thử hiển thị định dạng khác biểu đồ, bảng, file log • Khả mở rộng cao (High Extensible): tester viết kịch kiểm thử riêng JMeter hỗ trợ plugin trực quan • Cài đặt dễ dàng: bạn cần chép 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ử Load Testing, Distributed Testing Fuction Testing • Mơ (Simulation): JMeter mô nhiều người dùng với threads đồng thời, tạo tải nặng ứng dụng web kiểm thử • Hỗ trợ đa giao thức (Support multi-protocol): JMeter không hỗ trợ kiểm thử ứng dụng web mà đánh giá hiệu máy chủ sở liệu Tất giao thức HTTP, JDBC, SOAP, JMS FPT JMeter hỗ trợ • Record Playback: ghi lại hoạt động người dùng trình duyệt mơ chúng ứng dụng web sử dụng JMeter • Kịch Test (Script Test): JMeter tích hợp với Bean Shell Selenium để kiểm thử tự động 3.3 Các loại kiểm thử hiệu JMeter • Load Testing: tìm capacity server, xác định ngưỡng chịu tải hệ thống Ví dụ: hệ thống chịu 5000 request không xảy lỗi Vượt 5000 bắt đầu có lỗi, response time bị chậm có issue xảy → Vậy 5000 capacity server hoạt động ổn định Trang • Stress Testing: đánh giá hệ thống bên ngưỡng limit (capacity hệ thống), tìm breaking point hệ thống (làm cho hệ thống die response nữa) Ví dụ: 5000 hoạt động ổn khơng lỗi, 7000 bắt đầu issue, 10000 chết ln hệ thống → Vậy 10000 break point 3.4 Cách thức hoạt động Jmeter 3.5 Các element Jmeter 1.5.1 • Thread Group Thread Group điểm bắt đầu test plan Tất Controllers Samplers phải đặt Thread Group, Thread Group điều khiển số lượng threads mà JMeter sử dụng để thực thi kịch test • Cách tạo: Click phải chuột vào Test Plan → Add → Threads (users) → Thread Group Thread Group có thành phần sau: Trang 1.5.1.1 Action to be taken after a Sampler error Nó xác định xảy sampler xảy lỗi thân sampler bị lỗi Các lựa chọn là: • Continue (default): bỏ qua lỗi tiếp tục kiểm thử chạy sampler • Start Next Loop: bỏ qua lỗi, bắt đầu vòng lặp tiếp tục với kiểm thử • Stop Thread: thoát khỏi thread • Stop Test: toàn kiểm thử dừng lại cuối sampler Nó có nghĩa sampler chờ xử lý chạy hoàn tất • Stop Test Now: toàn kiểm thử dừng lại Mọi sampler bị gián đoạn 1.5.1.2 Thread Properties • Name: tạo tên cho Thread Group • Number of Threads (users): giả lập số user • Ramp-up Period (in seconds): để ramp-up cho toàn Threads chọn Ví dụ: có 10 threads ramp-up reriod 100 giây, JMeter 100 giây để chạy 10 threads Mỗi thread bắt đầu 10 giây sau thread trước đươc bắt đầu Lưu ý: ramp-up period = 0, kiểm thử diễn tất threads tạo ra, sau bắt đầu tất thread lúc • Loop Count: số lần thực thi kiểm thử cho thread group, giá trị mặc định nghĩa 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 thread Hữu ích tạo Thread Group với lượng user lớn Khi tránh tải lớn tạo lượng user lớn • Scheduler: tích, tùy chọn cho scheduler enable để thiết lập việc chạy/ dừng test lại Trang thời điểm định Nếu không chọn, test chạy bấm Start 1.5.1.3 • Scheduler Configuration Duration (seconds): scheduler checkbox chọn, chọn thời gian kết thúc tương đối JMeter sử dụng tính để tính thời gian kết thúc bỏ qua giá trị thời gian kết thúc Khi kiểm thử chạy hết thời gian này, dừng lại sử dụng chế độ Stop Test • Startup delay (seconds): scheduler checkbox chọn, chọn độ trễ khởi động tương đối, JMeter sử dụng điều để tính thời gian bắt đầu bỏ qua giá trị thời gian bắt đầu • Start time: scheduler checkbox chọn, chọn thời gian bắt đầu tuyệt đối Khi bắt đầu kiểm thử, JMeter đợi thời gian bắt đầu định bắt đầu kiểm thử • End time: scheduler checkbox chọn, chọn thời gian kết thúc tuyệt đối Khi bạn bắt đầu kiểm thử, JMeter đợi thời gian bắt đầu định bắt đầu kiểm thử dừng lại thời gian kết thúc định 1.5.2 Listener 1.5.2.1 Định nghĩa Listener • Cung cấp thông tin mà JMeter thu thập test case lúc JMeter chạy • Cho phép xem kết thu từ việc chạy thử nghiệm dạng khác như: tables, graphs, trees vài log files đơn giản… Lưu ý: tất Listener lưu trữ liệu/ kết test, khác cách mà data hiển thị hình • Listener trích xuất data thu thập file cho người dùng Mỗi listener cung cấp field để định file chứa data Có thể tùy chọn định dạng file csv xml • Listener đặt nơi đâu test plan Chúng thu thập data từ elements cấp cấp 1.5.2.2 Phân loại Listener Có nhiều dạng Listener JMeter cung cấp, kể đến số Listener thường sử dụng để cung cấp Aggregate Result, View Results in Table, View Results Tree, Summary Report, Graph Results, … 1.5.2.2.1 Aggregate Result Aggregate Result: report dạng table, với 12 coulumn ứng với 12 thông số Trang - Label: hiển thị tên requests có test plan Lưu ý: mặc định tất request bị trùng tên test plan, hiển thị dòng table này, cho dù nội dung request có khác hay nằm khác Thread Group Vì vậy, đặt tên cho request, nên lưu ý đặt tên khác - Include group name in label? Mặc định UNCHECK Nếu Include group name in label = CHECK, request gán thêm tiền tố = tên Thread Group chứa request - #Samples: tổng số lần run 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 trang (trang chủ trang báo thể thao) → HTTP Request Thread Group run 100 x x = 200 (lần) - Average (millisecond): thời gian phản hồi trung bình request, tính lần run cuối Ví dụ: request run tổng cộng lần với kết response time tương ứng 662ms 212ms → response time trung bình 437ms - Min (millisecond): response time thấp request tính cho tồn tất lần run Ví dụ: Min = 75ms - Max (millisecond): response time cao request tính cho tồn tất lần run Ví dụ: Min = 3550ms - Percentiles (millisecond): số x kèm theo giá trị A Nghĩa có x% có giá trị thấp giá trị A, lại (100-x)% có giá trị lớn giá trị A - Median (millisecond): gần giống với trung bình, ý nghĩa khác hồn tồn, Median + giá trị A, chia toàn giá trị bạn thành phần khác nhau, phần chứa giá trị < A, phần lại chứa giá trị > A Median ra, có 50% số request có response time nhỏ giá trị 50% số request cịn lại có response time lớn giá trị - 90% line (90th Percentile) (millisecond): nghĩa 90% số requests có response time nhỏ giá trị hiển thị table, 10% số request lại có request time lớn giá trị hiển thị table Trang - 95% line (90th Percentile) (millisecond): nghĩa 95% số requests có response time nhỏ giá trị hiển thị table, 5% số request cịn lại có request time lớn giá trị hiển thị table - 99% line (90th Percentile) (millisecond): nghĩa 99% số requests có response time nhỏ giá trị hiển thị table, 1% số request cịn lại có request time lớn giá trị hiển thị table - Error (%): % số lượng request bị fail Ví dụ: run 200 lần, thấy 0% nghĩa request khơng có lỗi - Throughput (thơng lượng) số cho bạn biết số lượng requests hệ thống (server) xử lý đơn vị thời gian, giây, phút, 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 run Tổng thời gian = (thời gian bắt đầu chạy request cuối cùng) + (thời gian chạy/response time request cuối cùng) – (thời gian bắt đầu chạy request đầu tiên) Đơn vị chuyển đổi: mặc định tính theo millisecond, nên để đổi second số 1000 1000*60 bạn muốn chuyển phút - KB/sec: thông lượng, không đo lường số request, mà đo kilobytes/second Công thức thoughput KB/sec = (thoughput * average bytes) /1024 - Total: tổng kết lại toàn kết từ request bên Ngoại trừ #samples, throughput KB/sec, cộng lại theo nghĩa total Cịn thơng số cịn lại tính total cách lấy trung bình từ tất request 1.5.2.2.2 Graph Result Những thông số graph biểu thị màu sắc khác nhau: - Đen: tổng số samples gửi - Đỏ: độ lệch chuẩn - Xanh lá: tỷ lệ throughput đại diện cho số request server xử lý - Xanh dương: trung bình samples 1.5.2.2.3 View Result in Table Hiển thị thông số thời gian phản hồi yêu cầu, yêu cầu thực thành công thất bại… dạng bảng 1.5.2.2.4 View Result Tree Hiển thị kết dạng tất sample responses, request xanh pass, request đỏ 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 - Average: thời gian trung bình xử lý - requestMin: thời gian nhỏ xử lý - requestMax: thời gian lớn xử lý - requestStd.Dev: độ lệch chuẩn thời gian xử lý - requestError: phần trăm bị lỗi request (lỗi kết nối lỗi đầu không mong muốn) - thoughput: số request/s 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 thông số quan trọng performance report Response Time: việc xử lý request nhanh hay chậm → response time thấp tốt Throughput: số lượng requests server xử lý đơn vị thời gian Vậy thời gian, xử lý nhiều tốt → throughput cao tốt Có trường hợp xảy bao gồm: • Trường hợp 1: Response time thấp throughput thấp → trường hợp không xảy ra, response time thấp nghĩa thời gian đáp ứng nhanh, throughput thấp nghĩa số request xử lý → KẾT LUẬN VƠ LÝ • Trường hợp 2: Response time thấp throughput cao → kết lý tưởng thời gian xử lý thấp 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 throughput thấp → performance test bạn bị fail Test thời gian xử lý cao lượng request xử lý lại thấp→ KẾT LUẬN PHẢI XEM XÉT ĐỂ IMPROVE VỀ PHÍA SERVER • Trường hợp 4: Response time cao throughput cao → throughput cao, tức server làm việc tốt, response time cao nghĩa 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 1.5.3.1 Sampler • Sampler thực cơng việc thực JMeter, sampler tạo nhiều kết sample Những kết sample có thuộc tính đa dạng hiển thị listener • Cách tạo: Click phải chuột vào Thread Group → Add → Sampler → HTTP Request Trang • Có nhiều Sampler cho kiểu request như: HTTP, FTP, JDBC, Java, SOAP/XML, RPC, MongoDB, TCP … Giải thích cụ thể loại sampler HTTP Request HTTP Request cho phép bạn gửi yêu cầu HTTP, HTTPs tới máy chủ web Nó cho phép bạn kiểm sốt khơng kiểm sốt JMeter phân tích cú pháp tệp HTML cho hình ảnh, resources nhúng khác gửi yêu cầu HTTP để truy xuất chúng Các loại resource nhúng sau truy xuất: hình ảnh, applet, bảng định kiểu (css) tài nguyên tham chiếu từ 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 yêu cầu mà người dùng ảo gửi đến server Điều tạo mô thực tế so với hoạt động thực tế người dùng website JMeter cung cấp nhiều Timer với dạng khác để thiết lập thời gian nghỉ việc thực yêu cầu như: • Constant Timer: xác lập thời gian số • Uniform Random Timer: xác lập thời gian nghỉ khoảng xác định • … 1.5.5 Assertion • Assertion để xác nhận kiểm tra lại kết trả • Assertion có nhiều loại 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 chuỗi so sánh với trường khác request response Cách tạo: Click phải chuột vào HTTP Request → Add → Assertions → Response Assertion Chi tiết field Response Assertion: • Name: tên • Apply to: điểu để sử dụng với samplers tạo sub sampler o Main sample and sub-samplers: áp dụng cho hai o Main sample only: áp dụng cho sample o Sub-samples only: áp dụng cho sample phụ o JMeter Variable Name to use: áp dụng cho nội dung biến đặt tên • Field to test: chọn field request hay response để kiểm tra o Text Response: kiểm tra text trả từ server o Request data: kiểm tra text request gửi đến server Trang 12 o Response code:ví dụ: 200 o Response message: ví dụ: OK o Response Headers bao gồm Set-cookie headers o Request Headers o URL sampled o Document (text) o Ignore status: check status response bắt buộc phải thành công trước đánh giá Assertion • Pattem to test: nội dung muốn kiểm tra từ response trả • Custom failure message: cho phép thay thông báo lỗi (hiển thị Assertion result) 1.5.5.2 Duration Assertion Duration Assertion để xác minh khoảng thời gian phản hồi Bất kỳ phản hồi nhiều số thời gian cho phép phản hồi thành công 1.5.5.3 Size Assertion Size Assertion để kiểm tra xem response/ phản hồi có chứa số byte yêu cầu hay không (số bytes trả response hiển thị cột bytes View Result in table) 1.5.5.4 XML Assertion XML Assertion để kiểm tra liệu response bao gồm document XML xác 1.5.5.5 MD5HEX Assertion MD5HEX Assertion cho phép người dùng kiểm tra MD5 Hex liệu phản hồi, MD5 Hex có 32 chữ số thập lục phân đại diện cho MD5 Hash 1.5.5.6 HTML Assertion HTML Assertion cho phép người dùng kiểm tra cú pháp HTML liệu phản hồi cách sử dụng Jtidy 3.6 Các bước thực JMeter Bao gồm bước: Tạo test plan để thực test website Tạo request đến server Xem kết kịch test Run test get result Hướng dẫn cài đặt Jmeter Điền kiện tiên quyết: JMeter viết ngôn ngữ Java, nên muốn chạy JMeter trước hết máy bạn phải cài JRE JDK Link download: https://www.oracle.com/technetwork/java/javase/downloads/index.html Trang 13 Bước 1: truy cập trang web: https://jmeter.apache.org/download_jmeter.cgi Bước 2: Tiến hành download file: apache-jmeter-5.1.1.zip Bước 3: Giải nén file vừa download ta thư mục “apache-jmeter-5.1.1” Bước 4: Mở thư mục “apache-jmeter-5.1.1” → tìm đến thư mục “bin” → click đúp vào file “ApacheJMeter.rar” Giao diện JMeter hiển thị sau: Trang 14 Hướng dẫn sử dụng Jmeter 3.1 Scenario Giả lập 100 user truy cập vào báo dân trí trang chủ trang báo thể thao đồng thời Bước 1: Tạo Test Plan để thực test website o Tạo Test Plan với tên “Demo Performance 1” o Thêm Thread Group Click chuột phải vào Test Plan thêm Thread Group Add → Threads (users) → Thread Group Trong bảng điều khiển Thread Group, nhập Thread Properties sau: o Name: Facebook o Number of Threads (users): 100 (số người dùng kết nối đến trang facebook 100) o Ramp-Up Period: 100 o Loop Count: Bước 2: Tạo request đến server • HTTP Request Default Click phải chuột vào Test Plan → Add → Config Element → HTTP Request Default Trang 15 Trong bảng điều khiển HTTP Request Defaults, nhập thơng tin như: • Server name of IP: dantri.com.vn • Port number: 80 • HTTP Request Click phải chuột vào Thread Group → Add → Sampler → HTTP Request Chỉnh thông số form HTTP Request: • Name: đặt tên request • Server name of IP: dùng mặc định mà HTTP Request Default khai báo Trang 16 • Port Number: dùng HTTP Request Default khai báo • Method: chọn GET • Path: / (chọn trang chủ báo dân trí) Tương tự làm HTTP Request với trang báo thể thao Bước 3: xem kết kịch test • Xem kết tổng hợp tất thread Click chuột phải vào Thread Group → Add → Listener → Summary Report • Xem kết Request kịch Click chuột phải vào Thread Group → Add → Listener → View Results Tree • Xem kết dạng đồ thị Click chuột phải vào Thread Group → Add → Listener → Graph Results Trang 17 Bước 4: Run test get result Chạy chương trình test: nhấn nút Run (Ctrl + R) toolbar để bắt đầu tiến trình test Kết quả: click vào View Results Tree, Summary Report Graph Results để xem kết • View Results Tree: hiển thị thông tin request kết chúng Các request xanh pass, request đỏ fail Click vào request tổng trang (trang chủ trang báo thể thao) bên cạnh có phần thơng tin request là: Sampler result, Request, Response data → Kết luận: tất request PASS • Summary Report: hiển thị kết quả, bảng thống kê bao gồm: Trang chủ Thể thao Samples = 100 Samples = 100 Average: thời gian trung bình xử lý 931 Average: thời gian trung bình xử lý 313 Request Min: thời gian nhỏ xử lý 293 Request Min: thời gian nhỏ xử lý 84 Request Max: thời gian lớn xử lý 4084 Request Max: thời gian lớn xử lý 1174 Request Std.Dev: độ lệch chuẩn thời gian xử lý Request Std.Dev: độ lệch chuẩn thời gian xử lý 551.61 196.28 Request Error: phần trăm bị lỗi request 0% Request Error: phần trăm bị lỗi request 0% Thoughput: 1.0 / sec Thoughput: 1.0 / sec Trang 18 ResponseKB/sec = (agv.bytes *thoughput) /1024 ResponseKB/sec = (agv.bytes *thoughput) /1024 = (201851.4 * 1.0)/1024 = 197.121 = (107144.4 * 1.0)/1024 = 104.633 → Kết luận: website có khả tải tốt Trong suốt thời gian hoạt động, với số lượng 100 người dùng truy cập vào website, gần tất giao dịch thực thành cơng • Graph Results: thông số graph biểu thị màu sắc khác nhau: • Tổng số samples gửi = 200 • Độ lệch chuẩn = 516 • Throughput = 119.902/minutes (xử lý 119.902 request phút) • Trung bình samples = 622 • Median = 489 → Server wesbsite báo dân trí xử lý request tốt 3.2 Scenario Giả lập 500 user truy cập vào blazedemo.com đồng thời Bước 1: Tạo Test Plan để thực test website o Tạo Test Plan với tên “Demo Performance 2” o Thêm Thread Group Trong bảng điều khiển Thread Group, nhập Thread Properties sau: o Number of Threads (users): 500 o Ramp-Up Period: 100 o Loop Count: Trang 19 Bước 2: Tạo request đến server • HTTP Request Click phải chuột vào Thread Group → Add → Sampler → HTTP Request Chỉnh thông số form HTTP Request: • Name: Trang chủ • Server name of IP: blazedemo.com Trang 20 • Timers Click phải chuột vào HTTP Request → Add → Timer → Constant Timer Trong trường hợp này, chờ 300 milisecond Bước 3: xem kết kịch test Xem kết dạng View Results Tree Aggregate Report Cách tạo: • Click chuột phải vào Thread Group → Add → Listener → View Results Tree • Click chuột phải vào Thread Group → Add → Listener → Aggregate Report Bước 4: Run test get result Chạy chương trình test: nhấn nút Run (Ctrl + R) toolbar để bắt đầu tiến trình test Kết quả: Trang 21 3.3 Scenario Tương tự Scenario 2, ta tạo tiếp HTTP Request đường dẫn đến trang blazedemo.com/reserve.php • Tạo HTTP Request Trang 22 • Ngồi xem kết dạng View Results Tree, Aggregate Report scenario 2, chọn xem thêm kết dạng View Results in Table Trang 23 3.4 Scenario 4: Dynamic Data • Tạo file “CSV DATA.csv” • Tạo Csv Data Set Config Click chuột phải vào Thread Group → Add → Config Element → CSV Data Set Config Trang 24 • Tạo HTTP Request • Tạo View Results Tree View Results in Table để xem kết chạy • Kết Trang 25 Trang 26