Stress Test trong kiểm thử phần mềm: các công cụ thường sử dụng, khi nào cần sử dụng & có những loại nào?

Stress test là gì ?

Stress test được sử dụng để kiểm tra sự ổn định và độ tin cậy của hệ thống. Kiểm thử này chủ yếu xác định tính mạnh mẽ và việc xử lý lỗi hệ thống trong điều kiện tải cực kỳ nặng. Nó thậm chí test vượt ra ngoài mức hoạt động bình thường và đánh giá làm thế nào hệ thống hoạt động trong những điều kiện khắc nghiệt. Stress test được thực hiện để đảm bảo rằng hệ thống sẽ không bị rơi vào tình huống khủng hoảng.

Stress test còn được gọi là kiểm thử độ bền. Việc stress test nổi bật nhất là xác định giới hạn, tại đó hệ thống hoặc phần mềm hoặc phần cứng bị phá vỡ. Nó cũng có thể kiểm tra hệ thống quản lý lỗi hiệu quả trong điều kiện khắc nghiệt hay không. Ứng dụng đang được kiểm thử sẽ được thực hiện stress test khi dữ liệu 5GB được sao chép từ trang web và dán vào notepad. Notepad bị quá tải và đưa ra thông báo lỗi 'Not Responded'.

Khi nào cần thực hiện stress test

Ví dụ trong các tình huống :

  1. Trong thời gian các dịp lễ, trang mua sắm trực tuyến có thể gia tăng đột biến về lưu lượng truy cập.
  2. Khi một blog được đề cập đến trong một tờ báo hàng đầu, nó sẽ có một sự gia tăng đột biến về lưu lượng truy cập.

Bắt buộc phải thực hiện stress test để kiểm tra hiệu năng hệ thống có đáp ứng được những sự gia tăng đột biến về lưu lượng truy cập xảy ra trong tương lai hay không. Việc không đáp ứng lưu lượng truy cập đột ngột này có thể dẫn đến mất doanh thu và danh tiếng.

Stress test cũng rất có giá trị vì những lý do sau:

  1. Để kiểm tra xem hệ thống có hoạt động tốt ở các điều kiện bất thường hay không.
  2. Hiển thị thông báo lỗi thích hợp khi hệ thống xảy ra hoạt động bất thường.
  3. Hệ thống xảy ra lỗi khi gặp các điều kiện khắc nghiệt có thể gây ra tổn thất to lớn.
  4. Tốt nhất là chuẩn bị trước để tránh các trường hợp xấu nhất có thể xảy ra bằng việc thực hiện stress test.

Mục đích của stress test

Mục đích của stress test là phân tích hành vi của hệ thống sau khi xảy ra sự cố. Để thực hiện stress test thành công, hệ thống sẽ hiển thị thông báo lỗi thích hợp khi lâm vào trình trạng quá tải. Khi thực hiện stress test, đôi khi có thể mất bộ dữ liệu kiểm thử dung lượng lớn. Tester không nên để mất dữ liệu liên quan đến bảo mật trong khi thực hiện stress test. Mục đích chính của stress test là để đảm bảo rằng hệ thống phục hồi ổn định sau khi xảy ra lỗi. Điều này được gọi là khả năng thu hồi.

Load Testing và Stress Testing

Load testing Stress testing
Load test là để kiểm tra hành vi của hệ thống trong các điều kiện tải bình thường, và nó chỉ là kiểm thử hoặc mô phỏng với khối lượng công việc thực tế Stress test là để kiểm tra hành vi của hệ thống trong điều kiện khắc nghiệt và được thực hiện cho đến khi hệ thống thất bại.
Load test không phá vỡ hệ thống. Stress test sẽ cố gắng phá vỡ hệ thống bằng cách sử dụng dữ liệu và kho tài nguyên vượt quá mức giới hạn.

Những loại stress test

Distributed Stress Testing

Trong các hệ thống client-server phân tán, việc kiểm thử được thực hiện xuyên suốt từ client đến server. Vai trò của server là phân tán các dữ liệu stress test cho tất cả các client và theo dõi tình trạng của client. Sau khi client liên lạc với server, server sẽ thêm tên của client và bắt đầu gửi dữ liệu để kiểm thử.

Trong khi đó, client gửi tín hiệu rằng nó được kết nối với server. Nếu server không nhận được bất kỳ tín hiệu từ client, nó cần phải được kiểm tra thêm. Như trên hình, server có thể kết nối tới 2 client(Client1 và Client2), nhưng nó không thể gửi hoặc nhận tín hiệu từ Client 3 & 4.

