Kiểm thử biên mở rộng

Một phần của tài liệu Khảo sát một số phương pháp sinh bộ kiểm thử trong kiểm thử hộp đen (Trang 27)

Kiểm thử biên mở rộng - Robustness testing là một sự mở rộng của kỹ thuật phân tích giá trị biên cơ bản bằng cách thêm vào tập các giá trị biên cơ bản các giá trị vượt ra ngoài biên, nằm ngoài tập giá trị đang xét. Nếu một hệ thống được cài đặt đúng thì với các giá trị đầu vào nằm ngoài biên sẽ không dẫn tới các lỗi của chương trình, hệ thống không bị treo hay có những thông báo bất thường. Ví dụ trong lập trình với ngôn ngữ C/C++ nếu chúng ta khai báo biến con trỏ *p và cấp phát bộ nhớ cho nó vượt quá bộ nhớ dùng để thực thi chương trình hoặc trỏ đến địa chỉ của các thanh ghi điều khiển thì chương trình sẽ bị treo. Với các chương trình phần mềm nhúng thường được kiểm tra chặt chẽ sự liên kết với các đại lượng vật lý như giới hạn nhiệt độ, giới hạn về bộ nhớ,… nhằm đảm bảo chương trình thực thi đúng đắn.

Hình 3.4. Phương pháp kiểm thử biên mở rộng.

Kỹ thuật này đòi hỏi việc kiểm tra tính đáp ứng của hệ thống đối với cả những trường hợp ở cận dưới của biên dưới (min-) và cận trên của biên trên (max+). Với n biến đầu vào thì sẽ có 6n+1 ca kiểm thử được sinh ra. Các ca kiểm thử thêm mới trong trường hợp sử dụng phương pháp kiểm thử giá trị biên mở rộng cho bài toán vay thế chấp ở mục 3.1.1 như mô tả trong bảng 3.3.

Bảng 3.3 Các ca kiểm thử với phương pháp kiểm thử biên mở rộng

Gender Age Salary Output Correct output Pass/Fail

Male 17 5000 30*5000 Age not valid F Male 56 5000 75*5000 Age not valid F Male 25 -1 75*-1 Invalid salary F Male 25 10001 75*10001 75*10000(?) F

Các ca kiểm thử tại các giá trị đầu vào nằm ngoài miền ràng buộc là giá trị độ tuổi 17 và 56, giá trị lương là -1 và 10001. Kết quả của ca kiểm thử trả về giá trị Fail (F) cho thấy thuật toán cài đặt cho ra kết quả không như mong đợi.

3.1.3. Kiểm thử trƣờng hợp xấu nhất

Kiểm thử trường hợp xấu nhất - worst case testing là kỹ thuật giúp loại bỏ giả thiết “lỗi đơn” cho rằng hiếm khi xảy ra trường hợp lỗi đồng thời, nghĩa là chúng ta cần kiểm tra các tình huống khi mà hơn một biến đầu vào có giá trị không hợp lệ. Ví dụ, với năm nhuận thì tháng 2 sẽ có 29 ngày, như vậy nếu thể hiện giá trị năm là nhuận và biến tháng bằng 2 xảy ra đồng thời thì kết quả của hàm tính ngày sẽ phải là 29.

Ở kỹ thuật này, người ta cải tiến việc sinh các ca kiểm thử bằng cách kiểm tra các giá trị tại các điểm nút giao nhau, điểm chốt phân hoạch các tập giá trị. Tập giá trị vẫn là (min, min+, nom, max-, max) nhưng cả 2 biến đều nhận những giá trị này chứ không phải là 1 biến nhận giá trị norm giống kỹ thuật phân tích giá trị biên cơ bản. Kỹ thuật kiểm thử trường hợp xấu nhất cho ra số lượng ca kiểm thử theo hàm mũ, nếu có n biến sẽ cho 5n trường hợp kiểm thử, điều này được minh họa trong hình 3.5.

Hình 3.5. Các biên kiểm thử trong trường hợp xấu nhất.

Bảng 3.4 mô tả các trường hợp kiểm thử được sinh ra khi sử dụng kỹ thuật kiểm thử trường hợp xấu nhất cho bài toán tính tiền vay thế chấp. Trong danh sách ca kiểm thử lần này được bổ sung thêm các giá trị tại các điểm nút giao nhau giữa biến Age = (18,35,45,55) và Salary = 1. Bảng kết quả cho thấy tại các điểm nút cho kết quả đầu ra không đáp ứng với mong đợi chứng tỏ thuật toán của chương trình được cài đặt bị lỗi cần phải kiểm tra lại việc xử lý rẽ nhánh tại các điểm nút này.

Bảng 3.4 Các ca kiểm thử với phương pháp kiểm thử trong trường hợp xấu nhất

Gender Age Salary Output Correct output Pass/Fail

