You are on page 1of 46

Công nghệ phần mềm

Đề tài : Tìm hiểu các kĩ thuật kiểm thử

Nhóm thực hiện


Phạm Hoàng Hà
Mai Đức Khiêm
Nguyễn Thanh Loan
Hoàng Quyết Tiến
Khái quát nội dung trình bày

• Kiểm thử phần mềm ( KTPM ) là gì ?


• Tại sao phải kiểm thử PM ?
• Lịch sử của Kiểm thử phần mềm
• Khái quát về các kĩ thuật kiểm thử
• Các kĩ thuật kiểm thử
• Kết luận và hỏi đáp
Tại sao phải KTPM ?

• Đảm bảo chất lượng phần mềm sau khi


đưa ra sử dụng
• Hoàn thiện & nâng cấp khả năng phần
mềm
• Tránh rủi ro cho khách hàng và giảm
bảo trì, bảo hành cho người viết phần
mềm.
Kiểm thử phần mềm

Kiểm thử phần mềm là công việc sau cùng trước


khi đưa phần mềm ra thị trường (release) , kiểm
thử được thực hiện thông qua các bài Test.

- Thực tế là áp dụng các phương pháp, chiến lược


cho các các tập giá trị cho đầu vào để xem kết
quả đầu ra có như ý muốn hay không ?
Lịch sử của kiểm thử phần
mềm
Khái quát các kĩ thuật KTPM

• White Box Testing (Hộp trắng)

• Black Box Testing ( Hộp đen )

• Grey box testing (Hộp xám)


White Box Testing
Khái niệm

• Còn được gọi là clear box testing, glass box


testing, transparent box testing, or structural
testing, thường thiết kế các trường hợp kiểm thử
dựa vào cấu trúc bên trong của phần mềm.

• WBT đòi hỏi kĩ thuật lập trình am hiểu cấu trúc


bên trong của phần mềm ( các đường, luồng dữ
liệu, chức năng, kết quả ).

• Phương thức : Chọn các đầu vào và xem các đầu ra


White Box Test
White Box Testing
Đặc điểm

• Phụ thuộc vào các cài đặt hiện tại


của hệ thống và của phần mềm, nếu
có sự thay đổi thì các bài test cũng cần
thay đổi theo.
• Được ứng dụng trong các kiểm tra ở cấp
độ mô đun(điển hình), tích hợp (có khả
năng) và hệ thống của quá trình test phần
mềm.
White Box Testing
Các kĩ thuật
• Kiểm thử luồng, lộ trình ( Deriving Test Cases)
• + Lộ trình cơ sở (Basis path Testing)

• Luồng điều khiển / Phạm vi


• (Control-flow / Coverage Testing)
• + Phương thức - Method Coverage
• + Câu lệnh – Statement Coverge
• + Nhánh - Branch Coverge
• + Điều kiện – Condition Converage

• Kiểm thử luồng dữ liệu ( Data Flow Test )


• Trường hợp hỏng ‘rác’ – Failure ‘Dirty’ Case Test
• Flow Groaps Revisited
White Box Testing
Kiểm thử luồng, lộ trình
( Deriving Test Cases)

• Basis Path Testing ( Kiểm thử lộ trình cơ sở)

• Equivalence Partitioning / Boundary Value


( Phân vùng tương đương và Giá trị biên )
White Box Testing
Basis Path Testing

• Kiểm tra lộ trình cơ sở :


• Là kĩ thuật kiểm thử mà phần mềm
được chia thành các lộ trình
• Đảm bảo các lộ trình độc lập qua một mô
đun mã sẽ được kiểm thử đầy đủ
White Box Testing
Basis Path Testing
White Box Testing
Basis Path Testing

Một số khái niệm


• Đồ hình lộ trình : Bao gồm các hình, mũi tên
(cạnh), chỉ số, mô tả khác
• Độ phức tạp chu trình ( Cyclomatic Complexity )
: Được tìm ra bởi chu trình McCabe, chỉ ra độ
phức tạp lôgic của một chương trình.
White Box Testing
Basis Path Testing
White Box Testing
Basis Path Testing

• Cách tạo kiểm thử


• Sử dụng một đoạn code hoặc thiết kế làm cơ sở để xây dựng
lên đồ hình luồng.
• Đưa ra các chu trình lộ trình từ đồ hình vừa có được.
• Quyết định một lộ trình độc lập tuyến tính
• Kiểm tra tất các chu trình đã tạo.
White Box Testing
Luồng điều khiển / Gom
(Control-flow / Coverage Testing)

• Là cách tạo ra các bộ giá trị kiểm thử


để có thể xem được 100% các trường
hợp có thể xảy ra với các thành phần của
một chương trình bao gồm :
+ Các phương thức ( Method )
+ Các câu lệnh (Statement )
+ Các nhánh (branch)
+ Các điều kiện
White Box Testing
Luồng điều khiển / Gom
(Control-flow / Coverage Testing)

• Ví dụ : Kiểm tra phương thức bằng các bộ


giá trị của hàm foo sau :

• Bộ giá trị được chọn là foo(0,0,0,0,0)


White Box Testing
Luồng điều khiển / Phạm vi
(Control-flow / Coverage Testing)

• Với nhánh (branch )


IF ( a equals b AND c less than d ) THEN
    statement 1
ELSE
    statement 2
END IF

• Chọn bộ giá trị a b c d sao cho có thể kiểm tra hết


các nhánh rẽ .
• Ví dụ : (a,b,c,d) = (1, 1, 2, 6) & (1,2,3,3)
White Box Testing
Kiểm thử luồng dữ liệu
( Data Flow Test )

• Kiểm tra sự khởi tạo, biến đổi và huỷ của


