Load testing - Kiểm thử tải
Load Testing là gì?
Load Testing là một quy trình kiểm thử phần mềm phi chức năng, trong đó hiệu suất của ứng dụng phần mềm được kiểm tra dưới một tải dự kiến cụ thể. Nó xác định cách ứng dụng phần mềm hoạt động khi có nhiều người dùng truy cập đồng thời. Mục tiêu của Load testing là cải thiện tắc nghẽn của hiệu suất và đảm bảo tính ổn định và hoạt động trơn tru của ứng dụng phần mềm trước khi triển khai.
Loại kiểm thử này thường được dùng để xác định một số vấn đề sau:
- Công suất hoạt động tối đa của một ứng dụng.
- Xác định xem cơ sở hạ tầng hiện tại có đủ để chạy ứng dụng hay không.
- Tính bền vững của ứng dụng khi có số lượng người truy cập lớn.
Số lượng người dùng đồng thời mà một ứng dụng có thể hỗ trợ và khả năng mở rộng để cho phép nhiều người dùng hơn truy cập nó.
Tại sao cần thực hiện Load testing
- Load testing giúp mang lại niềm tin vào hệ thống cũng như độ tin cậy và hiệu suất của nó.
- Load testing giúp xác định các vấn đề mà người dùng sẽ gặp phải khi sử dụng hệ thống.
- Cuối cùng, Load testing giúp loại bỏ các vấn đề hiệu suất kém và cung cấp các chiến lược bổ sung để quản lý hiệu suất và giám sát môi trường sản xuất.
Một số trang web cực kỳ phổ biến đã phải trải qua thời gian ngừng hoạt động rất lâu khi chúng nhận được một số lượng lớn người dùng truy cập. Các trang web thương mại điện tử đầu tư rất nhiều vào các chiến dịch quảng cáo, nhưng họ lại không đầu tư vào thực hiện Load testing để đảm bảo hiệu suất của hệ thống được tối ưu.
Hãy xem xét một vài ví dụ sau:
- Cửa hàng đồ chơi nổi tiếng Toysrus.com, không thể xử lý được số lượng lớn người dùng truy cập do chiến dịch quảng cáo mà họ tạo ra, vì vậy họ đã mất tới cả nghìn đô la tiếp thị và doanh số bán đồ chơi tiềm năng.
- Một trang web của Airline đã không thể xử lý khi có hơn 10000 người dùng trong đợi ưu đãi lễ hội.
- Encyclopedia Britannica tuyên bố người dùng có quyền truy cập miễn phí vào cơ sở dữ liệu trực tiếp của họ như một kiểu khuyến mại. Vì vậy, họ đã không thể theo kịp với sự tấn công dữ dội của lưu lượng truy cập trong nhiều tuần.
Nhiều trang web bị trễ thời gian tải khi chúng gặp phải lưu lượng truy cập lớn. Và sự thật là:
- Hầu hết người dùng nhập chuột đi sau 8 giây chậm trễ khi tải trang.
- 4,4 tỷ đô la đã bị mất hàng năm do hoạt động kém .
Mục đích của Load testing
Load testing giúp xác định các vấn đề trước khi đưa một ứng dụng hay phần mềm ra ngoài thị trường như:
- Thời gian phản hồi của mỗi giao dịch.
- Hiệu suất của các thành phần hệ thống dưới nhiều loại sử dụng khác nhau.
- Hiệu suất của các thành phần cơ sở dữ liệu dưới các loại tải khác nhau.
- Trễ mạng giữa máy khách và máy chủ.
- Các vấn đề thiết kế phần mềm.
- Các vấn đề về cấu hình máy chủ như máy chủ Web, máy chủ ứng dụng, máy chủ cơ sở dữ liệu, v.v.
- Các vấn đề về giới hạn phần cứng như tối đã hóa CPU, giới hạn bộ nhớ, tắc nghẽn mạng, v.v.
Load testing sẽ xác định xem hệ thống có cần được tỉnh chỉnh hay cần phải sửa đổi phần cứng và phần mềm để cải thiện hiệu suất hay không.
Điều kiện tiên quyết của Load testing
Chỉ số chính để thực hiện Load testing là thời gian phản hồi. Trước khi bắt đầu thực hiện Load testing, chúng ta cần phải xác định:- Thời gian phản hồi đã được đo lường và so sánh chưa - Quantitative
- Thời gian phản hồi có áp dụng được cho quy trình kinh doanh hay không - Relevent
- Thời gian phản hồi có hợp lý hay không - Realistic
- Thời gian phản hồi có đạt được hay không - Achievable
- Thời gian phản hồi có thể đo lường bằng công cụ hoặc đồng hồ bấm giờ hay không - Measurable
Các chiến lược trong Load testing
Có nhiều cách để thực hiện Load testing. Sau đây là một số chiến lược trong Load testing:
- Thực hiện Load testing bằng cách thủ công: Đây là một trong những chiến lược để thực hiện Load testing, nhưng nó không tạo ra kết quả lặp, không thể cung cấp mức độ cao để có thể đo được trên ứng dụng và là một quá trình không thể điều phối
- Các công cụ thực hiện Load testing phải trả phí: Một số tổ chức nhận thấy tầm quan trọng của Load testing vì vậy họ đã xây dựng nên các công cụ của riêng họ để thực hiện Load testing.
- Các công cụ thực hiện Load testing mã nguồn mở: Có một số công cụ thực hiện Load testing có sẵn dưới dạng mã nguồn mở miễn phí. Chúng có thể không phức tạp bằng các công cụ trả phí nhưng nếu bạn đang có ngân sách hạn chế thì các công cụ này là sự lựa chọn tốt nhất.
- Các công cụ thực hiện Load testing cấp doanh nghiệp: Các công cụ này thường đi kèm với các chức năng chụp/ phát lại. Chúng cũng hỗ trợ một số lượng lớn các giao thức và có thể mô phỏng một số lượng lớn người dùng truy cập đặc biết.
Quy trình thực hiện Load testing
Quá trình thực hiện Load testing được mô tả ngắn gọn như sau:
- Thiết lập môi trường
- Xác định các tiêu chí hiệu suất
- Lập kế hoạch kiểm tra
- Tạo người dùng ảo (vuser)
- Tạo kịch bản
- Chạy kịch bản
- Theo dõi kịch bản
- Phân tích kết quả kiểm tra
Hướng dẫn thực hiện Load testing
- Load testing nên được lập kế hoạch sau khi ứng dụng trở nên ổn định về mặt chức năng.
- Một số lượng lớn dữ liệu duy nhất sẽ sẵn sàng trong nhóm dữ liệu.
- Số lượng người dùng nên được quyết định cho mỗi tình huống hoặc các tập lệnh.
- Tránh tạo nhật ký chi tiết để tiết kiệm không gian của ổ đĩa.
- Cố gắng tránh tải xuống hình ảnh trong trang web.
- Tính nhất quán của thời gian phản hồi trong khoảng thời gian đã trôi qua phải được ghi lại và phải so sánh với các lần chạy thử nghiệm khác nhau.
Ưu điểm và nhược điểm của Load testing
Ưu điểm
- Các vấn đề liên quan đến hiệu suất và tắc nghẽn có thể được xác định trước khi đưa ứng dụng tới tay người dung.
- Cải thiện được khả năng mở rộng hệ thống.
- Giảm thiểu rủi ro liên quan đến thời gian ngừng hoạt động của hệ thống.
- Giảm chi phí để bảo trì.
- Tăng sự hài lòng của khách hàng.
Nhược điểm
- Cần phải có kiếm thức lập trình để có thể sử dụng các công cụ thực hiện Load testing.
- Các công cụ có thể đắt vì giá cả phụ thuộc vào số lượng người dùng ảo mà công cụ đó hỗ trợ.
Một số công cụ thực hiện Load testing phổ biến hiện nay
- LoadNinja
Là một công cụ thực hiện Load testing dựa trên đám mây cho phép các nhóm ghi và phát lại ngay lập tức các bài kiểm tra Load testing toàn diện, nó không có mối tương quan động phức tạp và chạy các bài kiểm tra Load testing này trong các trình duyệt ở quy mô lớn. Nó có thể giúp tăng vùng phủ sóng thực hiện các bài kiểm tra và giảm thời gian kiểm tra hơn 60%.
- Load Runner
Là một công cụ HP được sử dụng để kiểm tra các ứng dụng trong điều kiện tải bình thường và cao điểm. Load Runner tạo ra tải bằng cách tạo người dùng ảo mô phỏng lưu lượng mạng. Nó mô phỏng việc sử dụng thời gian thực giống như môi trường thực và đưa ra kết quả cuối cùng.
- WebLOAD
Là một công cụ dùng để kiểm tra tải và hiệu suất cho ứng dụng web. WebLOAD được phát triển bời RadView Software vòa năm 1997. Công cụ này có khả năng tạo ra kịch bản tải thực và đáng tin cậy ngay cả đối với các hệ thống phức tạp nhất.
- Apache JMeter
Là một phần mềm mã nguồn mở được phát triển bởi Srefano Mazzocchi thuộc Apache Software Foundation. Nó được thiết kế để thực hiện kiểm tra tải và đo lường hiệu suất. Chúng ta có thể sử dụng JMeter để phân tích và đo lường hiệu suất của ứng dụng web hoặc nhiều dịch vụ khác nhau.
Ngoài ra còn một số công cụ khác như:
- Triscentis Flood
- SmartMeter
- LoadUI NG Pro
- LoadView
Tổng kết
- Load testing được định nghĩa là một loại kiểm thử phần mềm nhằm xác định hiệu suất của hệ thống trong các điều kiện tải thực tế.
- Load testing thường cải thiện tắc nghẽn hiệu suất, khả năng mở rộng và tính ổn định của ứng dụng trước khi đưa tới tay người dùng.
- Việc kiểm tra này giúp xác định khả năng hoạt động tối đa của các ứng dụng cũng như các điểm nghẽn của hệ thống.
- Load testing rất quan trọng vì nếu bỏ qua, nó có thể sẽ gây ra các thiệt hại về tài chính vô cùng lớn.