Xác định môi trường kiểm thử Xác định tiêu chí hiệu năng Lập kế hoạch kiểm thử Cài đặt môi trường kiểm thử Thực hiện kiểm thử thử nghiệm Thực hiện kiểm thử Phân tích đánh giá kết quả 1 2
Trang 1PERFORMANCE TESTING
GUIDELINE
Biên soạn: BP QLCL Máy chủ - Khối QLCL SP
Hà Nội - 06/2020
Trang 2A MỤC TIÊU
1 Xác định thực trạng vấn đề hệ thống máy chủ hiện tại
2 Lên phương án tính toán nâng cấp hệ thống máy chủ trong tương lai
B QUY TRÌNH KIỂM THỬ
1 Xác định môi trường kiểm thử:
1 Cần xác định rõ môi trường kiểm thử là môi trường nào, mục đích kiểm thử là gì, từ đó xây dựng các bài kiểm thử cho phù hợp với từng môi trường
2 Xác định dịch vụ kiểm thử, tính năng chính sẽ kiểm thử và tập trung nghiên cứu nghiệp vụ cũng như kiến/cấu trúc của hệ thống và công nghệ nếu có
Xác định môi trường kiểm thử
Xác định tiêu chí hiệu năng Lập kế hoạch kiểm thử Cài đặt môi trường kiểm thử Thực hiện kiểm thử thử nghiệm Thực hiện kiểm thử
Phân tích đánh giá kết quả
1
2 3 4 5 6 7
Trang 3→ Nắm rõ về cấu hình hệ thống được sử dụng trong quá trình kiểm thử trước khi bắt đầu Nó sẽ giúp tạo
ra bộ Testcase kiểm thử hiệu năng hiệu quả hơn đồng thời nó cũng sẽ giúp xác định các khó khăn mà người thử nghiệm có thể gặp phải trong quá trình kiểm thử hiệu năng
2 Xác định tiêu chí kiểm thử hiệu năng
Từ bước thực hiện 1, người thực hiện kiểm thử sẽ xác định được tiêu chí và đặt ra tiêu chuẩn cho kiểm thử hiệu năng, gồm các thông số chính như sau:
i Thời gian phản hồi: Là tổng thời gian gửi 01 request và nhận được hồi đáp
ii Thời gian phản hồi trung bình: Thời gian xử lý request trung bình của quá trình kiểm thử iii Thời gian phản hồi dài nhất: Thời gian lớn nhất mà hoàn thành một request
iv Tỉ lệ lỗi: Là tỉ lệ số request lỗi / Tổng số lượng request thực hiện
v Số người dùng đồng thời: Số lượng người dùng có thể đáp ứng đồng thời (Hay còn được gọi load size – kích cỡ công việc)
vi Số request mỗi giây (đơn vị thời gian): Số lượng request xử lý được trong mỗi giây hoặc một đơn vị thời gian cụ thể
vii Thông tin tài nguyên hệ thống máy chủ: Tài nguyên CPU, RAM, network
3 Lập kế hoạch kiểm thử
Lập kế hoạch kiểm thử cho từng API tương ứng → Phân chia thời gian kiểm thử cụ thể và số lượng CCU (Concurrent Users – Số lượng người dùng đồng thời) tương ứng
4 Cài đặt môi trường kiểm thử
Thực hiện cài đặt môi trường kiểm thử, chuẩn bị danh sách các công cụ, dụng cụ cần thiết cho kiểm thử hiệu năng, cơ bản sẽ gồm:
1 Thông tin các dịch vụ sẽ thực hiện kiểm thử (URL hoặc IP Address)
2 Thông tin các client sẽ thực hiện kiểm thử (Performance sẽ gồm nhiều client để thực hiện đẩy
dữ liệu, với 1 client có thể đẩy từ 1500 request (reqs) tới 4500 reqs)
3 Cài đặt các môi trường trên hệ thống client: Biến môi trường (Java) và các công cụ thực hiện
kiểm thử (nGinder, Jmeter, LoadRuner, Load View-Testing, ….)
4 Xây dựng các script kiểm thử (Chi tiết xem tại mục C Thông tin kiểm thử chi tiết)
5 Thực hiện kiểm thử thử nghiệm
Thực hiện thử nghiệm nhằm mục đích đánh giá các thông số, thông tin cấu hình tại bước 4 đã đảm bảo chất lượng (đúng, đủ điều kiện) để có thể thực hiện kiểm thử
6 Thực hiện kiểm thử
Thực hiện kiểm thử theo đúng kế hoạch đã lập
7 Phân tích đánh giá kết quả
Thực hiện kiểm tra kết quả đã thực hiện tại bước 6 và tiến hành so sánh, đối chiếu và phân tích với các tiêu chí đã xác định ở bước 2 để đánh giá chất lượng máy chủ Lưu ý: Phụ thuộc vào từng dịch vụ và từng mô hình sẽ quyết định áp dụng các tiêu chí nào trong danh sách tại bước 2
Trang 4Việc lựa chọn công cụ kiểm thử hiệu năng dựa trên nhiều yếu tố như: Chi phí, phương thức hỗ trợ, trình duyệt, ngôn ngữ phát triển phần mềm, giải pháp…, tuy nhiên có thể nhắc tới một vài công cụ kiểm thử phố biến như:
i JMeter: Là phần mềm mã nguồn mở sử dụng ngôn ngữ lập trình Java và được thiết kế để kiểm thử tải cho ứng dụng di động cũng như ứng dụng website
Tài liệu tham khảo hướng dẫn: https://jmeter.apache.org/usermanual/index.html
ii LoadRunner: Là công cụ kiểm thử hiệu năng cho phép tìm ra những lỗi về khả năng thực thi thông qua việc phát hiện nguyên nhân, vấn đề hoặc chỗ làm cho phần mềm chạy chậm hoặc không đúng yêu cầu Đây là công cụ mạnh với kiểm tra tải, và hỗ trợ việc xây dựng các kịch bản kiểm thử đến 80% thông qua việc record lại các tương tác người dùng Tuy nhiên ứng dụng có tính phí sử dụng
Tài liệu tham khảo: https://www.microfocus.com/en-us/products/loadrunner-professional/overview
Trang 52 Giới thiệu về công cụ kiểm thử hiệu năng JMeter
a Các thành phần cơ bản JMeter phục vụ kiểm thử hiệu năng
JMeter cung cấp tất cả những thành phần cơ bản để phục vụ thiết kế, lập kế hoạch, thực thi và giám sát kết quả trong suốt quá trình kiểm thử, (tham khảo tại: Thành phần cơ bản JMeter)những thành phần cơ bản gồm:
i Thread Group
Một Thread Group đại diện cho một nhóm người dùng và nó sẽ mô phỏng những người dùng
để thực hiện các kịch bản kiểm thử cụ thể, Thread Grop cho phép người kiểm thử thực hiện những tùy chỉnh về:
• Số lượng Thread: Mỗi Thread đại diện cho 01 người dùng ảo, JMeter cho phép thay đổi
số lượng người dùng không hạn chế để thực hiện các thử nghiệm
• Ram-up Period: Thời giand dể bắt đầu chạy tất cả các Thread
• Loop Count: Số lần lặp lại những yêu cầu của người dùng
• Ngoài ra Thread Group còn cung cấp các tùy chọn khác như chạy theo lịch biểu định sẵn,…
ii Controller
JMeter cung cấp 2 dạng Controller: Sampler và Logic Controller, trong đó:
• Sampler: Cho phép JMeter gửi những yêu cầu cụ thể tới máy chủ đã quy định
• Logic Controller: Cho phép tùy biến việc khi nào gửi yêu cầu, các thành phần Controller được tạo ra để định nghĩa kịch bản thực tế của người dùng bằng việc ghi lại những yêu cầu cụ thể của người dùng tới máy chủ xác định định
Trang 6Công cụ Listener mà JMeter cung cấp cho phép xem kết quả từ việc chạy thử nghiệm dưới nhiều dạng khác nhau như: Đồ thị, bảng biểu, cây,… các Listener sẽ cung cấp một cách trực quan nhất nhwungx dữ liệu thu thập được từ việc thực thi các kịch bản, người kiểm thử cũng có thể tùy chỉnh các thông tin mà listener trả về Các dạng listener phổ biển và thường được dùng như sau:
• Graph Full Results: Cung cấp tất cả những kết quả trả về dưới dạng đồ thị : Lỗi, thời gian phản hồi, lưu lượng …
• View Results 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.trong suốt quá trình thực thi thử nghiệm
• Summary Report : Cung cấp những thống kê tổng thể
• Timer: Timer là một phần rất quan trọng khi xây dựng một Test Plan, nó cho phép cài đặt khoảng thời gian giữa 2 yêu cầu kế tiếp nhau mà người dùng ảo gửi đến máy chủ Đ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ư :
o Constant Timer: xác lập thời gian là một hằng số
o Uniform Random Timer: xác lập thời gian nghỉ ở một khoảng xác định
• Assertion: là công cụ có tác dụng xác nhận những dữ liệu mà Website trả về có đúng với yêu cầu đặt ra hay không
b Kiểm thử hiệu năng nâng cao
i Đồng bộ dữ liệu, request giữa các client
Có nhiều phương pháp để thực hiện đồng bộ dữ liệu/request từ các client khác nhau, tuy nhiên
JMeter cũng đã phát triển “Apache JMeter Distributed Testing” - tính năng tự phân chia, các
request tới các client khác nhau để đảm bảo đạt được số lượng request đủ lớn để gửi tới server Tuy nhiên, để đạt hiệu quả tốt nhất trong việc đồng bộ các request, người thực hiện kiểm thử nên lựa chọn các phương pháp theo thứ tự sau:
1) Thuê hệ thống máy chủ ảo hóa tại các đơn vị thuê trong nước 2) Thuê hệ thống máy chủ ảo hóa tại các đơn vị quốc tế
1 Azure Cloud: https://azure.microsoft.com/en-us/
Trang 72 Amazon Cloud: Website
3) Sử dụng Apache JMeter Distributed Testing - JMeter
Mô hình kết nối:
Trong đó:
▪ Controller Node : 192.168.0.2 – Điều khiển các worker Nodes
▪ Worker Nodes (IP từ 0.10 -> 0.15) – Nhận lệnh từ Controller Node và thực hiện gửi lệnh tới các hệ thống máy chủ kiểm thử tương ứng
Thông tin cấu hình chi tiết từng bước tham khảo tại Apache JMeter Distributed Testing
4) Phát triển Cloud để thực hiên kiểm thử
Phương pháp này yêu cầu người thực hiện kiểm thử cần có kinh nghiệm kỹ năng lập trình
(đặc biệt phát triển webservice) – Phương pháp này giống với phương pháp “iii Sử dụng Apache JMeter Distributed Testing – Jmeter”
ii Đồng bộ kết quả kiểm thử và xây dựng báo cáo JMeter hỗ trợ nhiều phương thức xem/xuất và lưu kết quả kiểm thử (Tham khảo listener), ngoài
ra người thực hiện kiểm thử có thể sử dụng báo cáo hình ảnh trực quan thông qua Grafana và InfluxDB
1) Báo cáo chi tiết mặc định Người thực hiện kiểm thử có thể cấu hình theo hướng dẫn tại:
https://jmeter.apache.org/usermanual/generating-dashboard.html
Hình ảnh báo cáo:
Trang 82) Báo cáo sử dụng Grafana và InfluxDB Phương pháp này sẽ cho phép cập nhật kết quả real-time trong suốt quá trình thực hiện kiểm thử
Người kiểm thử cần thực hiện cấu hình hệ thống theo các bước được hưỡng dẫn tại:
https://jmeter.apache.org/usermanual/realtime-results.html
Hình ảnh cấu hình Backend Listener cho JMeter để nhận các kết quả real-time:
Hình ảnh báo cáo:
D RỦI RO VÀ CÁC VẤN ĐỀ LIÊN QUAN
Trong quá trình kiểm thử cần chú ý:
1 Xây dựng kịch bản kiểm thử và xác nhận kịch bản kiểm thử đúng trước khi thực hiện
2 Thống nhất các giá trị kiểm thử cần có prefix để xác nhận thông tin kiểm thử hiệu năng
Trang 93 Phân tích kết quả dựa theo các tiêu chí đã định sẵn từ bước 2 trong quá trình xây dựng kịch bản, người kiểm thử cần đưa ra quyết định cho các thông số sẽ cần kiểm soát chặt chẽ Cần lưu ý tới thời gian phản hồi và số lượng người dùng đồng thời có thể đáp ứng
E THÔNG TIN LIÊN HỆ