các các luồng dữ liệu.
• Thường được phân tích qua đồ hình và
đặt ra các bộ giá trị thử và giá trị trả về
mong muốn dựa vào đồ hình đó.
White Box Testing
Kiểm thử luồng dữ liệu
( Data Flow Test )

• Một số trạng thái


của biến dữ liệu
trong quá trình biến
đối
White Box Testing
Kiểm thử luồng dữ liệu
( Data Flow Test )
Ví dụ
• Hoá đơn thanh
toán cho việc
sử dụng điện

Xét sự biến
đổi luồng
dữ liệu của Bill
White Box Testing
( Data Flow Test )
White Box Testing
( Data Flow Test )
• Quá trình biến đổi của bill
White Box Testing
( Data Flow Test )

• Thiết kế bộ giá trị kiểm thử cho Bill


White Box Testing
Trường hợp hỏng ‘rác’
Failure ‘Dirty’ Case Test

• Là trường hợp kiểm thử các trường hợp


mà người lập trình cần đứng ở vị trí người
dùng để nhập giá trị
• Cụ thể là người dùng có thể nhập số
thay cho chữ, hoặc không nhập gì, tạo ra
lỗi phép toán (divided by Zero )...
White Box Testing
Trường hợp hỏng ‘rác’
Failure ‘Dirty’ Case Test

• Cách kiểm thử


• Tạo ra tất cả các trường hợp test mà
người dùng thường mắc lỗi ( dựa vào kinh
nghiệm thực tế )
• Kiểm tra các lỗi toán học, số học, phạm
vi biến, kiểu biến ....
White Box Testing
Flow Groaps Revisited

• BLACKBOX TESTING
Black Box Testing

• Black-box testing sử dụng mô tả bên ngoài


của phần mềm để kiểm thử, bao gồm các đặc tả
(specifications), yêu cầu (requirements) và thiết kế (design) .

• Không có sự hiểu biết cấu trúc bên trong của


phần mềm

• Các dạng đầu vào có dạng hàm hoặc không ,


hợp lệ và không không hợp lệ và biết trước đầu
ra.
Black Box Testing
Black Box Testing

• Được sử dụng để kiểm thử phần mềm tại mức :


mô đun, tích hợp, hàm, hệ thống và chấp nhận.

• - Lợi điểm của kiểm thử hộp đen là khả năng đơn
giản hoá kiểm thử tại các mức độ được đánh giá là
khó kiểm thử

• - Yếu điểm là khó đánh giá còn bộ giá trị nào chưa
được kiểm thử hay không
Ví dụ minh hoạ
Black Box Testing

• Các kí thuật chính của kiểm thử hộp đen :


• + Decision Table testing
• + Pairwise testing
• + State transition tables
• + Tests of Customer Requirement
• + Equivalence partitioning
• + Boundary value analysis
• + Failure Test Cases
White Box Testing
Khoảng giá trị tương đương – Phân tích giá trị biên
Black Box Testing
• Decision Table Testing
• Là cách xây dựng một bộ các giá trị
kiểm thử đầy đủ không cần biết cấu trúc
bên trong của phần mềm.
• Bảng quyết định được xây dựng dựa vào
• Trong đó :
• Condition : input
• Action : output
Decision Table Testing
Black box testing
Pairwise testing

• Pairwise testing là cách phối hợp các đầu vào để tạo ra bộ


giá trị kiểm thử

• Ở ví dụ này Bộ có thể chọn của X=1 | 2


• Y= Q | R , Z= 5 | 6
Black box testing
Pairwise Testing
• Hạn chế : số lượng giá trị của mỗi đầu vào
tăng tạo ra sự tăng nhanh trong các trường
hợp thử
• Có thể gặp phải lỗi trong việc kết hợp các giá
trị đôi khi không xảy ra
• Ưu điểm : Xét được hết các trường hợp đầu
vào kể cả trường hợp ngẫu nhiên của người
dùng
Black box Testing
• Testing based on Customer Requirements

• Dựa vào các yêu cầu của khách hàng để


tạo ra các bộ giá trị kiểm thử.
Black box Testing

• State transition tables : Là bảng mô


tả sự chuyển trạng thái tương ứng với giá
trị đầu vào tương ứng.
Grey Box Testing

• Là sự kết hợp của kiểm thử hộp đen và


kiểm thử hộp trắng khi mà người kiểm thử
biết được một phần cấu trúc bên trong
của phần mềm
• Như vậy không phải là KT hộp đen
• Là dạng kiểm thử tốt và có sự kết hợp
các kĩ thuật của cả kiểm thử hộp đen và
hộp trắng
Other tests
• Sanity testing
• Smoke testing
• Software testing
• Stress testing
• Test automation
• Web Application Security Scanner
• Fuzzing
• Acceptance testing
• Sanwich Testing
Sanity testing
• Kiểm thử đúng đắn là kiểm thử lướt qua;
được thực hiện khi có đủ điều kiện nâng cao
ứng dụng nhờ việc hàm hoá đặc tả.
• Kiểm thử các thành phần thoái hoá của phần
mềm.

• – Bao gồm các kiểm thử vào vùng lõi của các
hàm GUI cơ sở để xem kết nối dữ liệu, máy chủ
ứng dụng, máy in , vv...

Smoke testing

• Smoke Testing xảy ra khi thành phần mới


được thêm vào và được tích hợp vào phần
code đã có của phần mềm. Nó đảm bảo
việc làm việc ăn khớp của khối code mới.
• Là bước đầu kiểm tra sau đó cần kiểm
thử thêm các bằng các kĩ thuật khác .
Question of Everyone ?
Thanks YOU !

You might also like