Kết quả: Chương trình chạy không đúng yêu cầu.. Kết quả: Chương trình chạy đúng với yêu cầu... 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
Trang 1Trườ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
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
Trang 2Mụ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
Trang 3I Kiểm thử
1 Ki m th hàm mang nhap() ểm thử hàm mang nhap() ử 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
Kết quả:
Trang 4 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ả:
Chương trình chạy đúng với yêu cầu
Trang 52 Ki m th th t c void hien(mang mang1) ểm thử hàm mang nhap() ử hàm mang nhap() ủ tục void hien(mang mang1) ụ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) ểm thử hàm mang nhap() ử hàm mang nhap().
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ả:
Trang 6 Chương trình chạy đúng theo yêu cầu.
4 Ki m th hàm mang insertionSort(mang mang1) ểm thử hàm mang nhap() ử hàm mang nhap().
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) ểm thử hàm mang nhap() ử hàm mang nhap().
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
6 Ki m th th t c void finMax(mang mang1) ểm thử hàm mang nhap() ử hàm mang nhap() ủ tục void hien(mang mang1) ục void hien(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}
Trang 7 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) ểm thử hàm mang nhap() ử hàm mang nhap() ủ tục void hien(mang mang1) ục void hien(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) ểm thử hàm mang nhap() ử hàm mang nhap().
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
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) ểm thử hàm mang nhap() ử hàm mang nhap().
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ả:
Trang 8 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;
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
Trang 9 Kết quả:
Chương trình chạy đúng yêu cầu
10 Ki m th hàm float dolechtb(mang mang1) ểm thử hàm mang nhap() ử hàm mang nhap().
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) ểm thử hàm mang nhap() ử hàm mang nhap() ủ tục void hien(mang mang1) ục void hien(mang mang1).
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
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
Trang 10 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) ểm thử hàm mang nhap() ử hàm mang nhap() ủ tục void hien(mang mang1) ục void hien(mang mang1).
a Trường hợp thử 1: không có 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 = 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
Trang 11mang1.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
13 Ki m th th t c getTime(mang mang_input) ểm thử hàm mang nhap() ử hàm mang nhap() ủ tục void hien(mang mang1) ục void hien(mang mang1).
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:
Trang 12 Chương trình chạy đúng với yêu cầu.
Trang 13II Gỡ rối
1.ASSERT1 dùng đ ki m tra xem vi c nh p d li u vào m ng có đúng ểm thử hàm mang nhap() ểm thử hàm mang nhap() ệc nhập dữ liệu vào mảng có đúng ập dữ liệu vào mảng có đúng ữ liệu vào mảng có đúng ệc nhập dữ liệu vào mảng có đúng ả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 ểm thử hàm mang nhap() ểm thử hàm mang nhap() ị ở 2 giải thuật tìm kiếm có đúng ở 2 giải thuật tìm kiếm có đúng ảng có đúng ập dữ liệu vào mảng có đúng ếm có đúng
ki u d li u hay không ểm thử hàm mang nhap() ữ liệu vào mảng có đúng ệc nhập dữ liệu vào mảng có đú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);
if(a ==0){
printf("\n ban nhap y sai !!!moi ban nhap lai");
a= ASSERT2();
return a;
}
Trang 14else return a;
}
else {
a=0;
return a;
}
}
3.ASSERT 3 dùng đ ki m tra vi c nh p kích th ểm thử hàm mang nhap() ểm thử hàm mang nhap() ệc nhập dữ liệu vào mảng có đúng ập dữ liệu vào mảng có đúng ước của mảngcó đúng ủ tục void hien(mang mang1) c c a m ngcó đúng ảng có đúng yêu c u hay không ầ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{
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();
Trang 15return b;
} else return b;
} }
}
else {
b=0;
return b;
}
}
Trang 16Tà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