Male 18 1 75*1 75*1 P Male 35 1 55*1 75*1 F Male 36 1 55*1 55*1 P Male 45 1 30*1 55*1 F Male 46 1 30*1 30*1 P Male 55 1 30*1 30*1 P

3.1.4. Kết hợp kiểm thử trƣờng hợp xấu nhất và kiểm thử biên mở rộng

Để đảm bảo việc kiểm thử chương trình phát hiện được nhiều lỗi nhất có thể, đảm bảo chương trình thực thi một cách đúng đắn cũng như đảm bảo chất lượng phần mềm, người ta không chỉ dùng một kỹ thuật kiểm thử giá trị biên cơ bản hay mở rộng hoặc kiểm thử trường hợp xấu nhất mà có sự kết hợp giữa nhiều kỹ thuật với nhau. Điển hình là sự kết hợp giữa kiểm thử biên trong trường hợp xấu nhất và kiểm thử mở rộng. Trong kỹ thuật kết hợp này, chúng ta cần kiểm thử cả những giá trị ngoài biên (min-, min, min +, nom, max -, max, max+). Phương pháp này sinh ra một số lượng lớn các các ca kiểm thử, nếu có n biến đầu vào sẽ có 7n

Hình 3.6. Kết hợp kiểm thử trường hợp xấu nhất và kiểm thử mở rộng.

Để dễ phân biệt và hình dung tổng quát lại các kỹ thuật trong phân tích giá trị biên, hình 3.7 dưới đây là sự so sánh các kỹ thuật đã trình bày ở trên. Sự kết hợp của các kỹ thuật khác nhau trong kiểm thử giá trị biên còn được xem như là phương pháp kiểm thử giá trị đặc biệt và là kỹ thuật kiểm thử chức năng được dùng rộng rãi nhất. Đây cũng là kỹ thuật trực quan và ít hình thức nhất, trong kỹ thuật này kiểm thử viên dựa vào hiểu biết về kỹ thuật, kinh nghiệm của chính họ với các chương trình tương tự (business domain) và các thông tin khác để có được các phân hoạch miền giá trị biến đầu vào để từ đó tạo ra các ca kiểm thử.

Hình 3.7. So sánh các kỹ thuật kiểm thử giá trị biên.

3.1.5. Một số ví dụ về miền giá trị các kiểu biến

Trong mục này, luận văn sẽ đưa ra một số ví dụ điển hình về miền giá trị của các kiểu biến đầu vào bao gồm: biến đầu vào có kiểu số nguyên dương, biến kiểu tiền tệ, biến kiểu nhiệt độ, biến kiểu xâu kí tự và biến kiểu ngày tháng. Hình 3.8 mô tả miền giá trị hợp lệ, không

hợp lệ và các giá trị biên của biến đầu vào với điều kiện biến đầu vào là một tập số nguyên dương có giá trị nhỏ hơn 100. Tiếp theo, hình 3.9 biểu diễn biến đầu vào kiểu tiền tệ có giá trị lớn hơn 0 và nhỏ hơn 1000. Ở đây khác với biến kiểu số nguyên, biến kiểu tiền tệ có thể nhận giá trị là một số thập phân. Tương tự, hình 3.10 biểu diễn các giá trị biên của biến đầu vào kiểu nhiệt độ. Hình 3.11 và 3.12 lần lượt mô tả các giá trị biên, miền giới hạn của các biến đầu vào kiểu xâu kí tự và kiểu ngày tháng năm.

Ví dụ về nhập thông tin đầu vào là số nguyên dương nhỏ hơn 100:

Hình 3.8. Miền giá trị số nguyên. Biến đầu vào kiểu tiền tệ:

Hình 3.9. Miền giá trị kiểu tiền tệ. Biến đầu vào kiểu nhiệt độ:

Biến đầu vào kiểu chuỗi mật khẩu:

Hình 3.11. Miền giá trị kiểu String. Biến đầu vào kiểu ngày tháng năm:

Hình 3.12. Miền giá trị kiểu ngày tháng năm.

3.1.6. Nhận xét

Qua quá trình khảo sát các các kỹ thuật của phương pháp kiểm thử giá trị biên, ta thấy được một số ưu và nhược điểm của phương pháp này như sau (adsbygoogle = window.adsbygoogle || []).push({});

Ƣu điểm: Kiểm thử giá trị biên là phương pháp có tính trực quan, dễ hiểu, dễ áp dụng. Vì việc sinh ca kiểm thử chỉ tập trung tại các biên của miền dữ liệu đầu vào nên khi sử dụng phương pháp này sẽ làm giảm đáng kể số lượng ca kiểm thử cần tạo

