Đánh giá performance dựa vào số lượng request đến server
Tiếp theo trong Jmeter Series mình sẽ hướng dẫn cho các bạn cách tạo test plan JMeter test API performance. Show
API là viết tắt của Application Programming Interface (giao diện lập trình ứng dụng). API được xem là cầu nối cho phép trao đổi dữ liệu giữa các ứng dụng với nhau. Việc test performace API là rất cần thiết trước khi release sản phẩm. Kết quả test sẽ cho biết server đáp ứng được bao nhiêu lượt truy cập cùng một lúc trong khoảng thời gian ngắn mà không để xảy ra tình trạng lỗi, dữ liệu vẫn hiển thị tốt trên thiết bị của người dùng. ❤ Kiểm thử hiệu năng là một quá trình kiểm thử một phần hoặc cả hệ thống nhằm xác định độ ổn định, tốc độ, khả năng mở rộng và đáp ứng của nó theo từng khối lượng công việc nhất định. Theo ISTQB Glossary thì “kiểm thử hiệu năng” là quá trình kiểm thử để xác định hiệu quả hoạt động của một thành phần hoặc một hệ thống. Và “hiệu năng” là mức độ sử dụng tài nguyên, thời gian và khả năng mà một thành phần hoặc hệ thống thực hiện các chức năng của nó. Mục tiêu của kiểm thử hiệu năng thường bao gồm đánh giá kết quả xử lý của ứng dụng, tốc độ xử lý, tốc độ truyền dữ liệu, mức sử dụng băng thông mạng, số lượng người dùng đồng thời tối đa có thể xử lý được, mức sử dụng bộ nhớ, hiệu quả khối lượng công việc và thời gian phản hồi các yêu cầu. Một số tập trung chính của kiểm thử hiệu năng thường là:
Một số lý do cần kiểm thử hiệu năngKhi đánh một hệ thống phần mềm, không chỉ các tính năng và chức năng được hỗ trợ mà hiệu suất làm việc (hiệu năng) của nó như thời gian phản hồi, độ tin cậy, mức sử dụng tài nguyên và khả năng mở rộng, cũng rất được quan tâm. Tuỳ vào hệ thống bạn đang phát triển, thời gian cho phép, hay yêu cầu của khách hàng mà lý do thực hiện kiểm thử hiệu năng sẽ khác nhau. Dưới đây là một số lý do kiểm thử hiệu năng thường gặp:
Mục tiêu của kiểm thử hiệu năng không phải là tìm lỗi trong phần mềm mà là tìm và loại bỏ các điểm tắc nghẽn làm giảm hiệu suất làm việc của hệ thống. Khi thực hiện kiểm thử hiệu năng, chúng ta sẽ cung cấp thông tin cho các bên liên quan (bao gồm khách hàng, PM và QA Manager) về tốc độ, tính ổn định và khả năng mở rộng của hệ thống để họ đưa ra quyết định về cách xử lý tiếp theo, ví dụ như vẫn phát hành phần mềm hay cần phải khắc phục các vấn đề hiệu năng (như xử lý mô-đun gây ra thắt nút cổ chai đã xác định được trong quá trình kiểm thử hiệu năng) trước khi đưa sản phẩm ra thị trường. Các bước thực hiện kiểm thử hiệu năngTuỳ vào loại kiểm thử hiệu năng bạn đang triển khai, các bước thực hiện cụ thể sẽ khác nhau. Dưới đây là các bước thực hiện kiểm thử hiệu năng thường gặp:
1. Xác định môi trường kiểm thử và công cụ cần thiết (tools)Xác định môi trường thực tế mà hệ thống sẽ được triển khai, môi trường kiểm thử và các công cụ kiểm thử phù hợp dựa vào yêu cầu của khách hàng hoặc/và PM (quản lý dự án/sản phẩm). Bạn cần có bảng thống kê và so sánh các thông số kỹ thuật về phần cứng, phần mềm, cơ sở hạ tầng, và cấu hình của hệ thống trên môi trường kiểm thử và môi trường thực tế (production) để đảm bảo tính nhất quán. Theo kinh nghiệm của mình thì có một số kịch bản sẽ được thực hiện trên môi trường thực tế để giảm thời gian và chi phí cho việc giả lập nếu thực hiện trên môi trường kiểm thử (ví dụ môi trường staging), tuy nhiên cần lưu ý về dữ liệu khách hàng và giảm thiểu hoặc tránh làm gián đoạn hoạt động của khách hàng/người dùng. 2. Xác định tiêu chí hiệu năng được chấp nhậnSau các buổi họp với khách hàng và PM, bạn cần phải xác định rõ (và có sự xác nhận của các bên liên quan thì càng tốt) các mục tiêu (goals), ngưỡng xử lý (thresholds), và các ràng buộc khác (constraints) mà qua đó cho thấy kiểm thử đã hoàn tất. Thường thì các tiêu chí này sẽ được đề cập trong tài liệu mô tả yêu cầu hệ thống (SRS – software requirement specifications), ngoài ra thì người thực hiện kiểm thử hiệu năng (performance tester) cần đề xuất bổ sung các trường hợp hay kịch bản cần kiểm thử và so sánh hiệu năng của hệ thống với các tiêu chí bên ngoài. 3. Lên kế hoạch và thiết kế các trường hợp kiểm thử (test case)Sau khi đã có đủ thông tin, bước tiếp theo bạn sẽ cần lập kế hoạch kiểm thử. Hãy suy nghĩ về mức độ sử dụng rộng rãi khác nhau, sau đó nghĩ ra các kịch bản kiểm thử phù hợp cho các trường hợp sử dụng khả thi. Thiết kế các trường hợp kiểm thử phù hợp và phác thảo các số liệu cần kiểm tra. Ví dụ như dự đoán các con số (load – tải) về số lượng yêu cầu (request) đồng thời trong kiểm thử tải (load testing). 4. Chuẩn bị môi trường và công cụ (bao gồm viết script – kịch bản)Khi bạn đã có kế hoạch sơ bộ hoặc chi tiết trong tay rồi, bạn cần phải chuẩn bị môi trường các sớm càng tốt, để khi gặp vấn đề gì thì chúng ta cũng sẽ khắc phục sớm và không gây ảnh hưởng đến tiến độ của toàn bộ dự án. Bạn cần xây dựng (chuẩn bị) môi trường kiểm thử, thường sẽ cần sự trợ giúp hoặc phối hợp với developer (lập trình viên) và DevOps (nhân viên quản lý và vận hành hệ thống) để thực hiện các hoạt động này. Bên cạnh đó, bạn cũng cần phải viết các kịch bản cho các trường hợp kiểm thử của mình. Ví dụ, nếu bạn sử dụng JMeter để kiểm thử tải (load testing) thì bạn sẽ sử dụng java để lập trình các bước gọi lên server/api theo một trình tự nhất định theo kịch bản. Ví dụ một kịch bản kiểm thử trong JMeter 5. Thực hiện kiểm thử hiệu năng (chạy các kịch bản)Sau khi mọi thứ đã được chuẩn bị xong bao gồm môi trường kiểm thử, các kịch bản trong công cụ kiểm thử hiệu năng, và hệ thống hoặc các mô-đun cần kiểm thử đã được phát triển và deploy lên môi trường cần thiết, chúng ta sẽ thực hiện/chạy các trường hợp kiểm thử và ghi nhận kết quả. 6. Giải quyết các vấn đề và kiểm thử lạiSau khi thực hiện kiểm thử, dựa vào các báo cáo, cả nhóm sẽ cùng nhau phân tích xác định vị trí của mô-đun hay cụm chức năng gây chậm hệ thống sẽ được sửa chữa. Thường thì nhóm developer sẽ chịu trách nhiệm xử lý nếu lỗi thuộc về phần mềm như thuật toán xử lý không được tối ưu, và DevOps sẽ xử lý nếu lỗi hiệu năng thuộc về cơ sở hạ tầng. Sau khi mọi sự cố hoặc một số sự cố nghiêm trọng nhất đã được khắc phục, bạn cần chạy lại kịch bản trên (các bước thực hiện tương tự như lúc thực hiện kiểm thử hiệu năng lần trước) để xác định xem những lỗi hiệu năng đã thực sự khắc phục hoàn toàn hay chưa. Một số mẹo trong kiểm thử hiệu năngQua nhiều năm làm kiểm thử phần mềm, mình rút ra được kinh nghiệm quý báu là môi trường kiểm thử đặc biệt là kiểm thử hiệu năng phải thật càng giống môi trường thực tế càng tốt. Vì nếu các môi trường này không giống nhau, thì các hoạt động kiểm thử đã thực hiện có thể không đánh giá chính xác hiệu suất làm việc của hệ thống khi triển khai vào sử dụng thực tế. Sau đây là một số mẹo giúp bạn thực hiện kiểm thử hiệu năng tốt hơn:
Một số loại kiểm thử hiệu năng thông dụng
Các thông số thường gặp trong kiểm thử hiệu năngTuỳ thuộc vào phạm vi kiểm thử, loại hệ thống đang được kiểm thử (ví dụ như ứng dụng web hoặc ứng dụng mobile) mà các tham số đo lường hay thông tin cần được thu thập và giám sát trong sẽ khác nhau. Dưới đây là các thông số/thông tin chung thường được thu thập và giám sát trong quá trình kiểm thử hiệu năng:
Các công cụ kiểm thử hiệu năng phổ biếnHiện có rất nhiều công cụ kiểm thử hiệu năng cho các ứng dụng web và mobile. Việc chọn công cụ phù hợp sẽ phụ thuộc vào một số yếu tố như loại ứng dụng mà bạn cần kiểm thử, loại giao thức được hỗ trợ, chi phí, yêu cầu về phần cứng, v.v… Dưới đây là một số công cụ kiểm thử hiệu năng phổ biến. Lưu ý: thứ tự liệt kê của chúng không phản ánh điều gì. 1. Apache JMeterMột trong những công cụ kiểm thử hiệu năng hàng đầu được sử dụng rộng rãi để kiểm thử tải của máy chủ (ứng dụng web). JMeter có thể được sử dụng để kiểm thử tải, phân tích và đo lường hiệu năng của nhiều loại dịch vụ, tập trung vào các ứng dụng web. Xem thêm chi tiết tại đây https://jmeter.apache.org 2. BlazeMeterĐược thiết kế và xây dựng bởi các kỹ sư đam mê mã nguồn mở. BlazeMeter giúp bạn kiểm thử hiệu năng, kiểm thử tải với quy mô lớn ngay trực tiếp trong IDE (Integrated Development Environment – môi trường phát triển tích hợp) của bạn. BlazeMeter tập hợp nhiều yếu tố cần thiết như hiệu suất cao, đầy đủ chức năng, không cần lập trình, kiểm thử và giám sát API, tạo dữ liệu kiểm thử và cũng giúp mô phỏng các dịch vụ cần thiết. Xem thêm chi tiết tại https://www.blazemeter.com 3. LoadRunner ProfessionalLà công cụ kiểm thử hiệu năng phổ biến nhất trên thị trường hiện nay, tuy nhiên chi phí hơi cao. Công cụ này có khả năng mô phỏng hàng trăm nghìn người dùng, giúp kiểm thử tải cho các ứng dụng để xác định hành vi của chúng theo từng mức tải cụ thể. Xem thêm chi tiết https://www.microfocus.com/en-us/products/loadrunner-professional/overview Chi phí của LoadRunner Cloud hiện tại vào thời điểm đăng bài này (2023/05/02) Xem thêm tại đây https://aws.amazon.com/marketplace/pp/prodview-h5bb6or53i3po 4. K6 Open SourceGrafana K6 là một công cụ kiểm thử tải (mã nguồn mở) giúp đánh giá hiệu năng của các hệ thống web một cách dễ dàng và hiệu quả, dành cho các bạn rành về kỹ thuật. K6 miễn phí, lấy lập trình viên (developer) làm trung tâm và có thể mở rộng thêm. K6 giúp bạn kiểm tra độ tin cậy và hiệu năng của hệ thống đang phát triển, đồng thời nắm bắt các sự cố và các lỗi liên quan đến hiệu năng sớm hơn. K6 được phát triển bởi Grafana Labs và cộng đồng. Xem thêm chi tiết https://k6.io Trên đây là một số thông tin và kiến thức hữu ích về kiểm thử hiệu năng, hi vọng có thể giúp bạn có nền tảng cơ bản để học nâng cao về kiểm thử hiệu năng. |