Upload
saobien
View
55
Download
0
Embed Size (px)
Citation preview
By HBI
� WHAT?� Unit test? Là kiểm tra một đơn vị nhỏ nhất trong code có thể kiểm
tra được. Thường đó là một hàm, thủ tục, thao tác.
� WHY?� Đây là khâu đầu của quá trình test, unit test dùng để kiểm tra xem
code vi t ra có đúng v i yêu c u thi t k không?code viết ra có đúng với yêu cầu thiết kế không?
� Unit test thành công, từng chi tiết hoạt động đúng -> bộ phận mới cókhả năng hoạt động đúng -> hệ thống mới có khả năng hoạt độngđúng.
� WHEN?� Khi cho rằng một hàm hay thủ tục nào đó đã được viết xong.
� WHO?� Người lập trình cần tiến hành Unit Test do:
� Người lập trình (NLT) biết chương trình của mình gồm những phần nhỏ nào, ở đâu.
� Khi thực hiện Unit Test và sửa lỗi, NLT có cơ hội để kiểm tra xem mình hiểu đúng yêu cầu thiết kế hay chưa.xem mình hiểu đúng yêu cầu thiết kế hay chưa.
� NLT tìm hiểu được các lỗi có thể xảy ra trong từng unit -> Rút kinh nghiệm cho các lần code sau.
� BLACK BOX TESTING (Để kiểm tra chức năng)� Xác định các trường hợp cần test (test case)
� Đầu vào� Kiểu gì?
� Miền giá trị?
Có khuôn m u gì không?� Có khuôn mẫu gì không?
� Đầu ra� Đầu ra có thể là gì?
� Xác định đầu ra dự kiến� Đầu vào sai miền giá trị, kiểu, khuôn mẫu -> Thông báo gì?
� Đầu vào đúng -> Kết quả dự kiến là gì?
� BLACK BOX TESTING� Thực hiện test
� Nhập đầu vào
� Kiểm tra đầu ra thực tế
� Só sánh đầu ra thực tế với đầu ra dự kiếnSó sánh đầu ra thực tế với đầu ra dự kiến
� Đánh giá? Nếu có lỗi thì có thể sai ở đâu?
� WHITE BOX TESTING (Để kiểm tra cấu trúc)� Vẽ lưu đồ thuật toán
� Xác định các trường hợp cần test� Nhập đầu vào sao cho
� Các test có thể tới được mọi nút trên lưu đồ� Các test có thể tới được mọi nút trên lưu đồ
� Các test có thể đi qua mọi nhánh trên lưu đồ
� Các test có thể đi qua mọi đường trên lưu đồ
� Xác định đầu ra dự kiến
� Thực hiện test
� WHITE BOX TESTING� Các nút là: 1,2,3,4,5,6,7
� Đường đi Test 1: 12357
� Đường đi Test 2: 124567
� Các nhánh là: 12, 23, 24, � Các nhánh là: 12, 23, 24, 27, 35, 43, 56, 57, 67� Đường đi Test 1: 127
� Đường đi Test 2: 124357
� Đường đi Test 3: 123567
� Các đường là: 127, 12357, 123567, 124357, 1243567� Đường đi cho test: 5 đường
nêu trên -> 5 test case
� Checking the follow� Xác định đầu vào.
� Căn cứ đầu vào, xác định đường đi của chương trình.
� Đặt trong code các break point kiểm tra đường đi.
� Chạy chương trình ở chế độ debug.
Xác định các break point nào đã được đi qua, từ đó xác định hướng � Xác định các break point nào đã được đi qua, từ đó xác định hướng đi của chương trình
� So sánh hướng đi thực tế với lý thuyết
� Nếu tại một nút nào đó, chương trình rẽ nhánh không đúng? Kiểm tra điều kiện rẽ nhánh
� Checking the output� Xác định đầu vào.
� Căn cứ đầu vào, xác định đường đi của chương trình
� Đặt trong code các break point theo đường đi.
� Chạy chương trình ở chế độ debug.
Từ breakpoint đầu tiên, thực hiện chạy chương trình ở chế độ step by � Từ breakpoint đầu tiên, thực hiện chạy chương trình ở chế độ step by step.
� Tại từng đoạn code, xác định đầu vào và đầu ra dự kiến
� Nếu tại một đoạn nào đó, đầu ra không đúng như dự kiến -> kiểm tra đoạn code đó.
� Với đoạn code dài, dùng cách chia khoảng để nhanh chóng tìm được nơi gây lỗi.
� Immediate Window (Short Cut: Ctrl + ‘G’)� Cách dùng 1: Thêm code sau: Debug.Print “Some text”
� Ví dụ đoạn code sau:Public Function Hbi_Tinh (So1 as Integer, So2 as Integer, PhepToan as integer) as IntegerSelect Case PhepToan
Case 1Case 1‘Doan nay de kiem tra huong di cua chuong trinhDebug.Print “Hbi_Tinh - Thuc hien phep CONG”‘Doan nay de kiem tra dau vao, dau raDebug.Print So1So1 = So1 + So2Debug.Print So1
Case 2Debug.Print “Hbi_Tinh - Thuc hien phep TRU”
Case elseDebug.Print “Hbi_Tinh - Tim theo cach khac???”
End selectReturn So1
End Function
� Immediate Window (Short Cut: Ctrl + ‘G’)� Cách dùng 2: Nhập trực tiếp dòng lệnh trong quá trình debug
� Ví dụ:� Đoạn code trên, tạo 1 breakpoint tại dòng màu đỏ.
� Khi chương trình dừng tại dòng đó, nhập “?So1” + Enter vào Immediate Window -> Trả về giá trị của biến So1. Immediate Window -> Trả về giá trị của biến So1.
� Nhập tiếp: “So1 = So1 + 2” + Enter -> So1 được cộng thêm 2
� Nhập tiếp: “?So1” + Enter -> Trả về giá trị của biến So1 khác trước
� Nhập tiếp: “?Abs(So1)” + Enter -> Xem giá trị trả về của hàm Abs với đầu vào là So1
� Watch Windows� Thực hiện
� Tạo breakpoint tại nơi cần kiểm tra� Khi chương trình dừng tại break point đó, chọn biến, đối
tượng cần kiểm tra� Click chuột phải để hiện ra menu, chọn Add Watch� Cửa số watch hiện ra, ta có thể xem giá trị biến hay thuộc tính � Cửa số watch hiện ra, ta có thể xem giá trị biến hay thuộc tính
của đối tượng muốn kiểm tra
� Quick Watch (Shift + F9)� Thực hiện
� Tạo breakpoint tại nơi cần kiểm tra� Khi chương trình dừng tại break point đó, chọn biến, đối
tượng cần kiểm tra� Nhấn Shift + F9 -> Giá trị biến, thuộc tính của đối tượng được
hiện lên trên cửa số khác
� Memory� Mỗi đối tượng sinh ra trong khi chạy chương trình, cần
thực hiện hàm hủy cho nó. Nếu đối tượng không có hàm Dispose, có thể dùng phép gán với giá trị nothing để giảphóng bộ nhớ.
� Ví dụ:� Ví dụ:� Dim Var_1 as new Object_1, Arr_1(100) as Integer
� ‘(Some code here)
� Var_1.Dispose()
� Var_1 = new Object_1
� ‘(Some code here)
� Var_1.Dispose
� ‘Do Var_1 được tạo ra 2 lần trong lúc chạy-> Dispose 2 lần
� Arr_1 = Nothing
� Memory� Có thể dùng một biến với nhiều mục đích khác nhau
giảm số biến được cấp phát.
� Ví dụ:� Dim Tmp, So_1 as Integer = 0, So_2 as Integer = 50;
For Tmp = 0 to N ‘Tmp dùng làm biến chạy trong vòng lặp� For Tmp = 0 to N ‘Tmp dùng làm biến chạy trong vòng lặp� So_1 += Tmp
� Next
� Tmp = So_1: So_1 = So_2: So_2 = Tmp ‘Tmp làm biến trung gian để đổi giá trị 2 biến
� Speed� Using temporary variable
� Nếu kết quả của hàm nào đó cần dùng nhiều lần -> Lưu kết quả vảo biến tạm để đỡ mất công tính toán lại.
� Ví dụ:If ktrLoaiXe() ThenIf ktrLoaiXe() Then
If ktrTTinHD() ThenthemDanhMucXe()themHoaDonXe()
ElseMsgbox (“Thong bao 1 ”)
End IfElseIf ktrLoaiXe() = False Then
Msgbox (“Thong bao 2 ”)End If
� Ví dụ (sửa lại):Dim tmp as Boolean = ktrLoaiXe()If tmp Then
If ktrTTinHD() ThenthemDanhMucXe()themHoaDonXe()themHoaDonXe()
ElseMsgbox (“Thong bao 1 ”)
End IfElse
Msgbox (“Thong bao 2 ”)
End If
� Ví dụ (sửa lại lần 2):
If ktrLoaiXe() ThenIf ktrTTinHD() Then
themDanhMucXe()themHoaDonXe()
ElseElseMsgbox (“Thong bao 1 ”)
End IfElse
Msgbox (“Thong bao 2 ”)
End If
� Others� Example 1_0:
� Dim x as integer, y as boolean
� (Some code here)
� If y thenIf y then� X = 1
� Else� X = -1
� End if
� Example 1_1:� Dim x as integer, y as boolean
� (Some code here)
� X = iif (y, 1, -1)
� Others� Example 2_0:
� Dim i as integer
� For i = 0 to 100
� (Some code here)(Some code here)
� Next
� Example 2_1:� For i as integer = 0 to 100
� (Some code here)
� Next
� Others� Example 3_0:
� Dim x as integer, y, z as long ‘0 < x <4� (Some code here)� Select case x
� Case 1� Y = y + z
� Case 2� Y = y - z
� Case 3� Y = y *z
� End select
� Example 3_1:� Dim x as integer, y, z as long ‘0 < x <4� (Some code here)� Y = Choose (x, y+z, y-z, y*z)