và thực thi. Phương pháp này phù hợp với hầu hết các hệ thống có miền giá trị đầu vào của các biến được chia thành nhiều phân vùng con. Hơn nữa, ưu điểm lớn nhất của phương pháp này là xác suất tìm ra lỗi cao vì một tỉ lệ lớn các lỗi xảy ra tại vị trí biên và cận biên.

Nhƣợc điểm: Tuy có khá nhiều ưu điểm nhưng kiểm thử giá trị biên vẫn tồn tại một vài hạn chế nhất định như: Để áp dụng được phương pháp này cần yêu cầu các biến đầu vào là các đại lượng vật lý và thực sự độc lập với nhau về mặt logic.

3.2. Phƣơng pháp kiểm thử dựa trên phân hoạch tƣơng đƣơng

Việc thực thi kiểm thử tất cả mọi trường hợp trong kiểm thử hộp đen là điều khó có thể thực hiện được vì số lượng các ca kiểm thử vô cùng lớn và tăng lên theo hàm mũ tương ứng với số lượng biến đầu vào của chương trình. Vì vậy trong quá trình xây dựng ca kiểm thử, chúng ta cần lựa chọn ra những ca kiểm thử mà khả năng phát hiện lỗi cao nhất có thể.

Phân lớp tương đương - Equivalence partitioning (EP) hay còn gọi là phân hoạch tương đương là một phương pháp kiểm thử hộp đen dựa trên đặc tả hệ thống. Nó có thể được áp dụng cho bất kỳ một cấp độ kiểm thử nào và là một kỹ thuật rất tốt thường được lựa chọn đầu tiên [4]. EP chia miền giá trị các biến đầu vào của một chương trình thành các lớp dữ liệu con, từ đó suy dẫn ra các ca kiểm thử. Phương pháp này cố gắng xác định ra một ca kiểm thử mà làm lộ ra một lớp lỗi, do đó làm giảm tổng số các trường hợp kiểm thử phải được xây dựng. Hình 3.13 thể hiện một cách trực quan cho phân lớp tương đương [2]

Hình 3.13. Trực quan mô tả phân lớp tương đương.

Cơ sở của việc phân chia miền dữ liệu đầu vào thành các lớp tương đương là vì dữ liệu trong một lớp tương đương tác động như nhau lên chương trình, tạo ra cùng một trạng thái đúng hay sai của chương trình, tức là các phần tử trong cùng một lớp tương đương sẽ có cùng tính chất và thuộc tính [1]. Giả sử các tập con A1, A2, A3 … của tập X tạo nên một phân hoạch của X, nếu:

Công thức trên mô tả nguyên tắc phân hoạch tập hợp cho chúng ta thấy rằng, để tránh việc đưa ra các lớp tương đương không hợp lệ tức là thực hiện phân hoạch tương đương không chính xác, cần chú ý một số nguyên tắc sau: Các lớp phân hoạch con là những lớp hoàn toàn độc lập tức là hai lớp tương đương bất kì không được có phần tử chung giao nhau. Khi chúng ta thực hiện phân lớp tương đương thì không để tồn tại một lớp con là tập rỗng. Hợp của các lớp con phải chứa toàn bộ các phần tử của tập ban đầu để đảm bảo tính đầy đủ của dữ liệu sau khi phân lớp tương đương [2].

Việc thiết kế ca kiểm thử cho phân lớp tương đương dựa trên sự đánh giá về các lớp tương đương với một điều kiện vào. Lớp tương đương biểu thị cho tập các trạng thái hợp lệ hay không hợp lệ đối với điều kiện vào. Trong phân hoạch tương đương, dữ liệu được phân hoạch thành một trong hai lớp sau: Lớp tương đương hợp lệ (chứa dữ liệu nằm trong miền hợp lệ) và lớp tương đương không hợp lệ (chứa dữ liệu nằm trong miền không hợp lệ). Để xác định các lớp tương đương cho miền giá trị của các biến đầu vào, chúng ta có thể áp dụng các nguyên tắc dưới đây [1].

Nếu điều kiện vào là phạm vi rộng giới hạn một miền hay những giá trị đặc biệt thì cần xác định một lớp tương đương hợp lệ (lớp tương đương này bao gồm các giá trị nằm trong phạm vi giới hạn của biến đầu vào) và hai lớp tương đương không hợp lệ (bao gồm một lớp tương đương chứa các giá trị nằm bên dưới cận dưới của phạm vi giới hạn biến và một lớp tương đương chứa các giá trị ở trên cận trên phạm vi giới hạn biến đầu vào).

Nếu điều kiện vào đặc tả một thành phần của một tập hoặc điều kiện bool thì cần xác định hai lớp tương đương bao gồm một lớp tương đương hợp lệ (lớp này chứa các giá trị nằm trong miền hợp lệ của biến đầu vào) và một lớp tương đương không hợp lệ (chứa toàn bộ các giá trị nằm trong miền không hợp lệ của biến đầu vào cần kiểm thử).

