Tải bản đầy đủ (.doc) (16 trang)

Tài liệu kiểm thử và gỡ rối Đề tài Tạo một ADT có tên Array.h và viết một chương trình CheckArray.c để kiểm tra

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1015.36 KB, 16 trang )

Trường Đại học Bách Khoa Hà Nội
Viện Công nghệ thông tin và truyền thông
Tài liệu kiểm thử
và gỡ rối
Đề tài : Tạo một ADT có tên Array.h
và viết một chương trình CheckArray.c để kiểm tra
Hà Nội, 2013
1

Giảng viên hướng dẫn : TS Vũ thị Hương Giang
Nhóm sinh viên thực hiện : Vũ Văn Bảo
Trần Trung Hiếu
Nguyễn Minh Tiến
Nguyễn Văn Tùng
Nguyễn Hồng Vinh
Lớp : KSCLC – K55
Năm học : 2012 - 2013
Mục lục
Mục lục 2
I.Kiểm thử 3
1.Kiểm thử hàm mang nhap() 3
2.Kiểm thử thủ tục void hien(mang mang1) 5
3.Kiểm thử hàm mang bubbleSort(mang mang1) 5
4.Kiểm thử hàm mang insertionSort(mang mang1) 6
5.Kiểm thử hàm mang selectionSort(mang mang1) 6
6.Kiểm thử thủ tục void finMax(mang mang1) 7
7.Kiểm thử thủ tục void finMin(mang mang1) 7
8.Kiểm thử hàm float avgMax(mang mang1) 7
9.Kiểm thử hàm float dolech(mang mang1, int i, int j) 8
10.Kiểm thử hàm float dolechtb(mang mang1) 9
11.Kiểm thử thủ tục void sequentialSearch(mang mang1, float x) 9


12.Kiểm thử thủ tục void binarySearch(mang mang1, float giatri) 10
13.Kiểm thử thủ tục getTime(mang mang_input) 12
II.Gỡ rối 13
1.ASSERT1 dùng để kiểm tra xem việc nhập dữ liệu vào mảng có đúng
không 13
2.ASSERT 2 dùng để kiểm tra giá trị ở 2 giải thuật tìm kiếm có đúng kiểu dữ
liệu hay không 13
3.ASSERT 3 dùng để kiểm tra việc nhập kích thước của mảngcó đúng yêu
cầu hay không 14
Tài liệu tham khảo 16
2
I. Kiểm thử
1. Kiểm thử hàm mang nhap().
a. Trường hợp kiểm thử 1:nhập vào số phần tử là số nhưng mà không phải là
số nguyên.
• Dữ liệu kiểm thử:
count = 3.5.
• Yêu cầu:
Thông báo nhập dữ liệu không đúng, cho phép nhập lại.
• Kết quả:
 Chương trình chạy không đúng yêu cầu.
b. Trường hợp kiểm thử 2:nhập vào số phần tử của mảng là 1 số nguyên
nhưng có giá trị lớn hơn 1000 hoặc nhỏ hơn 1.
• Dữ liệu kiểm thử:
count = 1001.
• Yêu cầu:
In ra thông báo nhập dữ liệu không đúng và cho phép nhập lại.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
c. Trường hợp kiểm thử 3: Nhập vào số phần tử của mảng là một số nguyên

thuộc [1;1000] nhưng nhập dữ liệu cho mảng có ít nhất 1 phần tử là 1 ký tự
bất kỳ, không phải số.
• Dữ liệu kiểm thử:
count = 7;
max = {e;2.4;6;7.23;9;12.6;*);
• Yêu cầu: thông báo dữ liệu không đúng và cho phép nhập lại
3
• Kết quả:
 Chương tình chạy không đúng với yêu cầu.
d. Trường hợp kiểm thử 4: Nhập vào số phần tử của mảng là 1 số nguyên
thuộc [1;1000] và nhập dữ liệu cho mảng là các số thực nằm trong phạm vi
kích thước của kiểu float.
• Dữ liệu kiểm thử:
count = 6.
max = {16.66;13.32;123;2;5;6.7}.
• Yêu cầu: Dữ liệu được nhập, và in ra thông báo nhập dữ liệu thành công.
• Kết quả:
4
 Chương trình chạy đúng với yêu cầu.
