Bài giảng Kiểm thử phần mềm - Bài 5: Các kỹ thuật kiểm thử (Tiếp theo) - Nguyễn Thị Thanh Trúc
Các kỹ thuật kiểm thử
• Test tĩnh (Static Verification)
– Thực hiện kiểm chứng mà không cần thực thi chương
trình
– Kiểm tra tính đúng đắn của các tài liệu có liên quan
được tạo ra trong quá trình xây dựng ứng dụng
– Đạt được sự nhất quán và hiểu rõ hơn về hệ thống
– Giảm thời gian lập trình, thời gian và chi phí test,
• Test động (Dynamic Testing)
– Thực hiện kiểm thử dựa trên việc thực thi chương trình
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiểm thử phần mềm - Bài 5: Các kỹ thuật kiểm thử (Tiếp theo) - Nguyễn Thị Thanh Trúc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Kiểm thử phần mềm - Bài 5: Các kỹ thuật kiểm thử (Tiếp theo) - Nguyễn Thị Thanh Trúc
ao phủ kiểm thử • Phủ kiểm thử (coverage): tỉ lệ các thành phần thực sự được kiểm thử so với tổng thể các thành phần. • Các thành phần bao gồm: lệnh thực thi, điểm quyết định, điều kiện con hay sự kết hợp của chúng. • Độ phủ càng lớn thí độ tin cậy càng cao. 28 Các cấp bao phủ kiểm thử • Phủ cấp 0: kiểm thử những gì có thể kiểm thử được, phần còn lại để người dùng phát hiện và báo lại sau. Đây là kiểm thử không có trách nhiệm • Phủ cấp 1: Bao phủ câu lệnh (statement coverage): Các câu lệnh được thực hiện ít nhất 1 lần • Phủ cấp 2: Bao phủ nhánh (branch coverage): tại các điểm quyết định thì các nhánh đều được thực hiện ở cả hai phía T,F • Phủ cấp 3: Bao phủ điều kiện(condition coverage): Các điều kiện con của các điểm quyết định được thực hiện ít nhất 1 lần • Phủ cấp 4: Kết hợp phủ nhánh và điều kiện (branch & • condition coverage) 29 Control-flow/Coverage Testing • Là kỹ thuật thiết kế test case đảm bảo “cover” được tất cả các câu lệnh, biểu thức điều kiện trong code module cần test • Có bốn tiêu chí đánh giá độ bao phủ – Method Coverage (phương thức) – Statement Coverage (câu lệnh) – Decision/Branch Coverage (biểu thức điều kiện) – Condition Coverage (biểu thức điều kiện đơn) 30 Method Coverage • Tỷ lệ phần trăm các phương thức trong chương trình được gọi thực hiện bởi các test case • Test case cần phải đạt được 100% method coverage 31 Ví dụ - Method Coverage • Xét đoạn chương trình • Test case 1: foo (0,0,0,0,0) • 100% method coverage 32 Vd: Đồ thị dòng 33 Statement Coverage • Tỷ lệ phần trăm các câu lệnh trong chương trình được gọi thực hiện bởi các test case • Test case 1 thực hiện các lệnh từ 1 5 trong 12 câu lệnh đạt 42% Statement Coverage • Để đạt 100% Statement Coverage Test case 2: foo (1,1,1,1,1) 34 Decision/Branch Coverage • Tỷ lệ phần trăm các biểu thức điều kiện trong chương trình được ước lượng giá trị trả về (true, false) khi thực thi các test case • Một biểu thức điều kiện (cho dù là single hay complex) phải được kiểm tra trong cả hai trường hợp giá trị của biểu thức là true hay false • Đối với các hệ thống lớn, thường chỉ đạt từ 75% 85% độ bao phủ 35 Decision/Branch Coverage Đạt 75% coverage Test case 3: foo (1,2,1,2,1) 100% coverage 36 Condition Coverage • Tỷ lệ phần trăm các biểu thức điều kiện đơn trong biểu thức điều kiện phức của chương trình được ước lượng giá trị trả về (true, false) khi thực thi các test case • Ví dụ: 50% coverage 37 Condition Coverage • Thiết kế thêm Test case 4, 5 để đạt 100% coverage 38 Data-flow Testing • Là kỹ thuật thiết kế test case dựa vào việc khảo sát sự thay đổi trạng thái trong chu kỳ sống của các biến trong chương trình • Ví dụ: Một số pattern lỗi thường gặp – Sử dụng biến mà chưa khai báo – Sử dụng biến đã hủy trước đó – 39 Hệ thống ký hiệu trạng thái dữ liệu Hệ thống ký hiệu d defined, created, initialized k killed, terminated, undefined u used c – used in a computation (sử dụng trong biểu thức tính toán) p – used in a predicate (sử dụng trong các biểu thức điều kiện) ~x Cho biết trước khi tất cả hành động liên quan đến x x~ Cho biết tất cả hành động không có thông báo liên quan đến x 40 Một số ví dụ • v = expression c – use của các biến trong biểu thức definition của v • read (v1, v2, , vn) definitions của v1, , vn • write (v1, v2, , vn) c - uses của v1, , vn • method call: P (c1, , cn) definition của mỗi tham số • While B do S p – use của mỗi biến trong biểu thức điều kiện 41 Ví dụ 42 Các chiến lược thiết kế test case • All-du paths (ADUP) • All-Uses (AU) • All-p-uses (APU) • All-c-uses (ACU) • All-p-uses / Some-c-uses (APU+C) • All-c-uses / Some-p-uses (ACU+P) • All-definition (AD) 43 Ví dụ 44 Xét biến “Bill” 45 Bảng mô tả biến “Bill” 46 Xét biến “Usage” 47 Bảng mô tả biến “Usage” 48 Data-flow testing paths for each variable 49 Mối quan hệ giữa các chiến lược data-flow test 50 Các công cụ hỗ trợ kiểm thử • Các công cụ hỗ trợ quản lý quá trình kiểm thử • Các công cụ hỗ trợ thực hiện các kỹ thuật kiểm thử – Công cụ kiểm thử hiệu năng (Performance) – Công cụ kiểm thử chức năng (Functional) – Công cụ kiểm thử bảo mật (Security) – Công cụ kiểm thử đơn vị (UnitTesting) – 51 Các công cụ hỗ trợ quản lý quy trình kiểm thử phần mềm (1) • Các đối tượng cần quản lý của 1 công cụ kiểm thử PM – Project – User – User Role – Requirement – Release: Phiên bản của project. – Test Plan: Kế hoạch test. – Test types: Các loại test. – Test cases: Các trường hợp test – Teststep: Các bước thực hiện cho mỗi test case – Result: Kết quả thực thi test. – Bug: Lỗi – Reports: Các thông báo về tình trạng của tiến trình: Tình trạng lỗi, tiến triển của công việc: – Các tài liệu hướng dẫn sử dụng chương trình (Help) 52 Các công cụ hỗ trợ quản lý quy trình kiểm thử phần mềm (2) • Các chức năng cần phải có – Quản lý project. – Quản lý User. – Phân quyền User. – Quản lý requirement theo phiên bản. – Quản lý release. – Quản lý các thành phần của release: build, component,.. – Quản lý testplan. – Quản lý testcase. – Cập nhật kết quả cho test case. – Cập nhật tình trạng lỗi. – Thống kê lỗi cho mỗi release hoặc mỗi thành phần của release. – Tự động cập nhật kết quả kiểm thử 53 Các công cụ hỗ trợ quản lý quy trình kiểm thử phần mềm (3) No Name Desc REq Download 1 TestLink Apache, MySQL, PHP 48797 2 Fitnesse Mac, Wnidows, POSIX 24475 Windows, BSD, Linux, 3 QATraq 21992 SunOS/Solaris 4 Bugzilla Test Runner Bugzilla 2.16.3 or above 17291 All 32-bit MS Windows (95/98/NT/2000/XP), All POSIX 5 rth 9563 (Linux/BSD/UNIX-like OSes), IBM AIX 6 TestMaster Linux, Apache, PostgreSQL 6728 7 TCW Any (PHP/SQL/Apache) 4488 8 Tesly OS Independent 3327 9 qaProjectManager Platform Independent 3133 10 Testitool Apache, PHP, MySQL 701 www.opensourcetestingtools.org 54 Công cụ kiểm thử hiệu năng • Là một dạng kiểm tra tự động nhằm tìm ra những điểm “thắt cổ chai” của phần mềm, giúp cho người phát triển có những thay đổi thích hợp để tăng khả năng thực thi, tốc độ xử lý của phần mềm • Giúp người kiểm tra xác định được những thông số ngưỡng của phần mềm, đề ra tiêu chuẩn cho những lần kiểm tra sau • Thường được áp dụng đối với các PM được triển khai trên môi trường nhiều người dùng ( ví dụ: ứng dụng web ) • Kết quả mong đợi của việc kiểm thử hiệu năng phải được định nghĩa một cách rõ ràng • Ví dụ: – Số kết nối (session) đồng thời mà server có thể phục vụ – Thời gian (bao nhiêu phút/giây) mà trình duyệt nhận được kết quả từ server – . 55 Công cụ kiểm thử hiệu năng No Name Requirements Download 1 OpenSTA Windows 2000, NT4 and XP 251965 2 Grinder OS Independent 156458 3 TPTEST MacOS/Carbon and Win32 108036 Database Opensource 4 Linux, POSIX 103484 Test Suite 5 Sipp Linux/Unix/Win32-Cygwin 102111 32-bit MS Windows (NT/2000/XP), Linux, 6 WebLOAD 39401 Windows Server 2003 7 OpenWebLoad Linux, DOS 31204 Hammerhead 2 - Web Hammerhead has been used with Linux, 8 24814 Testing Tool Solaris and FreeBSD. 9 Dieseltest Windows 14618 10 DBMonster OS Independent 13710 www.opensourcetestingtools.org 56 Các công cụ hỗ trợ kiểm thử đơn vị • Có rất nhiều công cụ kiểm thử đơn vị được viết bằng nhiều ngôn ngữ khác nhau – ADA – C++ – HTML – Java – .NET – Pert – PHP – SQL – XML – Ruby – 57 Các công cụ hỗ trợ kiểm thử đơn vị No Name Requirements Download 1 JUnit OS Independent 2151874 2 Findbugs JRE (or JDK) 1.4.0 or later 379779 3 PMD JDK 1.3 or higher 344688 4 Checkstyle OS Independent 216780 5 EclEmma Eclipse 209153 6 Dbunit JUnit 129300 7 StrutsTestCase for JUnit v1.9.5 OS Independent 106860 8 Emma Java 59435 9 MockObjects OS independent 55457 10 JUnitEE JUnit 54618 www.opensourcetestingtools.org 58 Các công cụ hỗ trợ kiểm thử đơn vị No Name Requirements Download 1 NUnit Windows NT/2000 1061875 2 NUnitAsp Windows NT/2000 72724 NUnit Addin for 3 Windows 58588 Visual Studio.NET 4 NUnitForms Windows NT/2000 46880 csUnit has been tested using the Microsoft .NET 5 csUnit framework 1.0 Service Pack 2 runtime on an 31483 Intel-compatible platform. 6 NCover All 32-bit MS Windows (95/98/NT/2000/XP) 14264 7 VSNUnit All 32-bit MS Windows (95/98/NT/2000/XP) 8763 8 dotUnit All 32-bit MS Windows (95/98/NT/2000/XP) 6230 OS Independent (Written in an interpreted 9 .NETUnit 5558 language) 10 ASPUnit Microsoft Internet Information Server 5.0 or 5.1 5197 www.opensourcetestingtools.org 59 Một sô công cụ hỗ trợ kiểm thử chức năng No Name Desc Req Download Software Testing Automation Framework Windows, Linux, Solaris, 1 212018 (STAF) AS/400, AIX, HP-UX, Irix 2 soapui Java 1.5 178985 3 Linux Test Project Linux 103484 4 jWebUnit OS Independent 56526 5 Abbot Java GUI Test Framework TBC 56118 All 32-bit MS Windows 6 Software Automation Framework Support 43735 (95/98/NT/2000/XP) OS Independent, JDK 1.4 7 Jameleon 43507 or higher Windows, OS 8 WebInject 40891 Independent, Linux 9 Marathon Java 1.3 or later 30328 10 Solex Eclipse 2.1 or above 29591 www.opensourcetestingtools.org 60 Các công cụ kiểm thử thương mại Vendor Tool Name of testing suite or companion tools Compuware TestPartner QACenter Enterprise Edition+ Empirix e-Tester e-TEST suite Test Manager, Manual Tester, IBM Rational Functional Tester Performance Tester QuickTest Mercury Quality Center Professional RadView WebFT TestView Suite Seapine QA Wizard TestTrack Pro Segue SilkTest SilkCentral, SilkPerformer 61 Các công cụ kiểm thử thương mại Technical and nontechnical users Mercury QuickTest Pro Compuware TestPartner Technical users Nontechnical users IBM Rational Functional Tester Empirix e-Tester Segue SilkTest Seapine QA Wizard RadView WebFT 62 Tài liệu tham khảo • Software Testing, A Craftsman’s Approach, Paul C.Jorgensen • Practical Software Testing, EleneBurnstein • Slides: Software Testing ISEB Foundation Certificate Course • Slides: Software Testing, Dr. Balla Katalin • Slide: Equivalence Class Testing, Prof. Schlingloff & Dr. M Roggenbach • Slide: Decision Table Based Testing, Neelam Gupta, The University of Arizona Tucson, Arizona, USA • Object Oriented Testing, Ali Kamandi, Sharif University of Technology 63 Bài tập 1 Xét đoạn code sau, yêu cầu: thiết kế các ca kiểm thử đạt bao phủ mức 4. using namespace std; # include main() { int n; cout<< "Nhap n"<<endl; cin >>n; for (n; n>0; n--) { cout<< n<< ","; } cout<< "Ket thuc"; return 0; } 64 BT1 • Vẽ đồ thị dòng • Tính độ phức tạp – C=4-4+2=2 • Xác định đường độc lập – 1-2-3-2 – 1-2-4 • Xác định ca kiểm thử TC Đầu vào Đầu r among đợi 1 N=10 In ra “Nhập n” In ra “10,9,8,7,6,5,4,3,2,1, Kết thúc” 2 N=0 In ra “Nhập n” In ra “Kết thúc” 65 Bài tập 2 a. Xét đoạn code sau, yêu cầu: thiết kế các ca kiểm thử đạt bao phủ mức 2. using namespace std; #include main() { int a,b,c,d,x,y; cout<<"Nhap a, b, c, d, x, y"<<endl; cin>>a>>b>>c>>d>>x>>y; if (a>0&&b==1){x=x+1;} if (c==3 || d<0) {y=0;} cout<<"x = "<<x<<endl; cout<<"y = "<<y<<endl; } 66 BT2 • Vẽ đồ thị dòng • Độ phức tạp của chu trình C=3 67 BT2 • Xác định đường độc lập – 1-2-3-4-5-6 – 1-2-4-5-6 – 1-2-3-4-6 • Xác các ca kiểm thư ̉ TC Đầu vào Đầu r among đợi 11 a=5, b=1,c=3,d=2, x=7,y=7 Nhap a, b, c, d, x, y x=8, y=0 22 a=5,b=3, c=3,d=2,x=7,y=7 Nhap a, b, c, d, x, y x=7, y=0 33 a=5, b=1, c=0, d=2, x=7,y=7 Nhap a, b, c, d, x, y x=8, y=7 68 BT2.b • Xét đoạn code yêu cầu thiết kế ca kiểm thử bao phủ mức 4 69 • Vẽ đồ thị dòng • Tính độ phức tạp của – Chu trình C=11-8=2=5 • Xác định các đường độc lập – 1-2-3-4-5-6-7-8 – 2. 1-2-5-6-7-8 – 3. 1-2-3-5-6-7-8 – 4. 1-2-3-4-5-7-8 – 5. 1-2-3-4-5-6-8 70 BT2 • Xác định các trường hợp kiểm thử TC Đầu vào Đầu r among đợi 1 a=5,0,b=1,c=4,d=-2, x=7,y=7 Nhap a, b, c, d, x, y x=8, y=0 2 a=-3,b=1,c=4,d=-2, x=7,y=7 Nhap a, b, c, d, x, y x=7,y=0 3 a=5 , b =10,c=4,d=-2, x=7,y=7 Nhap a, b, c, d, x, y x=7, y=0 4 a=5,b=1, c=3, d=5, x=7,y=7 Nhap a, b, c, d, x, y x=8, y=0 5 a=5, b=1, c=4, d=5, x=7, y=7 Nhap a, b, c, d, x, y x=8, y=7 71 Bài tập 3 Thiết kế các ca kiểm thử thỏamã n tiêu chuẩn phủ cấp4 double average(int[] values, int min, int max) { int sum=0, count=0, item=0; double average= 0; while(values[item] !=-999 && item <100) { if (values[item]>= min && values[ item] <= max) { sum += values [item]; count ++; } item++; } if (count>0) average= (double) sum/count; else average =-999; return average; } 72 BT3 • Thiết kế ca kiểm thử thỏa mãn phủ cấp 4 73 BT3 • Vẽlưu đồ 74 BT3 • Vẽsơ đồ dòng chảy • Xác định độ phức tạp của chu trình – C=6 • Số đường path – 1. 1-2-8-9-11 – 2. 1-2-8-10-11 – 3. 1-2-3-8-9-11 – 4. 1-2-3-4-7-2. – 5. 1-2-3-4-5-7-2 – 6. 1-2-3-4-5-6-7-2 75 BT3 • Xác định ca kiểm thử TC Đầu vào Đầu r among đợi 1 M= {1,9,-999,37}, min =0, max=10 Giá trị trung bình avg=(1+9)/2 2 M={-999,1,7,21}, min=0, max=10 avg= -999 3 M={5,6,7,120,,100} (>100 phần tử) avg= gía trị trung bình của min=0, max=100 100 phần tử đầu tiên thỏa m.n điều kiện max, min 4 M={7,8,18,20,-999} avg= (18+20)/2 min=10, max=100 6 M= {7,80,9,20,8,-999,45} avg= (7+8+9)/3 min=0, max=10 7 M={7,8,9,100} (M[i]-999 và avg= giá trị trung bình của min<=M[i]<=max với mọi i <=100) 100 phần tử hợp lệ min=0, max=100 76 Bài tập 4 • Thiết kế các ca kiểm thử thỏa mãn tiêu chuẩn phủ cấp 4 77 BT4 • Vẽ đồ thị • Tính độ phức tạp – C=12-9+2=5 • Xác định các đường độc lập – 1-2-9 – 1-2-3-4-64 – 1-2-3-4-5-6-4 – 1-2-3-4-5-7-8-9 – 1-2-3-4-5-7-9 78 BT 4 • Xác định các ca kiểm thử TC Đầu vào Đầu r among đợi 1 Nhập “d” Goodstring= false Count=0 2 Nhập “abbbx” Goodstring= true Count=3 3 Nhập “ accccd” Goodstring= false Count=4 4 Nhập “ax” Goodstring= true Count=0 5 Nhập “ad” Goodstring= false Count=0 79
File đính kèm:
- bai_giang_kiem_thu_phan_mem_bai_5_cac_ky_thuat_kiem_thu_tiep.pdf