Kiểm thử theo phân lớp tương đương bao gồm ba phương pháp, phân lớp tương đương

yếu, phân lớp tương đương mạnh và phân lớp tương đương truyền thống. Các phương pháp này sẽ được lần lượt trình bày chi tiết trong các mục 3.2.1, 3.2.2 và 3.2.3 của chương 3 [6].

1

( ) à ( )

n

i i j

3.2.1. Phân lớp tƣơng đƣơng yếu

Phân lớp tương đương yếu [6] là một phương pháp hay được sử dụng khi lựa chọn phân lớp tương đương. Phương pháp này vẫn dựa trên nguyên tắc chung của phân lớp tương đương, tức là chúng ta cũng chia miền dữ liệu của các biến đầu vào thành các lớp con tương đương. Việc sinh các trường hợp kiểm thử trong phân lớp tương đương yếu phải đảm bảo mỗi lớp con được kiểm tra ít nhất một lần. Điều này có nghĩa là trong tập ca kiểm thử sinh ra thì giá trị của phần tử đại diện cho mỗi lớp con phải được kiểm thử ít nhất một lần. Như vậy, số trường hợp kiểm thử trong phân lớp tương đương yếu bằng giá trị lớn nhất của số phân hoạch biến đầu vào hay chính là lực lượng lớn nhất của phân hoạch. Giả sử hàm cần kiểm thử có 3 biến đầu vào a,b,c và tập phân hoạch như sau:

A=A1 U A2 U A3 B=B1 U B2 U B3 U B4 C=C1 U C2

Trong đó: a1 Є A1, b3 Є B3, c2 Є C2

Theo nguyên tắc của phân lớp tương đương yếu, chúng ta xây dựng được 04 trường hợp kiểm thử được biểu diễn trong bảng 3.5 dưới đây.

Bảng 3.5 Danh sách ca kiểm thử sinh ra theo phân lớp tương đương yếu

TC_ID a b c TC_01 a 1 b 1 c 1 TC_02 a 2 b 2 c 2 TC_03 a 3 b 3 c 1 TC_04 a 1 b 4 c 2

3.2.2. Phân lớp tƣơng đƣơng mạnh

Với phương pháp này, sau khi phân hoạch miền giá trị của các biến đầu vào thành các lớp tương đương thì việc sinh các trường hợp kiểm thử thực hiện theo nguyên tắc mỗi ca kiểm thử là một phần tử của tích đề các của các phân hoạch con đó. Do đó số lượng ca kiểm thử sinh ra chính là số phần tử của tích đề các này. Áp dụng cho bài toán trong mục 3.2.1 ở trên với ba biến đầu vào a,b,c ta có 24 ca kiểm thử được sinh ra như trong bảng 3.6.

Bảng 3.6 Các ca kiểm thử sinh ra theo phân lớp tương đương mạnh TC_ID a b c TC_01 a 1 b 1 c 1 TC_02 a 1 b 1 c 2 TC_03 a 1 b 2 c 1 … … … … TC_22 a 3 b 3 c 2 TC_23 a 3 B 4 c 1 TC_24 a 3 b 4 c 2

3.2.3. Phân lớp tƣơng đƣơng truyền thống

Phân lớp tương đương truyền thống là phương pháp đơn giản nhất trong các kỹ thuật kiểm thử theo phân lớp tương đương. Với phương pháp này thì việc phân lớp tương đương cho miền giá trị của các biến đầu vào chỉ cần quan tâm 02 lớp sau: Lớp tương đương hợp lệ (chứa dữ liệu của biến đầu vào nằm trong miền hợp lệ) và lớp tương đương không hợp lệ (chứa dữ liệu của biến đầu vào nằm trong miền không hợp lệ). (adsbygoogle = window.adsbygoogle || []).push({});

Ý tưởng của việc sinh ca kiểm thử cho phương pháp này thực hiện theo nguyên tắc: Khi chúng ta xây dựng ca kiểm thử cho trường hợp đúng thì chỉ cần lấy các giá trị biến đầu vào nằm trong miền hợp lệ. Tức là ca kiểm thử sinh ra với điều kiện giá trị đầu vào của tất cả các biến đều nằm trong miền hợp lệ. Khi tạo ca kiểm thử cho trường hợp sai thì chỉ cần lấy một trong các biến đầu vào có giá trị không nằm trong miền hợp lệ. Tức là với các biến đầu vào không hợp lệ, mỗi ca kiểm thử sẽ bao gồm một biến đầu vào có giá trị nằm trong miền không hợp lệ và các biến còn lại có giá trị nằm trong miền hợp lệ.

Một phần của tài liệu Khảo sát một số phương pháp sinh bộ kiểm thử trong kiểm thử hộp đen (Trang 27)