2. Kiểm thử thủ tục void hien(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 6.
mang1.max = {16.66;13.32;123;2;5;6.7}.
• Yêu cầu: In ra màn hình đúng giá trị của biến mang1.
• Kết quả :
 Chương trình chạy đúng theo yêu cầu.
3. Kiểm thử hàm mang bubbleSort(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.

• Yêu cầu:trả về mảng mang1.max được sắp xếp tăng dần
mang1.max = {2;2;5;6.7; 13.32;13.32;16.66;123}.
• Kết quả:
5
 Chương trình chạy đúng theo yêu cầu.
4. Kiểm thử hàm mang insertionSort(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
• Yêu cầu: trả về mảng mang1.max được sắp xếp tăng dần
mang1.max = {2;2;5;6.7; 13.32;13.32;16.66;123}.
• Kết quả:
 Chương trình chạy đúng theo yêu cầu.
5. Kiểm thử hàm mang selectionSort(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
• Yêu cầu: trả về mảng mang1.max được sắp xếp tăng dần
mang1.max = {2;2;5;6.7; 13.32;13.32;16.66;123}.
• Kết quả:
6
 Chương trình chạy đúng theo yêu cầu.
6. Kiểm thử thủ tục void finMax(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
• Yêu cầu: In ra đúng giá trị lớn nhất trong mảng là 123, và phần tử lớn nhất
là phần tử thứ 3.
• Kết quả:
 Chương trình chạy đúng yêu cầu.

7. Kiểm thử thủ tục void finMin(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
• Yêu cầu: In ra đúng giá trị nhỏ nhất trong mảng là 2, và phần tử lớn nhất
là phần tử thứ 4, 8.
• Kết quả:
 Chương trình chạy đúng yêu cầu.
8. Kiểm thử hàm float avgMax(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
Yêu cầu: Trả về giá trị tb của các phần tử trong mảng: avg = 22.75
7
• Kết quả:
 Chương trình chạy đúng theo yêu càu.
9. Kiểm thử hàm float dolech(mang mang1, int i, int j).
a. Không có cả hai phần tử thứ i và j:
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
i=10; j = 14.
• Yêu cầu: trả về giá trị -3 ( không có phần tử thứ i= 10 và j = 14).
• Kết quả:
 Chương trình chạy đúng theo yêu cầu
b. Không có phần tử thứ i:
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
i= 12,j =3;

• Yêu cầu: trả về giá trị -2 ( không có phần tử thứ i = 12).
• Kết quả:
 Chương trình chạy đúng theo yêu cầu
c. Không có phần tử thứ j:
• Dữ liêu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
i = 3, j = 15;
8
• Yêu cầu: trả về giá trị -1 ( không có phần tử thứ j =13).
• Kết quả:
 Chương trình chạy đúng theo yêu cầu.
d. Có cả hai phần tử i và j:
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
i = 3, j =6.
• Yêu cầu: trả về giá trị độ lệch giữa hai phần tử 116.3
• Kết quả:
 Chương trình chạy đúng yêu cầu.
10. Kiểm thử hàm float dolechtb(mang mang1).
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
• Yêu cầu: trả về giá trị độ lệch trung bình giữa các phần tử trong mảng là
108.16
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
11. Kiểm thử thủ tục void sequentialSearch(mang mang1, float x).
a. Trường hợp thử 1: không có phần tử có giá trị là x.

• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
x = 35.5.
9
• Yêu cầu:
In ra màn hình số 0 thể hiện cho không tìm thấy phần tử này.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
b. Trường hợp thử 2: có 1 phần tử có giá trị là x.
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
x = 16.66.
• Yêu cầu:
In ra đúng vị trí chỉ số của phần tử có giá trị x =16.66 là 0.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
c. Trường hợp thử 3: có nhiều hơn 1 phần tử có giá trị là x.
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
x = 13.32.
• Yêu cầu:
In ra đúng và đủ vị trí chỉ số của phần tử có giá trị là x= 13.32 là 1 và 6.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
12. Kiểm thử thủ tục void binarySearch(mang mang1, float giatri).
a. Trường hợp thử 1: không có phần tử có giá trị là giatri.
• Dữ liệu kiểm thử:

10
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
x = 35.5.
• Yêu cầu:
In ra màn hình thông báo không tìm thấy phần tử này.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
b. Trường hợp thử 2: có 1 phần tử có giá trị là giatri.
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
x = 16.66.
• Yêu cầu:
In ra đúng vị trí chỉ số của phần tử có giá trị x =16.66 là 6 trong mảng đã
sắp xếp.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
c. Trường hợp thử 3: có nhieu hơn 1 phần tử có giá trị là giá trị.
• Dữ liệu kiểm thử:
mang1.count = 8.
mang1.max = {16.66;13.32;123;2;5;6.7;13.32;2}.
x = 13.32.
• Yêu cầu:
In ra đúng và đủ vị trí chỉ số của phần tử có giá trị là x= 13.32 là 4 và 5.
• Kết quả:
 Chương trình chạy đúng với yêu cầu.
11
13. Kiểm thử thủ tục getTime(mang mang_input).
Từ kết quả kiểm thử ở các hàm thủ tục trên, và xem thời gian thực hiện của

từng hàm/thủ tục:
12
 Chương trình chạy đúng với yêu cầu.
II. Gỡ rối
1.ASSERT1 dùng để kiểm tra xem việc nhập dữ liệu vào mảng có đúng
không.
float ASSERT1( int chiso){
float a;
char dulieu[10];
printf("\n nhap phan tu thu %3d max[%3d]= ", chiso+1, chiso);
scanf("%s",&dulieu);
fflush(stdin);
if(strcmp(dulieu,"0")!=0){
a= atof(dulieu);
if(a ==0){
printf("\n nhap sai!! moi ban nhap lai");
a= ASSERT1(chiso);
return a;
}
else return a;
}
else {
a=0;
return a;
}
}
2.ASSERT 2 dùng để kiểm tra giá trị ở 2 giải thuật tìm kiếm có đúng kiểu
dữ liệu hay không
float ASSERT2(){
float a;

char dulieu[10];
printf("\n Nhap so can tim y = ");
scanf("%s",&dulieu);
fflush(stdin);
if(strcmp(dulieu,"0")!=0){
a= atof(dulieu);
13
if(a ==0){
printf("\n ban nhap y sai !!!moi ban nhap lai");
a= ASSERT2();
return a;
}
else return a;
}
else {
a=0;
return a;
}
}
3.ASSERT 3 dùng để kiểm tra việc nhập kích thước của mảngcó đúng
yêu cầu hay không.
int ASSERT3(){
int b;
float a;
char dulieu[10];
printf("\n Nhap so luong phan tu cua mang count = ");
scanf("%s",&dulieu);
fflush(stdin);
if(strcmp(dulieu,"0")!=0){
a= atof(dulieu);

b= atoi(dulieu);
if(a ==0){
printf("\n ban da nhap so luong phan tu la ky tu");
printf("\n sai yeu cau moi ban nhap lai");
b= ASSERT3();
return b;
}
else{
if((a-b)!=0){
printf("\n ban da nhap so luong phan tu la kieu so
thuc");
printf("\n sai yeu cau moi ban nhap lai");
b= ASSERT3();
return b;
}
else{
14
if(b<0||b>1000){
printf("\n ban da nhap so luong phan tu khong dung
kich thuoc yeu cau");
printf("\n sai yeu cau moi ban nhap lai");
b= ASSERT3();
return b;
}
else return b;
}
}
}
else {
b=0;

return b;
}
}
15
Tài liệu tham khảo
[1] Slide bài giảng KTLT-Vũ Thị Hương Giang
[2] Code complete A Practical Handbook ofd Software Construction
của tác giả Steve Mc Connell
16

×