PHÂN CHIA LỚP TƯƠNG ĐƯƠNG EQUIVALENCE PARTITIONING Equivalence partitioning equivalence class là một tập các test case kiểm tra những trường hợp tương tự nhau hoặc để khám phá ra nhữn
Trang 1BÀI 4 CÁC KỸ THUẬT KIỂM THỬ
4.1 Phân chia lớp tương đương (Equivalence class partitioning)
4.2 Kiểm tra luồng điều khiển (Control flow testing)
4.3 Kiểm tra luồng dữ liệu (Data flow testing)
4.4 Kiểm tra sự giao dịch (Transaction testing)
4.5 Kiểm tra miền (Domain testing)
4.6 Kiểm tra lặp (Loop testing)
4.7 Kiểm tra cú pháp (Syntax testing)
4.8 Kiểm tra trạng thái (State machine testing)
4.9 Kiểm tra khả năng thực thi, chịu tải và vận hành PM (Performance, Load and stress testing)
Trang 24.1 PHÂN CHIA LỚP TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITIONING)
Equivalence partitioning (equivalence class) ) là quá trình
làm giảm số lượng các test case nhưng vẫn đảm bảo đạt
được hiệu quả tương đương như khi kiểm thử với số
lượng các test case cũ
Ví dụ về Windows calculator:
1+1, 1+2, 1+3,… => đại diện bởi 1+13
1+ 99999999999999999999999999999999
Trang 34.1 PHÂN CHIA LỚP TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITIONING)
Equivalence partitioning (equivalence class) là một tập các test case kiểm
tra những trường hợp tương tự nhau hoặc để khám phá ra những lỗi tương tự nhau
Khi tìm kiếm những equivalence partition:
⇒ 1 equivalence partition nhóm những dữ liệu đầu vào tương tự nhau, dữ
liệu đầu ra tương tự nhau, và những điều khiển tương tự của phần mềm
⇒ 2 trường hợp, mà phần mềm có cách điều khiển khác nhau, nằm trong 2
equivalence partition khác nhau
⇒ Nếu tester có kiến thức về lập trình => thuận lợi hơn
Trang 44.1 PHÂN CHIA LỚP TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITIONING)
Ví dụ 1: 5 cách thực hiện copy trong
Windows Calculator:
Click menu “Edit” => click “copy”
Click menu “Edit” => Nhấn “Shift +c”
Click menu “Edit” => Nhấn “c”
Nhấn “Ctrl + Shift +c”
Nhấn “Ctrl + c”
⇒ Phân làm 3 Equivalence partitioning
⇒ Thậm chí, là 1 Equivalence partitioning
Trang 54.1 PHÂN CHIA LỚP TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITIONING)
Ví dụ 2: Kiểm tra khả năng đưa một “file name” vào hộp thoại “Save As” chuẩn của Windows:
Một filename của Windows của thể chứa các ký tự, ngoại trừ \/ : * ? " < > | và có thể có từ 1 đến 25 ký tự: (4 EP)
• Ký tự hợp lý
• Ký tự không hợp lý
• Tên với độ dài hợp lý
• Tên quá ngắn hoặc tên quá dài
Trang 64.1 PHÂN CHIA LỚP TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITIONING)
Việc phân chia các equivalence partitioning:
Mang tính chủ quan
Đảm bảo tính khoa học, nhưng không theo khuôn mẫu
Chứa đầy rủi ro => tester phải thận trọng
Phân các test cases vào các class Mỗi class là một nhóm các test cases
tương tự nhau
Trong mỗi class chọn test chỉ một vài test case
Nên test nhiều class thay cho test nhiều test cases của cùng một class
Trang 7 Tổng kết
Các class lại có thể xếp vào 2 nhóm:
Positive tests (clean tests):
Test dựa trên defined requirements
Test những trường hợp, hoàn cảnh sử dụng thông thường
Negative tests (dirty tests):
Trang 8 Ví dụ: Phương thức đọc 10 ký tự từ bàn phím
Example program:
Begin
Read (AAAAAAAAAA)
Trang 9 Equivalence classes for “positive” tests:
All 10 inputs consist of the same character in upper case,
repeated for each letter of the alphabet
ALL 10 inputs consist of the same character in lower case,
repeated for each letter of the alphabet
All 10 inputs are different, mixed case
Trang 10 Ví dụ:
Equivalence classes for “negative” tests:
All 10 inputs are numeric
Mixed numeric and alphabetic inputs
Embedded blanks
Input consists of one valid character
Input consists of one invalid character
Input includes special characters (*, & %, etc.)
Input consists of 11 characters
What would be a correct output for these cases?
4.1 PHÂN CHIA LỚP TƯƠNG ĐƯƠNG
(EQUIVALENCE PARTITIONING)
Trang 11 Control flow testing
không phải là sơ đồ mô tả các câu lệnh trong code
4.2 CONTROL FLOW TESTING
07/05/14
Trang 12 Sơ đồ luồng xử lý
Process 1
Process 2
? Yes No
Process 3
More Processing
4.2 CONTROL FLOW TESTING
Trang 14 Áp dụng cho các hệ thống “data-intensive”
Ví dụ các hệ thống sản sinh báo cáo, thống kê
Ví dụ các hệ thống có tính toán thay đổi số liệu
Phương pháp xây dựng test case:
Lập sơ đồ luồng dữ liệu (Data flow diagram)
Lần theo từng đường dẫn trong sơ đồ
Bắt đầu từ node output
Lần ngược lại tới khi gặp node input
Ta đã được một test case
4.3 DATA FLOW TESTING
Trang 154.4 TRANSACTION TESTING
Trang 16 Áp dụng cho các xử lý mà có xác định phạm vi (range) giá trị dữ liệu
Chú trọng test các giá trị biên on và of
4.5 DOMAIN TESTING
Trang 17 Kiểm thử miền là kiểm tra những thông tin mà người sử dụng đưa
vào, các kết quả nhận được, và xem xét chúng có đúng không
Số lượng test case quá lớn
Bí quyết để kiểm thử tốt là: giảm lượng test case bằng equivalence
partitioning dựa trên 1 số khái niệm cơ bản:
Trang 181 Các điều kiện biên (boundary conditions)
2 Các loại điều kiện biên (Types of Boundary Conditions)
3 Kiểm thử những trường hợp biên (Testing the
Boundary Edges)
4 Các điều kiên biên con (Sub-Boundary Conditions)
5 Default, Empty, Blank, Null, Zero, và None
6 Invalid, Wrong, Incorrect, và Garbage (vô nghĩa) Data
4.5 DOMAIN TESTING
Trang 191 Các điều kiện biên (boundary conditions)
Nếu phần mềm có thể điều khiển trên những vùng biên => gần như nó sẽ được
điều khiển tốt với những điều kiện thông thường
Ví dụ: Dim data(10) As Integer
Dim i As Integer For i = 1 To 10
data(i) = 1 Next i
End
4.5 DOMAIN TESTING
Trang 201 Các điều kiện biên (boundary conditions)
Nếu phần mềm có thể điều khiển trên những vùng biên => gần như nó sẽ được
điều khiển tốt với những điều kiện thông thường
Ví dụ: Dim data(10) As Integer
Dim i As Integer For i = 1 To 10
data(i) = 1 Next i
End
4.5 DOMAIN TESTING
Trang 212 Các loại điều kiện biên (Types of Boundary
Conditions)
Nhiều điểm mập mờ, chưa rõ ràng => thường nằm trên các giá trị biên
Điều kiên biên là trạng thái ở cạnh hay ở những giá trị giới hạn của phần mềm
4.5 DOMAIN TESTING
Trang 222 Các loại điều kiện biên (Types of Boundary
Trang 232 Các loại điều kiện biên: để tìm ra các điều kiên
biên, tester cần chú ý đến những từ ngữ sau trong bản đặc tả:
Trang 243 Kiểm thử những trường hợp biên (Testing the
Boundary Edges)
phân chia tập dữ liệu lộn xộn thành các equivalence partition
Phân vùng 1: chứa data mà hi vọng phần mềm làm việc tốt (dữ
liệu trong biên)
Phân vùng 2: chứ data mà phần mềm dễ phát sinh lỗi (dữ liệu tại
2 đầu của biên)
4.5 DOMAIN TESTING
Trang 253 Kiểm thử những trường hợp biên
Kiểm tra giá trị biên: (thêm, bớt các giá trị max, min 1 đơn vị):
First-1/Last+1
Start-1/Finish+1
Less than Empty/More than Full
Even Slower/Even Faster
Trang 263 Kiểm thử những trường hợp biên Ví dụ:
VD1: Nhập 1 số giới hạn [0-255]
VD2: Chương trình đọc và ghi CD-R
VD3: Phần mềm cho phép in nhiều trang trên 1 khổ giấy
(trong spec mô tả PM có thể in tối đa 8 trang/1 khổ giấy)
VD4: Chương trình mô phỏng các chuyến bay
4.5 DOMAIN TESTING
Trang 274 Các điều kiên biên con (Sub-Boundary Conditions
hay internal boundary conditions).
Ví dụ: Phần mềm sử dụng ASCII, có 1 testbox cho phép nhập A-Z và a-z
4.5 DOMAIN TESTING
Trang 285 Default, Empty, Blank, Null, Zero, và None
Phần mềm yêu cầu nhập thông tin => người dùng không nhập => Ok => sinh
lỗi Spec thường không mô tả, coder dễ bỏ qua
Ví dụ: phần mềm Windows Paint
4.5 DOMAIN TESTING
Trang 296 Invalid, Wrong, Incorrect, và Garbage (vô nghĩa)
Data
Sau khi Test – to – pass với các boundary testing, sub-boundary testing, và
default testing, tester thấy phần mềm hoạt động tốt
Giờ, cần Test – to – fail để tìm ra lỗi với các các invalid, wrong, incorrect, và
garbage data.
Không có một quy tắc nào cho quá trình kiểm tra này cả, mà tester hãy “to
break the software”, “Be creative (sáng tạo)”, “Be devious (láu cá, xảo quyệt)” Rất thú vị!
4.5 DOMAIN TESTING
Trang 30 Áp dụng trong whitebox testing: quan tâm đến vòng lặp trong code
Áp dụng trong backbox testing: quan tâm đến vòng lặp trong hành vi của hệ thống
Ví dụ khi hệ thống phải tìm ra tất cả các bản ghi thoả mãn một tiêu chí tìm kiếm nào đó
Giả sử khả năng hệ thống có thể hỗ trợ tối đa Max vòng lặp, chỉ cần chọn thực hiện những test case sau là đủ:
0 lần, 1 lần, 2 lần qua vòng lặp
X lần (X: số ngẫu nhiên, giữ khoảng 0 và Max)
Max -1, Max, Max+1 lần
4.6 LOOP TESTING
Trang 31 Là kỹ thuật dùng để:
Test các câu lệnh (commands)
Test việc xử lý các trường phải tuân theo một định dạng xác định
Trang 32 Trình tự thực hiện:
Phân tích, nắm rõ qui tắc syntax
Thiết kế các positive test cases, sử dụng kỹ thuật Equivalence class partitioning
Thiết kế các negative test
Mỗi lần làm sai một phần tử trong syntax
Thực hiện test
4.7 SYNTAX TESTING
Trang 33 Áp dụng khi:
Test các “menu driven application”
Test các hệ thống thiết kế bằng phương pháp hướng đối tượng
Test bất cứ hệ thống nào có sơ đồ chuyển đổi trạng thái (state)
Ví dụ về trạng thái:
Account sử dụng Portal chưa có hiệu lực (inactive account)
Account sử dụng Portal có hiệu lực (active account)
07/05/14
4.8 STATE MACHINE TESTING
Trang 34 Đặc trưng của trạng thái:
Ở mỗi trạng thái, có một số hành động được phép thực hiện và một
số khác thì không
Phương pháp:
Vẽ một sơ đồ chuyển đổi trạng thái cho đối tượng cần test
Positive tests: thiết kế test cases cho từng lần chuyển đổi trạng thái
Negative tests: thiết kế các test cases nhằm cố chuyển đổi trạng thái một cách bất hợp lệ
4.8 STATE MACHINE TESTING
Trang 351 Kiểm tra luồng dữ liệu logic của phần mềm (Testing the
Software's Logic Flow)
2 Tạo một bản đồ chuyển trạng thái (Creating a State Transition
Map)
3 Làm giảm số lượng các trạng thái và sự chuyển trạng thái để kiểm
tra (Reducing the Number of States and Transitions to Test)
4 Những gì cần được kiểm tra trong bản đặc tả (What to
Trang 361 Kiểm tra luồng dữ liệu logic của phần mềm:
Để kiểm tra luồng logic, tester phải tới thăm tất cả các state bằng
mọi path
Trừ những chương trình rất đơn giản, tester không thể thực hiện
được tất cả các path để đi tới tất cả các state
Ví dụ: bài toán nổi tiếng: “đi du lịch tới các thành phố”
Áp dụng kỹ thuật equivalence partition để lựa chọn các state và các
path 1 cách thông minh => hạn chế tối đa sự rủi ro
4.8 STATE MACHINE TESTING
Trang 372 Tạo một bản đồ chuyển trạng thái:
Trước tiên, tạo một sơ đồ chuyển trạng thái của phần mềm => coi là
Trang 382 Tạo một bản đồ chuyển trạng thái:
Sơ đồ trạng thái (Transition Map) mô tả các nội dung sau:
Tập các trạng thái của phần mềm
Điều kiện để chuyển từ trạng thái này đến trạng thái tiếp theo
Tập các điều kiện và thủ tục output khi đi vào hoặc đi ra một trạng
thái
4.8 STATE MACHINE TESTING
Trang 393 Làm giảm số lượng các trạng thái và sự chuyển trạng thái:
Kiểm tra mọi path, mọi state chỉ thực hiện được khi tester có thời
Trang 403 Làm giảm số lượng các trạng thái và sự chuyển trạng thái:
Ngoài kỹ thuật equivalence partitioning cho data, còn áp dụng kỹ
thuật này cho các state:
Tới thăm mỗi state ít nhất 1 lần
Kiểm tra sự chuyển từ trạng thái state – to - state chung nhất và phổ biến
nhất
Hãy kiểm tra những path thông dụng nhất giữa các state
Hãy tìm tất cả các trạng thái lỗi và quay trở lại từ các lỗi này
Kiểm tra sự chuyển trạng thái một cách ngẫu nhiên
4.8 STATE MACHINE TESTING
Trang 414 Những gì cần được kiểm tra trong bản đặc tả :
Ví dụ 1: danh sách các state variable trong trạng thái khởi động của Paint:
Cỡ của cửa sổ được thiết đặt khi vừa mở Windows Paint.
Vùng để vẽ là trống
Tool box, color box và thanh trạng thái được hiển thị
Chỉ công cụ pencil được lựa chọn
Màu mặc định: foreground là black và background là white
Tên mặc định của picture là untitled
Một số đặc điểm chưa có trong spec thì tester bổ sung và trao đổi với
coder và người viết bản đặc tả
4.8 STATE MACHINE TESTING
Trang 424 Những gì cần được kiểm tra trong bản đặc tả :
Ví dụ 2: the dirty document flag – cờ báo trạng thái dữ liệu Yêu cầu:
Trước tiên, phần mềm load dữ liệu (ảnh, văn bản…) vào chương
trình => tài liệu ở trạng thái “clear state” => đóng lại bình thường
Thực hiện thao tác sửa tài liệu => tài liệu ở trạng thái “dirty state”
=> đóng lại => nhắc ghi lại tài liệu
Chỉnh sửa => trạng thái “dirty” => undo => trạng thái “clear” => đóng
lại => không có lời nhắc
4.8 STATE MACHINE TESTING
Trang 435 Kiểm thử trạng thái để phát hiện lỗi
Các hệ điều hành có thể thực thi đa nhiệm (multitasking)
Nếu có 2 hoặc nhiều hơn các sự kiện làm rối loạn chương trình
=> race condition
Phần mềm không thể ngắt giữa các điều khiển của nó khi thực
thi đa nhiệm => bad timing
4.8 STATE MACHINE TESTING
Trang 445 Kiểm thử trạng thái để phát hiện lỗi
Save và load cùng một tài liệu tại một thời điểm với 2 chương trình khác nhau
Chia sẻ cùng máy in, cổng giao tiếp, hoặc thiết bị ngoại vi khác
Nhấn phím và kích chuột trong khi phần mềm đang load hoặc thay đổi trạng thái
Shutting down hoặc starting up 2 hoặc nhiều hơn các instances (trường hợp) của
phần mềm tại cùng một thời điểm.
Sử dụng những chương trình khác để đồng thời truy cập vào cơ sở dữ liệu
chung (common database)
4.8 STATE MACHINE TESTING
Trang 45 Performance testing: nhằm xác định tốc độ, khả năng phân tải và mức
độ tin tưởng của PM trong môi trường nhiều người dùng, hoặc có nhiều
hoạt động đồng thời Từ đó đưa ra kết luận ứng dụng hoạt động tốt nhất
trong điều kiện nào.Ví dụ:
Xác định giới hạn số lượng truy cập đồng thời của 1 website
Xác định giới hạn số lượng giao dịch đồng thời trên phần mềm
Xác định giới hạn khả năng xử lý đồng thời của phần mềm
07/05/14
4.9 PERFORMANCE, LOAD,
STRESS TESTING
Trang 46 Load testing: bắt hệ thống phải chịu tải lớn (thực hiện nhiều xử lý), ví dụ:
Có nhiều client cùng lúc truy cập
Trang 47 Stress testing: bắt hệ thống vận hành trong điều kiện bất thường, ví dụ:
Thiếu bộ nhớ
Kết nối mạng bị ngắt khi đang vận hành
Database server down
Nhiều giao dịch thực hiện đồng thời trong 1 thời gian dài
07/05/14
4.9 PERFORMANCE, LOAD,
STRESS TESTING
Trang 48BÀI 4 TỔNG KẾT
Chương này cung cấp 1 số kỹ thuật rất cơ bản được áp dụng thường xuyên trong quá trình kiểm thử phần mềm
Trang 49BÀI 4 CÂU HỎI
1. Khởi động Windows WordPad/Print Trong Print range đâu là những
điều kiện biên?
Trang 50BÀI 4 CÂU HỎI
3 Giả sử rằng bạn có một textbox điền ZIP code có độ rộng10 ký tự
số, như biểu diễn trong hình dưới Bạn sẽ tạo những phân vùng
tương đương nào cho textbox nào?
4 Tester phải đến thăm tất cả các trạng thái mà một chương trình
phải đảm bảo bằng cách chuyển đổi giữa các trạng thái đó Điều này đúng hay sai?
Trang 51BÀI 4 CÂU HỎI
5 Lấy ví dụ về những hành động thực hiện trên phần mềm khi bạn
cố gắng để phơi bày các lỗi race condition?
6 So sánh performance test, load test, stress test?