Thị dòng điều khiển của máy bán hàng tự động

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 86 - 90)

I0 = [(5,5),200], trong đó (N oOf P ro1 = N oOf P ro2 = 5 ≤ 10 và amount = 200).

Hàm F được biểu diễn như sau:F =returnM oney=amount−totalM oney, vì vậy F(I0) = 50. Thực hiện thay đổi kết quả của vị từ returnM oney ≥ 0. Đầu tiên,

tăng giá trị của biến N oOf P ro trong các bước khác nhau.

i. Bước đầu tiên,(N oOf P ro1 =N oOf P ro2 = 5, amount= 400), totalM oney = 5∗15 + 5∗15 = 150và returnM oney = 400−150 = 250. Hàm F =amount−

(N oOf P ro1∗P rice1 +N oOf P ro2∗P rice2), khi F giảm thì N oOf P ro tăng.

ii. Bước tiếp theo, tăng kích thước của bước dịch chuyển lên gấp đôi tức là giá trị N oOf P ro lên thêm 2 nữa, bây giờ N oOf P ro là 7. Do vậy, [(N oOf P ro1,

N oOf P ro2), amount] = [(7,7),400)]. Suy ra, F giảm xuống returnM oney = 400−2∗(7∗15) = 190 >0.

iii. Tiếp tục tăng gấp đôi bước dịch chuyển vàN oOf P rosẽ là7+2∗2 = 11, do đó

nó bị vi phạm ràng buộc N oOf P ro≤10 của một loại sản phẩm được chọn trong một giao dịch. Vì vậy, theo thuật tốn chúng ta lại giảm kích thước di chuyển xuống là2. Bây giờ thay thế N oOf P ro= 11, nó sẽ là N oOf P ro = 9,

và [(N oOf P ro1, N oOf P ro2), amount] = [(9,9),400]. Hàm F tính được sẽ là:

returnM oney = 400−2∗(9∗15) = 130, giá trị hàm F vẫn dương. Ta lại tiếp

tục giảm kích thước bước dịch chuyển xuống một nửa thì giá trị giảm sẽ là 1. Vì vậy, N oOf P ro= 9 + 1 = 10 và F = 400−2∗(15∗10) = 100. Nhưng

hàm F 6= 0, hàm vẫn chưa đạt giá trị nhỏ nhất.

iv. Tiếp tục xét biến tiếp theo của hàm F và lại tăng hoặc giảm các bước dịch chuyển để thực hiện giảm hàm F. Bây giờ giá trị N oOf P ro giữ nguyên không đổi là 10 và số lượng tiền cho vào máy bán hàng sẽ thực hiện giảm đi theo các bước sau. Với [(N oOf P ro1, oOf P ro2), amount) = [(10,10),399],

