Giáo trình Kiểm thử phần mềm
Mục lục
1 Tổng quan về kiểm thử 1
1.1 Các thuật ngữ và định nghĩa cơ bản về kiểm thử . . . . . . . . 1
1.2 Ca kiểm thử . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Mô tả bài toán kiểm thử qua biểu đồ Venn . . . . . . . . . . . 7
1.4 Việc xác định các ca kiểm thử . . . . . . . . . . . . . . . . . . 10
1.4.1 Kiểm thử hàm . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.2 Kiểm thử cấu trúc . . . . . . . . . . . . . . . . . . . . 12
1.4.3 Tranh luận về kiểm thử hàm so với kiểm thử cấu trúc . 13
1.5 Phân loại các lỗi và sai . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Các mức kiểm thử . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Một số ví dụ 21
2.1 Bài toán tam giác . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.1 Phát biểu bài toán . . . . . . . . . . . . . . . . . . . . 22
2.1.2 Nhận xét . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.3 Cài đặt truyền thống . . . . . . . . . . . . . . . . . . . 22
2.1.4 Cài đặt có cấu trúc . . . . . . . . . . . . . . . . . . . . 25
2.2 Hàm NextDate (ngày kế tiếp) . . . . . . . . . . . . . . . . . . 26
2.2.1 Phát biểu bài toán . . . . . . . . . . . . . . . . . . . . 28
2.2.2 Nhận xét . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.3 Cài đặt . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Hệ thống rút tiền tự động đơn giản . . . . . . . . . . . . . . . 30
2.3.1 Phát biểu bài toán . . . . . . . . . . . . . . . . . . . . 31
2.3.2 Nhận xét . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4 Bộ điều khiển gạt nước ô tô . . . . . . . . . . . . . . . . . . . 34
2.5 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3 Cơ sở toán học rời rạc cho việc kiểm thử 37
3.1 Lý thuyết tập hợp . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1.1 Phần tử của tập hợp . . . . . . . . . . . . . . . . . . . 38
3.1.2 Định nghĩa tập hợp . . . . . . . . . . . . . . . . . . . . 38
3.1.3 Tập hợp rỗng . . . . . . . . . . . . . . . . . . . . . . . 39
3.1.4 Biểu đồ Venn . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.5 Các phép toán về tập hợp . . . . . . . . . . . . . . . . 41
3.1.6 Quan hệ giữa các tập hợp . . . . . . . . . . . . . . . . 43
3.1.7 Phân hoạch tập hợp . . . . . . . . . . . . . . . . . . . 43
3.1.8 Các đồng nhất thức về tập hợp . . . . . . . . . . . . . 45
3.2 Hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.1 Miền xác định và miền giá trị . . . . . . . . . . . . . . 46
3.2.2 Các loại hàm . . . . . . . . . . . . . . . . . . . . . . . 46
3.2.3 Hàm hợp . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3 Quan hệ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.1 Quan hệ giữa các tập hợp . . . . . . . . . . . . . . . . 49
3.3.2 Quan hệ trên một tập hợp . . . . . . . . . . . . . . . . 51
3.4 Lôgic mệnh đề . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
MỤC LỤC v
3.4.1 Các phép toán lôgic . . . . . . . . . . . . . . . . . . . . 53
3.4.2 Biểu thức lôgic . . . . . . . . . . . . . . . . . . . . . . 53
3.4.3 Tương đương lôgic . . . . . . . . . . . . . . . . . . . . 54
3.5 Lý thuyết xác suất . . . . . . . . . . . . . . . . . . . . . . . . 55
3.6 Lý thuyết đồ thị . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.1 Đồ thị . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.1.1 Bậc của đỉnh . . . . . . . . . . . . . . . . . . 58
3.6.1.2 Ma trận tới . . . . . . . . . . . . . . . . . . . 59
3.6.1.3 Ma trận liền kề . . . . . . . . . . . . . . . . . 59
3.6.1.4 Đường đi trong đồ thị . . . . . . . . . . . . . 60
3.6.1.5 Tính liên thông . . . . . . . . . . . . . . . . . 61
3.6.1.6 Rút gọn đồ thị . . . . . . . . . . . . . . . . . 61
3.6.1.7 Chỉ số chu trình . . . . . . . . . . . . . . . . 62
3.6.2 Đồ thị có hướng . . . . . . . . . . . . . . . . . . . . . . 63
3.6.2.1 Bậc vào và bậc ra . . . . . . . . . . . . . . . . 64
3.6.2.2 Loại của đỉnh . . . . . . . . . . . . . . . . . . 65
3.6.2.3 Ma trận liền kề của đồ thị có hướng . . . . . 65
3.6.2.4 Đường đi và tựa đường đi . . . . . . . . . . . 66
3.6.2.5 Ma trận đạt được . . . . . . . . . . . . . . . . 67
3.6.2.6 Tính N -liên thông . . . . . . . . . . . . . . . 68
3.6.2.7 Thành phần liên thông mạnh . . . . . . . . . 69
3.6.3 Các loại đồ thị dùng cho kiểm thử . . . . . . . . . . . . 70
3.6.3.1 Máy hữu hạn trạng thái . . . . . . . . . . . . 71
3.6.3.2 Mạng Petri . . . . . . . . . . . . . . . . . . . 73
3.7 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4 Khảo sát đặc tả và mã nguồn 79
4.1 Khảo sát đặc tả . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.1.1 Tiến hành duyệt đặc tả mức cao . . . . . . . . . . . . . 80
4.1.1.1 Hãy là khách hàng của sản phẩm . . . . . . . 80
4.1.1.2 Hãy nghiên cứu các chuẩn và hướng dẫn hiện
hành . . . . . . . . . . . . . . . . . . . . . . . 81
4.1.1.3 Hãy xem xét và kiểm thử các phần mềm tương
tự . . . . . . . . . . . . . . . . . . . . . . . . 82
4.1.2 Các kỹ thuật kiểm thử đặc tả ở mức thấp . . . . . . . 82
4.1.2.1 Danh sách các hạng mục cần thẩm định về
các thuộc tính của đặc tả . . . . . . . . . . . 83
4.1.2.2 Danh sách các hạng mục cần thẩm định về
các thuật ngữ của đặc tả . . . . . . . . . . . . 84
4.2 Khảo sát mã nguồn . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.1 Khảo sát thiết kế và mã nguồn hay là việc kiểm thử
hộp trắng tĩnh . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.2 Phản biện hình thức . . . . . . . . . . . . . . . . . . . 86
4.2.3 Phản biện chéo . . . . . . . . . . . . . . . . . . . . . . 87
4.2.4 Thông qua . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.2.5 Thanh tra . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.2.6 Các chuẩn và hướng dẫn trong lập trình . . . . . . . . 89
4.2.7 Danh sách các hạng mục chung cho việc khảo sát mã
nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.3 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5 Kiểm thử hàm 97
5.1 Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.1.1 Sự phức tạp của kiểm thử hàm . . . . . . . . . . . . . 99
5.1.2 Phương pháp hệ thống . . . . . . . . . . . . . . . . . . 101
5.1.3 Lựa chọn phương pháp phù hợp . . . . . . . . . . . . . 106
5.2 Kiểm thử giá trị biên . . . . . . . . . . . . . . . . . . . . . . . 108
5.2.1 Giá trị biên . . . . . . . . . . . . . . . . . . . . . . . . 108
5.2.2 Một số dạng kiểm thử giá trị biên . . . . . . . . . . . . 111
5.2.2.1 Kiểm thử giá trị biên mạnh . . . . . . . . . . 111
5.2.2.2 Kiểm thử giá trị biên tổ hợp . . . . . . . . . . 112
5.2.2.3 Kiểm thử các giá trị đặc biệt . . . . . . . . . 113
5.2.3 Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . 114
5.2.3.1 Kiểm thử giá trị biên cho Triangle . . . . . . 114
5.2.3.2 Kiểm thử giá trị biên cho NextDate . . . . . . 115
5.2.4 Kinh nghiệm áp dụng . . . . . . . . . . . . . . . . . . . 115
5.3 Kiểm thử lớp tương đương . . . . . . . . . . . . . . . . . . . . 117
5.3.1 Lớp tương đương . . . . . . . . . . . . . . . . . . . . . 117
5.3.2 Phân loại kiểm thử lớp tương đương . . . . . . . . . . 118
5.3.2.1 Kiểm thử lớp tương đương yếu . . . . . . . . 118
5.3.2.2 Kiểm thử lớp tương đương mạnh . . . . . . . 119
5.3.2.3 Kiểm thử lớp tương đương đơn giản . . . . . 120
5.3.3 Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . 121
5.3.3.1 Kiểm thử lớp tương đương cho Triangle . . . 121
5.3.3.2 Kiểm thử lớp tương đương cho NextDate . . . 122
5.3.3.3 Kiểm thử tương đương yếu cho NextDate . . 123
5.3.3.4 Kiểm thử tương đương mạnh cho NextDate . 123
5.3.4 Kinh nghiệm áp dụng . . . . . . . . . . . . . . . . . . . 124
5.4 Kiểm thử bằng bảng quyết định . . . . . . . . . . . . . . . . . 126
5.4.1 Bảng quyết định . . . . . . . . . . . . . . . . . . . . . 126
5.4.2 Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . 128
5.4.3 Kinh nghiệm áp dụng . . . . . . . . . . . . . . . . . . . 130
5.5 Kiểm thử tổ hợp . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.5.1 Kiểm thử đôi một . . . . . . . . . . . . . . . . . . . . . 132
5.5.2 Ma trận trực giao . . . . . . . . . . . . . . . . . . . . . 133
5.5.3 Kinh nghiệm áp dụng . . . . . . . . . . . . . . . . . . . 134
5.6 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6 Kiểm thử dòng điều khiển 137
6.1 Kiểm thử hộp trắng . . . . . . . . . . . . . . . . . . . . . . . . 137
6.2 Đồ thị dòng điều khiển . . . . . . . . . . . . . . . . . . . . . . 138
6.3 Các độ đo kiểm thử . . . . . . . . . . . . . . . . . . . . . . . . 139
6.4 Kiểm thử dựa trên độ đo . . . . . . . . . . . . . . . . . . . . . 142
6.4.1 Kiểm thử cho độ đo C1
. . . . . . . . . . . . . . . . . . 143
6.4.2 Kiểm thử cho độ đo C2
. . . . . . . . . . . . . . . . . . 144
6.4.3 Kiểm thử cho độ đo C3
. . . . . . . . . . . . . . . . . . 145
6.4.4 Kiểm thử vòng lặp . . . . . . . . . . . . . . . . . . . . 147
6.5 Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.6 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
7 Kiểm thử dòng dữ liệu 159
7.1 Kiểm thử dựa trên gán và sử dụng giá trị biến . . . . . . . . . 160
7.1.1 Ý tưởng . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.1.2 Các vấn đề phổ biến về dòng dữ liệu . . . . . . . . . . 160
7.1.3 Tổng quan về kiểm thử dòng dữ liệu động . . . . . . . 164
7.1.4 Đồ thị dòng dữ liệu . . . . . . . . . . . . . . . . . . . . 166
7.1.5 Các khái niệm về dòng dữ liệu . . . . . . . . . . . . . . 169
7.1.6 Các độ đo cho kiểm thử dòng dữ liệu . . . . . . . . . . 172
7.1.7 Sinh các ca kiểm thử . . . . . . . . . . . . . . . . . . . 176
7.2 Kiểm thử dựa trên lát cắt . . . . . . . . . . . . . . . . . . . . 178
MỤC LỤC ix
7.2.1 Ý tưởng về kiểm thử dựa trên lát cắt . . . . . . . . . . 179
7.2.2 Ví dụ áp dụng . . . . . . . . . . . . . . . . . . . . . . . 182
7.2.3 Một số lưu ý với kiểm thử dựa trên lát cắt . . . . . . . 188
7.3 Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7.4 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
8 Kiểm thử dựa trên mô hình 197
8.1 Khái niệm về kiểm thử dựa trên mô hình . . . . . . . . . . . . 197
8.2 Các phương pháp đặc tả mô hình . . . . . . . . . . . . . . . . 198
8.2.1 Máy hữu hạn trạng thái . . . . . . . . . . . . . . . . . 198
8.2.2 Ôtômat đơn định hữu hạn trạng thái . . . . . . . . . . 200
8.2.3 Biểu đồ trạng thái . . . . . . . . . . . . . . . . . . . . 201
8.2.4 Máy trạng thái UML . . . . . . . . . . . . . . . . . . . 201
8.2.5 Các phương pháp đặc tả khác . . . . . . . . . . . . . . 203
8.3 Sinh các ca kiểm thử từ mô hình . . . . . . . . . . . . . . . . 203
8.4 Sinh đầu ra mong muốn cho các ca kiểm thử . . . . . . . . . . 205
8.5 Thực hiện các ca kiểm thử . . . . . . . . . . . . . . . . . . . . 205
8.6 Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.6.1 Đặc tả hệ thống . . . . . . . . . . . . . . . . . . . . . . 206
8.6.2 Sinh các ca kiểm thử . . . . . . . . . . . . . . . . . . . 208
8.6.3 Thực hiện các ca kiểm thử . . . . . . . . . . . . . . . . 209
8.7 Thuận lợi và khó khăn của kiểm thử dựa trên mô hình . . . . 210
8.8 Một số công cụ kiểm thử dựa trên mô hình . . . . . . . . . . . 212
8.8.1 AGEDIS . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.8.2 Spec Explorer . . . . . . . . . . . . . . . . . . . . . . . 213
8.8.3 Conformiq Qtronic . . . . . . . . . . . . . . . . . . . . 214
8.8.4 JCrasher . . . . . . . . . . . . . . . . . . . . . . . . . . 214
x MỤC LỤC
8.8.5 Selenium . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.8.6 SoapUI . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.8.7 W3af . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.9 Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.10 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
9 Kiểm thử tự động và công cụ hỗ trợ 219
9.1 Tổng quan về kiểm thử tự động . . . . . . . . . . . . . . . . . 219
9.2 Kiến trúc của một bộ công cụ kiểm thử tự động . . . . . . . . 221
9.3 Một số công cụ kiểm thử tự động . . . . . . . . . . . . . . . . 223
9.3.1 CFT4CUnit . . . . . . . . . . . . . . . . . . . . . . . . 223
9.3.2 JDFT . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.3.3 JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.3.4 QuickTest Professional . . . . . . . . . . . . . . . . . . 227
9.3.5 Apache JMeter . . . . . . . . . . . . . . . . . . . . . . 228
9.3.6 Load Runner . . . . . . . . . . . . . . . . . . . . . . . 228
9.4 Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.5 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
10 Kiểm thử tích hợp 231
10.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
10.2 Các loại giao diện và lỗi giao diện . . . . . . . . . . . . . . . . 232
10.3 Tích hợp dựa trên cấu trúc mô-đun . . . . . . . . . . . . . . . 234
10.3.1 Tích hợp từ trên xuống . . . . . . . . . . . . . . . . . . 235
10.3.2 Tích hợp từ dưới lên . . . . . . . . . . . . . . . . . . . 236
10.3.3 Tích hợp bánh kẹp . . . . . . . . . . . . . . . . . . . . 237
10.4 Tích hợp dựa trên đồ thị gọi hàm . . . . . . . . . . . . . . . . 238
10.4.1 Tích hợp đôi một . . . . . . . . . . . . . . . . . . . . . 238
MỤC LỤC xi
10.4.2 Tích hợp láng giềng . . . . . . . . . . . . . . . . . . . . 239
10.5 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
11 Kiểm thử hệ thống, chấp nhận và hồi quy 241
11.1 Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
11.2 Kiểm thử hệ thống . . . . . . . . . . . . . . . . . . . . . . . . 243
11.2.1 Kiểm thử tính dễ dùng . . . . . . . . . . . . . . . . . . 246
11.2.2 Kiểm thử giao diện người dùng . . . . . . . . . . . . . 250
11.2.3 Kiểm thử hiệu năng . . . . . . . . . . . . . . . . . . . 250
11.2.3.1 Khái niệm . . . . . . . . . . . . . . . . . . . . 250
11.2.3.2 Kiểm thử hiệu năng liên quan . . . . . . . . . 251
11.3 Kiểm thử chấp nhận . . . . . . . . . . . . . . . . . . . . . . . 253
11.4 Kiểm thử hồi quy . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.4.1 Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.4.2 Kỹ thuật kiểm thử hồi quy . . . . . . . . . . . . . . . . 256
11.5 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
ẢO 265 [DJ76] Fosdick Lloyd D. and Osterweil Leon J., Data flow analysis in software reliability, ACM Comput. Surv. 8 (1976), no. 3, 305– 330. [fS91] International Organization for Standardization, Data elements and interchange formats—information inter- change—representation of dates and times, International standard iso 8601:1988, technical corrigendum 1, switzerland, International Organization for Standardization, 1991. [G.95] Leveson Nancy G., Safeware: system safety and computers, ACM, New York, NY, USA, 1995. [GG12] Markus Grtner and Markus Grtner, Atdd by example: A practical guide to acceptance test-driven development, 1st ed., Addison-Wesley Professional, 2012. [GJ88] Frankl P. G. and Weyuker E. J., An applicable family of data flow testing criteria, IEEE Trans. Softw. Eng. 14 (1988), no. 10, 1483–1498. [GOA05] Mats Grindal, Jeff Offutt, and Sten F. Andler, Combination testing strategies: a survey, Softw. Test., Verif. Reliab. 15 (2005), no. 3, 167–199. [Gru73] F. Gruenberger, Program testing: The historical perspective, Program Test Methods, Prentice-Hall, 1973, pp. 11–14. [IEE93] Computer Society IEEE, Ieee standard classification for soft- ware anomalies, Ieee standard 1044-1993, IEEE Computer So- ciety, 1993. [Ing61] Stuart J. Inglis, Planets, stars, and galaxies, 4th ed., Wiley and Sons, New York, NY, USA, 1961. [Jor13] Paul C. Jorgensen, Software testing: A craftman’s approach, 4th ed., CRC Press, Inc., Boca Raton, FL, USA, 2013. [Kar12] Michael Kart, Behavior-driven development: conference tuto- rial, J. Comput. Sci. Coll. 27 (2012), no. 4, 75–75. 266 TÀI LIỆU THAM KHẢO [KJ02] El-Far I. K. and Whittaker J.A., Model-based software testing, Encyclopedia of Software Engineering (2002), 825—-837. [Kru05] Steve Krug, Don’t make me think: A common sense approach to the web (2nd edition), New Riders Publishing, Thousand Oaks, CA, USA, 2005. [KWG04] D. Richard Kuhn, Dolores R. Wallace, and Albert M. Gallo, Software fault interactions and implications for software test- ing, IEEE Trans. Software Eng. 30 (2004), no. 6, 418–421. [Lee03] Copeland Lee, A practitioner’s guide to software test design, Artech House, Inc., Norwood, MA, USA, 2003. [Mal87] Chellappa Mallika, Nontraversible paths in a program, IEEE Trans. Softw. Eng. 13 (1987), no. 6, 751–756. [Mar81] Weiser Mark, Program slicing, Proceedings of the 5th inter- national conference on Software engineering (Piscataway, NJ, USA), ICSE ’81, IEEE Press, 1981, pp. 439–449. [Mar84] , Program slicing, IEEE Trans. Softw. Eng. 10 (1984), no. 4, 352–357. [Mar03] Robert Cecil Martin, Agile software development: Principles, patterns, and practices, Prentice Hall PTR, Upper Saddle River, NJ, USA, 2003. [McC76] T.J. McCabe, A complexity measure, IEEE Transactions on Software Engineering 2 (1976), no. 4, 308–320. [MFB+07] J. Meier, Carlos Farre, Prashant Bansode, Scott Barber, and Dennis Rea, Performance testing guidance for web applications: patterns & practices, Microsoft Press, Redmond, WA, USA, 2007. [MG04] J. Mayer and R. Guderlei, Test oracles using statistical methods, the First International Workshop on Software Quality, 2004, pp. 179–189. [Mil91] Edward F. Miller, Automated software testing: A technical per- spective, American Programmer 4 (1991), no. 4, 38–43. TÀI LIỆU THAM KHẢO 267 [MMA02] Vanmali M., Last M., and Kandel A., Using a neural network in the software testing process, International Journal of Intelligent Systems 17 (2002), no. 1, 45–62. [MMA04] Last M., Friendman M., and Kandel A., Using data mining for automated software testing, International Journal of Software Engineering and Knowledge Engineering 14 (2004), no. 4, 369– 393. [Mol09] Ian Molyneaux, The art of application performance testing: Help for programmers and quality assurance, 1st ed., O’Reilly Media, Inc., 2009. [MRA04] Blackburn M., Busser R., and Nauman A., Why model-based test automation is different and what you should know to get started, Proceedings of International Conference on Practical Software Quality and Testing, PSQT’04, 2004. [Mye75] Glenford J. Myers, The art of software testing, Wiley Inter- science, New York, NY, USA, 1975. [oST02a] National Institute of Standards and Technology, The economic impacts of inadequate infrastructure for software testing, Nist planning report, National Institute of Standards and Technol- ogy, 2002. [oST02b] , Software errors cost u.s. economy $59.5 bullion an- nually, Nist news release, National Institute of Standards and Technology, 2002. [PE85] D. E. Perry and W. M. Evangelist, An empirical study of software interface faults, Proceedings of the Twentieth Annual Hawaii International Conference on Systems Sciences, January 1987, Volume II, 1985, pp. 113–126. [Pos90] Robert M. Poston, Automated software testing, Workshop Pro- gramming Environments (NJ, USA), Inc. Tinton Falls, 1990. [Pos91] , A complete toolkit for the software tester, American Programmer 4 (1991), no. 4, 28–37. 268 TÀI LIỆU THAM KHẢO [PZKH06] Hu Peifeng, Zhang Zhenyu, Chan W. K., and Tse T. H., An em- pirical comparison between direct and indirect test result check- ing approaches, Proceedings of the 3rd international workshop on Software quality assurance (New York, NY, USA), SOQUA ’06, ACM, 2006, pp. 6–13. [Rob85] Mandl Robert, Orthogonal latin squares: an application of ex- periment design to compiler testing, Commun. ACM 28 (1985), no. 10, 1054–1058. [Rub94] Jeffrey Rubin, Handbook of usability testing: How to plan, de- sign, and conduct effective tests, John Wiley & Sons, Inc., New York, NY, USA, 1994. [S.82] Pressman Roger S., Software engineering: A practitioner’s ap- proach, McGraw-Hill, Inc., New York, NY, USA, 1982. [Shr89] Phadke Madhav Shridhar, Quality engineering using robust de- sign, Englewood Cliffs, N.J. Prentice Hall, 1989. [SJ85] Rapps Sandra and Weyuker Elaine J., Selecting software test data using data flow information, IEEE Trans. Softw. Eng. 11 (1985), no. 4, 367–375. [Som10] Ian Sommerville, Software engineering, 9 ed., Addison-Wesley, 2010. [SvBGF+91] Fujiwara Susumu, von Bochmann Gregor, Khendek Ferhat, Amalou Mokhtar, and Ghedamsi Abderrazak, Test selection based on finite state models, IEEE Trans. Softw. Eng. 17 (1991), no. 6, 591–603. [TL02] Kuo-Chung Tai and Yu Lei, A test generation strategy for pair- wise testing, IEEE Trans. Software Eng. 28 (2002), no. 1, 109– 111. [WM96] Arthur H. Watson and Thomas J. McCabe, Structured testing: A testing methodology using the cyclomatic complexity metric, NIST Special Publication 500-235, National Institute of Stan- dards and Technology, Computer Systems Laboratory, NIST, Gaithersburg, MD 20899-0001, 1996. Sơ lược về các tác giả TS. Đặng Văn Hưng2 tốt nghiệp ngành Toán học tính toán tại Khoa Toán- Cơ, Trường Đại học Tổng hợp Hà Nội (nay thuộc Trường đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội) năm 1977, bảo vệ thành công học vị Tiến sĩ ngành Khoa học máy tính tại Viện Khoa học Máy tính và Tự động hóa, Viện Hàn lâm Khoa học Hungary tháng 2 năm 1988. TS Đặng Văn Hưng khởi đầu sự nghiệp chuyên môn của mình là một nghiên cứu viên tại viện Công nghệ Thông tin, Viện Khoa học và Công nghệ Việt Nam từ năm 1978, và làm nghiên cứu viên của Viện Quốc tế về Kỹ nghệ Phần mềm thuộc Trường đại học Liên hiệp quốc từ năm 1995 đến năm 2007. Từ năm 2008 đến nay TS Đặng Văn Hưng là giảng viên cao cấp của Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. TS. Đặng Văn Hưng đã tham gia tích cực vào một số hoạt động khoa học như giảng dạy tại một số trường hè quốc tế, tham gia các tiểu ban chương trình của nhiều hội nghị quốc tế về lĩnh vực công nghệ thông tin, hiệu đính sách và tạp chí quốc tế cho nhà xuất bản Springer. Lĩnh vực nghiên cứu mà Đặng Văn Hưng quan tâm bao gồm các phương pháp hình thức, mô hình hoá, đặc tả và kiểm chứng phần mềm, các hệ tính toán sông song và phân tán, kỹ thuật phát triển phần mềm dựa trên thành phần. TS. Đặng Văn Hưng đã công bố hơn 80 bài báo trong lĩnh vực chuyên môn của mình trong các tạp chí và kỷ yếu của các hội nghị quốc tế và trong nước. TS. Đặng Văn Hưng đã từng là giáo sư mời của đại học Sư phạm Hoa Đông, Thượng Hải, Trung quốc, và hiện nay là phó tổng biên tập Chuyên san Công nghệ Thông tin và Truyền thông của Đại học Quốc gia Hà Nội. 2∼dvh/ 269 270 TÀI LIỆU THAM KHẢO TS. Trương Anh Hoàng3 tốt nghiệp ngành tin học tại khoa Toán-Cơ, trường Đại học Tổng hợp Hà Nội (nay thuộc trường đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội) năm 1994, bảo vệ thành công học vị Tiến sĩ khoa học ngành Tin học tại Trường Đại học Bergen, Na Uy năm 2006. Sau khi tốt nghiệp đại học Trương Anh Hoàng đã tham gia nhiều dự án phát triển phần mềm ở nhiều công ty trong và ngoài nước và thu được nhiều kinh nghiệm thực tế ở các dự án này. Từ năm 2008 đến nay TS. Trương Anh Hoàng là giảng viên Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Các môn giảng dạy chính của TS. là Công nghệ Phần mềm và Kiểm thử Phần mềm. Một số hướng nghiên cứu chính của TS. là hệ thống kiểu, phân tích và kiểm chứng chương trình, và kiểm thử tự động. TS. Phạm Ngọc Hùng4 tốt nghiệp đại học ngành Công nghệ Thông tin tại Khoa Công nghệ (nay là Trường Đại học Công nghệ), Đại học Quốc gia Hà Nội (ĐHQGHN) năm 2002, tốt nghiệp Thạc sĩ chuyên ngành Công nghệ Phần mềm tại Viện Khoa học và Công nghệ tiên tiến Nhật Bản năm 2006, bảo vệ thành công học vị Tiến sĩ chuyên ngành Công nghệ Phần mềm tại Viện Khoa học và Công nghệ tiên tiến Nhật Bản năm 2009. TS. Phạm Ngọc Hùng bắt đầu sự nghiệp nghiên cứu từ năm 2002 tại Khoa Công nghệ, ĐHQGHN. Từ năm 2009 đến nay, Tiến sĩ là giảng viên tại Trường Đại học Công nghệ, ĐHQGHN. Các hướng nghiên cứu quan tâm của TS. Phạm Ngọc Hùng gồm các phương pháp hình thức, mô hình hoá, đặc tả và kiểm chứng phần mềm, kiểm thử tự động và tiến hóa phần mềm. 3∼hoangta/ 4∼hungpn/
File đính kèm:
- Giáo trình Kiểm thử phần mềm.pdf