PHẦN II. NGUYÊN LÝ KIỂM THỬ
PHẦN MỀM
Nội dung:
Bài 3: Các phương pháp kiểm thử
Bài 4: Các kỹ thuật kiểm thử
Bài 5: Các vấn đề cần kiểm thử
Bài 6: Các giai đoạn kiểm thử
07/05/14
1
BÀI 3. CÁC PHƯƠNG PHÁP KIỂM THỬ
Nội dung:
3.1. Test to pass, test to fail
3.2. Phương pháp kiểm thử hộp trắng (white box test)
3.3. Phương pháp kiểm thử hộp đen (black box test)
3.4. Phương pháp kiểm thử hộp xám (gray box test)
3.5. Kiểm thử tĩnh (static), kiểm thử động (dynamic)
3.6. Kết hợp các phương pháp kiểm thử
3.7. Standard và guideline của quá trình coding
07/05/14
2
3.1. TEST–TO–PASS VÀ TEST–TO–FAIL
Test – to – pass: thực hiện kiểm tra với những chức năng
tối thiểu của phần mềm => pass
Test – to – fail: thực hiện với kiểm tra những trường hợp
lắt léo, bí ẩn, cố gắng để bắt lỗi => fail
Thứ tự thực hiện : test – to – pass và test – to – fail
Thứ tự này khơng bắt buộc => đạt được mục đích: bắt lỗi3
07/05/14
3.2. PHƯƠNG PHÁP KIỂM THỬ HỘP
TRẮNG (WHITE BOX TEST)
INPUT
White box testing – test hộp trắng
Còn gọi là structural testing
Test dựa trên cấu trúc của code
OUTPUT
07/05/14
4
3.2. EXAMPLE: WHITE BOX TEST WITH “AND”
Definition
Conditions Table ( 2 n )
Both parts of the predicate are
tested
Program Sample shows that all 4
test conditions are tested
Program Sample
If((A > 1) AND (B=0)
{
//sub-statement 1
}
Else
{
//sub-statement 2
}
Test Conditions
1. (A > 1) AND (B = 0)
2. (A > 1) AND (B NOT = 0)
3. (A<=1) AND (B NOT = 0)
4. (A<=1) AND (B = 0)
3.2. EXAMPLE: WHITE BOX TEST WITH “OR”
Conditions Table ( 2 n )
Definition
A>1
TRUE
Program Sample shows that all 4 TRUE
FALSE
test conditions are tested
FALSE
Both parts of the predicate are
tested
Program Sample
If((A > 1) OR (B=0)
{
//sub-statement 1
}
Else
{
//sub-statement 2
}
OR
OR
OR
OR
B = 0 RESULT
TRUE
TRUE
FALSE TRUE
FALSE FALSE
TRUE
TRUE
Test Conditions
1. (A > 1) OR (B = 0)
2. (A<=1) OR (B NOT = 0)
3. (A<=1) OR (B=0)
4. (A>1) OR (B NOT= 0)
3.2. EXAMPLE: WHITE BOX TEST WITH “if…else”
Definition
Program Sample
A test case design technique in which
test cases are designed to execute all
the outcomes of every decision
Graph
1
T
3
Y>1
Y>9
Y=Y+1
Y=Y+4
F
Y=Y+3
Y=Y+2
F
2
Y=Y+1
T
IF Y > 1 THEN
Y=Y+1
IF Y > 9 THEN Y = Y + 1
ELSE
Y=Y+3
END
Y=Y+2
ELSE
Y=Y+4
END
No. Of Paths = 3
Test Cases:
1 (Y > 1) and (Y > 9)
2 (Y > 1) and (Y <= 9)
3 (Y < = 1)
3.3. PHƯƠNG PHÁP KIỂM THỬ HỘP
ĐEN (BLACK BOX TEST)
Black box testing – test hộp đen
INPUT
Còn gọi là functional testing,
behavioural testing
Test không quan tâm đến code, test
dựa trên hành vi của hệ thống
OUTPUT
07/05/14
8
3.4. EXAMPLE: BLACK BOX TEST
Form Login cho phép đăng nhập với User,
Pass hợp lệ. Kiểm thử form với những trường
INPUT
hợp nào?
Kiểm thử với những trường hợp:
Login Form
User, Pass hợp lệ
User hoặc Pass để trống
User hoặc Pass không hợp lệ
07/05/14
OUTPUT
9
3.4. PHƯƠNG PHÁP KIỂM THỬ HỘP
XÁM (GRAY BOX TEST)
Gray box testing – kiểm thử hộp xám
INPUT
Là sự kết hợp của white box và black box
testing
1 số test case phải là white box (tester phải biết
1 chút về cách thức hoạt động bên trong của
phần mềm)
OUTPUT
1 số test case là black box
07/05/14
10
3.4. EXAMPLE: GRAY BOX TEST
Division(a, b) thực phép chia 2 số nguyên a
cho b được code bằng C#. Cần kiểm thử với
INPUT
những trường hợp nào?
Kiểm thử với những trường hợp:
Method of division
a chia hết b
a không chia hết cho b
a>b hoặc a
OUTPUT
b=0
…
07/05/14
11
3.5. KIỂM THỬ STATIC, DYNAMIC
Khái niệm: static testing và dynamic testing
Static testing quy về việc kiểm tra một số thứ mà nó khơng phải
đang được running, examining, reviewing.
Dynamic testing là cách mà bạn gọi quá trình testing, running và
using the software.
07/05/14
12
3.6. KẾT HỢP CÁC PHƯƠNG PHÁP
KIỂM THỬ
a) Static black box testing
b) Dynamic black box testing
C) Dynamic white box testing
07/05/14
13
a) STATIC BLACK BOX TESTING
Static black – box testing dùng để kiểm tra bản đặc tả
Bản đặc tả có thể được xây dựng theo các cách khác nhau. Nó có thể
căn cứ vào: yêu cầu khách hàng, nghiên cứu thị trường, những tiêu
chuẩn về tính tiện dụng
Bản đặc tả là một tài liệu, khơng phải là một chương trình đang chạy,
vì vậy mà nó được xem xét tĩnh (static)
Một số dự án xây dựng bằng mơ hình: big – bang hoặc code – and –
fix => khơng có bản đặc tả, người kiểm thử => tester phải trao đổi
với coder, manager, … => đưa ra bản đặc tả: chi tiết hoặc chỉ là
07/05/14
những câu hỏi của người đang thiết kế phần mềm.
14
b) KIỂM THỬ DYNAMIC BLACK - BOX
Cách kiểm thử phần mềm mà tester khơng hề biết gì về
đoạn code kiểm thử gọi là Dynamic black – box testing
(behavioral testing )
Dynamic: bạn sẽ đóng vai trị là một khách hàng và chạy chương
trình
Black – box: bạn đang kiểm tra nó mà khơng hề biết chính xác cái
cách mà nó làm việc
⇒
07/05/14
requirements document và product specification => testcase (input, output)
15
b) KIỂM THỬ DYNAMIC BLACK - BOX
Test case:
Lựa chọn các test case là nhiệm vụ
quan trọng nhất của tester
Test case được lựa chọn phải đảm
bảo kiểm tra ít trường hợp mà vẫn
đạt hiệu quả cao
VD: Kiểm thử phương thức
Division
07/05/14
16
b) KIỂM THỬ DYNAMIC BLACK - BOX
Nếu khơng có Spec (big - bang, code - and - fix), tester sẽ
phải kiểm thử một cách mị mẫm
Đồng thời: tìm hiểu phần mềm, thiết kế testcase, thực thi chúng
Coi phần mềm như một bản đặc tả, tìm hiểu các feature của phần mềm
bằng chính các feature này
07/05/14
Khó có thể kiểm tra phần mềm một cách triệt để
17
c) DYNAMIC WHITE BOX TESTING
Dynamic white-box testing, tóm tắt ngắn gọn là sử dụng
những thông tin mà bạn thu được từ việc xem xét
những vấn đề mà code thực hiện và cách nó làm việc để
xác định những thứ cần test, những thứ không cần test,
và cách kiểm thử
Phân biệt giữa 2 khái niệm: dynamic white-box testing
và debugging
07/05/14
18
c) DYNAMIC WHITE BOX TESTING
Phân biệt giữa 2 khái niệm: dynamic white-box testing
và debugging
07/05/14
19
3.7. STANDARD VÀ GUIDELINE CỦA
QUÁ TRÌNH CODING
Standard: là các tiêu chuẩn quốc tế về coding bắt buộc 1
phần mềm đạt chuẩn phải tuân theo
Guideline: là các hướng dẫn viết coding khuyến khích các
kỹ sư lập trình tn theo
07/05/14
20
3.7. STANDARD VÀ GUIDELINE CỦA
Q TRÌNH CODING
Các standard có 4 phần chính:
Title miêu tả chủ đề mà standard muốn trình bày
Standard (hoặc guideline) miêu tả, giải thích chính xác những
thứ được phép và khơng được phép
Justification (sự biện hộ, chứng minh): đưa ra những lý do để
người lập trình hiểu là tại sao nó là cách lập trình tốt
Example (ví dụ): biểu diễn những mẫu lập trình đơn giản về
cách sử dụng standard. Cái này có thể khơng cần thiết
07/05/14
21
3.7. STANDARD VÀ GUIDELINE CỦA
QUÁ TRÌNH CODING
Các chuẩn quốc gia và quốc tế dành cho hầu hết các ngôn
ngữ lập trình và cơng nghệ thơng tin có thể thu được từ
những tài liệu sau:
American National Standards Institute (ANSI), www.ansi.org
International Engineering Consortium (IEC), www.iec.org
International Organization for Standardization (ISO), www.iso.ch
National Committee for Information Technology Standards
(NCITS), www.ncits.org
07/05/14
22
3.7. STANDARD VÀ GUIDELINE CỦA
QUÁ TRÌNH CODING
Các tài liệu giải thích về các programming guideline và cách
thực hiện tốt nhất có thể tìm thấy trong các tổ chức chun
nghiệp như:
Association for Computing Machinery (ACM), www.acm.org
Institute of Electrical and Electronics Engineers, Inc (IEEE),
www.ieee.org
07/05/14
23
BÀI 3. CÂU HỎI
1.
So sánh kiểm thử black box, white box, gray box?
2.
Khi nào áp dụng static testing, khi nào áp dụng dynamic testing?
3.
Thế nào là Standard? Thế nào là Guideline?
4. Nếu bạn đang kiểm tra khả năng phát lệnh in tới một máy in cho
phép in nhiều trang trên 1 khổ giấy (với đặc tả cho phép in số
lượng trang chẵn và in tối đa là 8 trang trên 1 khổ giấy), những
trường hợp nào có thể là các test – to – fail?
07/05/14
24