Khóa luận Kiểm thử theo mô hình FSM và ứng dụng của nó trong web

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
------  
Sinh viên: Nguyn ThBích Ngc  
ĐỀ TÀI:  
KIM THTHEO MÔ HÌNH FSM  
NG DNG CA NÓ TRONG WEB  
KHÓA LUN TT NGHIỆP ĐẠI HC CHÍNH QUY  
Ngành: Công nghphn mm  
1
HÀ NI, 2010  
ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
------  
Sinh viên: Nguyn ThBích Ngc  
ĐỀ TÀI:  
KIM THTHEO MÔ HÌNH FSM  
NG DNG CA NÓ TRONG WEB  
KHÓA LUN TT NGHIỆP ĐẠI HC CHÍNH QUY  
Ngành: Công nghphn mm  
Cán bộ hướng dẫn: Đặng Văn Hưng  
HÀ NI, 2010  
2
KHÁI QUÁT  
Trong tài liệu này đề cập đế các vấn đề vkim thmáy trng thái hu hn  
(Finite-state Machines Testing hay viết tt là FSMs testing) và ng dng ca nó trong  
web.  
Chương 1là tìm hiu vFSMs  
Chương 2 là tìm hiu vkim thvi mô hình FSMs,  
Chương 3 là tìm hiu vtìm hiu vdòng điểu khin, phthuc dliu và kim  
thử tương tác.  
Chương 4 là kim thvi mô hình FSMs trong web.  
Giáo viên hướng dn: Thầy Đặng Văn Hưng  
Hc viên thc hin: Nguyn ThBích Ngc  
FSM sdng các cấp trung gian để mô hình các chương trình hoạt động hay xử  
lý to scân bng gia các phần đơn giản và phc tp. FSM din tsxlý và hot  
động của các chương trình liên hp  
Kim thử FSM được ng dng rt nhiu trong lĩnh vực phn mm bng bng  
chn, các hthống được thiết kế bằng phương pháp hướng đối tượng.  
3
LỜI MỞ ĐẦU  
Đảm bo phn mm là mt nhim vvô cùng quan trng trong phát trin phn  
mm, nó liên quan mt thiết đến stn ti và phát trin ca các công ty phn mm.  
Trong đó có skim thử chương trình, nó là skim tra thông qua vic thc hin  
chương trình, được tiến hành sau khi đã phát triển chương trình (mã ngun). Nó là kỹ  
thut kim tra khá phbiến ngày nay. Có rt nhiu kthut kim thử chương trình,  
song rt nhiu hn chế vi nhng kthut kim thda trên các mô hình đơn giản,  
như là: kiểm tra danh sách, phân chia, mô hình cây.... Chi tiết hoạt động của chương  
trình, sự tương tác giữa các thành phn khác nhau của chương trình, cũng như là các  
thông tin vcách sdng chi tiết không thể được trình bày 1 cách đầy đủ trên nhng  
mô hình kim thử đơn giản. Trong đề tài này, tôi xin gii thiu “Finite – state  
machines” (FSMs) như là cơ sở cho rt nhiu kthut kim th.  
1
MC LC  
LIMĐU..................................................................................................................................1  
Chương1. FINITE-STATEMACHINES.................................................................................3  
1.1.FSMs - Khái nim cơ bản và ví dụ ..........................................................3  
1.2. Mô tFSMs .............................................................................................6  
Chương2. KIMTHTHEOMÔHÌNHFSMs..................................................................8  
2.1. Nhng rc ri cơ bản đối vi hthống được mô hình hóa bi FSMs..8  
2.2. Xây dng mô hình và kim tra cho thiếu, tha trạng thái và schuyn tiếp.  
...............................................................................................................................10  
2.3. Skim thcho nhng trạng thái và schuyn tiếp..........................13  
Chương3. DÒNGĐIỀUKHIN, PHTHUCDLIU, SKIMTHTƯƠNG  
TÁC.............................................................................................................................................................13  
3.1. Skim thdòng điều khin cơ bn....................................................14  
3.1.1Khái nim chung....................................................................................................14  
3.1.2. Xây dng mô hình................................................................................................16  
3.1.3. Sla chọn đường dn........................................................................................19  
3.1.4.Cp nhật đường dn .............................................................................................21  
3.1.5. Kim tra vòng lp, cách sdng CFT và các vấn đề khác.................................21  
3.1.5.1. Các kiu vòng lp khác nhau và các CFG tương ng ..................................21  
3.1.5.2. Vấn đề ca vòng lp ......................................................................................23  
3.2.Kim thdòng dliu và phthuc dliu.........................................23  
3.2.1. Các khái nim cơ bn. Shoạt động ca dliu phthuc dliu ..................23  
3.2.2. Nhng vấn đề cơ bn ca DFT va DDG..............................................................25  
3.2.3. Các thuc tính và yếu tca DDG ......................................................................26  
3.2.4. Quy trình chung cho sxây dựng đồ thDDG ...................................................28  
3.2.5. Xử lý các đường vòng ..........................................................................................29  
Chương4. KIM THDATNFSMCỦANGDỤNGWEB............................29  
4.1. Các đặc điểm của các ng dụng web....................................................29  
4.2.Kim tra đặc điểm ca các vấn đề web .................................................31  
4.3. FSMs trong kim thweb.....................................................................32  
2
KTLUN....................................................................................................................................35  
Chương 1. FINITE-STATE MACHINES  
1.1.FSMs - Khái niệm cơ bản và ví dụ  
FSMs là nhng mô hình bao gm:  
Nhng yếu tố tĩnh: bao gm trạng thái (state) và schuyn tiếp trạng thái  
(state transition). Nhng schuyn tiếp trạng thái thường được gọi là các schuyn  
tiếp. Slượng của nhng trạng thái là hu hạn. Schuyn tiếp trc tiếp từ trng thái A  
sang trạng thái B chỉ có ththeo 1 đường link duy nht là A-B. Slượng các ng là  
gii hạn.  
Nhng yếu tố động: bao gồm đầu vào input được cung cp cho FSMs và đầu  
ra output được ly ra tFSMs nhng sthc hiện động. Nói chung, cả hai slượng  
đầu vào và đầu ra đều là hu hạn. Trong trường hp mà slượng đầu vào và đầu ra có  
thchiếm mt slượng ln hoc mt slượng vô hạn các giá trị, thường thường  
chúng ta cn phải nhóm chúng vào các phân vùng.  
Các FSMs và các yếu tca chúng đưc biu din bng đồ thị. Các yếu tố chính  
trong đồ thị bao gm:  
Mi trạng thái được mô tả như mt nút (node) trong đồ thị.  
Mi schuyn tiếp được din tả như một đường link được kết ni trc tiếp từ  
trạng thái này sang trạng thái khác.  
Input và output được ni vi schuyn tiếp và được din tả như sự chú thích  
bi các schuyn tiếp.  
Thông thường mt trạng thái thì tương ứng vi vài trạng thái xử lý chương trình,  
hoc là mt khong thi gian cụ th, hoc là tương ứng vi 1 trường hp cá bit gia  
nhng hoạt động nào đó.Ví d, hãy xem xét trình tthc hiện sau đây:  
Khi chương trình khởi động, chương trình ở trạng thái ban đầu.  
Sau khi thc hin chức năng hướng người sử dụng (black-box view) hay thc  
hin 1 câu lnh hay mt thủ tục bên trong (white-box view), sự hoạt động của chương  
trình đưc chuyn sang 1 trạng thái khác.  
Các bước trên được lp lại mt sln, vài trạng thái ng có thể đưc lp lại.  
Trạng thái mà chương trình xử lý hoàn thành thì được gọi là trạng thái cui cùng.  
Trong mi mt schuyn tiếp, mt vài thông tin đầu vào có thcn thiết và  
mt vài thông tin đầu ra có thể được đưa ra.  
3
Trong ví dụ trên, nhng trạng thái đại din cho 1 vài stru tượng hóa của các  
tình trạng hoạt động hoc là các trạng thái và hu hết các hoạt động có liên quan đến  
các liên kết link hoc trạng thái chuyn tiếp. Mt ví dụ cụ thrt quen thuc vi hu  
hết mọi người trong xã hi hiện đại là vic sử dụng Web trên khp thế gii. Slướt  
mi trang Web có thcoi là 1 trạng thái. Khi chúng ta khởi động Web Browser, trang  
khởi động mặc định hay trang khởi động do chúng ta tạo ra sẽ được ti v, điều đó  
tương ứng vi trạng thái đầu tiên. Mi ln chúng ta làm theo 1 liên kết trong 1 trang  
hoc la chọn 1 trang Web thông qua vic sử dụng la chọn Bookmark/favorite hay là  
bng cách trc tiếp gõ lên URL (địa chỉ duy nht cho mi trang Web riêng bit), chúng  
ta đã khởi động đến 1 trang Web khác. Chúng ta có thdng lại bt kỳ lúc nào bng  
cách tt thanh Web Browser hoặc đơn giản là không ti Web na. Trang Web cui  
ng được xem được coi là trạng thái cui cùng. Trong ví dụ ứng dụng của Web trên,  
tt cả nhng quy trình như là: yêu cu và tải Web cũng như các li liên quan hoc là  
các thông báo khác đều được gn lin vi quá trình chuyn tiếp. Trạng thái FSM đại  
din cho mục đích chính của vic sử dụng Web và người sử dụng có thấy điều đó 1  
cách dễ dàng.  
Trong nhiu ng dụng, mt hn hp ca hai loại trên đây của FSMS có thể được  
sdng min là không có snhm ln. Mt ví dụ cụ thể của FSMs cho trường hp  
này miêu tả nhng cho sxử lý cuc gọi trong hthng mạng thông tin liên lạc.  
Nhng thông tin cụ thbao gm: Nhng trạng thái cụ thliên quan đến các hoạt động  
khác nhau hay tình trạng của hthống đã được xác nhn, ví dụ: “Khởi động”-“Khi  
đầu các trạm di động”,”Tình trạng nghỉ các trạm di động... được xác định bi nhãn A,  
B, C, D, E, tương ứng.  
Vài schuyn tiếp không kết ni vi bt kỳ input nào hoc bt kỳ ouput nào.  
Chúng chcn làm theo sau khi hoàn thành nhim vliên kết vi các trạng thái hin  
hành. Trong trường hợp đó, thường chỉ có 1 schuyn tiếp là có thể xảy ra, bi vì nếu  
không, thì phải có những điều kin và thông tin đầu vào rõ ràng để chỉ rõ schuyn  
tiếp nào được phép din ra.Ví dụ, sau khi trạng thái A, trạng thái tiếp theo sau luôn  
luôn là B. Tương tự, sau trạng thái B thì trạng thái tiếp theo luôn luôn là trạng thái C  
và trạng thái E thì trạng thái tiếp theo là trạng thái B. Nói chung, nhng quá trình  
chuyn tiếp đó không được kết ni vi bt kỳ 1 quá trình xử lý nào mà chỉ kết ni vi  
các mi quan hlogic gia các trạng thái.  
Nhng quá trình chuyn tiếp khác được kết ni vi nhng thông báo, điều kin  
rõ ràng như thông tin đầu vào và một sô thông tin đầu ra có th. Ví dụ, trạng thái sau  
4
trạng thái C( Trng thái không làm vic ca các trạm di động) có thể là D (Truy cp hệ  
thng), được kết ni vi sự trả li thông báo kênh gọi nhận được. Cuc gọi bắt đầu,  
hoặc đăng ký thc hin cuc gọi. Trạng thái B( Khởi động các trạm di động) ng có  
ththeo sau trạng thái C trong điều kin là trạm di động không có khả năng nhận kênh  
gọi. Tương tự trạng thái E ng có thsau trạng thái D nếu cuc gọi được hình thành,  
hoc trạng thái B sau trạng thái D trong trường hp các nhim vụ truy cp hthng  
được hoàn thành.  
Đồ thị 1.1 Ví dụ vfinite-state machine (FSM) cho tiến trình gọi  
5
Đồ th1.2 Ví dvmô hình hóa FSMs  
Trong đó,  
S1 là trạng thái ban đu  
là schuyn tiếp T1 ttrng thái S1 đến trng thái S2 có  
input là 1 và output là 1. Dấu “/” để phân bit input và output.  
1.2. Mô tFSMs  
Cách hiu quả nht để tả FSMs là sự dụng bin pháp đồ thị như ví dụ trên.  
c đồ thị như thế có thể chỉ rõ bng 1 bộ các trạng thái cho phép, và các input/output  
được kết ni. Ví dụ, 1 tp trạng thái tương ứng vi hình 1.1 là {A, B, C, D, E}, sự  
chuyn tiếp tCB được mô tả là {C, B, “Không thnhn cuc gọi”, }, đối với đầu  
o được chỉ bng 3 thành phn và output không xác định(). Tp schuyển đổi và  
input/output bao gm chính nhng trạng thái đó và nhng thành phn ging nhau của  
chúng.  
Mc du stả đồ thị trt trc giác và dễ gii thích, nhưng nó trnên không  
thc tế khi slượng các trạng thái là ln. Khi chúng ta có nhiều hơn 20 hoc 30 trạng  
thái, thì bản vẽ sẽ trnên ln xn và rt khó theo dõi. Vì thế dạng mô tả dạng bảng  
biu (hay stả theo ma trn) được dùng 1 cách thường xuyên, điều đó cũng giúp  
máy tính xử lý dễ dàng hơn. Ví dụ đồ thị 1.1 có thể được mô tả bng bảng 1.1, có thể  
được giải thích như sau:  
Bảng 1.1: Ví dụ vfinite-state machine (FSM) cho tiến trình gọi trong smô  
tả kiu bảng ma trn  
A
B
C
D
E
A
sự  
-/-  
sự  
sự  
sự  
tiếp chuyn tiếp  
ng tương ng  
chuyn tiếp  
tương ứng  
chuyn tiếp chuyn  
tương  
ng tương  
6
không  
không được không được không được  
được thc  
hin  
thc hin  
thc hin  
thc hin  
B
C
D
E
sự  
sự  
-/-  
sự  
chuyn  
tương  
sự  
chuyn tiếp chuyn  
tương ứng tương  
tiếp  
ng  
tiếp chuyn tiếp  
ng tương  
ng  
không  
không  
được  
không được không được  
được thc thc hin  
hin  
thc hin  
thc hin  
sự  
không  
sự  
thông  
sự  
chuyn tiếp thnhn kênh chuyn tiếp báo kênh gọi chuyn tiếp  
tương ứng gi/-  
không  
tương  
ng /-  
tương  
ng  
không được  
thc hin  
không được  
thc hin  
được thc  
hin  
sự  
sự  
hoàn  
sự  
thc  
tiếp hin cuc gọi  
ng /-  
chuyn tiếp chuyn  
tương ứng tương  
tiếp thành  
ng nhim  
được khác /-  
các chuyn  
vụ tương  
không  
không  
không được  
được thc thc hin  
hin  
thc hin  
sự  
-/-  
sự  
chuyn tiếp  
tương ứng  
na  
sự  
chuyn tiếp  
tương ứng  
không  
chuyn tiếp  
tương  
ng  
không được  
thc hin  
không được  
thc hin  
được thc  
hin  
Trạng thái đưc lit kê theo cả hàng và ct.  
Hàng mô tả nhng trạng thái ban đầu và nhng ct mô tả trạng thái kết thúc  
cho schuyn tiếp xác định.  
7
Nếu schuyn tiếp từ trạng thái X( hàng X) sang trạng thái Y( ct Y) được  
cho phép, thì phn tử tương ứng( ở vị trí dòng X, ct Y) được đánh đấu bng chính  
input/output của nó. Vi nhng input/output không xác định thì được đánh du bi(-).  
Như chúng ta thy, stả kiu ma trn là rt hthng, thường thường là kiu  
ma trn vuông (N x N ô) và không khó để tả. Vì thế nó được dùng 1 cách rng rãi  
để tả FSMs. Sự cân đối giúp sự tính toán và phân tích da trên bảng FSMs dễ trình  
bày.  
Tuy vy, khi có rt nhiu các ô trng, chúng ta lãng phí rt nhiu không gian bộ  
nhớ để chứa đựng N x N ô. Vì thế chúng ta sử dụng cách mô tả th3, đó là mô tả lit  
kê. Về cơ bản, 1 tp trạng thái được mô tả bng 1 danh sách và schuyn tiếp được  
cho phép thì được mô tả cũng bng 1 danh sách, bao gm các yếu t, ví dụ như cấu  
trúc {C, B, “không thnhn kênh gọi”,- } nghĩa là schuyn tiếp từ trạng thái CB  
biu thị skhông thnhn kênh gọi, được ký hiu là -. Stả kiu lit kê danh sách  
thì cht chẽ hơn nhưng cũng kém thông dụng hơn. Sso sánh gia stả kiu ma  
trn và lit kê danh sách cũng tương tự như sự so sánh gia danh sách và cu trúc dữ  
liu dãy 2 chiu trong máy tính và xử lý thông tin.  
Cả 3 cách mô tả của FSMs : đồ thị, ma trn, danh sách đều được dùng rng rãi  
trong tài liu kim th. Vì thế chúng ta nên làm quen vi cả 3 loại, có thqua sdin  
dải của các bài tp mrng.  
Chương 2. KIỂM THỬ THEO MÔ HÌNH FSMs  
2.1. Nhng rc rối cơ bản đối vi hthống được mô hình hóa bi FSMs  
Như đã đề cp trên, FSMs có thể được dùng để mô hình cả 2 trường hp: Mô  
hình hành vi hthng bên ngoài (black-box view) và thc hin chi tiết các cài đặt cụ  
th(while-box view). Trong mi cách sử dụng chúng ta có thxem xét 4 thành phn  
cơ bn: trạng thái, schuyn tiếp, input và output để kim tra nhng vn đề có thể nảy  
sinh của hthống được mô hình hóa bởi FSMs như dưới đây:  
Vn đề về trạng thái: thiếu, tha hoc li của trạng thái.  
8
Hình 2.1 Ví dvtha trng thái  
o Li trạng thái là nhng trạng thái có hành vi khó xác định.  
o Sthiếu trạng thái: tương ứng vi nhng trường hp có trạng thái hin tại  
nhưng trạng thái tiếp theo bị thiếu. Trường hợp đặc bit của thiếu trạng thái là: hệ  
thng có trng thái ban đầu là không xác định.  
o Tha trạng thái: có thể được hình dung là nhng trạng thái không được đưa ra  
hoc là trạng thái chết, đó là nhng trạng thái không có skết ni vi bt kỳ 1 trạng  
thái ban đầu nào thông qua 1 sschuyn tiếp. Nhiu schuyn tiếp cho cùng 1 input  
ng có thể được kết ni vi 1 vài trạng thái thêm. Trong trường hợp đó thì trạng thái  
hin tại ng là 1 trạng thái li bi vì hành vi của nó là khó xác định.  
Nhng vn đề vschuyn tiếp: thiếu, tha và li chuyn tiếp.  
Hình 2.2 Ví dvli schuyn tiếp  
o Thiếu schuyn tiếp: là 1 trường hợp tương ứng vi 1 trạng thái hin tại và  
đầu vào input hp lệ nhưng trạng thái tiếp theo là thiếu hoc không xác định.  
o Thêm schuyn tiếp: được liên kết vi nhiu schuyn tiếp cho cùng 1 trạng  
thái hin tại và input.  
o Li chuyn tiếp: là schuyn tiếp không mong đợi, hoc là schuyn tiếp có  
output không mong đợi.  
9
Nhng vn đề vinput: Trong skim thda trên FSMs, đặc bit coi nhng  
vn đề input như 1 phn của vn đề trạng thái và vn đề schuyn tiếp, giả định rng  
tt cả cn phải được xlý chính xác thông qua mt sschuyn tiếp trng thái ca  
FSM này. Là mt phn mrng nói chung, thm chí input không hp lệ được mong  
đợi là xử lý chính xác không gây treo hthng hoc các vn đề khác, chng hạn như  
nhng vn đề sau đây:  
o Bỏ qua các đầu vào không hp l: như đứng yên ở cùng 1 trạng thái cho  
nhng trường hp input không hp l.  
o Xử lý trc tiếp các đầu vào không hp l: chng hạn như đưa ra thông báo li,  
đi qua một sxử lý ngoại lệ và schuyn tiếp liên quan.  
Nhng vn đề voutput:  
Hình 2.3 Ví dvli output  
Chúng ta không giải quyết trc tiếp nhng vn đề voutput, đúng hơn là  
1 phn của vn đề phán xét kim thtrong nhng schuyn tiếp. Ví dụ, sự  
chuyn tiếp đưa ra những thông tin không mong đợi như thừa, thiếu, li output  
thì sc định schuyn tiếp là schuyn tiếp li.  
Vì thế trong kim thda trên FSMs, tp trung vào nhng vn đề trạng thái, vn  
đề vschuyn tiếp. Input được sử dụng chính cho scp nht cp nht và output  
được sử dụng chính cho skim tra kết quả.  
2.2. Xây dng mô hình và kim tra cho thiếu, tha trng thái và schuyn tiếp.  
Chúng ta có thxây dng FSMs và xác nhận chúng trong các bước sau:  
Bước 1: Thu thp sliu và xác nhn ngun thông tin: da trên sxử lý  
chức năng bên ngoài được mô phỏng (black-box view) hoc là trạng thái hoạt động  
chương trình bên trong được mô phỏng (while-box view) trong FSMs, có thể xác  
định các ngun thông tin khác nhau. Trong trường hp trước đây, các ngun thông  
tin bao gm nhng thông số kỹ thut sản phm bên ngoài hoc cách sử dụng mong  
đợi. Chúng đi din cho chức năng và quan hệ logic gia các tp con khác nhau ca  
10  
hoạt động và các giao din. Trong trường hp th2, thông tin bên trong sản phm  
,như là cu trúc và skết ni của nhng thành phn cài đặt trong tài liu thiết kế  
sản phm và trong mã hóa chương trình có thể được sử dụng cho quá trình xây  
dng mô hình. Đối vi nhiu sản phm hin có, trường hp kim thử và kim tra  
danh sách đã có, có thể được sử dụng như là 1 ngun thông tin rt quan trọng.  
Nhng hoạt động con cần được rút ra tnhng ngun thông tin sn có và được kết  
ni vi nhau để tạo thành FSMs.  
Bước 2: Xây dựng FSMs ban đầu da trên nhng nguồn thông tin được xác  
định trong Bước 1 trên: Chúng ta tiếp tục xem xét 4 yếu tố cơ bản: trạng thái, sự  
chuyển đổi, input và output để xây dng hthống ban đầu của FSMs. Chúng ta có thể  
cùng 1 lúc xem xét các yếu ttheo nhng bước sau đây:  
o Bước 2.1: Lit kê và xác nhn trạng thái :  
Chúng ta cn gislượng các trạng thái ở các mc có thể quản lý được t1 ít  
đến vài chục nhưng không phải hàng nghìn. Trong trường hp hthng tht scn  
được mô tả bi 1 slượng trạng thái rt ln, chúng ta có thsử dụng lng nhau hoc  
hthng FSMs có trt t, như sẽ tả chi tiết hơn trong tinh lọc mô hình dưới đây.  
o Bước 2.2: Xác nhn schuyn tiếp vi sự giúp đỡ của giá trị đầu vào:  
Vi mi 1 trạng thái, chúng ta có thxem xét tt cả nhng schuyn tiếp có thể  
có trong skết ni vi tt cả các giá trị input có th. Như đã đề cp phn 1.1, khi mà  
slượng các giá trị input có thrt ln hoc là vô hạn, chúng ta có thsử dụng sự  
phân vùng input để giúp đỡ cho quá trình xác định schuyn tiếp cụ th. Các phân  
vùng này mô tả nhng lớp tương đương với những đặc điểm của schuyn tiếp sẽ  
được thc thi. Mt li ích khác của quá trình này là xác nhn nhng trạng thái thiếu từ  
Bước 2.1, nơi mà 1 sschuyn tiếp dn đến nhng trạng thái khác nhau đã được xác  
nhn trên.  
o Bước 2.3: Xác nhn mi quan hệ của input và output: liên quan đến mi 1 sự  
chuyn tiếp riêng bit. Output này sẽ được sử dụng như 1 phn của phán xét kim thử  
để kim tra kết quả ca sthnghim.  
Bước 3: Sự làm có giá trị và tinh lọc mô hình  
Bước này bao gm 2 hoạt động kết ni. Trong quá trình làm FSMs ban đầu có  
giá tr, trạng thái hay là schuyn tiếp mi có thể đưc xác định, kết quả là stinh chế  
FSMs. Tuy nhiên, như đã đề cp trên, quy trình này không thể được tiến hành để  
tha, tc là không để có quá nhiu trạng thái hay schuyn tiếp trong FSMs. Hu quả  
là khi mà slượng ln trạng thái và schuyn tiếp cần được mô tả trong mô hình,  
chúng ta thường sử dụng lng FSMs hoc FSMs phân cp. Vi 1 số trng thái xác định  
11  
FSMs cấp cao hơn có thtrin khai FSMs cp thấp hơn. Chúng ta ng có thể  
kim tra ngun thông tin để xác định nhng trạng thái tha, thiếu như 1 phn của hoạt  
động làm mô hình có giá trị.  
Ý tưởng cơ bản để xác định trạng thái và schuyn tiếp thiếu thì tương tự như sự  
kim thda trên kim tra danh sách và sphân vùng. Ví dụ, skim tra danh sách  
da trên nhng chi tiết kỹ thut chức năng của sản phm có thể đưc dùng để kim tra  
trc tiếp nhng trạng thái thiếu, hoc nhng schuyn tiếp thiếu. Tuy nhiên, nhng  
chi tiết kỹ thut chức năng đó thường tuơng ứng vi nhng trạng thái và schuyn  
tiếp mc cao, nhng trạng thái đó cần được tinh chế đến cùng 1 mc của nhng  
trạng thái và schuyn tiếp đạt được bi FSMs. Vi nhng mc thấp hơn của FSMs,  
thông tin chi tiết sản phm hoc mã hóa chương trình thường được dùng để giúp xác  
nhn nhng trạng thái và chuyn tiếp thiếu.  
Kim tra nhng trạng thái và schuyn tiếp tha có thể làm theo cùng 1 thủ tục  
được làm cho có giá trị chéo vi các ngun thông tin. Tuy nhiên, skiểm tra đó  
thường khó hơn rất nhiu so vi sự xác nhn nhng trạng thái thiếu, tương tự như  
trường hp yêu cu khả năng truy vết cn thiết của sản phm. Nếu mọi trạng thái và  
mọi schuyn tiếp có thể được truy vết lại nhng nguồn thông tin tương ứng vi sự  
tạo ra chúng, thì skiểm tra đó có thế được hoàn thành 1 cách dễ dàng. Tuy nhiên, 1  
trạng thái không nên mong đợi hoàn thành tài liu kết hp vi tt cả các trạng thái và  
schuyển đổi trong FSMs. Điều đó làm cho quá trình xác nhn nhng trạng thái và sự  
chuyển đổi tha rt khó khăn nếu chúng ta không biết cái gì dn đến sự tạo thành  
chúng ở trạng thái ban đầu, vị trí ban đầu. Để thay thế cho thủ tục của skim tra  
nhng trạng thái và schuyn tiếp tha này, chúng ta có ththc hin các phân tích đã  
được xác định, nhng chi tiết riêng bit không thể xác định hoc 1 snhng trạng thái  
không thể xác định. Thường thì nhng trạng thái không thể xác định này mô tả nhng  
trạng thái tha hoc 1 vài rc ri khác. Nhng thut toán phân tích có ththc hin  
được tnhng tác giả (Deo 1974, Knuth 1973) và nhng công cụ có liên quan có thể  
được sử dụng để thc hin nhng phân tích đó.  
Ngoài những phương pháp kim tra nhng trạng thái và schuyn tiếp thiếu,  
tha, thì đôi khi nó cũng có thể được kim tra cùng vi nhng trạng thái, schuyn  
tiếp không chính xác. Để thc skim tra nhng trạng thái và schuyn tiếp, chúng ta  
cn bắt đầu từ trạng thái ban đầu và bắt đầu từ trạng thái trung gian hin tại được lưu  
gitrong 1 vài cách thc, và sau đó là theo 1 loạt các schuyn tiếp để kim tra  
nhng trạng thái đúng mà chúng ta đã cgắng đạt được và để kim tra nhng chuyn  
tiếp đúng mà chúng ta cgng làm theo.  
12  
2.3. Skim thcho nhng trạng thái và schuyn tiếp  
Các thnghim nói chung da trên FSMs và skim tra riêng của nhng trạng  
thái và schuyn tiếp đúng có thể được xử lý như 2 vn đề riêng bit:  
Trạng thái hay là nút đưa ra thông tin  
Chúng ta cần đảm bảo rng mi 1 trng thái đều có thể đạt ti và truy cp của 1  
strường hp thnghim. Đó là nhng trạng thái và vn đề xuyên sut trong học  
thuyết đồ thị (Deo 1974, Knuth 1974), kết quả là rt nhiu thut toán có thể đi qua các  
nút đồ thị được dùng để giúp chúng ta phát trin các trường hp thnghim.  
Schuyn tiếp và kết nối thông tin đưa ra  
Chúng ta cần đảm bảo rng mi 1 skết ni hoc schuyn tiếp thì đều được  
làm rõ, bao phủ bi 1 strường hp thnghim. Mc du vn đề này ng có thể  
được xử lý như là 1 kết ni có thvượt qua trong thuyết đồ thị, sthnghim thông  
tin đưa ra trạng thái trên đã giúp chúng ta đạt được nhng trạng thái có khả năng.  
Trong nlực đạt ti trng thái cth, mỗi trưng hp cthvbn  
cht là 1 lot các giá trinput giúp chúng ta có thto ra các schuyn tiếp  
ttrạng thái ban đầu đến trng thái muốn đt ti bng 1 loạt các bước nhy  
qua các trng thái trung gian. Có thlà mỗi 1 trường hp thnghim có khả  
năng giúp chúng ta thấy được tt ccác trạng thái. Do đó mà nhận được  
thông tin đưa ra trạng thái hoàn thành.  
Tuy vy, chúng ta cn nhiều hơn các trường hp kim thử ở mi  
tình hung bi vì đó có thlà nhng trạng thái ban đu, trng thái kết thúc  
hay 1 chui các schuyn tiếp phc tp. Kết ni ttrạng thái ban đầu đến 1  
trng thái cth. Trong hu hết các hthống được mô hình hóa bFSMs,  
nhng trạng thái ban đầu là nhng trng thái không có skết nối đu vào và  
nhng trng thái kết thúc là nhng trng thái không có skết nối đu ra.  
Trong tình huống như vậy, bt klà trạng thái ban đầu hay trng thái kết  
thúc, chúng ta cn càng nhiều các trường hp kim thcàng tt.  
Ttrạng thái ban đầu, trng thái tiếp theo tđược quyết đnh bi  
input. Vì thế, schuyn tiếp trạng thái bước 1 có thể xem như là 1 sự phân  
loại đu tiên các input vào các lớp tương đương và sau đó theo 1 trạng thái  
cthtsphân loại đó.  
Chương3.DÒNGĐIỀUKHIỂN, PHTHUỘCDLIỆU, SKIỂMTHTƯƠNG  
TÁC  
Từ quan điểm vcu trúc hay sự cài đặt, mt hthng phn mềm được to thành  
từ các thành phần tương tác, các mô-đun, hoặc các hthng con. Nó được tạo ra để  
hướng tới đối tượng là khách hàng, hthng tng thbao gm các chức năng liên kết  
13  
hoc các hoạt động. Máy trạng thái hu hn (FSMs) và các mô hình sử dụng có liên  
quan mà tôi đã gii thiu ở chương trước có thể được sdụng để mô hình hóa và thử  
nghim các chức năng hệ thng có liên hvi nhau, si đặt, và cách sdng có liên  
quan. Tôi tp trung vào các trạng thái, schuyn tiếp, và cách sdng có liên quan  
chkhông chú ý nhiu đến sự ảnh hưởng qua lại ngoại trnhng skết nối đơn giản.  
Trong phn này, tôi gii thiu các kthut thnghiệm để giải quyết sự ảnh hưởng qua  
li liên hp vượt ra ngoài nhng skết ni bước 1 trong FSMS. Hai loi chính ca sự  
nh hưởng qua lại này là:  
Sự tương tác dọc theo một đường dn thi hành, nơi mà các hoạt động sau bị  
nh hưởng bi toàn bộ các hoạt động trước đó.  
Những tương tác cụ thgia các mc dliu trong quy trình thc hin.  
Skim thử của sự tương tác trên thường được gọi ln lượt là: skim thử  
ng điều khin (CFT) và skim thử dòng dliêu (DFT). Nhng kthut này là  
nhng kỹ thut white-box truyn thng áp dụng cho vic kim thử dòng chức năng các  
mc của hthng, sự phụ thuc dliu và sự tương tác có liên quan.  
3.1. Sự kiểm thử dòng điều khiển cơ bản  
Skim thử dòng điều khin(CFT) là smrng mt cách tnhiên và trc tiếp  
của skim thFSM vi mt loại chuyên dụng của FSMs gọi là đồ thị dòng điều  
khin (CFGs) và tp trung vào hoàn thành đường dn thc thi thay vì trạng thái hoc  
các liên kết .  
3.1.1Khái niệm chung  
FSMs phân bit các dạng: xlý thông tin có liên quan đến các schuyn tiếp và  
dạng xử lý thông tin liên quan ti các trạng thái. Đồ thng điều khin (CFGs) có thể  
được coi là trường hợp đặc bit ca loi thhai, vi các yếu tvà các đặc điểm quy  
định như sau:  
c điểm nút (Nodes): Mi nút trong CFG tương ứng vi một đơn vị xlý  
thông tin (white-box view) hoc khối lượng công việc được xlý bi các phn mm  
(black-box view). Các nút trong CFGs tương ứng vi các trạng thái trong FSMs.  
Các liên kết (Links): Mi link trong mt CFG chỉ đơn giản là đại din cho mi  
quan hệ "được theo sau bi": Nếu chúng ta có mt link trc tiếp tnút A ti nút B, nó  
được xem như là A được theo sau bi B, hoặc B sau A. Các link trong CFGs tương  
ng vi các schuyn tiếp trong FSMs, nhưng ở CFGs thì sxử lý hay khi lượng  
công việc đưc xử lý không được kết ni vi các link. Các link trùng lp thì không cn  
14  
thiết CFGs bi vì không cn thiết để xác định rõ mi quan hệ đơn giản “được theo  
sau bi” thêm mt ln na.  
Các nút vào (initial/entry) và các nút ra (final/exit): Các nút vào là các nút mà  
tại đó bắt đầu sthc thi của chương trình được gi. Các nút ra là các nút mà tại đó kết  
thúc sthực thi chương trình được gọi. Trong CFT, chyếu là xử lý với các chương  
trình thích hp hoc các chức năng mà chỉ có duy nht mt nút vào và mt nút ra.  
Các liên kết ngoài (Outlinks): Mt liên kết mà bt ngun tmt nút thì được  
gi là một outlink đi vi nút đó. Khi có nhiu outlink tmt nút, thì mi mt outlink  
được dán nhãn bằng điều kin cụ thể của nó. Sthc thi thc tế sẽ chỉ làm theo mt  
trong các outlink đó.  
Các liên kết trong (Inlinks): Mt liên kết mà kết thúc tại mt nút thì được gi  
là một inlink đối với nút đó. Khi có nhiu inlink ti mt nút, thì sthc thi thc tế sẽ  
chlàm theo mt trong các inlink bi vì điều kin của outlink phía trên đảm bo rng  
sthc thi của chương trình schlàm theo mt liên kết ti mt thời điểm.  
Các nút quyết định (decision node), nút mi ni (junction node), nút xử lý  
(processing node): Mt nút mà liên kết vi nhiu outlink thì được gi là mt nút quyết định  
bi vì tại nút đó hình thành quyết định la chọn một outlink để làm theo trong sthc thi  
thc tế. Nó cũng được gi là mt nút nhánh. Tương tự, mt nút mà liên kết vi nhiu inlink  
thì được gi là mt nút mi ni. Mt nút mà không phi là mt nút quyết định và cũng  
không phải là mt nút mi ni thì nó được gi là mt nút xử lý nó thường tương ứng vi  
mt squá trình xử lý bên trong hay bên ngoài. Có hai trường hợp đặc bit tại các nút vào:  
mt là không có inlink và nút ra, hai là không có outlink. Tuy nhiên, chúng vẫn được xếp là  
các nút xử lý, bi vì chúng được kết ni vi mt vài quá trình xử lý ban đầu hay kết thúc.  
Để rõ ràng hơn, chúng ta chia các nút thành 3 loại vi sxử lý thông tin được kết ni vi  
các nút xử lý và vi 1 nút mi nối tương ứng vi mi nút nhánh.  
Đường dn Path: Một đường dn hoàn chỉnh, hoặc đơn giản là một đường dn  
bắt đầu tmt nút vào, theo sau là mt loạt các link và duyt qua mt loạt các nút  
trung gian, cui cùng kết thúc tại điểm ra. Vì không cho phép có link trùng lp, chúng  
ta chỉ có thể xác định đường dn bi mt chui các nút đưc duyt qua.  
Phân đoạn Segment: Mt path segment hay mt segment là mt phn ca mt  
path hoàn chỉnh, nơi nút đầu tiên có thkhông phải là nút vào và nút cui cùng có thể  
không phải là nút ra.  
15  
Vòng lp (Loop): Mt path hay mt segment cha mt loop nếu mt snút  
trong path hay segment được duyt lại.  
Hình 2.1 là mt ví dụ vCFG vi các nút xlý P1, P2, P3, P4, P5, P6, P7; các  
nút quyết định C1, C2, C3 ; và các nút mi ni J1, J2, J3. CFG cũng chia thành ba  
phn khác nhau GI, G2,G3, vi mi phần được hin thbên trong mt hình chnht.  
sbiến đổi khác của CFG thường được sử dụng trong lý thuyết và thc hành, chúng  
ta có thchp J1 và C2 thành mt nút; J2, J3, P7 thành mt nút.  
Hình 2.1 Đồ thdòng điều khin CFT  
Ý tưởng chủ đạo ca kim thdòng điều khin (CFT) là la chọn đường dn và  
cp nht chúng bng cách gán nhng giá trị input tương ứng.  
3.1.2. Xây dựng mô hình  
Chú ý rng Hình 2.1 tương tự như các biểu đồ dòng thường được sdng trong  
phát trin phn mm. Trong thc tế, biểu đồ dòng như thế là mt trong nhng ngun  
16  
thông tin quan trng cho chúng ta xây dng CFGs và để thc hin CFT. Một điểm  
khác bit nhgia CFGs và biểu đồ dòng là: các loi khác nhau của các nút được biu  
din bng các ký hiu khác nhau trong các biểu đồ dòng, nhưng chúng ta thường  
không sdng các ký hiu khác nhau trong CFGs. Trong trường hp không có các  
biểu đồ dòng, phn code hoc phn thiết kế có thlà các ngun thông tin cho sxây  
dng CFG. Các CFGs xây dng theo cách này là mô hình kim thwhite-box bi vì  
thông tin cài đặt sn phẩm được sdụng như sau:  
Các nút xử lý thường tương ứng vi các nhim v, li gi hàm, hoc các li  
gọi thtc.  
Các nút quyết định hoc các nút nhánh thường tương ứng câu lnh nhánh như  
nhánh nhị phân "if-then-else" hoc "if-then" (rng "else"), hoc các nhánh khác như là  
"switch-case". Mỗi nhánh đi ra sẽ được đánh dấu bởi điều kin cthca nó. Ví d,  
đối vi nhánh nhị phân, nó thường được đánh dấu bng giá trchân lý (T / F, hoc  
True/False) của các điều kin liên quan. Đối vi phân nhánh đa chiều, điều kin cthể  
hơn sẽ được đánh dấu.  
Câu lnh Loop tương ứng vi mt loại đc bit ca các nút nhánh.  
Các nút vào và các nút ra thường dễ xác định, tương ứng vi câu lnh đầu tiên  
và câu lnh cui cùng hoc đơn vị xử lý trong phn code hoc các đồ thị dòng tương  
ng.  
Mt trong nhng vấn đề vi thtc xây dng CFG trên là rt nhiu các nút sẽ  
được sdng trong các CFG. Tuy nhiên, vì CFG được sdụng để kim thử đường  
dn, chúng ta có thnhóm mt scác nút vi nhau, chng hạn như một snút xlý  
tun t, hình thành nhng super-node nếu như nhóm sẽ không nh hưởng đến nhng  
đường dn thi hành.  
Chú ý rng vic sử dụng “goto” không được bao gm trong thủ tục xây dng  
CFG trên. Vic sử dụng tdo “goto” sẽ to ra những chương trình rt xấu tương ứng  
vi trường hp CFGs rt khó được kim th. Đó là mt trong nhng nguyên nhân  
chính khiến “goto” bị coi là có hại. May mn là vi những chương trình cu trúc và  
những chương trình kế tha nó, chương trình hướng đối tượng, được sử dụng rng rãi  
trong phát trin hướng đối tượng hin nay, chúng ta không gp phải quá nhiu “goto”.  
Các cu trúc đưc sử dng rng rãi là các chui mt xích liên tục, như là gia các phn  
G1 và G2 trong Hinh 2.1; chui lồng nhau như là G3 lng trong G2 trong Hình 2.1.  
Tt nhiên nhiu chui mt xích hay nhiu cp lng nhau có thể đưc sử dng trong các  
chương trình và phản ánh trong CFGs của nó.  
17  
trong  
CFGs:  
L1: input(a,  
b, c);  
L2: d b*b  
– 4*a*c;  
L3: if (d>0)  
then  
L4: r 2  
L5: else-if  
(d=0) then  
L6: r 1  
L7:  
else-if  
(d<0) then  
L8: r 0  
L9:  
output(r);  
Hình 2.2 Ví dụ về chương trình và đồ thị dòng điều khin của nó.  
Hình 2.2 đưa ra một chương trình giải mã để xác định slượng các nghim của  
phương trình ax2 + bx + c =0. Mi dòng được đánh sriêng. Chúng ra sử dụng 3  
nhánh đưc thc hin bi “if -else-if -else-if”. Chúng ta chp các đưng L3, L5, L7 lại  
vi nhau bi vì chúng xác định mt cách cơ bản 1 nhánh 3 đường, vi nút nhánh đưc  
đánh du bằng điều kin d=?. Đường L1 và L2 cũng được chp lại vi nhau vì câu  
lnh liên tục đó không nh hưởng đến dòng điều khin. Ngoài ra, nút mi ni J1 được  
khai báo để đánh du skết ni.  
CFGs cũng có thể nhận được từ các chi tiết kỹ thut chức năng bên ngoài hoc từ  
stả kịch bản sử dụng của khách hàng, do đó CFGs cũng có thể được coi như là  
18  
kim thblack-box. Chúng ta có thtrc tiếp điều chnh và sửa đổi biểu đồ dòng cho  
các chi tiết kthut sn phm hoc các bản mô tả kịch bản sử dụng vào trong CFGs.  
Nếu biểu đồ dòng không có sn, chúng ta cn trích xut thông tin từ các chi tiết kỹ  
thut hay các bản mô tả đó bng cách kim tra cu trúc và các mi quan hệ của chúng  
như sau:  
Các nút xử lý thường tương ứng vi mt số hành động được mô tả, thường  
liên quan ti các cm từ như "làm / nhập / tính toán" cái gì đó.  
Các nút nhánh thường liên quan ti các quyết đnh hay c điu kin.  
Các nút vào và các nút ra thường tương ứng vi các mục đầu tiên và các mục  
cui cùng trong các chi tiết kthut hoc các bản mô t, mc dù chúng cũng thường  
được chỉ rõ.  
d, CFG trong hình 2.2 có thhình dung được stả sn phm:  
Để giải quyết phương trình bc 2 : ax2 + bx + c =0, người sử dụng cn nhp  
các tham s.  
Nếu b2 - 4ac < 0, không có nghim sthc và người sử dụng sẽ được thông báo  
Nếu b2 - 4ac = 0, nghim sẽ là: r = -b/(2a) sẽ đưc tính ra kết quả.  
Nếu b2 - 4ac > 0, nghim sẽ là: r =  
sẽ đưc tính ra kết quả.  
Chú ý rng mc dù các nghim được tính toán ở đây chỉ thay thế cho snghim  
ở trong chương trình hình 2.2, các CFG kết qusging nhau trong cu trúc. Sự khác  
bit duy nht có thể là sxử lý độc lp liên quan vi các nút xử lý.  
3.1.3. Sla chọn đường dn  
Chúng ta tiếp tục gii thiu kỹ năng để la chọn 1 cách hthng các đường dn  
cho cu trúc CFGs. Kỹ năng bao gồm 2 bước cơ bản:  
1. Phân tích CFG.  
2. Định nghĩa đường dn tdưới lên.  
Trong khi làm điều này, người ta tn dng mt số đặc tính quan trng vcu trúc  
CFGs tlý thuyết đồ thvà lý thuyết ngôn nglp trình. Cu trúc CFG là mt cu trúc  
mà chỉ có chui mt xích liên tục và chui lng nhau, chỉ có 1 nút vào và chỉ có1 nút  
ra. Cu trúc CFGs có thể được phân tích thành các đồ thị con sub-CFGs, và các sub-  
CFGs có thể được kết ni thông qua chui mt xích liên tục hoc chui lng nhau.  
19  
Nếu mt sub-CFGs không thphân tích tiếp thì nó được coi là prime CFG, tc là CFG  
hoàn hảo. Các CFG cp bậc được sinh ra tsxử lý đó được gọi là sphân tích CFG  
nguyên thủy. Ví dụ, CFG trong hình 2.2 có thphân tích thành G = G1o G2 (-, G3),  
vi G3 lng trong G2, và G1 móc ni vi G2. G2 (-, G3) chỉ ra rng G3 lng trong  
nhánh phải của G2 mà trong đồ thị thì là nhánh F, vi vic sử dụng “-” chỉ ra rng  
không có sub-CFGs nào lng vào nhánh trái T của G2. Còn G2 (G3) chỉ ra rng G3  
được lng vào trong G2 nhưng không biết lng vào nhánh trái hay phải của G2.  
Đường biên cho G1, G2, G3 trong hình 2.1 được chỉ rõ bng hình chnht nét đứt.  
Vi sphân tích CFG trên, tôi có ththc hiện định nghĩa đường dn từ dưới  
lên. Khi 2 CFGs, GI với đường dn M và G2 với đường dn N, kết hp thành mt  
CFG cấp cao hơn, chúng ta có thể xác định đường dẫn như sau:  
Vi chui mt xích tun t, G = G1o G2, thì G sẽ có M x N đường dn. Nghĩa  
là mỗi đường dn trong M đường luôn có thni vi 1 đường dn trong N đường dn.  
Và tt cả c đường dẫn đó tạo thành đường dn trong G. Ví dụ chui mt xích của 2  
FGs hoàn hảo dạng nhị phân (mi cái có 2 đường dẫn tương ứng vi giá trị logic T  
hoc F cho các điu kin của nó) có thcung cp 4 đường dn: TT, TF, FT, FF.  
Vi chui lng nhau, G = G1 (G2), thì G scó M + N - 1 đưng dn. Nghĩa là,  
một đường dn trong đường dn G1 sẽ được thay thế bởi N đường dn G2. Ví d,  
chui lng nhau trong CFGs hoàn hảo dạng nhị phân ở hình 2.2 là G2 (-, G3) có 3  
đường dn là: T, FT, FF, đúng theo công thc 2+2-1=3 đường dn.  
Sxử lý đó có thể được tiến hành cho mi mức độ, bng cách bắt đầu vi các  
CFGs hoàn hảo và tiếp tc vi skết hp cấp cao hơn, cho đến khi chúng ta xác  
định đường dẫn đầy đủ cho toàn bCFG. Trong ví dtrên ca hình 2.1, chúng ta có  
thlàm theo các thtc ở trên để chọn đưng dn. CFG Các đã được phân tích, vi G  
= G1o G2 (-, G3), Chúng ta sau đó có thể tập trung vào bước thhai như sau:  
Đầu tiên chúng ta xác định 2 đường dn trong G3, tương ứng vi C3=T và  
C3=F.  
Tiếp theo, đường dn lng G3 trong G2 tạo ra 3 đường dn, tương ứng vi  
C2=T; C2=F, C3=T; C2=F, C3=F. Chúng ta có thbiu thị đường dẫn như T-, FT, FF.  
Cui cùng chúng ta kết hp G2 (G3) với G1 để tạo ra 6 đường dn: TT-, TFT,  
TFF, FT-, FFT, FFF.  
20  
3.1.4.Cập nhật đường dẫn  
Chìa khóa để để làm cp nhật đường dn là các nút quyết định hay các nút nhánh  
hay các điều kin kết ni gia các nút. Nếu tt cả các điều kiện đó độc lp vi nhau,  
mọi đường dẫn được xác định trên có thể được cp nht bng cách la chọn các giá  
trị thay đổi để thỏa mãn các điều kin cụ thcho mỗi đường dn. Ví dụ, nếu nhng  
biến logic được sử dụng cho CFG trong hình 2.1, thì 6 đường dn TT-, TFT, TFF, FT-,  
FFT, FFF được cp nht mt cách trc tiếp. Tương tự, nếu C1 (x>0), C2 (y<1000),  
C3 (z=10), sau đó chúng ta có thể chọn các giá trị cho x, y, z để cp nht các điều  
kiện tương ứng. Ví dụ, cho đường dn TFT, chúng ta có thcp nht bng cách cho  
x=1, y=1001,z=10.  
Nếu các điều kin liên quan đến nhau chúng ta cn phải phân ch sâu hơn để loại  
bỏ các đường dn không thể xảy ra. Ví d, vi chui mt xích liên tục ca hai sub-  
CFG dạng nhị phân vi các điều kin trái ngược nhau C1 = - C2, chúng ta có thloi  
bỏ 2 trong 4 đường dn TT, TF, FT, FF cho chúng ta 2 đường dn là TF và FT, bi vì  
TT và FF có thể không được cp nht.  
Mt ví dkhác, hãy xem xét chui mt xích liên tục gm 2 sub-CFG vi C1 ≡  
(x>0) và C2 ≡ (x <100). Hai điều kiện được liên kết thông qua biến schung x. Trong  
trường hợp này, đưng dn chung FF có thể bị loi bvì sự trái ngược dưới đây:  
(C1 = F) ˄ (C2 = F)  
≡ ¬(x>0) ˄ ¬(x<100)  
≡ (x≤0) ˄ (x≥100)  
Ø  
Điều này có nghĩa là 1 bx thỏa mãn điều kin trên là tp rng (Ø)  
3.1.5. Kiểm tra vòng lặp, cách sử dụng CFT và các vấn đề khác  
3.1.5.1. Các kiểu vòng lặp khác nhau và các CFG tương ứng  
Các vòng lp liên quan vi các thtc lặp đi lặp li ca xlý thông tin, hoc  
tương ứng vi cài đặt thc tế (white-box view) hoc các chức năng định hướng sử  
dụng (black-box view). Như đã đề cp trên, nếu một đưng dn xuyên sut mt CFG  
chứa đựng mt hay nhiu nút đi qua nhiều hơn một ln, thì mt vòng lặp được tạo  
thành. Ví d, nếu chúng ta có một đường dn ABCDBE, thì đường dn con BCDB sẽ  
21  
tạo thành một đường dn vòng. Các đường dn vòng ng có thể được tạo thành dễ  
dàng thông qua các đặc điểm ngôn ngữ chương trình, chng hạn như đệ quy. Cũng có  
thto thành các vòng ngm thông qua và bước nhảy “goto”. Mt vòng lp có thể  
được xác định như sau:  
Phải có thân của đường dn vòng, nơi mà hoàn thin mt sthứ và được nhc  
lại mt vài ln. Nó thường được mô tả bi 1 nút hoc 1 sCFG lng nhau bên trong  
vòng lp..  
Phải có mt sskim soát vòng lp để đưa ra các quyết định vòng lp để  
thc hin thân vòng lp hoc thoát khỏi vòng lp. Nhng skim soát vòng lp này có  
thể được sử dụng nhiu ln cho mi slp lại của vòng lp để đưa ra quyết định dưới  
môi trường động hin thi. Nó thường được đại din bi 1 nút có liên quan đến vị ngữ  
được xác định bi 1 vài biến điều khin – là các biến động được sử dụng để đưa ra  
quyết đnh vòng lp.  
Phải có 1 vài nút vào và nút ra vòng lp. Nhng nút mà chúng ta thường giải  
quyết trong chương trình cu trúc có 1 điểm vào đơn và 1 điểm ra đơn, ví dụ vòng lp  
“while” và vòng lp “for”. Ngoài ra, trong rt nhiu loại vòng lặp đó thì các nút vào,  
các nút ra và các nút điều khin vòng lp là ging nhau. Ngoại trừ các vòng lp  
“repeat-until” và các vòng lp không cu trúc sử dụng “goto” hoc không sử dụng  
“goto”.  
Hai hoc nhiu vòng lp có thể được kết hp thông qua chui lng nhau và  
chui mt xích liên tục. Mc dù skết hp không có cu trúc sdng “goto” là được  
dùng trong nhiu ngôn nglp trình, song chúng không được khuyến khích sử dụng và  
thường bị hn chế tối đa.  
Đường dn vòng thông dụng nht trong các ngôn nglp trình là “while” và “for”  
“while (C) do { B }”, vi C là điều kin của vòng lp, B là thân vòng lp.  
Điểm vào ng là điểm ra.  
“for (I ; C ; U) do { B }”, vi I là giá trị khi tạo sau khi bắt đầu vòng lp, U  
là giá trị cp nht vòng lp sau mi ln lp lại, C là điều kin của vòng lp, B là thân  
vòng lp. Điểm vào ng là điểm ra của vòng lp.  
Mt trong nhng câu hỏi cơ bản và quan trọng để thnghim là liu chúng ta có  
thể xác định sln lp li cho mt vòng lp trước khi các hoạt động kim tra din ra  
hay không. Nếu có, nó được gi là mt vòng lp xác định (điển hình là vòng lp  
“for”), nếu không nó là vòng lp không xác định (điển hình là vòng lp “while”). Các  
22  
vòng lp xác định thường được dùng để xlý mt sdliu hoc các thc th, chng  
hạn như thực hin mt vài xử lý cho mi phn tca mt mảng có kích thước cố định.  
3.1.5.2. Vấn đề của vòng lặp  
Mi lần chúng ta đi qua một vòng lp, vi mt số lượng lp li cụ th, chúng ta  
lại có một đường dn riêng bit. Khi chúng ta kết hp hai vòng lp thành 1 chui mt  
xích liên tục, số lượng các đường dn riêng bit có thnhn được bng cách nhân các  
đường dn riêng bit cho mi vòng lp, trong cùng mt cách chúng ta ni 2 CFGs có  
vòng lp tdo. Tuy nhiên, slượng có thcó ca các ln lp li cho mt vòng lp  
thường lớn. Do đó, sự kết hp của chúng tạo ra mt số lượng lớn hơn các tng đường  
dn.  
Vic lng 2 vòng lp thì khác vi vic lng 2 CFG có vòng lp tdo: Kết quả là  
slượng các đường dn không còn là M + N -1, nhưng là slượng lớn hơn nhiều do  
slp lại. Và slượng tng cng các đường dẫn CFG được xác định bi công thc:  
(vi  
đường dẫn đưc kết ni)  
Nếu N, M là ln thì tổng đường dn sẽ là rt ln. Do đó, ta phải có các bin pháp  
thay thế. Ta có thda trên kinh nghim và squan sát.  
3.2.Kiểm thử dòng dữ liệu và phụ thuộc dữ liệu  
Trong scp nhật các trường hp kim thử CFT, chúng ta đã gp phi nhng  
khó khăn khi dùng chung biến thay vì các hng số có liên quan đến các điểm quyết  
định, sphân tích các giá trbiến số đó đã được thc hiện để loi trừ các đường dn  
không thể xác định. Thc tế các quyết định có tương quan không nhất thiết bao gm  
các biến sdùng chung.  
3.2.1. Các khái niệm cơ bản. Sự hoạt động của dữ liệu phụ thuộc dữ liệu  
Ssdng ca các biến số hay thư mục dliu trong các quyết định CFG được  
gi là P-use trong phân tích phthuc dliệu để chrõ cách sdng ca nó trong các  
thuc tính hoặc các điều kin. Mt loi sdụng khác được gi là C-use, hay là cách sử  
dng có dùng máy tính. Mt cách hiểu thông thường ca các tình hung sdng trên  
là các biến số đó hay dữ liệu đó phải được xác định sớm hơn. Vì thế chúng ta có thể  
thloi và nhận được các giá trca nó, và sdng vào các mục đích khác nhau.  
Chúng ta có thể xác định shoạt đng ca các dliệu đó như sau:  
23  
Sự xác định dliu thông qua shình thành, giá trị ban đầu, nhim vmt  
cách rõ ràng thông hay trong mt số trường hp thông qua chiều hướng tác động như  
là: Vtrí bnhớ được chia s, hộp thư, các tham số đọc/viết....Và thường được viết tt  
là D-operation hay D. Đặc tính cơ bản ca D là sphá hủy, điếu đó nghĩa là bt kcái  
được lưu trữ trong các thư mục dliệu đều bxóa bsau khi hoạt động và không  
thkhôi phc trkhi sdng các kthuật đc bit.  
Cách sdng dliệu trong máy tính thông thường hay trong tính cht, thông  
thường có liên quan đến C-use hay P-use. C2 cách sdụng trên đều được gi chung  
là U-operation hay ngn gọn là U. Đặc tính cơ bản ca U là không phá hy, nghĩa là  
giá trcủa các thư mục dliu svn còn tn ti sau khi nó hoạt động. Tuy nhiên,  
cách sdng loi P của thư mục dliu vtính cht có thkhiến các đường dn hot  
động được la chn và theo sau. Cách sdng loi C của các thư mục dliệu thường  
được diến ra trên các mu biến shay hng số trong máy tính hay như các tham số  
trong các chức năng của chương trình. Cách sdụng C đó thường ảnh hưởng đến các  
kết qumáy tính vi mt vài kết qubiến thiên được xác nhn.  
Vi sự định nghĩa về 2 cách sdng ca xlý dliu, chúng ta có thxem xét  
tiếp các mi quan hệ như sau.  
Mi quan hD-U: đây là trường hp sdng thông dng. Khi 1 dliệu được  
sdng, chúng ta cn nhn được giá trcủa nó được xác nhận trước đó. Hầu hết các  
phân tích phthuc dliu (DDA) và kim thdòng dliu (DFT) tp trung vào cách  
sdng này.  
Mi quan hD-D: mi quan hệ này được din tả các trường hp quá ti. Khi  
các hoạt động kiểu D trước xóa bhết nhng gì chứa đựng trước đó. Một trường hp  
đặc bit là khi quan hD-D tn ti mà không có hoạt động U gia, nghĩa là một thư  
mc dliệu được xác định li cà không có sự xác định nào trước đó được sdng.  
Tình hung này din t1 vài li phn mm, hoc ít ra là sthiếu hiu qubi vì sự  
xác định trước đó đều không được sdng.  
Mi quan hU-U: không có sự ảnh hưởng hay phthuc dliu vì tính tự  
nhiên ca hoạt động kiu U không phá hy. Vì thế, nhng mi quan hnày không  
được quan tâm trong DDA và DFT. Như chúng ta đã đề cập trước đây, những skết  
ni này có thể ảnh hưởng ti khả năng có thể thc hiện được các đường dn hoạt đng  
khác nhau. Tuy nhiên, như chúng ta sẽ thy, chúng ta có thtp trung vào mi quan hệ  
D-U tương ứng cho mi một trường hp sdụng để nhận ra các đường dn khác nhau  
24  
trong CFT hay trong các phn khác nhau ca DFT, các quan hệ đó hoàn toàn đảm  
nhiệm các điều kiện có tương quan với nhau.  
VD 3.1 Đồ thphthuc dliu (DDG): VD vsự định nghĩa dữ liu thông qua  
nhim v.  
Quan hU-D: được gi là schng sdng. Tình hung thú vvi quan hnày  
là các thư mục dliệu được sdụng mà chưa từng được xác định trước đó (không có  
hoạt động dạng D đi trước hoạt động dạng U đầu tiên), điều đó chỉ xy ra 1 li ca  
phn mm.  
Vì thế, vi snhn dạng cơ bản đó và sự phân tích ca skết hp hoạt động ca  
dliu, mt vài vấn đề có thxy ra có thnhn ra ngay lp tc. Vi sphân tích phụ  
thuc dliệu (DDA) được sdng trong kim thdòng điều khin dliu (DFT),  
chúng ta tp trung vào quan hD-U và các vấn đề khác có liên quan.  
3.2.2. Những vấn đề cơ bản của DFT va DDG  
Ý tưởng chính ca skim thdòng điều khin dliu (DFT) là tiến hành kim  
thschuyn giao chính xác ca phthuc dliu trong sut quá trình hoạt động ca  
chương trình. Tkhi hoạt động của chương trình theo 1 mô hình hoạt động liên tiếp,  
chúng ta có ththy sphthuc dliệu như là 1 phần được gn vào trong dòng dữ  
liệu, nơi mà dòng dliệu là 1 cơ cấu mà dliu có thể được chuyn ti dc theo sự  
hoạt đng của chương trình. Các trường hp kim thcó thnhận đưc tnhng phân  
tích phthuc dliu (DDA), vi stp trung vào các mi quan hD-U, và mô hình  
có liên quan mà chúng ta gọi là đthphthuc dliu (DDG). Trong hthng DDG,  
mỗi 1 đim mô tsự xác định của 1 thư mục dliệu, như là 1 biến s, 1 hng shay là  
1 cu trúc dliệu kép. Các đường kết ni trong hthng DDG mô tmi quan hD-  
U, hay “được sdng bởi”. Điều đó có nghĩa là, nếu chúng ta có 1 đưng kết ni tA  
25  
đến B, chúng ta phân tích nó như 1 dữ liệu được xác định ở trong A mà được sdng  
để xác nhn trong B. Ví dụ như sự thhin nhim v“Z X + Y” ví dtrên có  
thể xác định cho X, Y (C-use) đnhm mục đích xác đnh Z. Sphân tích ca 1 chui  
các quan hD-U được sdụng để xác định các thư mục dliu muộn hơn, có thể  
được tiến hành để xác nhn sự xác định của thư mục sớm hơn.  
DFT, chúng ta tp trung trc tiếp vào phthuc dliu nhận được hthng  
DDG thay thế cho sliên tiếp có sdng máy tính hay các dòng điều khin CFT.  
Một điều chng trng DFT thì sát hơn trong việc kim thtính cht ca máy tính,  
bi vì nhng sphthuc dliệu đó ảnh hưởng trc tiếp đến kết qumáy tính, trong  
khi đó, các dãy hoc các dòng điều khin ở CFTđược sdng chính do shn chế ca  
các dãy máy móc ca chúng ta và các ngôn ngữ chương trình được sdng (nếu  
không, rt nhiu máy tính có thể được sdụng tương tự nhau). Mt khác, sliên tc  
trong các sthc hiện chương trình có thể được thay đổi mà không ảnh hưởng đến kết  
qu. Vì thế, trong sthc hin DDA và DFT, chúng ta tách riêng các sphthuc dữ  
liu dễ thay đổi vi dãy hoạt động liên tc của chương trình để tp trung vào sự  
chuyn giao chính xác của các thư mục dliu và các sphthuc ca nó, và không  
hn chế các kết qutính toán chính xác.  
Tương tự các kthut kim thmang tính hthng khác, chúng ta tp trung vào  
khâu chun bkim thử cho DFT, theo các bước:  
Xây dng và thm tra hthng DDG  
Xác định và la chn các phn dliu cho các trường hp kim thriêng lẻ  
da trên DDGs. Phn dliu bao gm cả các thư mục dliệu, thường là 1 biến số  
output, vi sự xác định của nó trong các thư mục dliu khác, có thể đưc la chn từ  
nhiu sự xác định.  
Cp nht các phn tdliu hay các trường hp kim thbng cách gán các  
giá trinput.  
Kế hoch kim tra kết qu.  
3.2.3. Các thuộc tính và yếu tố của DDG  
Chúng ta có thmô tả đặc điểm ca các yếu tố đồ thị khác nhau trong DDGs như  
sau:  
26  
Mỗi 1 điểm mô tsự xác định của 1 thư mục dliu x, được biu thlà D(x) và  
được mô tlà x nm trong 1 hình Oval trong DDG. Các điểm này có thể được phân  
loi thành 3 loi:  
Các điểm kết quvà output mà mô tcác kết quả tính toán cho chương trình  
đang kiểm th.  
Các điểm input hay hng smô tả input được cung cp từ người sdng hay  
các hng số được xác định sẵn. Các điểm này mô tả các điểm cui mà không cần được  
phân tích thêm na.  
Các điểm dtrhoc trung gian là những điểm không là input hay output.  
Trong hu hết các tính toán, các điểm này được bắt đầu đlàm các thtc tính toán trở  
nên thun tin nhờ đó các kết qutinput nhận được 1 cách đơn giản.  
Hình 3.2 Đồ thDDG: ví dcủa đim bchn lc dliu  
Mi quan hệ được mô hình hóa trong DDG luôn là mi quan hD-U, hay là mi  
quan hệ “được sdng bi”.  
Trưng hợp đặc biệt đi vi các cu trúc DDG trên là nhng sự xác định có la  
chn của các thư mục dliệu nào đó có sử dụng các điểm chn lc dliu, Ví dụ  
trong sự xác định số lượng nghim thực cho phương trình bc 2: ax2 + bx + c = 0, kết  
qura phthuc vào giá trd=b2 4ac như sau:  
(d>0) thì r 2;  
(d=0) thì r 1;  
27  

Tải về để xem bản đầy đủ

pdf 43 trang yennguyen 24/05/2025 200
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Kiểm thử theo mô hình FSM và ứng dụng của nó trong web", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_kiem_thu_theo_mo_hinh_fsm_va_ung_dung_cua_no_trong.pdf