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

