Tóm tắt luận văn Nghiên cứu xây dựng công cụ kiểm thử đột biến các câu lệnh SQL
Bạn đang xem 20 trang mẫu của tài liệu "Tóm tắt luận văn Nghiên cứu xây dựng công cụ kiểm thử đột biến các câu lệnh SQL", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- tom_tat_luan_van_nghien_cuu_xay_dung_cong_cu_kiem_thu_dot_bi.pdf
Nội dung text: Tóm tắt luận văn Nghiên cứu xây dựng công cụ kiểm thử đột biến các câu lệnh SQL
- -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
- -2- Cơ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Ở ĐẦU 1. 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
- -4- lỗ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. - Th ảo lu ận, l ựa ch ọn h ướng gi ải quy ết v ấn đề. - Phân tích thi ết k ế h ệ th ống ch ươ ng trình ứng d ụng. - 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 ả. 6. 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 lệnh truy v ấn SQL. 7. 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 Ử ĐỘT BI ẾN 1.1. 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.
- -7- 1.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.
- -8- 1.2.3. Một s ố khái ni ệm c ơ b ản Tốn t ử đột bi ến Tố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 tốn t ử khác; thay đổi tố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 ả hồn tồ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
- -9- P 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: D MS (,)P T = 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.
- -10- 1.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.
- -11- Bướ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 quá 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ỘT S Ố KỸ THU ẬT NÂNG CAO HI ỆU QU Ả KI ỂM TH Ử ĐỘT BI ẾN 1.5.1. 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 ở các cơng đoạn chi ếm nhi ều chi phí tính tốn, gồm các kỹ 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
- -13- qu ả), 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 Ử ĐỘT BI ẾN 1.6.1. Độ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- CH ƯƠ NG 2. KI ỂM TH Ử ĐỘT BI ẾN CÁC CÂU L ỆNH TRUY V ẤN SQL 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.
- -16- 2.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. TỐ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. Tố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 tố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
- -18- DISTINCT, 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
- -19- CH ƯƠ NG 3. XÂY D ỰNG CƠNG C Ụ KI ỂM TH Ử ĐỘT BI ẾN CÁC CÂU L ỆNH SQL 3.1. 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.
- -20- b. 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. 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. 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. 3.3. CƠNG NGH Ệ Cơng ngh ệ s ử d ụng: - Hệ điều hành: Microsoft Windows Server, Windows XP, Windows 7, - Hệ qu ản tr ị c ơ s ở d ữ li ệu: MS SQL Server 2008 - Cơng ngh ệ .Net FrameWork 3.5 - Mã ngu ồn SQL Parser ( gudusoft.gsqlparser.dll ) 3.4. 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.
- -21- 3.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.
- -22- 3.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 ở trên. Cu ối cùng, các đột bi ến được th ực thi. 3.8. TH Ử 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 tố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 tốn t ử ROR, LCR, AOR, UOI, ABS, LKE,, BTW, + Tốn t ử đột bi ến các giá tr ị NULL g ồm các tốn t ử NLI, NLO, NLF, + Tố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 khuơn 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 ề
- -25- ki ể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,
- -26- Cơng c ụ phát tri ển độc l ập ch ưa tích h ợp vào nh ững ứng dụng qu ản lý cĩ s ử d ụng ngơn ng ữ truy v ấn d ữ li ệu c ũng nh ư dị tìm các l ệnh truy v ấn t ự động để phân tích và s ản sinh đột bi ến một cách tự động nh ằm giúp cho ki ểm th ử viên ki ểm th ử mã ngu ồn m ột s ản ph ẩm ti ết ki ệm th ời gian và cơng s ức. 3. Hướng phát tri ển Mặc dù đã th ực hi ện các n ội dung c ơ b ản về k ỹ thu ật ki ểm th ử đột bi ến, phân tích đột bi ến tốn t ử trên các câu l ệnh SQL và xây d ựng cơng c ụ h ỗ tr ợ ki ểm th ử đột bi ến câu l ệnh SQL vận hành thành cơng. Tuy nhiên, để cĩ th ể hồn thi ện t ốt h ơn, đề tài c ần nghiên c ứu b ổ sung thêm các n ội dung sau: - Áp d ụng k ỹ thu ật c ải ti ến ti ến trình ki ểm th ử đột bi ến, 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. - Mở r ộng áp d ựng ki ểm th ử đột bi ến trên t ừng h ệ th ống c ơ sở d ữ li ệu nh ư Oracle, MS Server SQL, MySQL, - Tích h ợp cơng c ụ vào nh ững ứng d ựng qu ản lý sử d ụng ngơn ng ữ truy v ấn để ki ểm th ử.