Coverage Test

Download Report

Transcript Coverage Test

Nhóm: E3
Môn: Kiểm chứng phần mềm
GVLT: Lâm Quang Vũ
GVTH: Đào Anh Vũ





Chu Quang Bảo – 0812024
Đặng Ngọc Bình – 0812031
Võ Hoàng Bảo Châu – 0812045
Trịnh Văn Cư – 081258
Trần Thiên Tính – 0812519
• Coverage
Test
01. What
02. Coverage
Criteria
•
•
•
•
Statement coverage
Decision coverage
Condition coverage
Decision/Codition
coverage
04. Review
• Do it
03.Why
• Demo
 Test coverage cung cấp một phương
pháp làm thế nào để cho bộ test của
bạn thực sự kiểm tra được sản phẩm.
 Test coverage là kết quả của
chương trình thực hiện
một bộ kiểm thử.
 Đơn vị tính : %.
 Test Coverage chỉ có thể chỉ ra
được khu vực mà bạn cần phải
test. Chứ không viết ra những việc
kiểm tra này.
Chính là một phương pháp
giúp ta tìm ra được những
lỗi tiềm tàng trong một
sản phẩm phần mền.
Một công việc tối thiểu cần thiết để phát triển phần mền có chất lượng
Từ đó có thể tạo các test case có
chất lượng để tăng tỷ lệ phủ của
một bộ test.!!!
Sử dụng các Coverage
criteria.
 Để đo coi chương trình
thực hiện bộ test case như
như thế nào?

Coverage có thể thực hiện ở:
 Mã nguồn.
 Đối tượng.
 Mô hình
▪ Control flow graphs.(Điểu khiển đường đi của đồ thị) –
Dựa vào cấu trúc những thành phần trong mã nguồn
hay là mô hình.
▪ Finite state machines (Mở rộng) – Những mô hình trạng
thái.
▪ Data flow graph – Đồ thị đường đi của dữ liệu.
 Hay những bản checklist yêu cầu. – Những yêu cầu
của bản checklist đầu được phủ qua.





Statement coverage
Decision coverage
Condition coverage
Decision/Codition coverage
Paths Coverage.

Tư tưởng: Thực hiện đủ các ca kiểm thử sao cho
mỗi dòng code trong chương trình được thực thi ít
nhất một lần.
1.
2.
3.
4.
5.
6.
7.
8.
9.
int foo(int x, int y)
{
int z = 0;
if ((x>0) && (y>0))
{
z = x;
}
return z;
}

Ví dụ giả sử hàm foo là một phần của
chương trình lớn và chương trình
được test với một số bộ test

Nếu quá trình thực hiện chương trình
hàm foo được gọi ít nhất một lần thì
lúc này ta nói hàm foo thỏa hàm phủ

Để thỏa mãn điều kiện phủ dòng lệnh
thì dòng z = x phải được thực hiện. Giả
sử ta gọi hàm foo(1,1) tất cả dòng lệnh
trong hàm foo cần test sẽ được thực
hiện.

Nhưng với số foo là foo(0,1) thì câu
lệnh z=x không được thực thi và sẽ
không thỏa phủ dòng lệnh.


condition : biểu thức logic không chứa các
toán tử logic (AND, OR, NOT,…)
Vd: (x > 0) hoặc (isFallInLove) với
isFallInLove là một biến boolean.

Tư tưởng: Thực hiện đủ các ca kiểm thử sao
cho các codiction nhận cả hai giá trị true và
false ít nhất là một lần.
1.
2.
3.
4.
5.
6.
7.
8.
9.
int foo(int x, int y)
{
int z = 0;
if
((x>0) &&
(y>0))
(x>0)
(y>0)
{
z = x;
}
return z;
}
(x>0)
(y>0)
condiction Coverage
thỏa khi hai codition
trên nhận cả hai giá trị
true và false ít nhất
một lần.
 Ví dụ: foo(1,1) và
foo(1,0) và foo(0,0).

 Decision là một biểu thức kết hợp của
các condition bằng các toán tử logic.
 Tư tưởng: Thực hiện đủ các ca kiểm
thử mà:
 Mỗi điểm vào và thoát chương trình được
gọi ít nhất một lần.
 Mỗi decision sẽ xảy ra tất cả kết quả có
thể ít nhất một lần.
1.
2.
3.
4.
5.
6.
7.
8.
9.
int foo(int x, int y)
{
int z = 0;
if ((x>0) && (y>0))
(x>0) && (y>0))
{
z = x;
}
return z;
}

Lưu đồ:
(x>0)
&&
(y>0))
do No thing
z = x

Lưu đồ Foo:
(x>0)
&&
(y>0))
do No thing
Tất cả quyết định có thể
sinh ra ở điều kiện if trong
hàm foo đều phải được
thực hiện ít nhất một lần.
 Ví dụ: Để thỏa decision
coverage chương trình foo.
Giả sử ta chọn bộ test là:
foo(1,1) và foo(1,0).

z = x

Tư tưởng: Thực hiện đủ các ca kiểm thử
 mà mỗi điều kiện trong 1 quyết định thực hiện trên tất cả
các kết quả có thể ít nhất 1 lần,
 và mỗi điểm vào được gọi ít nhất 1 lần.
Điểm yếu của Decision/Codiction Coverage làmặc dù
xem ra nó có thể sử dụng tất cả các kết quả của tất cả
các điều kiện, nhưng thường không phải vậy vì
những điều kiện chắc chắn đã cản các điều kiện khác.
=> Vì vậy nên các lỗi biểu thức logic trong chương trình
chưa chắc chắn đã kiểm tra hết.


Example:

Analyze:

Tư tưởng: Tất cả dòng code đều được thực
hiện.

Điều này không có khả thi có sự xuất hiện
của vòng lặp.

Một bản của phép phủ với những vòng lặp
này được giải quyết bằng hai cách như sau:
 Vòng lặp này được thực hiện(bình thường , một
lần).
 Vòng lặp này được bỏ qua.

Một số đường có thể không khả thi vì
không có sự kết hợp giữa những điều kiệu
dữ liệu mà cho phép một đường được thực
hiện.
1
Tạo những con đường:
1–2–4–6–7
1–3–4–6–7
1–2–4–5–7
1–3–4–5–7
Những giá trị đầu vào:
a = 0, b = 1, x = 0
a = 3, b = 0, x = 0
a = 2, b = 1, x = 0
a = 2, b = 0, x = 0
true
a > 1 AND
b=0
2
false
x←x/a
4
a == 2
OR x>1
6
true
false
7
3
x ←x+1
5
1
Tạo những con đường:
1–2–4–6–7
1–3–4–6–7
1–2–4–5–7
1–3–4–5–7
Để thực hiện được đường này thì chúng ta
phải có a <= 1 AND a > 4
– Và điều này thì không có khả thi.
true
a>1
2
false
x←x/a
4
3
true
a>4
6
false
7
x ←x+1
5
Là phương pháp kiểm thử hộp trắng
Xét xem mức độ mà các ca kiểm thử
thực hiện hay bao phủ tính logic (mã
nguồn) của chương trình có đủ hay chưa.
 Xét xem các testcase đã đúng(đủ hết)
hay chưa.
 Kiểm tra các lỗi tiềm tàng trong những
đoạn code không được phủ trong
chương trình.



Công cụ: NCover