Testing là gì
Là quá trình thực hiện một chương trình (hay
một phần của một chương trình) để tìm ra lỗi
Là pha quan trọng trong quá trình phát triển hệ
thống giúp cho người xây dựng hệ thống và khác
hàng đã thấy được hệ thống mới đã thoả mãn yêu
cầu đề ra chưa
Test phần mềm là vấn đề kỹ thuật thách thức
hơn cả việc xây dựng phần mềm
Tầm quan trọng của nó đối với
ngành phần mềm
Một phần mềm được làm ra không ai có thể đảm bảo nó
không có lỗi
Testing sẽ tìm và phát hiện lỗi (mang tính ứng dụng
hoặc thậm chí mang tính công nghệ) với mục đích cuối
cùng là bảo đảm sản phẩm đến tay người dùng phải là
tốt nhất, nhanh nhất, ổn định nhát
Hoạch định chiến lược nghiên cứu và ứng dụng, đảm bảo
sp làm ra đạt tiêu chí và kỹ thuật đề ra
Ghi nhận các ý kiến, đề xuất hoặc báo cáo hỏng hóc từ
người dùng
Các phương pháp testing
Black box test
White box test
Black-box Test – Khái niệm
Black box test: hay còn gọi là test hộp đen
Test dựa trên hoạt động của chức năng,
không đòi hỏi kiến thức về các mã phần mềm
hoặc cấu trúc
Phương pháp này quan tâm tới việc thực hiện
các chức năng (hành vi), dữ liệu đầu vào và
kết quả đầu ra ra sao fải chuẩn bị và sử
dụng các khả năng có thể xảy ra của dữ liệu
Input
Black-box Test – Phương pháp
Để thực hiện phương pháp này cần dựa
trên:
Yêu cầu của phần mềm
Các trạng thái
Các trường hợp sử dụng (use case)
Kiểm tra các giá trị biên
Phân lớp tương đương
Test cú pháp
Test luồng dữ liệu (dữ liệu được lấy từ đặc tả
yêu cầu)
White box Test – Khái niệm
Quan tâm tới cấu trúc và logic bên trong của
đoạn mã. cần có kiến thức về cấu trúc
phần mềm
Được định nghĩa bởi:
Programming style
Control method
Language
Database design
Coding details
White box Test – Kỹ thuật
Test cấu trúc
Test nhánh
Luồng dữ liệu test
Test điều kiện nhánh
Test điều kiện nhánh tích hợp
Test các điều kiện thay đổi
Các giai đoạn test
Software V&V
Plan
System Test
Plan
Integration
Test Plan
Unit Test
Plan
Acceptance
Demonstration
Plan
Software
Development Phases
Test Planning Phase
Test Execution Phase
Project Plan
Requirements
Spec
Architectural
Design Spec
Code
System
Test
Acceptance
Demonstration
Integration
Test
Install
Unit
Test
Detailed
Design Spec
Các giai đoạn test
Unit Test
Intergration Test
System Test
Acceptance Test
Unit Test – Khái niệm
Một Unit là thành phần nhỏ nhất của phần
mềm, như là: Function, Procedure, Class,
Method
Là kỹ thuật kiểm nghiệm các hoạt động của
mọi chi tiết mã với một quy trình tách biệt
với QT PTPM giúp phát hiện sai sót kịp thời
trước khi đưa ra test
Unit Test – Đặc điểm
Test ở mức thấp nhất
Sử dụng phương pháp test hộp trắng
Kiểm tra độc lập từng thành phần
Thường được thực hiện bởi lập trình viên
Có giá trị khi phát hiện các vấn đề tiềm ẩn
hoặc lỗi kỹ thuật
Intergration test – Khái niệm
Là test kết hợp các thành phần của một ứng
dụng và kiểm tra như một ứng dụng đã hoàn
thành
Mục đích
Phát hiện lỗi giao tiếp xảy ra giữa các Unit
Tích hợp các Unit đơn lẻ thành các hệ thống nhỏ
và cuối cùng là nguyên hệ thống hoàn chỉnh
Intergration test - Type
Kiểm tra cấu trúc (structure): Tương tự White
Box Test, chú trọng đến hoạt động của các
thành phần cấu trúc nội tại của chương trình
Kiểm tra chức năng (functional): Tương tự
Black Box Test, chỉ khảo sát chức năng của
chương trình theo yêu cầu kỹ thuật
Kiểm tra hiệu năng (performance): Kiểm tra
vận hành của hệ thống
Kiểm tra khả năng chịu tải (stress): Kiểm tra
giới hạn của hệ thống
Intergration test - Plan
Cần được thực hiện tương đương với giai
đoạn thiết kế kiến trúc
Thứ tự tích hợp được xác định theo thứ tự
xây dựng
Các thành phần hoàn thành đúng thời hạn
Phát triển các thành phần và test tích hợp được
thực hiện song song
Intergration - Guidelines
Mỗi thành phần sẽ được tích hợp 1 lần
(tích hợp theo hướng tăng dần
Baseline 0: test thành phần
Baseline 1: 2 thành phần
Baseline 2: 3 thành phần)
Tích hợp từng mục nhỏ của từng thành phần
tại một thời điểm
Các thành phần chính hoặc thành phần có
khả năng nhiều lỗi
Kết hợp các thành phần liên quan đơn giản
Intergration-Approaches
Top-down
Bottom-down
Big-bang
Intergration-Approaches
Top-Down
Các module cấp trên được kiểm thử
trước
Baselines:
baseline 0: component a
baseline 1: a + b
baseline 2: a + b + c
baseline 3: a + b + c + d
Etc…
a
b c
d e f g
h i j k l m
n o
a
b c
d e f g
h i j
Intergration-Approaches
Ưu điểm Top-down
Phát hiện sớm các lỗi thiết kế
Có phiên bản hoạt động sớm
Nhược điểm
Khó có thể mô phỏng được các chức
năng của module cấp thấp phức tạp
Không kiểm thử đầy đủ các chức năng
Intergration-Approaches
Bottom-up
Các module cấp thấp được kiểm tra trước
a
b c
d e f g
h i j k l m
n o
a
b c
d e f g
h i j
Baselines:
baseline 0:
component
baseline 1: n + i
baseline 2: n + i + o
baseline 3: n + i + o +
d
Etc.
Intergration-Approaches
Ưu điểm Bottom-up
Thuận tiện cho phát triển các mô đun
thứ cấp dùng lại được
Nhược điểm
Phát hiện chậm các lỗi thiết kế
Chậm có phiên bản thực hiện được của
hệ thống
Intergration-Approaches
Big-bang
Tất cả các module được kết hợp trong 1
bước
Là phương pháp tích hợp thông thường
Là phương pháp ít hiệu quả nhất
Hạn chế dùng Big-bang
•
Rất khó tìm ra nguồn gốc của vấn đề
•
Không biết nơi nào để xem xét
•
Không ngoại trừ recommended cho các hệ
thống rất nhỏ
System test – Khái niệm
Là kiểm tra thiết kế và toàn bộ hệ thống (sau
khi tích hợp) có thỏa mãn yêu cầu đặt ra hay
không
Là Black box test
Được thực hiện độc lập bởi một nhóm test
(test hệ thống)
System test – Khái niệm
Về chức năng, thỏa mãn:
Requirements-based testing
•
Các yêu cầu là điều kiện đầu tiên cho việc test
•
Phân tích rủi ro để xác định thành phần quan
trọng nhất
Business process-based testing
•
Người sử dụng mong đợi: cái gì được sử dụng
thường xuyên và quan trọng nhất cho việc kinh
doanh
•
Thực hiện các giao dịch kinh doanh qtrọng
System test – Khái niệm
Yêu cầu phi chức năng:
Usability
Security
Storage
Volume
Configuration/installation
Reliability/qualities
Back-up/recovery
Performance, load, stress
Functional
Acceptance test
Được thực hiện sau giai đoạn System test, do
khách hàng thực hiện (hoặc ủy quyền cho
một nhóm thứ 3 thực hiện)
Mục đích: chứng minh phần mềm thỏa mãn
tất cả các yêu cầu của khách hàng
Đối với những PM bán rộng rãi trên thị
trường, cần thực hiện: Alpha test và Beta
Test