Stability Testing

Stability testing là gì?

Stability testing là khả năng duy trì hoạt động của sản phẩm xuyên suốt và vượt quá thời hạn sử dụng của nó, mà không hỏng hoặc xảy ra lỗi. Đây là 1 kỹ thuật non-functional, với mục đích đòi hỏi khả năng chịu tải của phần mềm tới mức tối đa. Trong quá trình xác định nó hoạt động tốt thế nào dưới tải ở mức chấp nhận được, mức đỉnh, các tải được tạo ra đột ngột, với số lượng dữ liệu lớn được xử lý… Stability testing được thực hiện để kiểm tra hiệu quả của 1 sản phẩm được phát triển vượt qua mức hoạt động bình thường, hay tới 1 điểm dừng. Có ý nghĩa quan trọng hơn là trong việc xử lý lỗi, độ tin cậy của phần mềm, khả năng chịu tải và khả năng mở rộng của 1 sản phẩm dưới tải lớn chứ không phải là kiểm tra cách hoạt động của hệ thống trong các hoàn cảnh bình thường.

Stability testing còn được gọi là Load hoặc endurance testing.

Chuyện gì sẽ xảy ra nếu 1 hệ thống thử nghiệm chưa trải qua Stability testing?

Đối với 1 ứng dụng đang được thử nghiệm nơi mà 1 số lượng lớn user được giới thiệu và các ứng dụng phải chạy hàng tháng mà không cần khởi động lại, 1 số vấn đề có thể xảy ra:

Các lỗi có thể phải đối mặt như: • Hệ thống chạy chậm lại • Hệ thống gặp các vấn đề về function • Hệ thống hiển thị wired behavior • Hệ thống bị treo

Do đó, Stability testing thường liên quan đến việc thực thi của hệ thống với các heavy user (ảo) và đo các tham số hiệu năng dể xác minh liệu hệ thống có thể hỗ trợ tải dự tính hay không.

Tại sao phải thực hiện Stability testing?

Loại testing này giúp user hiểu được cách thức hệ thống sẽ làm việc trong các tình huống thực tế.

Do đó, Stability testing cho phép bạn kiểm tra:

  • Ước lượng độ tin cậy trong sự ổn định của hệ thống của bạn đang thử nghiệm
  • Đảm bảo rằng hệ thống của bạn có thể xử lý các chương trình lớn
  • Theo dõi hiệu quả của hệ thống của bạn
  • Kiểm tra hệ thống ổn định theo yêu cầu

Nó đóng 1 vai trò quan trọng trong phát triển sản phẩm vì nó được sử dụng để xác định những hạn chế của 1 sản phẩm phần mềm đang thử nghiệm trước khi nó được released hoặc những phạm vi cải tiến hơn trước khi sản phẩm goes live hay ở Production. 1 ví dụ rất phổ biến của kỹ thuật Stability testing là

Các cổng mua sắm trực tuyến: Stability testing sẽ kiểm tra cách các website sẽ hoạt động khi:

  • Lượng dữ liệu nhập vào lớn ở giờ cao điểm
  • Số lượt truy cập ở 1 thời điểm nhất định
  • Vấn đề page load ở cùng 1 thời điểm
  • Cách vận hành của hệ thống
  • Phản ứng của hệ thống và nhiều hơn nữa buộc phải trải nghiệm dưới Stability testing

1 ví dụ khác

1 CPU test là 1 hình thức kiểm tra độ ổn định phổ biến theo kỹ thuật performance testing. Việc test này kiểm tra sự ổn định của bộ vi xử lý và cũng giám sát hiệu năng của nó khi khối lượng công việc của bộ vi xử lý tăng lên.

Chiến lược test hay các Phương pháp tiếp cận cơ bản cho các kịch bản trên sẽ như sau:

  • Để xác định phạm vi và mục tiêu của việc test, chúng ta buộc phải đảm bảo rằng các Application Server(s) không bị crash trong quá trình thực hiện Load test.
  • Để xác định các Business issue, kiểm tra hiệu năng và tải của hệ thống đối với end user.
  • Để gán các trách nhiệm và các vai trò khác nhau như – tạo các test plan, thiết kế và review các test case, thực hiện test …
  • Để đảm bảo sự phân phối test trong thời gian quy định
  • Để đảm bảo các tool load testing và experience team thích hợp hiện diện cùng lúc
  • Để ước tính các rủi ro và chi phí liên quan trong việc testing. Điều này sẽ xác định chi phí cho mỗi lần thực hiện trong việc sử dụng CPU và bộ nhớ
  • Xác định việc theo dõi và báo cáo lỗi và có phác đồ thích hợp với các yêu cầu

