-1-
B GIÁO D C VÀ ĐÀO T O
Đ I H C ĐÀ N NG
TR N VĂN MINH
NGHIÊN C U XÂY D NG
CÔNG C KI M TH
Đ T BI N CÁC CÂU L NH SQL
Chuyên ngành: KHOA H C MÁY TÍNH
Mã s : 60.48.01
TÓM T T LU N VĂN TH C SĨ K THU T
Đà N ng - Năm 2011
-2Cơng trình đư c hồn thành t i
Đ I H C ĐÀ N NG
Ngư i hư ng d n khoa h c: TS. NGUY N THANH BÌNH
Ph n bi n 1: PGS.TS. LÊ VĂN SƠN
Ph n bi n 2: TS. NGUY N M U HÂN
Lu n văn ñư c b o v trư c H i ñ ng ch m Lu n
văn t t nghi p th c sĩ k thu t h p t i Đ i h c Đà N ng
vào ngày 16 tháng 10 năm 2011
Có th tìm hi u lu n văn t i:
- Trung tâm Thông tin - H c li u, Đ i h c Đà N ng
- Trung tâm H c li u, Đ i h c Đà N ng.
-3-
M
1.
Đ U
Lý do ch n ñ tài
Ki m th là m t trong nh ng ho t ñ ng quan tr ng trong
ti n trình phát tri n ph n m m. Nó góp ph n vào vi c đánh giá
ch t lư ng s n ph m ph n m m. Hi n nay, h u h t các s n ph m
ph n m m ng d ng đ u có s d ng ngơn ng truy v n d li u đ
lưu tr qu n lý thơng tin, do đó vi c qu n lý và ki m th chúng
trong quá trình phát tri n ph n m m t n nhi u th i gian.Vì v y,
nhu c u có đư c m t h th ng ng d ng ki m th ñ t bi n ñ
ñánh giá ch t lư ng các b d li u ki m th khi th c hi n ki m
th các câu l nh truy v n SQL th c s là c n thi t. M t khác, hi n
nay v n ñ b n quy n ph n m m ñang là v n ñ nan gi i ñ i v i
các t ch c, ngư i dùng và nhu c u s d ng mã ngu n m ñang
phát tri n r ng kh p nh m giúp gi m chi phí.
Xu t phát t nh ng phân tích và nh n xét trên, tơi ch n đ
tài “Nghiên c u xây d ng cơng c ki m th ñ t bi n các câu
l nh SQL” dư i s hư ng d n c a TS. Nguy n Thanh Bình, s
giúp gi m th i gian và chi phí trong vi c giám sát và ki m th s n
ph m ph n m m.
2.
M c đích ý nghĩa
M c đích c a đ tài là nghiên c u và ng d ng k thu t
ki m th ñ t bi n vào vi c ñánh giá ch t lư ng b d li u ki m
th khi ki m th các câu l nh truy v n SQL, t đó phát hi n các
-4l i cịn t n t i đ các l p trình viên hồn thi n hơn s n ph m c a
mình.
Ý nghĩa khoa h c: Hi u và ñánh giá các k thu t ki m th
ñ t bi n và phương pháp ki m th ñ t bi n câu l nh truy v n
SQL. K t qu có th làm tài li u tham kh o cho các ki m th viên
ho c các ñơn v phát tri n ph n m m.
Ý nghĩa th c ti n: Cung c p m t công c
ng d ng k thu t
ki m th ñ t bi n vào vi c ki m th cho các câu l nh truy v n
SQL.
3.
Nhi m v m c tiêu
Đ tài t p trung nghiên c u v k thu t ki m th ñ t bi n và
c u trúc ñ c ñi m c a ngôn ng truy v n d li u SQL ñ nh n bi t
các tốn t đ t bi n, t đó đ xu t gi i pháp xây d ng công c h
tr ki m th ñ t bi n câu l nh SQL và tri n khai ki m th th c
nghi m trên các câu l nh truy v n SQL làm cơ s đ phân tích và
đánh giá k t qu .
4.
Đ i tư ng và ph m vi nghiên c u
Đ tài t p trung nghiên c u trên các ñ i tư ng như sau:
-
K thu t ki m th đ t bi n.
-
Ngơn ng truy v n có c u trúc.
-
Mã ngu n SQL Parser (GuduSoft.gsqlparser.dll).
-
K thu t l p trình ngơn ng VS.Net.
Đ tài thu c ph m vi nghiên c u và ng d ng.
5.
Phương pháp nghiên c u
-5-
Thu th p và phân tích các tài li u và thơng tin liên
quan đ n đ tài.
-
Phân tích thi t k h th ng chương trình ng d ng.
6.
Th o lu n, l a ch n hư ng gi i quy t v n ñ .
Tri n khai xây d ng chương trình ng d ng.
- Ki m tra, th nghi m, nh n xét và ñánh giá k t qu .
D ki n k t qu ñ t ñư c
-
V m t lý thuy t: N m ñư c ki n th c v k thu t
ki m th đ t bi n và các tốn t đ t bi n câu l nh truy
v n SQL.
-
V m t th c ti n: Xây d ng và ñánh giá công c ki m
th áp d ng k thu t ki m th ñ t bi n cho các câu
7.
l nh truy v n SQL.
B c c lu n văn
Lu n văn ñư c chia thành 3 chương như sau:
Chương 1: Ki m th ñ t bi n.
Chương 2: Ki m th ñ t bi n các câu l nh truy v n SQL.
Chương 3: Xây d ng công c h tr ki m th ñ t bi n các
câu l nh truy v n SQL.
-6-
CHƯƠNG 1. KI M TH
1.1.
Đ T BI N
GI I THI U
Trong chương này, chúng tơi trình bày chi ti t lý thuy t v
ki m th ñ t bi n, phân tích các ưu và như c đi m c a phương
pháp. Ti p theo, chúng tơi trình bày các k thu t ki m th ñ t bi n
khác nhau cũng như các ng d ng ph bi n c a ki m th ñ t bi n
trong th c t .
1.2.
LÝ THUY T KI M TH
Đ T BI N
Trư c khi trình bày lý thuy t ki m th ñ t bi n, chúng ta
b t ñ u b i m t ý tư ng ñơn gi n sau: ñ ư c lư ng s lư ng cá
trong m t cái h , m t cách ñ th c hi n vi c đó là đánh d u m t
s cá và th vào h (gi s , 80 con cá), sau đó đánh b t m t s cá
và ñ m s cá b ñánh d u. N u chúng ta b t ñư c 50 con cá và 5
trong s đó b đánh d u, như v y 1/10 s cá trong h b ñánh d u,
khi đó tồn b s cá trong h có th th ñư c ư c lư ng là 800
con. N u chúng ta b t ñư c t t c các cá b đánh d u, chúng ta có
th cho r ng tồn b cá trong h đã b đánh b t.
K thu t ki m th ñ t bi n ñư c xây d ng d a trên ý tư ng
này. Chúng ta ñưa vào mã ngu n m t s l i “b đánh d u”, sau đó
tìm cách xác ñ nh chúng. N u chúng ta xác ñ nh ñư c t t c các
l i này, “lư i” c a chúng ta có th cũng đã b t ñư c nhi u các lo i
“cá” khác, đó chính là các l i chưa bi t.
-71.2.1.
Khái ni m ki m th ñ t bi n
Ki m th ñ t bi n ñư c thi t k nh m t o ra d li u ki m
th có hi u qu , nghĩa là phát hi n các l i c a chương trình. Trong
khi th c hi n ki m th ñ t bi n, chúng ta t o ra các phiên b n l i
c a chương trình g c b ng cách chèn l i vào mã ngu n c a nó.
Sau đó, th c thi ki m th v i l n lư t các d li u ki m th cho
t ng phiên b n l i. So sánh k t qu ñ u ra c a t ng phiên b n l i
v i chương trình g c, t đó ñánh giá ñư c kh năng phát hi n l i
c a các d li u ki m th [3].
Các phiên b n l i ñư c t o ra t chương trình g c g i là các
đ t bi n (mutants). Ki m th ñ t bi n là m t k thu t ki m th
h p tr ng, hay còn g i k thu t ki m th c u trúc.
1.2.2.
Hai gi thuy t cơ b n
Ki m th ñ t bi n ñư c xây d ng d a trên hai gi thuy t cơ
b n. Gi thuy t “l p trình viên gi i” (competent programmer
hypothesis) và gi thuy t “hi u
ng liên k t” (coupling effect
hypothesis) [3]. Gi thuy t l p trình viên gi i cho r ng thông
thư ng các l p trình viên đ u r t gi i và h s khơng bao gi vi t
ra các chương trình m t cách tuỳ ti n, c u th .
Gi thuy t hi u ng liên k t cho r ng các l i ph c t p ñư c
liên k t t các l i ñơn gi n, như v y b d li u ki m th ñ kh
năng phát hi n t t c các l i đơn gi n thì cũng có kh năng phát
hi n các l i ph c t p v i t l cao.
-81.2.3.
M t s khái ni m cơ b n
Toán t ñ t bi n
Toán t ñ t bi n (mutation operator) hay cịn đư c g i lu t
đ t bi n (mutation rule) là m t lu t ñư c áp d ng vào chương
trình g c đ t o ra các phiên b n ñ t bi n. Nó có th là vi c thay
th m t tốn t này b ng m t toán t khác; thay ñ i toán h ng c a
bi u th c; xố tồn b các bi u th c; thay đ i câu l nh… hay có
th đư c t o ra b ng cách thay ñ i nh v cú pháp c a chương
trình theo hư ng mà các l p trình viên thư ng ph m ph i.
1.2.4.
Đ t bi n b di t và ñ t bi n s ng
Khi ti n hành th c thi ki m th l n lư t chương trình g c P
và ñ t bi n P’ c a P v i m t d li u th T, s có hai k ch b n khác
nhau có th x y ra:
-
M t là, ho c l i ñư c chèn vào trong chương trình đ t
bi n P’ đư c nh n bi t, nghĩa là chương trình P và đ t
bi n P’ cho ra các k t qu khác nhau. Trong trư ng h p
này, ñ t bi n P’ ñư c g i là b di t (killed) b i d li u th
T. Khi đó, T đư c g i là d li u th thích h p vì nó có kh
năng phát hi n đư c s khác nhau gi a chương trình g c
P và ñ t bi n P’.
-
Hai là, chương trình g c P và ñ t bi n P’ cho ra k t qu
hoàn toàn gi ng nhau. Trong trư ng h p này, có th có
hai kh năng x y ra. Kh năng th nh t là d li u th T
khơng đ t t (hay đư c g i là d li u th khơng thích
h p), chúng ta s ph i ti n hành th c hi n ki m th l i v i
các d li u th t t hơn. Kh năng th hai là chương trình
-9P và ñ t bi n P’ là nh ng chương trình tương t nhau,
m i d li u th ñ u không th phân bi t s khác nhau
gi a chúng. Trong c hai trư ng h p này, ñ t bi n P’
ñư c cho là còn s ng (alive).
1.2.5.
Đ t bi n tương ñương
Các ñ t bi n tương ñương (equivalent mutant) là các ñ t
bi n cho ra k t qu gi ng v i chương trình g c v i m i d li u th
ho c cú pháp c a ñ t bi n và chương trình g c khác nhau nhưng
ho t đ ng tương t nhau. M t cách hình th c, chúng ta nói: đ t
bi n tương đương là đ t bi n còn s ng mà m i d li u th T ⊂ D
(D, t p các d li u th cho P) ñ u xác ñ nh ñư c P và P’ tương
ñương nhau (P ≡ P’).
1.2.6.
T l ñ t bi n
T l ñ t bi n (Mutation Score), ñư c ký hi u MS, c a
chương trình P và d li u th T là t l các đ t bi n khơng tương
đương (so v i chương trình g c) b di t b i d li u th T, đư c
mơ t b i công th c sau:
MS ( P, T ) =
D
N −E
trong ñó,
-
D: s ñ t bi n ñã b di t,
-
N: t ng s các ñ t bi n,
-
E: s ñ t bi n tương ñương.
Như v y, 0 ≤ MS ≤ 1 hay 0 ≤ MS% ≤ 100.
-101.2.7.
Chi phí c a ki m th đ t bi n
Chi phí trong ki m th đ t bi n t p trung ba bư c t n kém
nh t là s n sinh ñ t bi n, biên d ch các ñ t bi n và ki m th t ng
phiên b n ñ t bi n v i các d li u ki m th . Như v y, s lư ng
l n các ñ t bi n s làm cho chi phí ki m th đ t bi n r t l n.
1.3.
TI N TRÌNH KI M TH
Đ T BI N
G i chương trình g c là P, các ñ t bi n là P’ và t p d li u
ki m th là T. Chúng ta có th gi i thích ti n trình th c hi n ki m
th ñ t bi n như sau:
Bư c 1: T o ñ t bi n P’ t chương trình g c P.
Bư c 2: Sinh các d li u ki m th T.
Bư c 3: Th c hi n chương trình g c P v i m i d li u ki m
th . Ki m tra k t qu nh n ñư c:
-
N u ñ u ra khơng đúng, ph i ch nh s a chương
trình g c P và ki m th l i.
-
N u ñ u ra ñúng, th c hi n bư c ti p theo.
Bư c 4: Th c hi n t ng đ t bi n cịn s ng v i m i d li u
ki m th . So sánh k t qu th c hi n ñ t bi n v i k t qu th c hi n
chương trình g c đ i v i m i d li u th .
-
N u t t c các ñ t bi n đ u b di t. Hồn thành
ki m th .
-
N u cịn đ t bi n chưa b di t, chuy n sang bư c
ti p theo.
-11Bư c 5: Phân tích và xác đ nh các ñ t bi n tương ñương.
N u còn các ñ t bi n khơng tương đương nhưng chưa b
di t thì các d li u ki m th khơng đ kh năng di t ñ t bi n. Ph i
hi u ch nh t p d li u ki m th . Quay l i bư c 1.
1.4.
H N CH C A KI M TH
Đ T BI N
Lý thuy t và k t qu th c nghi m ñã cho th y r ng, ki m
th ñ t bi n là phương pháp hi u qu ñ ñánh giá ch t lư ng c a
các b ki m th . Tuy nhiên, có m t s h n ch khi th c hi n ki m
th ñ t bi n như sau:
-
Vi c nh n d ng các ñ t bi n tương ñương là r t quan
tr ng nhưng r t khó khăn.
-
M t s các đ t bi n khơng tương đương nhưng v n cịn
t n t i trong q trình ki m th .
-
Chi phí tính tốn trong ki m th đ t bi n r t cao, do s
lư ng tốn t đ t bi n thư ng r t l n.
-
Ki m th ñ t bi n cũng t n nhi u nhân công trong quá
trình ki m th .
1.5.
M TS
TH
1.5.1.
K
THU T NÂNG CAO HI U QU
KI M
Đ T BI N
Gi m chi phí tính tốn trong phân tích đ t bi n
Các k thu t ñư c nghiên c u theo ba chi n lư c: làm thơng
minh hơn, làm ít hơn và nhanh hơn. Chi n lư c làm thông minh
hơn, g m các k thu t: ñ t bi n y u (weak mutation), ki n trúc
phân tán (distributed architectures). Chi n lư c làm ít hơn hư ng
đ n l a ch n nh ng ñ t bi n sao cho hi u qu nh t nhưng v n
-12ñ m b o ch t lư ng ki m th , g m các k thu t: ñ t bi n l a ch n
(selective mutation), l y m u ñ t bi n (mutation sampling). Chi n
lư c làm nhanh hơn, hư ng vào t đ ng hố m t s cơng đo n và
gi m t i
k
các cơng đo n chi m nhi u chi phí tính tốn, g m các
thu t: th c thi đ t bi n d a vào gi n ñ
(schema-based),
phương pháp tách r i biên d ch (separate compilation approach).
Ngồi ra, cịn nhi u k thu t khác như k thu t gom c m ñ t bi n
(clustering of mutants).
1.5.2.
Gi m b t các cơng đo n th cơng
Vi c phát tri n th công các d li u ki m th ñ t bi n m t
cách ñ y ñ yêu c u r t nhi u n l c. Hơn n a vi c quy t ñ nh
phiên b n ñ t bi n nào tương ñương v i chương trình g c là r t
nhàm chán và ho t ñ ng này thư ng d n ñ n nhi u sai sót. Vi c t
đ ng hóa các ho t ñ ng này s nâng cao hi u qu và ch t lư ng
c a ki m th ñ t bi n.
1.5.3.
C i ti n ti n trình ki m th đ t bi n
Ti n trình ki m th ñ t bi n truy n th ng cịn t n t i m t s
v n đ , như th c thi l p l i nh ng ca ki m th , th c thi chương
trình g c, …
Ti n trình c i ti n đư c ñ xu t nh m kh c ph c các h n
ch nêu trên. Trư c h t, t ñ ng t o ra m t t p các d li u th .
Các d li u th đó s ñư c th c thi l n lư t v i chương trình g c
và sau đó v i các chương trình đ t bi n. Ki m th viên s ñ nh
nghĩa m t giá tr ngư ng, ñó là giá tr nh nh t có th ch p nh n
ñư c c a t l ñ t bi n. N u ngư ng đó khơng đ t ñư c, khi các
d li u th không di t ñư c ñ t bi n nào (gi i h n không hi u
-13qu ), s b lo i tr . Ti n trình này s đư c l p l i, v i m i m t th i
ñi m s n sinh các d li u th ch nh m ñ n các đ t bi n cịn s ng,
cho đ n khi ngư ng t l ñ t bi n ñ t ñư c.
1.6.
NG D NG C A KI M TH
1.6.1.
Đ T BI N
Đ t bi n mã ngu n
Đ t bi n mã ngu n chương trình đã đư c áp d ng cho c
hai m c ki m th đơn v và ki m th tích h p. Đ i v i ki m th
m c ñơn v , ñ t bi n ñư c t o ra ñ mô t l i trong m t ñơn v
ph n m m mà l p trình viên th c hi n; trong khi đó đ i v i m c
ki m th tích h p, đ t bi n ñư c t o ra ñ mô t l i tích h p b i
l i k t n i ho c tương tác gi a các ñơn v ph n m m. Đ t bi n này
ñư c áp d ng trên các ngơn ng l p trình như ngôn ng Fortran,
Ada, C, Java, C#, AspectJ.
1.6.2.
Đ t bi n ñ c t
Ki m th ñ t bi n cũng ñã ñư c ñ xu t áp d ng cho các
ñ c t và thi t k ph n m m. Ki m th ñ t bi n áp d ng
m c
ñ c t và thi t k thư ng ñư c g i là “ñ t bi n ñ c t ". Trong ñ t
bi n ñ c t , l i thư ng ñư c phát sinh trong máy tr ng thái ho c
các bi u th c lơgic đ t o ra các đ t bi n. M t ñ t bi n b di t n u
ñi u ki n ñ u ra là sai l ch. Ki m th ñ t bi n thu c lo i này g m
đ c t hình th c, môi trư ng th c thi, d ch v Web, h th ng
m ng.
1.7.
T NG K T CHƯƠNG 1
-14-
Đ T BI N CÁC CÂU L NH
TRUY V N SQL
CHƯƠNG 2. KI M TH
2.1.
GI I THI U
Trong chương này, trư c h t chúng tơi trình bày sơ lư c v
cơ s d li u và ngôn ng truy v n có c u trúc. M t s cơng trình
nghiên c u v ki m th cơ s d li u cũng ñư c ñ c p. Đ c bi t,
chúng tơi phân tích m t s l i ñi n hình trong các câu l nh truy
v n cơ s d li u. Trên cơ s đó, chúng tơi trình bày ng d ng
ki m th đ t bi n cho các câu l nh truy v n.
2.2.
CƠ S
D
LI U QUAN H
VÀ NGƠN NG
TRUY
V N CĨ C U TRÚC
2.2.1.
Cơ s d li u quan h
Cơ s d li u là m t t p h p có c u trúc nh ng d li u có
liên quan v i nhau. Cơ s d li u ñư c s d ng ph bi n hi n nay
là cơ s d li u quan h . Cơ s d li u quan h là các cơ s d
li u d ng b ng có th d dàng đư c t ch c l i và đư c truy v n.
2.2.2.
Ngơn ng truy v n có c u trúc
Ngơn ng truy v n có c u trúc (SQL) là ngơn ng thư ng
ñư c s d ng ñ ñ nh nghĩa lư c ñ cơ s d li u và th c hi n
vi c c p nh t, xóa, ch nh s a và truy c p d li u lưu tr trong cơ
s d li u.
Ngôn ng truy v n có c u trúc g m các nhóm l nh:
-15−
Nhóm l nh đ nh nghĩa d
li u (Data Definition
Language - DDL).
−
Nhóm l nh thao tác d
li u (Data Manipulation
Language - DML).
Ngồi ra, ngơn ng truy v n có c u trúc cịn có các l nh
dùng đ qu n lý quy n, các l nh ñ nh nghĩa khung nhìn như
CREATE VIEW, DROP VIEW; các l nh đi u khi n giao tác như
COMMIT, ROLLBACK…
L nh truy v n cơ b n SQL
Câu l nh truy v n cơ b n đư c mơ t b i các m nh đ
SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER
BY.
Các phép tốn trong SQL
Trong SQL, có hai phép tốn cơ b n: phép tốn lơ-gíc và
phép tốn quan h .
Các hàm k t h p
Các hàm k t h p như AVG, SUM, MAX, MIN, COUNT,…
2.3.
KI M TH
CƠ S
D
LI U
Phương pháp t o ra các ca ki m th b ng cách xem xét các
lư c ñ cơ s d li u, các thu c tính khác ho c các ràng bu c
quan h . Câu l nh truy v n SQL ñư c chuy n thành d ng ngôn
ng l p trình th t c, sau đó, k thu t ki m th thơng thư ng đư c
áp d ng đ ki m th và ñánh giá câu l nh SQL.
-162.4.
L I TRONG TRUY V N CƠ S
D
LI U
Các l i trong truy v n SQL có th chia làm hai lo i: l i cú
pháp và l i ng nghĩa. Các l i cú pháp nghĩa là chu i ký t nh p
vào không ph i là truy v n SQL h p l . Các l i ng nghĩa là câu
truy v n SQL h p l .
2.4.1.
M nh ñ SELECT
2.4.2.
M nh ñ FROM
2.4.3.
M nh ñ WHERE
2.4.4.
Các hàm k t h p
2.4.5.
M nh ñ GROUP BY
2.4.6.
M nh ñ ORDER BY
2.4.7.
UNION/UNION ALL
2.4.8.
Truy v n vi ph m các m u chu n
2.4.9.
B trùng l p
2.5.
KI M TH
Đ T BI N CÁC CÂU L NH TRUY V N
ng d ng ki m th ñ t bi n cho các câu truy v n cơ s d
li u g m các bư c cơ b n:
−
Xác ñ nh các l i thư ng ph m ph i c a l p trình
viên khi vi t c a câu truy v n.
−
Xây d ng t p tốn t đ t bi n áp d ng cho câu truy
v n SQL.
−
Xây d ng công c h tr th c hi n ti n trình ki m
th đ t bi n các câu truy v n.
-17−
Th nghi m và ñánh giá k thu t ki m th ñ t bi n
trên các câu l nh truy v n trong các ng d ng cơ s
d li u c th .
2.6.
TOÁN T
Đ T BI N CHO CÁC CÂU L NH TRUY
V N
Các tốn t đ t bi n đư c chia làm b n nhóm:
−
Tốn t
đ t bi n các m nh đ chính (SC - SQL
Clause mutation operators);
−
Tốn t đ t bi n cho các tốn t xu t hi n trong các
đi u ki n và bi u th c (OR - Operator Replacement
mutation operators);
−
Tốn t đ t bi n liên quan đ n vi c x lý giá tr
NULL (NL – NULL mutation operators);
−
Tốn t đ t bi n thay th các đ nh danh: c t tham
chi u, h ng s
và tham s
(IR – Identifier
Replacement mutation operators).
M i nhóm đ t bi n ñư c ký hi u b i các tên ng n g n ch
g m hai ký hi u và m i tốn t đ t bi n trong các nhóm đư c ký
hi u b i các tên ng n g n g m ba ký hi u.
2.6.1.
Toán t đ t bi n các m nh đ chính (SC)
M c đích c a các tốn t đ t bi n các m nh đ chính, đư c
ký hi u SC, là đ t bi n nh ng tính năng khác nhau trong ngôn ng
SQL tương t như các ngơn ng khác (m nh đ , hàm k t h p, các
câu truy v n con…). Nh ng toán t SC góp ph n phát hi n các l i
như đi u ki n k t n i khơng đúng, s d ng khơng đúng t khóa
-18DISTINCT, tính tốn các hàm k t h p khơng ñúng ho c không
ñúng th t trong t p k t qu .
2.6.2.
Tốn t đ t bi n cho các ñi u ki n và bi u th c (OR)
Các tốn t đ t bi n các đi u ki n và các bi u th c ñư c
thi t k nh m phát hi n các l i lơ-gíc trong các bi u th c trong các
m nh ñ WHERE và HAVING.
2.6.3.
Tốn t đ t bi n giá tr NULL (NL)
Trong ngôn ng truy v n SQL, mi n giá tr c a m i thu c
tính đư c m r ng thêm ký hi u ñ c bi t NULL ñ bi u th cho
m i giá tr d li u đư c hi u là khơng đư c đ nh nghĩa, ho c
khơng thích h p, ho c khơng xác đ nh.
Vi c x lý các giá tr NULL khơng đúng có th d n đ n k t
qu khơng lư ng trư c đư c. Do ñó, các ñ t bi n có liên quan ñ n
các giá tr NULL c n ph i ñư c xem xét ñ phát hi n các lo i l i
này.
2.6.4.
Tốn t đ t bi n các đ nh danh (IR)
Các tốn t đ t bi n IR thay th các ñ nh danh c t, h ng và
tham chi u trong các tham s c a truy v n. Vì v y, các tốn t đ t
bi n này có kh năng phát hi n các l i như s d ng khơng đúng
các trư ng.
2.7.
T NG K T CHƯƠNG 2
-19CHƯƠNG 3. XÂY D NG CÔNG C
KI M TH
BI N CÁC CÂU L NH SQL
3.1.
Đ T
GI I THI U
Công c dùng đ phân tích c u trúc l nh SQL, sinh các ñ t
bi n, th c thi ñ t bi n, nh m giúp ñánh giá ch t lư ng c a câu
l nh và các b d li u ki m th .
Công c s d ng b mã ngu n gsqlparser for .Net đ phân
tích c u trúc l nh SQL và s d ng ngôn ng C# th c thi trong môi
trư ng .NetFrameWork.
Công c t o ra các ñ t bi n b ng cách chèn l i vào câu l nh
g c, th c thi l n lư t câu l nh g c và câu l nh ñ t bi n vào trên
các b d li u th , t đó đánh giá ch t lư ng c a câu l nh SQL và
ch t lư ng c a các b d li u th .
3.2.
GI I PHÁP
Trên cơ s phân tích các ñ t bi n câu l nh truy v n cơ s d
li u SQL chương 2, chúng tơi đ xu t thu t tốn xây d ng cơng
c ki m th ñ t bi n cho câu l nh SQL như sau.
Bư c 1. Nh n câu l nh SQL vào, ki m tra, phân tích cú
pháp câu l nh và lưu dư i d ng cây cú pháp XML.
Bư c 2. Th c hi n ñ t bi n trên câu l nh SQL t o ra t p h p
các ñ t bi n c a câu l nh SQL g c.
Bư c 3. Th c hi n vòng l p g m các bư c sau:
a.
Th c thi câu l nh SQL ñ t bi n.
-20b.
c.
N u k t qu khác nhau thì đ t bi n b di t, n u
ngư c l i s ñánh d u câu l nh ñ t bi n và xem
xét tính tương đương câu câu l nh ñ t bi n v i
câu l nh g c.
d.
3.3.
So sánh k t qu th c thi câu l nh ñ t bi n và k t
qu th c thi câu l nh g c.
Bư c 4. K t thúc quá trình, xu t ra báo cáo sơ b
g m các thơng tin v s lư ng đ t bi n sinh ra, s
lư ng ñ t bi n b di t và t l đ t bi n.
CƠNG NGH
Cơng ngh s d ng:
-
H
đi u
hành:
Microsoft
Windows
Server,
Windows XP, Windows 7, …
-
Cơng ngh .Net FrameWork 3.5
3.4.
H qu n tr cơ s d li u: MS SQL Server 2008
Mã ngu n SQL Parser (gudusoft.gsqlparser.dll)
KI N TRÚC CÔNG C
C t lõi c a h th ng này là b s n sinh ñ t bi n, nghĩa là t o
ra các ñ t bi n c a câu l nh truy v n cơ s d li u. Đ sinh các ñ t
bi n, b phân tích cú pháp phân tích câu l nh truy v n g c và t o
ra cây cú pháp tương ng. T cây cú pháp, b sinh ñ t bi n th c
hi n các tốn t đ t bi n ñ t o ra các ñ t bi n c a câu l nh truy
v n g c. Sau đó, m i đ t bi n và câu l nh truy v n g c s ñư c
th c thi trên b d li u th đ tính t l ñ t bi n.
-213.5.
B
PHÂN TÍCH CÚ PHÁP
B phân tích chuy n câu l nh truy v n SQL g c sang ñ nh
d ng tài li u XML b ng cách thay th các t khóa c a câu l nh
b ng các ph n t XML và t ch c l i tài li u XML theo th t phù
h p v i c u trúc c a câu truy v n SQL. Các t khóa đư c bi u
di n b i các ph n t và các tên c t, tên b ng, tham s và các h ng
s ñư c bi u di n b i thu c tính text c a các ph n t XML.
Câu l nh SQL sau khi đư c b phân tích phân tích s t o ra
cây cú pháp truy v n
ng v i các ki u m nh ñ
như sau:
TSelectSqlStatement, TDeleteSqlStatement, TUpdateStatement,…
tuỳ theo ñ u vào c a k ch b n SQL là m nh Select, Delete, Update
hay Insert,...
3.6.
B
SINH Đ T BI N
B sinh ñ t bi n nh n ñ u vào là lư c ñ cơ s d li u và
câu l nh truy v n SQL, t p các nhóm tốn t đ t bi n đ phân tích
câu l nh truy v n và chuy n các tài li u XML c a câu l nh truy
v n vào mơ hình DOM. B sinh đ t bi n s duy t qua các ph n t
trong mô hình DOM và khi b t g p m t ph n t ho c thu c tính
text c a m t nút thì th c hi n các bư c sau:
-
Xác ñ nh ph m vi
-
Ch n c t
-
Áp d ng tốn t đ t bi n
Trong khi b sinh ñ t bi n s n sinh ra m i đ t bi n thì nó s
g i th c thi b ghi ñ t bi n ñ lưu l i đ t bi n đó. Các đ t bi n
ñư c lưu trong m t t p tin tài li u XML.
-223.7.
B
TH C THI Đ T BI N
B s n sinh và th c thi nh ng ñ t bi n hồn tồn t đ ng
trong m t cơng c đ t bi n SQL. Thu th p thông tin v lư c ñ cơ
s d li u, t i vào các cơ s d li u ki m th , ñi u khi n s thay
ñ i d li u và cài ñ t tham s ghi vào tài li u XML. Cú pháp câu
truy v n ñư c phân tích ghi vào tài li u XML và m i ph n t là
m t ti n trình. M i ti n trình, c truy v n và lư c ñ cơ s d li u
ñư c xem xét và ñ t bi n ñư c s n sinh b ng cách áp d ng các
lu t đã trình bày
3.8.
TH
trên. Cu i cùng, các ñ t bi n ñư c th c thi.
NGHI M VÀ ĐÁNH GIÁ K T QU
Trong ph n th nghi m này, chúng tôi l a ch n môi trư ng
ki m th và b d li u th như sau:
H qu n tr cơ s d li u: MS Server SQL 2008
B d li u th : H cơ s d li u khách hàng s d ng các
d ch v vi n thông, g m các th c th như sau:
Danh b khách hàng
Danh b thanh toán
Danh b thuê bao
Đ i tư ng thuê bao
D ch v vi n thơng
Lư c đ cơ s d li u
-23-
Hình 3.6. Lư c đ cơ s d li u
Tốn t đ t bi n
+ Tốn t đ t bi n các m nh đ chính SC g m: tốn t
SEL, JOI, ARG,
+ Tốn t đ t bi n cho các ñi u ki n và bi u th c OR g m
các toán t ROR, LCR, AOR, UOI, ABS, LKE,, BTW,
+ Tốn t đ t bi n các giá tr NULL g m các toán t NLI,
NLO, NLF,
+ Toán t ñ t bi n ñ nh danh IRC.
3.9.
T NG K T CHƯƠNG 3
-24-
K T LU N
Ki m th ph n m m là m t trong nh ng khâu quan tr ng
c a quy trình xây d ng ph n m m nh m ki m tra xem ph n m m
làm ra có nh ng l i gì c n kh c ph c. Ki m th không th ch ng
minh ñư c ph n m m là h t l i mà nó ch giúp cho ngư i vi t mã
tìm ra và có bi n pháp kh c ph c càng nhi u l i càng t t, góp ph n
ñánh giá ch t lư ng s n ph m ph n m m.
Ki m th ñ t bi n ñư c xem như là m t trong nh ng k
thu t ki m th h p d n ñ y h a h n, gi i quy t các v n đ t t hay
khơng t t c a các b d li u ki m th ñ t yêu c u hi u năng cao
và nh ng cơng c h tr đ t o ra nh ng ñ t bi n và th c thi
chúng. Tuy nhiên, ki m th đ t bi n cịn khó áp d ng vào trong
th c t . Ki m th viên thư ng th y khó khăn đ áp d ng vào và
thay vào đó là d a vào nh ng ki n th c cũng như kinh nghi m khi
thi t k nh ng ca ki m th .
1. K t qu đ t đư c
Trong khn kh m t lu n văn th c sĩ, sau khi ti n hành tìm
hi u nghiên c u v ki m th ph n m m, k thu t ki m th ñ t
bi n và ki m th ñ t bi n câu l nh truy v n, h c viên ñã ñ t ñư c
m t s k t qu nh t ñ nh như sau:
-
V m t nghiên c u lý thuy t:
N m ñư c cơ b n v k thu t ki m th ñ t bi n, là m t k
thu t nh m ñánh giá ch t lư ng c a các b d li u ki m th . Qua
đó, cho th y có r t nhi u cơng trình đã và đang nghiên c u v
-25ki m th ñ t bi n nh m c i ti n và nâng cao hi u qu c a ki m
th ñ t bi n, cũng như m r ng kh năng ng d ng c a ki m th
đ t bi n. Đi u đó th hi n r ng ki m th ñ t bi n là m t trong
nh ng k thu t ki m th đóng vai trị r t quan tr ng và ñư c ng
d ng r t r ng rãi, t m c mã ngu n ñ n m c ñ c t .
-
V m t ng d ng th c ti n:
D a trên nh ng nghiên c u v k thu t ki m th ñ t bi n,
các gi i pháp c i ti n và nâng cao hi u qu c a ki m th ñ t bi n
đ ng th i phân tích các tốn t ñ t bi n trên câu l nh SQL, h c
viên ñã ñ ra gi i pháp xây d ng cơng c h tr ki m th đ t bi n
các câu l nh SQL nh m ñánh giá ch t lư ng các b d li u ki m
th .
Cơng c này có th đư c s d ng ñ nghiên c u ki m th
các ng d ng cơ s d li u và cho đánh giá tính ñ y ñ c a nh ng
ca ki m th , so sánh v i các k thu t khác nhau. Đ ng th i k t
qu nghiên c u có th cung c p m t gi i pháp sơ b v vi c ng
d ng ki m th ñ t bi n ñ làm tài li u tham kh o và áp d ng th c
t cho các ñơn v phát tri n ph n m m ñang c n nâng cao ch t
lư ng ki m th s n ph n ph n m m.
2. H n ch
Do th i gian tìm hi u nghiên c u có h n nên đ tài ch m i
t p trung vào vi c phân tích các tốn t đ t bi n cơ s chung c a
ngôn ng truy v n SQL chưa đi sâu vào các tốn t riêng bi t c a
t ng h th ng cơ s d li u hi n nay như Oralce, MS Server SQL,
MySQL, …