Kiểm thử độ bền trong phần mềm: Ý nghĩa và ví dụ
⚡ Tóm tắt thông minh
Kiểm thử ngâm (Soak Testing) áp dụng một tải trọng thực tế, ổn định lên ứng dụng trong một thời gian dài để phát hiện các vấn đề chỉ xuất hiện theo thời gian. Rò rỉ bộ nhớ, cạn kiệt kết nối và sự suy giảm hiệu năng chậm là những lỗi mà phương pháp này được thiết kế để phát hiện.

Kiểm tra ngâm là gì?
Thử nghiệm ngâm là một loại thử nghiệm phi chức năng được sử dụng để đo lường hiệu suất của một ứng dụng phần mềm dưới khối lượng tải khổng lồ trong một khoảng thời gian dài. Mục tiêu của Ngâm thử nghiệm là để đảm bảo liệu ứng dụng phần mềm có duy trì được khối lượng sử dụng cao hay không và kiểm tra xem điều gì sẽ xảy ra ngoài mong đợi thiết kế của nó.
Hình ảnh bên dưới mô tả một chu trình thử nghiệm cho biết giai đoạn nào của Thử nghiệm Ngâm (Loại bài kiểm tra hiệu suất) được thực hiện trên một ứng dụng.
Trong loại thử nghiệm này, điều được giám sát cơ bản là việc sử dụng bộ nhớ của một ứng dụng trong hệ thống. Nó đang thử nghiệm ở cấp độ hệ thống để tìm hiểu xem liệu hệ thống có chịu được khối lượng sử dụng rất cao hay không và để xem điều gì sẽ xảy ra ngoài những mong đợi trong thiết kế của nó.
Tại sao phải thực hiện Ngâm thử nghiệm?
Một hệ thống có thể hoạt động bình thường khi được sử dụng trong 2 giờ, nhưng khi cùng một hệ thống được sử dụng liên tục trong 10 giờ trở lên thì hệ thống đó có thể bị lỗi hoặc hoạt động bất thường/ngẫu nhiên/có thể bị hỏng. Để dự đoán lỗi như vậy, Ngâm thử nghiệm được thực hiện.
Khi nào cần thực hiện Kiểm tra Ngâm?
Kiểm tra ngâm nên được thực hiện trong các trường hợp sau: –
- Trước khi bản dựng được triển khai cho khách hàng, tức là trước khi phát hành bất kỳ ứng dụng nào trên một nền tảng cụ thể, nó cần phải trải qua một loạt thử nghiệm tải thành công ở mức lưu lượng truy cập cao hoặc tương đương. Sau đó thử nghiệm ngâm được thực hiện. Nó giúp chúng tôi xác định cách chạy bất kỳ ứng dụng cụ thể nào trong một thời gian dài. Nếu phát hiện thấy các vấn đề như rò rỉ bộ nhớ/hỏng bộ nhớ trong khoảng thời gian tức là khi nó ở chế độ Ngâm thì cần báo cáo ngay lập tức.
- Thời gian tốt nhất để thực hiện thử nghiệm ngâm là vào cuối tuần vì ứng dụng cần ở trạng thái chạy lâu nhất là hơn một ngày hoặc đêm. Nó hoàn toàn phụ thuộc vào những hạn chế của tình hình thử nghiệm. Thử nghiệm ngâm là một trong những yêu cầu tuân thủ quan trọng nhất cần được mọi công ty tuân thủ nghiêm ngặt.
Chiến lược thử nghiệm ngâm
Thử nghiệm ngâm phiên dài là một chiến lược trong đó hệ thống được tải trong thời gian dài hơn.
Một ví dụ đơn giản là khi người dùng đăng nhập vào hệ thống trong nhiều giờ để thực hiện một số giao dịch kinh doanh. Bằng cách này, rất nhiều dữ liệu được tạo ra. Có thể có quá nhiều tải trên máy chủ hệ thống/cơ sở dữ liệu, điều này có thể dẫn đến tình trạng máy chủ hệ thống/cơ sở dữ liệu bị treo/bị treo.
Trong Thử nghiệm ngâm phiên dài, các hoạt động trong nhiều ngày (giả sử là 30 ngày) được thực hiện trong khung thời gian hạn chế (giả sử là 2 ngày). Số lượng giao dịch trong khung thời gian hạn chế này phải bằng hoặc vượt quá số lượng giao dịch trong nhiều ngày. Cần tập trung vào số lượng giao dịch được xử lý. Phần quan trọng nhất của Ngâm thử nghiệm là kiểm tra bộ nhớ khả dụng trong CPU và dung lượng bộ nhớ sẽ được sử dụng. Chúng ta cần ghi lại mức sử dụng bộ nhớ khi bắt đầu và kết thúc quá trình kiểm tra ngâm. Nếu cần thiết thì việc sử dụng bộ nhớ của các phương tiện như Java Máy ảo cũng rất quan trọng và cần được theo dõi.
Dưới đây là một số kiểm tra khác cần được thực hiện bởi bất kỳ người dùng/người kiểm tra nào trước khi họ bắt đầu với Ngâm thử nghiệm:
a) Giám sát việc tiêu thụ tài nguyên cơ sở dữ liệu.
b) Giám sát mức tiêu thụ tài nguyên của máy chủ (ví dụ: sử dụng CPU).
c) Kiểm thử ngâm phải chạy đồng thời với người dùng thực tế.
Đặc điểm của thử nghiệm ngâm
Một phương pháp thử ngâm tiêu chuẩn phải có các đặc điểm sau: –
- Thời lượng của hầu hết Thử nghiệm Ngâm thường được xác định theo thời gian có sẵn.
- Bất kỳ ứng dụng nào cũng phải chạy mà không bị gián đoạn nếu nó yêu cầu một khoảng thời gian dài.
- Nó phải bao gồm tất cả các kịch bản được các bên liên quan đồng ý.
- Hầu hết mọi hệ thống đều có khoảng thời gian bảo trì thường xuyên và khoảng thời gian giữa các khoảng thời gian đó là yếu tố chính để xác định phạm vi của Kiểm tra Ngâm.
Ví dụ về thử nghiệm ngâm
- Trong trường hợp miền ngân hàng có lượng lớn dữ liệu từ người bán, người kiểm tra sẽ cho hệ thống tải liên tục trong 70 giờ đến 150 giờ để kiểm tra xem ứng dụng hoạt động như thế nào trong thời gian tải này.
- Giả sử có 33,000 lượt đăng nhập cần được thực hiện qua hệ thống, nó tương ứng với bảy ngày rưỡi hoạt động. Trong trường hợp này, Thử nghiệm Ngâm kéo dài 60-70 giờ có thể được bắt đầu vào tối thứ Sáu vào khoảng 6 giờ chiều và có thể hoàn thành trước Monday buổi sáng lúc 6h. Chỉ với thử nghiệm như vậy, mới có thể quan sát được bất kỳ sự suy giảm hiệu suất nào trong các điều kiện được kiểm soát.
- Trong trường hợp Trò chơi điện tử, Số Điện Thoại ứng dụng, v.v. liên quan đến việc để trò chơi hoặc ứng dụng ở trạng thái chạy trong một khoảng thời gian dài, ở nhiều chế độ hoạt động khác nhau - chẳng hạn như chạy không tải, tạm dừng ở màn hình tiêu đề, v.v. để tìm hiểu xem liệu ứng dụng có thể xử lý tải dự kiến liên tục hay không .
Các vấn đề thường gặp được quan sát thấy trong quá trình Ngâm thử nghiệm
- Phân bổ bộ nhớ (rò rỉ bộ nhớ cuối cùng sẽ dẫn đến khủng hoảng bộ nhớ hoặc lỗi làm tròn chỉ biểu hiện theo thời gian).
- Sử dụng tài nguyên cơ sở dữ liệu (Không đóng con trỏ cơ sở dữ liệu trong một số điều kiện, cuối cùng sẽ dẫn đến toàn bộ hệ thống bị đình trệ).
- Nó cũng có thể dẫn đến suy giảm hiệu suất, tức là để đảm bảo rằng thời gian phản hồi sau một thời gian dài hoạt động liên tục vẫn tốt như lúc bắt đầu thử nghiệm.
- Việc không đóng kết nối giữa các tầng của hệ thống nhiều tầng trong một số trường hợp có thể làm ngừng hoạt động một số hoặc tất cả các mô-đun của hệ thống.
- Sự suy giảm dần dần thời gian phản hồi của một số chức năng khi cấu trúc dữ liệu nội bộ trở nên kém hiệu quả hơn trong quá trình thử nghiệm kéo dài.
Bài kiểm tra này phù hợp với nhóm kiểm thử hiệu năng như thế nào?
Kiểm thử hiệu năng là một thuật ngữ chung. Các biến thể dưới đây chỉ khác nhau ở dạng tải trọng tác dụng và thời gian duy trì tải trọng đó, đó là lý do tại sao chúng thường bị nhầm lẫn với nhau.
| Loại thử nghiệm | Mẫu tải | Câu hỏi nó trả lời |
|---|---|---|
| Kiểm tra tải | Dự kiến tải trọng cao điểm, thời gian ngắn. | Hệ thống có đạt được mục tiêu đề ra trong điều kiện lưu lượng giao thông cao điểm bình thường không? |
| Bài kiểm tra về áp lực | Tăng công suất vượt quá khả năng cho đến khi hỏng hóc | Nó bị hỏng ở đâu, và liệu nó có bị hỏng một cách êm ái không? |
| thử nghiệm tăng đột biến | Sự tăng vọt đột ngột, sau đó là sự rút lui. | Liệu nó có thể tồn tại và phục hồi sau cú sốc giao thông? |
| kiểm tra độ bền | Tải trọng bình thường được duy trì trong nhiều giờ. | Hiệu năng có giảm dần theo thời gian không? |
| thử nghiệm ngâm | Tải trọng duy trì trong một thời gian dài | Có hiện tượng rò rỉ bộ nhớ hoặc cạn kiệt tài nguyên không? |
| Kiểm tra độ ổn định | Tải trọng thay đổi tùy theo điều kiện | Hệ thống có duy trì được độ tin cậy khi điều kiện thay đổi không? |
| Kiểm tra khối lượng | Người dùng thông thường, dung lượng dữ liệu rất lớn. | Liệu hệ thống có đáp ứng được khi cơ sở dữ liệu phát triển? |
Thử nghiệm độ bền và thử nghiệm ngâm thường được coi là đồng nghĩa. Trong cách sử dụng thông thường, cả hai đều duy trì tải trọng ổn định trong thời gian dài. Ở những nơi các nhóm phân biệt chúng, kiểm thử độ bền tập trung vào việc liệu thời gian phản hồi có tăng lên hay không, trong khi kiểm thử độ bền lâu tập trung vào mức tiêu thụ tài nguyên như bộ nhớ, xử lý tập tin và nhóm kết nối. Chạy một trong hai thường cung cấp bằng chứng cho cả hai.
Các chỉ số quan trọng cần thu thập trong quá trình thử nghiệm
Một lần chạy thử nghiệm hiệu năng chỉ tốt khi bạn ghi lại được những gì cần thiết trong quá trình thực thi. Hãy ghi lại sáu thông số này ở cả phía máy chủ và phía máy khách, sau đó so sánh chúng với mức cơ bản thay vì chỉ dựa vào cảm tính.
| metric | Nó nói với bạn điều gì | Dấu hiệu cảnh báo |
|---|---|---|
| Thời gian phản hồi trung bình | Trải nghiệm người dùng điển hình | Bất kỳ sự dịch chuyển hướng lên nào trong suốt quá trình chạy |
| thời gian phản hồi ở phân vị thứ 95 | Trải nghiệm của những người dùng chậm nhất | Cao hơn mức trung bình rất nhiều, nghĩa là không nhất quán. |
| Thông lượng | Số yêu cầu được xử lý mỗi giây | Giảm dần trong khi tải trọng không đổi |
| Tỷ lệ lỗi | Tỷ lệ yêu cầu thất bại hoặc hết thời gian chờ | Bất kỳ sự tăng nào vượt quá ngưỡng đã thỏa thuận |
| Sử dụng CPU và bộ nhớ | Khả năng dự trữ tài nguyên máy chủ | Ký ức leo lên và không bao giờ trở lại |
| Kết nối cơ sở dữ liệu và luồng | Kiệt sức ở hồ bơi | Số lượng tăng đều đặn mà không cần phát hành |
Hãy đọc giá trị trung bình và phần trăm cùng nhau. Mức trung bình 800 ms với phân vị thứ 95 là 900 ms mô tả một hệ thống hoạt động ổn định. Cùng mức trung bình đó nhưng với phân vị thứ 95 là 9 giây có nghĩa là cứ 20 người dùng thì có một người gặp sự cố, và mức trung bình đang che giấu điều đó.
Hãy quan sát hình dạng, chứ không chỉ giá trị. Trong bất kỳ bài kiểm tra kéo dài nào, đường biểu diễn tài nguyên nằm ngang là dấu hiệu đạt yêu cầu, còn đường biểu diễn tăng lên là dấu hiệu rò rỉ, ngay cả khi con số tuyệt đối vẫn nằm trong giới hạn cho phép tại thời điểm kết thúc quá trình kiểm tra.