Các test case cho Stability testing đối với CPU performance

  • Để xác minh giới hạn trên của hệ thống
  • Cách hệ thống crash hay recover
  • Tổng số transaction hoàn thành mỗi yêu cầu
  • Các giao dịch phản hồi có ổn định hay không hay tăng theo thời gian
  • Làm thế nào hệ thống hoạt động dưới tải nặng
  • Phản ứng và cách vận hành của nó dưới sức tải nặng

Các test report cho Stability testing

1 số số liệu thống kê được thu thập và đánh giá trong quá trình thực hiện test; những con số này được phân tích để tạo ra 1 report và để xác định các vấn đề về hiệu năng.

Các ví dụ về số liệu thống kê được thu thập dưới việc test là:

  • Transaction response time: Thời gian trung bình thực hiện các giao dịch trong quá trình test. Thống kê này sẽ đánh giá liệu hiệu năng của server nằm trong khoảng thời gian thực hiện các giao dịch tối thiểu và tối đa có thể chấp nhận được định nghĩa cho hệ thống hay không. Thông tin này sẽ đánh giá thời gian xử lý yêu cầu của web server và gửi tới application server, cái mà trong hầu hết các trường hợp sẽ tạo 1 yêu cầu tới database server.
  • Hits per second: Số lượt truy cập thực hiện trên server bởi các user. Thống kê này có lợi cho việc xác định lượng tải các user tạo ra, liên quan đến 1 số lần truy cập.
  • Throughput: Thông lượng trên web server trong quá trình test được đo bằng byte. Thông lượng là lượng dữ liệu mà các user nhận được từ server tại bất kỳ thời điểm nào. Thống kê này giúp đánh giá lượng tải mà các user tạo ra.
  • Transaction per second: Đây là tổng số các giao dịch hoàn thành (cả thành công và thất bại) thực hiện trong quá trình test. Thống kê này giúp kiểm tra tải thực sự của giao dịch trên hệ thống.
  • CPU: % CPU sử dụng dành ra trong quá trình test.
  • Memory: Bộ nhớ sử dụng trong quá trình test
  • Disk: Không gian sử dụng của ổ đĩa dành ra trong quá trình test

Lúc này, bạn có thể dễ dàng nhận ra rằng:

Stability testing đi kèm theo performance testing – một kỹ thuật mà được thực hiện để kiểm tra 1 số thuộc tính chất lượng của phần mềm như tính ổn định, độ tin cậy và tính khả dụng.

Việc test này được sử dụng để xác định mức độ nhanh chóng của 1 hệ thống hoặc 1 hệ thống phụ thực thi dưới 1 khối lượng công việc cụ thể.

Performance testing có nhiều loại và Stability testing là 1 trong số chúng.

  • Stress testing: nó là 1 loại test mà kiểm tra sức chịu tải của hệ thống vượt qua khả năng của hệ thống.
  • Spike testing: nó được sử dụng để kiểm tra hành vi của 1 hệ thống bằng cách tăng tải của 1 hệ thống ngay lập tức. Mục đích là để kiểm tra tại thời điểm nào hệ thống sẽ có vấn đề về hiệu năng, hay nó sẽ pass.
  • Scalability testing: Nó được sử dụng để kiểm tra khả năng của 1 hệ thống. Hệ thống sẽ có hiệu lực hành xử thế nào trong như cầu ngày càng tăng, thay đổi về quy mô và khối lượng.
  • Volume testing: Nó là 1 kỹ thuật test non-functional nơi mà phần mềm đang thử nghiệm phải chịu khối lượng công việc khổng lồ, và hành vi của 1 hệ thống được kiểm tra và xác minh phù hợp
  • Load or stability testing: đã được mô tả bên trên.

1 vài công cụ cho performance testing như:

  • WebLOAD
  • LoadRunner
  • Apache JMeter
  • NeoLoad
  • CloudTest
  • Loadstorm
  • LoadUI
  • WAPT
  • LoadImpact
  • Loadster
  • Httperf
  • OpenSTA
  • Performance Tester
  • Testing Anywhere

Kết luận:

Stability testing là 1 quá trình non-functional của việc test hành vi của các ứng dụng bằng cách áp dụng tải tối đa. Nó được thực hiện để tìm ra khả năng mở rộng của hệ thống trong 1 môi trường nhất định.

Tham khảo: https://www.guru99.com/stability-testing.html