Professional Documents
Culture Documents
$59.5 billion/year in
USA
HIGH COST OF
SOFTWARE DEFECTS
(The Economic Impacts of
Research by CISQ found that, in 2018, poor
Inadequate Infrastructure
for Software Testing" quality software cost organizations $2.8
report for National trillion in the US alone. On average,
Institute of Standards & software developers make 100 to 150 errors
Technology, US for every thousand lines of code !!
Department of Commerce,
2002)
3C
Customers (Khách hàng)
Company (Công ty)
(Your) Career (Sự nghiệp)
KIỂM THỬ PHẦN MỀM
Phần mềm ?
là một tập các đoạn mã hoặc câu lệnh viết ra để cài đặt
trên máy tính nhằm thực hiện một hoặc một nhóm chức
năng nào đó và tất cả các hồ sơ kèm theo!
Các công việc trong vòng đời một phần mềm:
Phân tích, đặc tả yêu cầu
Phân tích, thiết kế hệ thống
Lập trình/Cài đặt
Kiểm thử
Viết tài liệu
Triển khai - Bảo trì
Chương 1. Phần mềm và lỗi phần mềm
SOFTWARE
Application System
Software is Software
designed as a “work is designed to
environment” operate the
between end-user computer hardware,
and computer. to provide basic
functionality, and to
provide a platform
for running
application software.
Chương 1. Phần mềm và lỗi phần mềm
… từ đó, tạo ra
một/nhiều
“fault” trong phần
mềm ...
Lập trình
Thiết kế
Đặc tả
Lỗi phần mềm
Chênh lệnh
Stt Học và tên hsl CT(1.1) CT(1.2) tiền
lương
Đặc tả thừa:
Một yêu cầu được đưa vào sản phẩm mà
không có trong đặc tả. Cũng có trường hợp
yêu cầu này có thể là một thuộc tính sẽ được
người dùng chấp nhận nhưng khác với đặc tả
nên vẫn coi là có lỗi.
Ví dụ: ????
Chi phí cho việc sửa lỗi phần mềm
Kiểm thử và sửa lỗi có thể được thực hiện tại bất
kỳ giai đoạn nào của vòng đời phần mềm
Chi phí cho việc tìm và sửa lỗi tăng một cách đáng
kể theo quá trình phát triển:
Không đáng kể khi thay đổi yêu cầu ở lần duyệt yêu cầu
đầu tiên
Tăng lên gấp bội khi thay đổi yêu cầu lúc đã lập trình
Không đáng kể nếu lập trình viên tự phát hiện lỗi của
mình
Chi phí cho việc sửa lỗi phần mềm
Chi
phí
để
sữa
lỗi
Tránh lỗi
Đặc tả hệ thống chính xác
Tăng cường duyệt và thẩm định
Chấp nhận triết lý chất lượng tổ chức: chất lượng là bánh
lái của quá trình phát triển phần mềm.
Lập kế hoạch cẩn thẩn cho việc thử nghiệm hệ thống
Đảm bảo chất lượng phần mềm
Thứ lỗi
Một hệ vô lỗi thì vẫn cần một tiện ích thứ lỗi: đó là vì có
thể có các lỗi đặc tả
Một tiện ích thứ lỗi là cần thiết cho một hệ thống đáng tin
cậy
Đảm bảo chất lượng phần mềm
Software End
Developers
testing users
Testers Project
manager
ww
w.t
he
Chương 2.
Kiểm thử phần mềm
Chương 2. Kiểm thử phần mềm
Kiểm thử là gì ?
KTPM bao gồm việc "chạy thử" phần mềm (PM)
hay một chức năng của PM, xem nó "chạy" đúng
như mong muốn hay không;
Kiểm thử phần mềm là cho thực thi chương trình
để tìm lỗi;
Chương 2. Kiểm thử phần mềm
Đoán lỗi
Phân hoạch tương đương
Kiểm thử giá trị biên
Kỹ thuật đồ thị nhân quả
Kỹ thuật phân tích trạng thái
Kỹ thuật phân tích tổ hợp
Kỹ thuật đoán lỗi
Avr. 4 menus
3 options / menu
Do đó, nên giới hạn một tập con tất cả các trường
hợp đầu vào có thể có
Mục đích: lựa chọn một tập con đúng
Có xác suất cao nhất phát hiện hầu hết các lỗi
Phân hoạch tương đương
Valid Invalid
Phân hoạch tương đương
Việc phân tích các giá trị biên khác với phân
hoạch tương đương theo hai điểm:
Từ mỗi lớp tương đương, phân hoạch tương
đương sẽ chọn phần tử bất kỳ làm phần tử đại
diện, trong khi việc phân tích giá trị biên sử
dụng một hoặc một số phần tử
Không chỉ chú ý tập trung vào những điều kiện
đầu vào, các trường hợp kiểm thử cũng được
suy ra từ việc xem xét các kết quả ra
Kiểm thử giá trị biên
Các THKT tốt nhất là tại các biên của các lớp
Kiểm thử giá trị biên mở rộng phân hoạch
tương đương trên cơ sở tập trung vào các
biên của miền đầu vào hơn là các giá trị tiêu
biểu của nó;
Chú ý cả trường hợp giá trị biên cho các kết
quả đầu ra!
Kiểm thử giá trị biên
max
max
Y
min X
min
Kiểm thử giá trị biên
Ví dụ 2:
Đồ thị nhân – quả
Ví dụ 2:
Loại
những
trường
hợp không
có trong
thực tế!
Đồ thị nhân quả
Ví dụ 3:
Phân tích các nhóm tương đương
Ví dụ 3:
Đồ thị nhân quả
Bài tập:
Cho đặc tả như sau: Trường Đại học A xét học bổng cho sinh viên theo quy định
như sau:
- Sinh viên có học lực Khá và:
+ Hạnh kiểm Khá: Đạt học bổng loại C
+ Hạnh kiểm Tốt: Đạt học bổng loại C
- Sinh viên có học lực Giỏi và:
+ Hạnh kiểm Khá: Đạt học bổng loại B
+ Hạnh kiểm Tốt: Đạt học bổng loại A
- Sinh viên có học lực Xuất sắc và:
+ Hạnh kiểm Khá: Đạt học bổng loại A
+ Hạnh kiểm Tốt: Đạt học bổng loại A*
- Các trường hợp còn lại không được nhận học bổng.
Hãy thiết kế các trường hợp kiểm thử cho đặc tả trên bằng phương pháp Bảng
quyết định: Liệt kê Nguyên nhân – Kết quả; Lập Bảng quyết định – Thiết kê các ca
kiểm thử.
PHƯƠNG PHÁP KIỂM THỬ TỔ HỢP
4. Phương pháp kiểm thử tổ hợp
Test 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Bold yes yes yes yes no no no yes no no yes yes no yes no no
Italic no yes yes yes yes yes yes yes no no no no no no yes no
Underline no no yes yes no yes yes no yes yes yes yes no no no no
Strikethrough no no no yes no no yes yes no yes no yes yes yes yes no
Phương pháp kiểm thử tổ hợp
BẢO HIỂM
OK
PHƯƠNG PHÁP DỰA VÀO CHUYỂN ĐỔI
TRẠNG THÁI
5. Chuyển đổi trạng thái
“name” “name”
Điều kiện
Trạng thái
Chuyển đổi trạng thái
S5 – Access Granted - -
S6 – Account Blocked - -
Chuyển đổi trạng thái
a
b c b
b
d
d c
Dạng tuần tự: ab Dạng tuần rẽ nhánh: a(c+b)d Dạng lặp: a(bc)*d
Đồ thị luồng điều khiển
if(b == 0)
cout<<”Vo so nghiem”; a =0
a
a !=0
else
b e
cout<<”Vo nghiem”; b =0 b !=0
nghiệm
cout<<”x =”,-b/a;
ne
Đồ thị luồng điều khiển
Ví dụ tổng quát:
1
s:=0;
d:=0;
2
while (x<y) {
x:=x+3; 3
y:=y+2;
if (x+y < 100)
4
s:=s+x+y;
else 5 6
d:=d+x-y;
7
}
8
Thiết kế các ca kiểm thử dựa vào CFGs
Các tiêu chuẩn bao phủ dựa trên đồ thị luồng điều
khiển:
Phủ tất cả các hàm (Function Covarage)
Phủ tất cả các lệnh/đỉnh (Statement Coverage).
Phủ tất cả các cung/quyết định (Branch/Decision
Coverage).
Phủ tất cả các điều kiện (Condition Coverage ).
Phủ tất cả các lộ trình (Path Coverage)
Phủ tất cả các lộ trình cơ sở (Basic-Path Coverage)
Thiết kế các ca kiểm thử dựa vào CFGs
x=0 x!=0
x++ b c g=1/x
ne
Phủ tất cả các lệnh (đỉnh)
Ví dụ 3:
n0
----
a
if(a < 2 && a==b)
a ≥ 2 hoặc b≠a a<2 và a=b
x= 2- a;
else b c x=2-a
x = a-2
x= a-2;
----- ne
Nếu ta chọn tập giá trị thử của cặp (a, b) là: {(1,1) và
(3,3)} thì sẽ thỏa mãn tất cả các cung. Tuy nhiên, tập
dữ liệu không phủ tất cả các điều kiện.
Phủ tất cả các lệnh (đỉnh)
a a≥2
a<2
c
b
b≠a b=a
b=a b≠a
x=2-a d e x = a-2
ne
Phủ tất cả các điều kiện
cout<<”Nhap m: “;
cin>>m;
i=n; s=0
a n>m
s=0;
while(n<=m){ n≤m
1/s
i=n; s=s+a[i]
b e
i++
s=s+a[i]; n++;
}
ne
cout<<1/s;
Phủ tất cả các điều kiện
Vẽ CFG và thiết kế dữ liệu thử theo tiêu chuẩn phủ tất cả các điều kiện
internal static decial GetCommission(int locks, int stocks, int barrels)
{
decimal sales = GetTotalSales(locks, stocks, barrels);
decimal commission = 100;
if (CommissonIsDue(locks, stocks, barrels))
{
if (sales > 1800)
{
commission += (800 * Bonus15);
commission += ((sales - 1800m) * Bonus20);
}
else if (sales > 1000)
{
commission += ((sales - 1000m) * Bonus15);
}
else {
commission = (sales * standardCommission);
}
}
return commission.ToString();
}
Bài tập 2
if(n<=0)
n=1-n; n≤0
a
if(n%2==0) b
n>0
n=1-n
n=n/2;
else n=3*n +1;
c
n chẵn n lẻ
d c
Lộ trình cơ sở (Lộ trình độc lập)
4
6
7 8 5
9
10
11
Ví dụ (tt): Có bao nhiêu lộ trình cơ sở ?
R3
(1-2-3-4-5-10)*-11
- Lộ trình 3: 9
(1-2-3-6-8-9-10)*-11 10
- Lộ trình 4:
R4
(1-2-3-6-7-9-10)*-11 11
Lộ trình (1-2-3-4-5-10)*
-(1-2-3-6-8-9-10)*-11 thì sao ?
Thiết kế các trường hợp kiểm thử theo LTCS
Theo 4 bước:
- Bước 1: Vẽ đồ thị luồng điều khiển từ mã
nguồn hoặc mô hình của mã nguồn.
- Bước 2: Xác định độ phức tạp Cyclomat của
đồ thị luồng điều khiển
- Bước 3: Xác định các lộ trình cơ sở
- Bước 4: Phát sinh các trường hợp kiểm thử
có khả năng thực hiện trên mỗi lộ trình cơ
sở.
Phát sinh các trường hợp kiểm thử theo LTCS
Chú ý:
- Dữ liệu kiểm thử được chọn sao cho các
điều kiện tại các nút điều kiện phải được
kiểm thử
- Mỗi trường hợp kiểm thử được thực thi và
được đối chiếu với kết quả mong đợi
Phát sinh các trường hợp kiểm thử theo LTCS
R6 R4
3
R1
4
8
R2
9 10 5
R5
R3
7
6
11
Bước 2: Tính độ phức tạp Cyclomat
Lộ trình 1:
Lộ trình 2: ?
Lộ trình 3: ?
Lộ trình 4: ?
Lộ trình 5: ?
Lộ trình 6: ?
Lưu ý
Hãy thiết kế các ca kiểm thử phủ các lộ trình cơ sở dựa vào đặc tả thuật toán trên!
CHƯƠNG 3.
CHIẾN LƯỢC KIỂM THỬ PHẦN MỀM
CHƯƠNG 3. CHIẾN LƯỢC KTPM
Module
a a
b c b c
d e f g d e f g
h i j k l m h i j k l m
n o n o
CHƯƠNG 3. CHIẾN LƯỢC KTPM
HẾT CHƯƠNG 3
Chương 4. Xây dựng ứng dụng KTĐV