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

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 trang 1

Trang 1

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 trang 2

Trang 2

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 trang 3

Trang 3

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 trang 4

Trang 4

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 trang 5

Trang 5

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 trang 6

Trang 6

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 trang 7

Trang 7

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 trang 8

Trang 8

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 trang 9

Trang 9

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 trang 10

Trang 10

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

pdf 79 trang xuanhieu 4300
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

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:

  • pdfbai_giang_kiem_thu_phan_mem_bai_5_cac_ky_thuat_kiem_thu_tiep.pdf