Thực hiện stress test vào ban đêm là lựa chọn tốt nhất để chạy các kịch bản stress test. Với các server lớn, cần có nhiều phương pháp hiệu quả hơn để xác định những máy tính nào xảy ra lỗi trong quá trình stress test và cần kiểm tra thêm.

**Application Stress Testing ** Kiểm thử này tập trung vào việc tìm kiếm các khiếm khuyết liên quan đến khóa và chặn dữ liệu, các vấn đề về mạng và tắc nghẽn hiệu suất trong một ứng dụng.

Transactional Stress Testing (Stress test giao dịch): Nó thực hiện stress test trên một hoặc nhiều giao dịch giữa hai hoặc nhiều ứng dụng. Nó được sử dụng để tinh chỉnh và tối ưu hóa hệ thống.

Systemic Stress Testing Đây là sự kết hợp trong stress test,nó có thể thực hiện stress test qua nhiều hệ thống đang chạy trên cùng một server.

Exploratory Stress Testing Đây là một trong những loại stress test được sử dụng để kiểm tra hệ thống với các thông số hoặc điều kiện bất thường không có khả năng xảy ra trong một kịch bản thực. Nó được sử dụng để tìm các khuyết điểm từ các kịch bản không mong muốn như:

  1. Số lượng lớn người dùng đăng nhập cùng một lúc
  2. Nếu việc quét vi rút được thực hiện trên tất cả các máy cùng một lúc.
  3. Nếu Cơ sở dữ liệu bị offline khi nó được truy cập từ một trang web.
  4. Khi một khối lượng dữ liệu lớn được đưa vào cơ sở dữ liệu đồng thời.

Các tool thường dùng trong stress test

LoadRunner LoadRunner của HP là một công cụ Load Testing được sử dụng rộng rãi. Kết quả kiểm thử từ Loadrunner được coi một chuẩn kiểm thử.

Jmeter Jmeter là một công cụ kiểm thử mã nguồn mở. Nó là một ứng dụng thuần Java cho việc kiểm thử hiệu năng. Nó cần JDK 5 hoặc cao hơn để hoạt động.

Stress Tester Công cụ này cung cấp các phân tích sâu hơn về hiệu suất của ứng dụng web, cung cấp kết quả ở định dạng đồ họa và rất dễ sử dụng.

Neo load Đây là một công cụ phổ biến có sẵn trên thị trường để kiểm thử các ứng dụng web và điện thoại di động. Công cụ này có thể mô phỏng hàng ngàn người dùng để đánh giá hiệu suất ứng dụng dưới tải và phân tích thời gian phản hồi. Nó cũng hỗ trợ tích hợp icloud, load test và stress test. Nó rất dễ sử dụng, tiết kiệm chi phí và cung cấp khả năng mở rộng tốt.

Metrics for stress testing

Metrics giúp đánh giá hiệu suất của Hệ thống và thường được nghiên cứu khi kết thúc stress test. Các chỉ số được sử dụng phổ biến là:

Khả năng mở rộng & Hiệu suất

  • Pages per Second: Tính số trang đã được yêu cầu / giây
  • Throughput: Số liệu cơ bản – size dữ liệu phản hồi / giây

Phản hồi ứng dụng

  • Hit time: Thời gian trung bình để tìm kiếm hình ảnh hoặc một trang
  • Time to the first byte: Thời gian trả về byte đầu tiên của dữ liệu hoặc thông tin
  • Page Time: Thời gian để lấy tất cả thông tin trong một trang

Các lỗi

  • Failed Connections: Số lượng các kết nối không thành công bị từ chối bởi máy khách (tín hiệu yếu)
  • Failed Rounds: Số chu kì mà nó bị thất bại
  • Failed Hits: Số lần thực hiện không thành công của hệ thống (liên kết bị hỏng hoặc hình ảnh không nhìn thấy)

Kết luận

Mục tiêu stress test là kiểm tra hệ thống trong điều kiện quá tải. Nó giám sát các tài nguyên hệ thống như bộ nhớ, bộ xử lý, mạng v..v.., và kiểm tra khả năng của hệ thống để phục hồi trở lại trạng thái bình thường. Nó kiểm tra xem hệ thống có hiển thị các thông báo lỗi thích hợp hay không.

Nguồn: https://www.guru99.com/stress-testing-tutorial.html

All Rights Reserved