Kỹ Thuật Phân Tích Giá Trị Cận Biên Là Gì?
Phân tích giá trị cận biên – Boundary Value Analysis là một kỹ thuật kiểm thử phần mềm tập trung vào kiểm tra các giá trị đầu vào nằm ở biên của khoảng giá trị hợp lệ hoặc không hợp lệ. Mục tiêu chính của phân tích giá trị cận biên là tìm ra các lỗi hoặc vấn đề liên quan đến xử lý giá trị biên của phần mềm.
Khi triển khai phân tích giá trị cận biên, bạn xác định giá trị biên tối thiểu và tối đa cho mỗi khoảng giá trị đầu vào và sử dụng chúng để tạo các bộ kiểm thử. Các bộ kiểm thử này thường được thiết kế để thử các giá trị nằm ngay trước và ngay sau giá trị biên, bởi vì chúng thường gây ra lỗi hoặc các tình huống đặc biệt.
Những Giá Trị Cận Biên Phi Chức Năng (Non-functional Boundaries)
Giá trị cận biên đôi khi rất đơn giản để tìm thấy. Ví dụ: khi xử lý các kiểu dữ liệu đơn giản như số nguyên, trong đó các giá trị được sắp xếp theo thứ tự, không cần phải đoán. Các ranh giới là hiển nhiên. Các giá trị biên khác có thể khó xác định hơn khi chúng ta thảo luận về kiểu số nguyên và dấu phẩy động.
Và, trong một số trường hợp, ranh giới chỉ được xác định ngầm và người kiểm tra phải tìm ra cách để kiểm tra chúng.
Xem xét yêu cầu dưới đây:
Kích thước tệp tối đa là 16MB.
Chính xác thì có bao nhiêu byte là 16MB? Làm cách nào để chúng ta tạo được tệp 16MB để kiểm tra giới hạn tối đa? Làm thế nào để chúng ta kiểm tra được giới hạn cao không hợp lệ? Câu trả lời cho câu hỏi đầu tiên về số lượng byte là … nó phụ thuộc vào hệ điều hành sử dụng là gì
Hệ thống tệp đang được sử dụng là gì: FAT32, NTFS? Kích thước cung và cụm trên đĩa cứng là gì? Việc kiểm tra giá trị biên tối đa hợp lệ chính xác trên tệp 16 MB, cũng như việc kiểm tra giá trị biên tối đa không hợp lệ là rất khó. Nếu hệ thống cần kiểm thử của bạn không quá quan trọng hoặc không liên quan đến bảo mật, thì chúng ta không cần dành thời gian để cố gắng xác định kích thước chính xác mà sẽ kiểm tra tệp gần 16MB nhất có thể để đạt được giá trị biên tối đa hợp lệ và có thể là tệp 17 MB cho giá trị biên tối đa không hợp lệ.
Ở đầu bên kia của kích thước tệp, giá trị biên tối thiểu tương đối dễ hiểu: không có (bằng 0). Không có tệp nào có thể có kích tệp là âm. Nếu tệp là một tệp có cấu trúc, với thông tin tiêu đề được xác định, thì ứng dụng đã tạo ra nó có khả năng sẽ không cho phép tệp 0 byte và do đó có thể kiểm tra một ranh giới thấp không hợp lệ.
Một ví dụ khác, hệ thống có yêu cầu về tính hiệu quả như sau:
Hệ thống sẽ xử lý ít nhất 150 giao dịch mỗi giây.
Giá trị biên tối thiểu không hợp lệ có thể không tồn tại. Tất nhiên, sẽ không thể kích hoạt số lượng giao dịch âm. Tuy nhiên, nếu hệ thống được thiết kế sao cho số lượng giao dịch tối thiểu phải được thực hiện trong một đơn vị thời gian nhất định, thì sẽ có cả giá trị biên tối thiểu hợp lệ và không hợp lệ. Việc xác định mức tối thiểu nên được tiếp cận như chúng ta đã làm với ví dụ về tệp.
Còn giá trị biên tối đa hợp lệ thì sao? Rõ ràng là chúng ta phải kiểm tra 150 giao dịch mỗi giây, nhất quán với việc kiểm tra hiệu suất tốt. Điều gì sẽ là một mức cao không hợp lệ? Trong trường hợp như thế này, chúng tôi sẽ lập luận rằng không có ranh giới không hợp lệ cao cụ thể nào để kiểm tra; tuy nhiên, thử nghiệm hiệu suất tốt sẽ tiếp tục tăng số lượng giao dịch cho đến khi chúng tôi nhận thấy sự thay đổi đáng kể về hiệu suất.
Ví Dụ Về Phân Tích Giá Trị Biên
Ở giáo trình căn bản, chúng ta đã thảo luận về giá trị cận biên theo cách khá đơn giản. Ví dụ, đối với một số nguyên có phạm vi hợp lệ từ 1 đến 10, các giá trị cận biên được thảo luận như thế có bốn: 0 (invalid low), 1 (valid low), 10 (valid high), and 11 (invalid high).
Tuy nhiên, càng nhìn kỹ, nó thực sự càng phức tạp. Nhìn vào dãy số này, dường như có hai giá trị còn thiếu mà chúng ta không thảo luận: ở ngoài cùng bên trái và bên phải. Trong toán học, chúng ta sẽ nói rằng hai đường biên bị thiếu đại diện cho vô cực âm ở bên trái, vô cực dương ở bên phải. Rõ ràng là một máy tính không thể biểu diễn số vô hạn bằng cách sử dụng các số nguyên, vì điều đó sẽ chiếm một số lượng byte vô hạn. Điều đó có nghĩa là sẽ có những giá trị cụ thể vừa là giá trị lớn nhất vừa là giá trị nhỏ nhất mà máy tính có thể biểu diễn.
Giá trị cận biên! Để hiểu các giá trị cận biên này thực sự được thể hiện như thế nào và nơi có thể xảy ra lỗi, chúng ta cần xem xét một số chi tiết kiến trúc máy tính. Chính xác thì các số được lưu trữ trong bộ nhớ như thế nào?
Các nhà phân tích kiểm tra kỹ thuật phải hiểu cách các giá trị khác nhau được thể hiện trong bộ nhớ; chúng ta sẽ xem xét chủ đề này cho cả số nguyên và số dấu phẩy động.
Số Nguyên – Integers
Bằng cách xem xét định nghĩa các biến dữ liệu được sử dụng, người kiểm thử có thể phân biệt độ dài của giá trị và do đó có thể xác định được các giá trị cận biên. Vì luôn có một số max và một số min xác định, bất kể là loại biến nào được sử dụng, nên việc tìm và kiểm tra ranh giới tương đối đơn giản. Giả sử một số nguyên 8 bit, không dấu 255 (1111 1111), việc thêm 1 vào số đó sẽ dẫn đến tràn, cho giá trị 0 (0000 0000). 255 + 1 = 0.
Khi lập trình viên khai báo một biến, họ xác định độ dài và giá trị có dấu hay không dấu. Mặc dù một lập trình viên có thể sử dụng giá trị lớn nhất có thể cho mỗi số để giảm thiểu khả năng bị tràn, nhưng điều đó luôn được coi là một kỹ thuật lập trình tồi gây lãng phí dung lượng và thường làm chậm quá trình tính toán.
Type | Storage Size | Value Range |
---|---|---|
Int (or signed int) | 2 bytes | -32,768 to 32,767 |
unsigned int | 2 bytes | 0 to 65,535 |
Short int(or signed short int) | 2 bytes | -32,768 to 32,767 |
Long(or singed short int) | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
float | 4 bytes | 1.2E-38 to 3.4E+38 (6 decimal places) |
double | 8 bytes | 2.3E-308 to 1.7E+308 (15 decimal places) |
Long double | 10 bytes | 3.4E-4932 to 1.1E+4932 (19 decimal places) |
char | 1 byte | -128 to 127 |
unsigned char | 1 byte | 0 to 255 |
Số Dấu Phẩy Động – Floating Point Numbers
Floating Point Numbers, hay còn gọi là số dấu chấm động, là một cách biểu diễn các số thập phân trong máy tính. Chúng được sử dụng để đại diện cho các số có phần nguyên và phần thập phân, và có khả năng biểu diễn số rất lớn và rất nhỏ.
Một vấn đề quan trọng với những giá trị này mà người kiểm tra kỹ thuật phải hiểu là hầu hết các số float đều không chính xác; thay vào đó, chúng là giá trị gần đúng mà chúng ta có thể quan tâm. Trong nhiều trường hợp, đây không phải là vấn đề. Tuy nhiên, đôi khi, các lỗi thú vị có thể ẩn nấp trong các giá trị gần đúng này.
Bao Nhiêu Giá Trị Biên Là Đủ?
Ví dụ: đối với số tiền bằng đơn vị tiền tệ có hai chữ số thập phân, nếu phân vùng bao gồm các giá trị từ 1 đến 10, thì các giá trị kiểm tra hai giá trị cho ranh giới trên sẽ là 10 và 10,01. Các giá trị kiểm tra ranh giới dưới sẽ là 1 và 0,99. Các ranh giới được xác định bởi các giá trị tối đa và tối thiểu trong phân vùng tương đương đã xác định. Đối với thử nghiệm ranh giới ba giá trị, các giá trị trước, trên và trên ranh giới được sử dụng. Trong ví dụ trước, các bài kiểm tra ranh giới trên sẽ bao gồm 9,99, 10 và 10,01. Các bài kiểm tra ranh giới thấp hơn sẽ bao gồm 0,99, 1 và 1,01. Quyết định về việc sử dụng thử nghiệm ranh giới hai giá trị hay ba giá trị phải dựa trên rủi ro liên quan đến mặt hàng đang được thử nghiệm, với cách tiếp cận ranh giới ba giá trị được sử dụng cho các sản phẩm có rủi ro cao hơn.
Khả Năng Áp Dụng
Kỹ thuật này có thể áp dụng ở bất kỳ cấp độ thử nghiệm nào và phù hợp khi tồn tại các phân vùng tương đương theo thứ tự. Vì lý do này, kỹ thuật BVA thường được tiến hành cùng với kỹ thuật EP. Các phân vùng tương đương có thứ tự được yêu cầu vì khái niệm nằm trên và ngoài ranh giới. Ví dụ: một dãy số là một phân vùng có thứ tự. Một phân vùng bao gồm một số chuỗi văn bản cũng có thể được sắp xếp theo thứ tự, ví dụ: theo thứ tự từ điển của chúng, nhưng nếu thứ tự không liên quan theo quan điểm nghiệp vụ hoặc kỹ thuật thì các giá trị biên sẽ không được chú trọng. Ngoài phạm vi số, các phân vùng có thể áp dụng phân tích giá trị biên bao gồm: • Thuộc tính số của các biến không phải số (ví dụ: độ dài) • Số chu kỳ thực hiện vòng lặp, bao gồm các vòng lặp trong sơ đồ chuyển trạng thái • Số phần tử lặp trong cấu trúc dữ liệu được lưu trữ như mảng • Kích thước của vật thể, ví dụ: bộ nhớ • Thời gian hoạt động
Hạn Chế/ Khó Khăn
Bởi vì độ chính xác của kỹ thuật này phụ thuộc vào việc xác định chính xác các phân vùng tương đương nhằm xác định chính xác các ranh giới nên nó cũng có những hạn chế và khó khăn tương tự như EP. Nhà phân tích kiểm thử cũng cần lưu ý về độ chính xác của các giá trị hợp lệ và không hợp lệ để có thể xác định chính xác các giá trị cần kiểm tra. Chỉ có thể sử dụng các phân vùng có thứ tự để phân tích giá trị biên nhưng điều này không giới hạn ở một phạm vi đầu vào hợp lệ. Ví dụ: khi kiểm tra số lượng ô được bảng tính hỗ trợ, có một phân vùng chứa số lượng ô lên đến và bao gồm số ô tối đa được phép (ranh giới) và một phân vùng khác bắt đầu bằng một ô trên mức tối đa (trên ranh giới).
Mức Độ Bao Phủ
Phạm vi bao phủ được xác định bằng cách lấy số điều kiện biên được kiểm tra và chia cho số điều kiện biên được xác định (sử dụng phương pháp hai giá trị hoặc ba giá trị). Mức độ bao phủ được nêu dưới dạng phần trăm. Tương tự như phân vùng tương đương, trong trường hợp có nhiều tham số, Nhà phân tích kiểm thử nên chọn loại bảo hiểm đơn giản hoặc kết hợp, tùy thuộc vào rủi ro.
Loại Lỗi Phát Hiện
Phân tích giá trị biên có thể tìm thấy sự dịch chuyển hoặc thiếu sót của các ranh giới một cách đáng tin cậy và có thể tìm thấy các trường hợp có nhiều ranh giới hơn. Kỹ thuật này tìm ra các khiếm khuyết liên quan đến việc xử lý các giá trị biên, đặc biệt là các lỗi có logic nhỏ hơn và lớn hơn (tức là độ dịch chuyển). Nó cũng có thể được sử dụng để tìm các lỗi phi chức năng, ví dụ: một hệ thống hỗ trợ 10.000 người dùng đồng thời nhưng không hỗ trợ 10.001.