F sẽ có giá trị là: F = (399−2∗(10 ∗15) = 99. Sau đó, tiếp tục lặp lại

để giảm số tiền amount như sau: [(10,10),397], [(10,10),393], [(10,10),385], [(10,10),369], [(10,10),337], [(10,10),273], bởi vì kích thước của mỗi bước

dịch chuyển sẽ tăng gấp đôi trong mỗi lần lặp, tại dữ liệu [(10,10),273] thì hàm F = 273˘2∗(10∗15) =−27, tức là hàm F sẽ có giá trị âm tại điểm dữ

liệu [(10,10),273].

v. Khi hàm F có giá trị âm với kích thước của bước dịch chuyển là 64; chúng

ta sẽ lấy hai điểm dữ liệu khởi tạo làIin: [(10,10),337] vàIout : [(10,10),273].

vi. Sau đó, tiếp tục giảm kích thước dịch chuyển xuống một nửa từ 64chuyển xuống 32. Vì vậy, amount = 337−32 = 305, với điểm dữ liệu [(10,10),305]

thì F có giá trị là 5, giá trị này vẫn dương. Do đó, chúng ta thay thế Iin

là [(10,10),305] cho giá trị [(10,10),337]. Quá trình này lại được lặp lại,

giảm kích thước dịch chuyển từ 32 xuống 16 sẽ là 305−16 = 289 và hàm

F = 289−2∗(10∗15) =−11. Hàm F đã chuyển sang giá trị âm, vì vậy lại

thay thế Iout là [(10,10),289] cho giá trị dữ liệu [(10,10),273].

vii. Giá trị dữ liệu Iin và Iout có được nhờ việc giảm giá trị cho mỗi bước dịch chuyển. Hàm F = 0, khi dữ liệu là [(10,10),300]; F = 300−2∗(10∗15) = 0.

Trong trường hợp này, ta có dữ liệu kiểm thử là Iin: [(10,10),305], Iout:

[(10,10),289] và Bboundary : [(10,10),300].

viii. Từ các kịch bản trong Bảng 3.4 với dữ liệu kiểm thử sinh tương ứng với vị từ (returnM oney ≥0) là:

<Kịch bản 3>: (Start, B1, B6, B7, B8, B9, B12, End,[(10,10),289])

<Kịch bản4>: (Start, B1, B6, B7, B8, B9, B10, B11, B12, End, [(10,10),305])

<Kịch bản 5>: (Start, B1, B6, B7, B8, B9, B10, B11, End, [(10,10),300])

Chỉ có hai điểm dữ liệu kiểm thửIin và Iout, chúng là các điểm dữ liệu nhỏ nhất để thỏa mãn vị từ (returnM oney ≥0). Tương tự, dữ liệu kiểm thử được sinh ra

thỏa mãn tất cả các vị từ gắn với các đỉnh khi duyệt CFG. Do đó, các điểm dữ liệu tương ứng với các giá trị logic khác nhau thỏa mãn các điều kiện. Thủ tục sinh dữ liệu kiểm thử sẽ được lặp lại cho tất cả các vị từ tương ứng với các kịch bản trong CFG. Khi sinh ra các kịch bản kiểm thử thì các điều kiện tiền và hậu điều kiện của các phương thức cũng được kiểm tra. Vì vậy, các kịch bản kiểm thử sinh ra sẽ có độ bao phủ dịng thơng điệp, độ bao phủ biên và độ bao phủ tiền và hậu điều kiện.

3.3.6.2 Tìm kiếm với biến cấu trúc dữ liệu động

Trong nhiều ứng dụng tính tốn của các hàm vị từ tốn nhiều thời gian trong quá trình tìm kiếm. Một trong những yếu tố cần thiết về việc giảm các hàm vị từ là xem xét và điều chỉnh các giá trị biến đầu vào. Phương pháp sẽ hiệu quả hơn nếu lấy giá trị nhỏ nhất của hàm vị từ. Do đó, phương pháp này phát triển cho các biến cấu trúc dữ liệu động bao gồm biến kiểu cấu trúc và con trỏ. Một cấu trúc là một tập hợp các trường, mỗi trường có thể là kiểu dữ liệu cơ bản hoặc kiểu dữ liệu cấu trúc. Tên của các trường xác định trường đó và phải duy nhất. Con trỏ là kiểu dữ liệu động, biến con trỏ thực sự biểu diễn cho hai biến: cho chính con trỏ và cho cấu trúc dữ liệu của con trỏ. Khi con trỏ p được tạo ra bằng thủ tục new(p). Cấu trúc dữ liệu của con trỏ được lưu trữ nhưng khơng có giá trị gắn cho nó. Khi một cấu trúc động được tạo ra thì nó tham chiếu đến biến con trỏ.

Phương pháp này sử dụng mọi cấu trúc động coi như một biến riêng biệt, một danh sách các bản ghi động được thao tác và tạo ra trong q trình thực thi các kịch bản kiểm thử. Nó xác định khơng chỉ các cấu trúc động được đưa ra bởi các biến con trỏ tại mọi lần thực thi ca kiểm thử, mà còn là các trường của cấu trúc được tham chiếu và sửa đổi đến. Để phân biệt giữa các cấu trúc động, tên duy nhất phải được gán cho chúng, giả sử gọi là reci. Thực thi đầu tiên của new gán tên rec1 cho cấu trúc động đầu tiên được tạo. Thực thi tiếp theo của new gán tên rec2 cho cấu trúc tiếp theo. Mỗi lần thực thi tiếp theo của new tăng giá trị của i lên 1. Theo cách này, tên duy nhất sẽ được gắn cho mọi cấu

trúc động. Do đó, mỗi trường trong cấu trúc động được xác định duy nhất bởi định danh reci. Luận án sử dụng phương pháp phân tích dịng dữ liệu động và quay lui để đưa ra cách sinh ra dữ liệu kiểm thử trong biểu diễn con trỏ.

Một trong những vấn đề chính của sinh dữ liệu kiểm thử là tìm cấu trúc dữ liệu đầu vào để thỏa mãn các ràng buộc trên đường dẫn được duyệt qua. Thuật tốn khơng quan tâm đến cấu trúc dữ liệu đầu vào là cây nhị phân hay danh sách liên kết, v.v. chỉ cần có các thơng tin là các phần khai báo của cấu trúc động, nó được giả sử rằng cấu trúc động đầu vào trên đồ thị trực tiếp. Cách tiếp cận tập trung vào tìm cấu trúc dữ liệu của đầu vào được tìm kiếm một cách hệ thống thơng qua khơng gian tìm kiếm của các cấu trúc dữ liệu có thể cho đến khi giải pháp được tìm thấy. Ý tưởng cơ bản của việc tìm kiếm là sử dụng phân tích dịng dữ liệu động và quay lui. Trong phương pháp này, mục đích của việc tìm kiếm các cấu trúc dữ liệu đầu vào là duyệt đường được chọn đạt được bởi việc giải quyết các mục đích con của nó, khi mà các mục đích con được chia làm hai loại: số và con trỏ. Nếu mục đích là tìm dữ liệu số đưa ra thì các hàm vị từ được xây dựng và phương thức tìm kiếm trực tiếp được miêu tả trong phần trước thuật tốn tìm kiếm cơ bản. Cịn mục đích thứ hai là tìm kiếm loại con trỏ, thủ tục tìm kiếm dựa trên phân tích dịng dữ liệu động và quay lui được áp dụng.

Với mục đích tìm kiếm là loại con trỏ, thủ tục tìm kiếm xác định giải quyết mục đích đó bằng việc gắn các giá trị có thể cho các biến của chúng (chú ý rằng: hàm vị từ không thể được xây dựng từ các hàm nhánh của kiểu dữ liệu loại con trỏ). Khi việc tìm kiếm đầu tiên được thực hiện, thủ tục tìm kiếm nỗ lực giải quyết lần thực hiện thứ hai. Nếu việc tìm kiếm tiếp theo khơng thể được thực hiện trong những ràng buộc của giải pháp hiện tại trong lần tìm kiếm đầu tiên, thì một giải pháp mới cho mục đích tìm kiếm đầu tiên được đưa ra. Rõ ràng, khi tại một vài điểm mà một giá trị chắc chắn của biến con trỏ khơng có cách nào dẫn đến một giải pháp, thì thủ tục tìm kiếm có thể quay lui lại việc tìm kiếm trước đó để gán giá trị mới cho biến đầu vào này. Nếu giải pháp mới được tìm thấy, thì thủ tục tìm kiếm nỗ lực giải lần tìm kiếm tiếp theo. Thủ tục tìm kiếm sẽ được tiếp tục để giải quyết các lần tìm kiếm tiếp theo, quay lui lại khi cần thiết cho đến khi giải pháp là mục đích chính được tìm thấy hoặc khơng có cách để duy trì giải pháp cho các việc tìm kiếm con.

Ví dụ 3.2: Xem xét biểu đồ tuần tự Hình 3.14, với đầu vào số nguyên y

và cấu trúc dữ liệu động được đưa ra bởi biến con trỏ q và hằng con trỏ L. Theo Thuật toán 3.3.2, chuyển biểu đồ tuần tự thành CFG trong Hình 3.15. Với

Ă͗ ď͗ ;LJ͕>͕ƋͿ ƚLJƉĞĚĞĨƐƚƌƵĐƚEŽĚĞΎEWŽŝŶƚĞƌ͖ ƐƚƌƵĐƚEŽĚĞ΂ ŝŶƚĚĂƚĂ͖ EWŽŝŶƚĞƌůĞĨƚ͖ EWŽŝŶƚĞƌƌŝŐŚƚ͖ ΃͖ ŝŶƚLJ͖ EWŽŝŶƚĞƌƉ͕Ƌ͕>͖ Ύ>͘ĚĂƚĂсϭϱ͖ ŵϭ;Ϳ ůŽŽƉ ΀ƉфхE/>΁ Ăůƚ ΀LJссƉΎ͘ĚĂƚĂ΁ ΀LJфхƉΎ͘ĚĂƚĂ΁ ĄĐĐąƵůҵŶŚƚŚĂLJĜҼŝŐŝĄƚƌҷĐӆĂďŝұŶƚƌŽŶŐ ĐĄĐƉŚӇҿŶŐƚŚӈĐ͗ ŵϭ;Ϳ΂ ͘͘͘ Ɖс>͖ ƋсE/>͖ ͘͘͘΃ ŵϮ;Ϳ΂ ͘͘͘ ƋсƉ͖ ƉсE/>͖ ͘͘͘΃ ŵϯ;Ϳ΂ ͘͘͘ ƉсƉΎ͘ůĞĨƚ͖ ͘͘͘΃ ŵϰ;Ϳ΂ ͘͘͘ ƉсƉΎ͘ƌŝŐŚƚ͖ ͘͘͘΃ Ăůƚ ΀LJхƉΎ͘ĚĂƚĂ΁ ΀LJфƉΎ͘ĚĂƚĂ΁ ŵϮ;Ϳ ŵϯ;Ϳ ŵϰ;Ϳ

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 86 - 90)