Kiểm tra vòng lặp là gì? Phương pháp, ví dụ
⚡ Tóm tắt thông minh
Kiểm thử vòng lặp xác thực cấu trúc vòng lặp bên trong chương trình, kiểm tra điều gì xảy ra khi một vòng lặp bị bỏ qua, được gọi một lần, được thực thi tại giới hạn của nó và bị đẩy vượt quá số lần lặp tối đa cho phép.
Kiểm tra vòng lặp là gì?
Kiểm tra vòng lặp Đây là một loại kiểm thử phần mềm tập trung hoàn toàn vào tính hợp lệ của các cấu trúc vòng lặp trong chương trình. Nó là một phần của kiểm thử cấu trúc điều khiển, cùng với... kiểm tra đường dẫn, kiểm thử xác thực dữ liệu và kiểm thử điều kiện.
Kiểm tra vòng lặp là một kiểm thử hộp trắng Đây là kỹ thuật được áp dụng bởi người có thể đọc mã nguồn và xem điều kiện vòng lặp, bộ đếm và đường dẫn thoát. Người kiểm thử không cần phải đoán hành vi từ giao diện người dùng; chính vòng lặp là đối tượng cần kiểm thử.
Sơ đồ bên dưới cho thấy vị trí của kiểm thử vòng lặp trong nhóm kiểm thử cấu trúc điều khiển.
Các loại vòng lặp đã được thử nghiệm
Trước khi chọn chiến lược, hãy xác định bạn đang xem xét loại vòng lặp nào trong bốn loại vòng lặp. Ví dụ về các loại vòng lặp được kiểm thử là:
- Vòng lặp đơn giản — một vòng lặp đơn với một điểm vào và một điểm ra, chẳng hạn như một vòng lặp thông thường. cho, trong khi or làm trong khi xây dựng.
- Vòng lặp lồng nhau — một vòng lặp được đặt bên trong một vòng lặp khác, do đó vòng lặp bên trong sẽ hoàn thành mỗi khi vòng lặp bên ngoài đi qua.
- Vòng lặp nối — Hai hoặc nhiều vòng lặp chạy nối tiếp nhau.
- Vòng lặp không có cấu trúc — Sự kết hợp không theo kế hoạch của các vòng lặp lồng nhau và nối tiếp nhau, thường là kết quả của việc nhảy vào hoặc ra khỏi thân vòng lặp.
Khối lượng công việc cần bỏ ra sẽ do chính lớp học quyết định. Một vòng lặp đơn giản chỉ cần một vài lần lặp; một vòng lặp không có cấu trúc thường cần phải thiết kế lại mã trước khi có thể kiểm tra được.
Tại sao phải thực hiện Kiểm tra vòng lặp?
Kiểm tra vòng lặp được thực hiện vì những lý do sau
- Kiểm tra có thể khắc phục các vấn đề lặp lại vòng lặp
- Kiểm tra vòng lặp có thể giúp phát hiện các điểm nghẽn về hiệu suất và dung lượng.
- Bằng cách kiểm tra các vòng lặp, có thể xác định được các biến chưa được khởi tạo trong vòng lặp.
- Nó giúp xác định các vấn đề khởi tạo vòng lặp.
Ngoài ra còn có lý do về mặt thương mại. Một vòng lặp chạy quá nhiều lần sẽ làm sai lệch tổng thể; một vòng lặp không bao giờ kết thúc sẽ làm treo tiến trình. Cả hai lỗi này đều dễ tìm khi mã vẫn còn trên máy của nhà phát triển, nhưng lại tốn kém khi đã được đưa vào sản xuất.
Cách thực hiện Kiểm tra vòng lặp: Phương pháp hoàn chỉnh
Khi kiểm tra một vòng lặp, cần phải kiểm tra ở ba cấp độ khác nhau:
- Khi vòng lặp được bắt đầu
- Trong quá trình thực hiện, và
- Khi vòng lặp còn lại
Chiến lược kiểm thử cho tất cả các vòng lặp này như sau.
Vòng lặp đơn giản
Một vòng lặp đơn giản có một điểm vào và một điểm ra, như hình minh họa bên dưới.
Một vòng lặp đơn giản được kiểm tra theo cách sau:
- Bỏ qua toàn bộ vòng lặp
- Thực hiện một lượt qua vòng lặp
- Thực hiện 2 lần đi qua vòng lặp
- Hãy a đi qua vòng lặp nơi a < bđó là số lần lặp điển hình ở mức trung bình.
- Hãy b, b-1 và b+1 đi qua vòng lặp tại đó b là số lần tối đa cho phép đi qua vòng lặp.
Hai trường hợp cuối cùng mang giá trị cao nhất. Bỏ quaping Vòng lặp chứng minh điều kiện thoát được đánh giá trước khi phần thân được thực thi, và bTrường hợp +1 chứng minh rằng vòng lặp từ chối thực hiện công việc vượt quá giới hạn đã khai báo thay vì tràn mảng.
Vòng lặp lồng nhau
Vòng lặp lồng nhau nhân số lượng các tổ hợp lặp có thể có, do đó nó được kiểm tra từ trong ra ngoài chứ không phải tất cả cùng một lúc.
Đối với vòng lặp lồng nhau, bạn cần thực hiện các bước sau.
- Đặt tất cả các vòng lặp khác về giá trị tối thiểu và bắt đầu từ vòng lặp trong cùng.
- Đối với vòng lặp trong cùng, thực hiện kiểm tra vòng lặp đơn giản và giữ các vòng lặp bên ngoài ở giá trị tham số lặp tối thiểu của chúng
- Thực hiện kiểm tra cho vòng lặp tiếp theo và tiếp tục từ trong ra ngoài.
- Tiếp tục cho đến khi vòng ngoài cùng được kiểm tra.
Vòng lặp nối
Các vòng lặp được nối tiếp nhau nằm liền kề nhau trong cùng một đường dẫn thực thi, như sơ đồ minh họa.
Trong các vòng lặp ghép nối, nếu hai vòng lặp độc lập với nhau thì chúng được kiểm tra bằng phương pháp vòng lặp đơn giản, ngược lại thì chúng được kiểm tra như các vòng lặp lồng nhau.
Tuy nhiên, nếu bộ đếm vòng lặp của một vòng lặp được sử dụng làm giá trị ban đầu cho vòng lặp kia, thì hai vòng lặp đó không được coi là độc lập.
Vòng lặp không có cấu trúc
Các vòng lặp không có cấu trúc là trường hợp khó nhất, bởi vì quá trình điều khiển nhảy vào và ra khỏi thân vòng lặp tại các điểm tùy ý.
Đối với các vòng lặp không có cấu trúc, thiết kế cần được cấu trúc lại để phản ánh việc sử dụng các cấu trúc lập trình có cấu trúc. Khi mã đã được rút gọn thành các dạng đơn giản, lồng nhau hoặc nối tiếp, chiến lược khớp nối nêu trên sẽ được áp dụng.
Ví dụ kiểm thử vòng lặp với các trường hợp kiểm thử
Một ví dụ cụ thể sẽ làm rõ số lần lặp. Hãy xem xét một chương trình con nhân kết quả đang chạy với mọi số nguyên từ 1 đến... n, một phép tính giai thừa. Bộ đếm vòng lặp bắt đầu từ 1, điều kiện thoát là chống lại > nvà vòng lặp được khai báo để chấp nhận tối đa 12 lần lặp trước khi kết quả vượt quá giới hạn của kiểu số nguyên đã khai báo.
Nếu xem đây như một vòng lặp đơn giản, số lần lặp được đề xuất ở trên sẽ tương ứng với các số lần lặp sau: trường hợp thử nghiệm.
| Kiểm tra trường hợp | Giá trị của n | Các lượt thực thi | Điều đó chứng minh điều gì |
| TC01 | 0 | 0 (vòng lặp bị bỏ qua) | Điều kiện thoát được đánh giá trước khi thân hàm chạy và kết quả giữ nguyên giá trị ban đầu là 1. |
| TC02 | 1 | 1 | Chỉ cần một lần chạy là cho ra kết quả chính xác và bộ đếm tăng lên một lần. |
| TC03 | 2 | 2 | Bộ tích lũy giữ lại giá trị giữa hai lần chạy liên tiếp. |
| TC04 | 5 | 5 | Kết quả đo ở mức trung bình thường cho ra con số 120 như mong đợi, xác nhận đây là hoạt động bình thường. |
| TC05 | 11 | 11 | Một lượt chạy dưới mức tối đa vẫn hoàn thành bình thường (b-số 1). |
| TC06 | 12 | 12 | Giá trị tối đa đã khai báo được chấp nhận và vòng lặp kết thúc.b). |
| TC07 | 13 | từ chối | Nếu số lượt truy cập vượt quá mức tối đa, hệ thống sẽ từ chối thay vì âm thầm tràn dữ liệu.b+ 1). |
Lưu ý rằng TC01 và TC07 là hai trường hợp mà các nhà phát triển thường bỏ qua nhất, và chúng là hai trường hợp bộc lộ các lỗi bỏ qua khởi tạo và tràn số. Giá trị âm của n thuộc cùng một bộ nếu đặc tả cho phép cung cấp, điều này liên kết việc kiểm tra vòng lặp với thử nghiệm tiêu cực.
Các lỗi thường gặp được phát hiện bằng phương pháp kiểm tra vòng lặp
Việc kiểm tra vòng lặp liên tục phát hiện ra cùng một nhóm nhỏ các lỗi, đó là lý do tại sao việc sử dụng số lần lặp cố định luôn đáng để thực hiện.
- Lệch khỏi ranh giới một — một điều kiện được viết như sau: < Ở đâu <= Đúng như dự định, vòng lặp chạy thiếu một lượt hoặc thừa một lượt.
- Bộ đếm hoặc bộ tích lũy chưa được khởi tạo — tổng số tiền còn lại từ lần gọi trước.
- Vòng lặp vô hạn — một điều kiện thoát mà thân vòng lặp không bao giờ có thể thỏa mãn vì bộ đếm chỉ được cập nhật trên một số nhánh nhất định.
- Giả định vòng lặp bỏ qua — Đoạn mã sau vòng lặp đọc một biến mà phần thân vòng lặp được cho là sẽ thiết lập, đoạn mã này sẽ bị lỗi khi vòng lặp chạy không lần nào.
- Lỗi về dung lượng và hiệu suất — Một vòng lặp chính xác nhưng đọc lại cơ sở dữ liệu ở mỗi lần lặp, do đó chi phí tăng theo số lần lặp.
- Nhiễu vòng lặp lồng nhau — một vòng lặp bên trong tái sử dụng bộ đếm của vòng lặp bên ngoài và âm thầm thay đổi số lần lặp của vòng lặp bên ngoài.
Vì mỗi lỗi tương ứng với một số lần lặp cụ thể, nên các lỗi phát hiện ở đây dễ tái hiện và khắc phục nhanh chóng hơn so với các lỗi được tìm thấy ở các mức độ cao hơn. mức độ kiểm tra.
So sánh kiểm thử vòng lặp với các kỹ thuật kiểm thử cấu trúc điều khiển khác
Kiểm thử vòng lặp là một thành viên của nhóm cấu trúc điều khiển, và rất dễ bị nhầm lẫn với các kỹ thuật lân cận. Bảng dưới đây phân loại chúng.
| Kỹ thuật | Mục tiêu của nó là gì? | Mục tiêu phạm vi phủ sóng điển hình |
| kiểm tra vòng lặp | Cấu trúc vòng lặp: điểm vào, số lần lặp và điểm ra. | Số lần lặp 0, 1, thông thường và giới hạn cho mỗi vòng lặp |
| Kiểm tra tình trạng | Biểu thức Boolean bên trong các quyết định | Mỗi điều kiện được đánh giá cả đúng và sai. |
| Kiểm tra luồng dữ liệu | Định nghĩa và cách sử dụng của từng biến số | Mỗi cặp định nghĩa-cách sử dụng đều được luyện tập ít nhất một lần. |
| Kiểm thử đường dẫn cơ bản | Các đường dẫn độc lập thông qua đồ thị luồng điều khiển | Số lượng đường đi bằng với độ phức tạp chu trình |
Trên thực tế, các kỹ thuật này bổ sung cho nhau chứ không cạnh tranh với nhau. Độ phức tạp của chu kỳ Cho bạn biết có bao nhiêu đường dẫn độc lập tồn tại, kiểm thử đường dẫn cơ sở bao phủ chúng, và kiểm thử vòng lặp sau đó bổ sung số lần lặp mà chỉ riêng việc bao phủ đường dẫn sẽ không bắt buộc. Tất cả chúng đều là thử nghiệm động các hoạt động, vì mã phải được thực thi thì kết quả mới có thể được quan sát.
Hạn chế trong thử nghiệm vòng lặp
Kỹ thuật này có những hạn chế nhất định, và việc nắm rõ những hạn chế đó sẽ giúp tránh đầu tư quá mức.
- Lỗi vòng lặp xuất hiện chủ yếu ở phần mềm cấp thấp
- Các lỗi được xác định trong quá trình kiểm tra vòng lặp không tinh tế lắm
- Nhiều lỗi có thể được hệ điều hành phát hiện, vì chúng gây ra vi phạm giới hạn bộ nhớ, lỗi con trỏ có thể phát hiện và các lỗi tương tự.
- Việc xác định lớp của từng vòng lặp và kiểm tra chúng tương ứng sẽ tốn thời gian, điều này khó có thể biện minh được đối với những đoạn mã có rủi ro thấp.





