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

BÀI tập KIỂM THỬ CHƯƠNG TRÌNH mô PHỎNG THANG máy

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 (232.73 KB, 21 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

BÀI TẬP-KIỂM THỬ CHƯƠNG TRÌNH MÔ
PHỎNG THANG MÁY

BÀI TẬP NHÓM MÔN HỌC

IT3104 –MÔN KỸ THUÂT LẬP TRÌNH
Giảng viên hướng dẫn : TS. Vũ Thị Hương GIang
Nhóm học viên

PE08 : Trần Kim Lân

Nguyễn Văn Phúc
Lê Văn Hiếu
Lê Nhâm Hưng
Lớp

: HTTT-KSCLC-K54

HÀ NỘI 2012


Mục lục
IT3104 –MÔN KỸ THUÂT LẬP TRÌNH..........................................................1
Giảng viên hướng dẫn : TS. Vũ Thị Hương GIang...........................................................1

Mục lục..............................................................................................................2
3. Kiểm thử chương trình..................................................................................7


3.1Danh sách các chức năng cần có.................................................................7
3.2Kiểm thử cho chức năng 1..............................................................................................7
3.3Kiểm thử cho chức năng 2..............................................................................................8
3.4Kiểm thử cho chức năng 3..............................................................................................8

4.Tinh chỉnh mã nguồn.....................................................................................9
4.1.Danh sách các chức năng cần tinh chỉnh.....................................................................9
4.2.Tinh chỉnh cho chức năng chọn thang.........................................................................9

2


Báo cáo kiểm thử chương trình
Của nhóm PE08:
Trần Kim Lân

20091568

Lê Nhâm Hưng

20091365

Nguyễn Văn Phúc

20092037

Lê Văn Hiếu

20091031


(Hệ thống thông tin và truyền thông)

Cho nhóm PE12 :
Nguyễn Văn Thương

20092669

Nguyễn Công Vượng

20093344

Đỗ Thế Vương

20093334

Trần Đức Thuận

20092634

(Cơ khí hàng không)

3


1.

Thiết kế chương trình.
1.1.

Thiết kế dữ liệu.


• Cấu trúc dữ liệu chính:
- Cấu trúc :thang máy gồm các thuộc tính:
o Mã TM:TM1,TM2.
=> Chuẩn
o Vị trí( từ tầng 1 đến tầng 6). => Chuẩn
o Trạng thái (-1 đi xuống, 0 đứng yên, 1 đi lên).
=> Chuẩn
o Số người tối đa (5 người).
=> Chưa tối ưu, nên đưa ra trọng
lượng tối đa
- Cấu trúc tầng:gồm các thuộc tính:
o Mã tầng(tầng 1 đến tầng 6). =>Chuẩn
o Trạng thái( 0không có khách,-1 khách đi xuống,1 khách đi lên).
=> Chuẩn
o Thang1 (0: thang1 đứng yên tại tầng này,-1: thang1 sẽ xuống
khỏi tầng này,1: thang1 sẽ lên khỏi tầng này). => Chuẩn
o Thang2 tương tự.
o Số khách trả của mỗi thang. => Chuẩn
- Cấu trúc khách: gồm các thuộc tính:
o Vị trí(tầng 1,2,..,6).
o Trạng thái(0,-1,1). => Chuẩn
o Tầng đến(1,2,..,6)
1.2.

Thiết kế giải thuật.

• Giải thuật 1: Hàm chọn thang máy
o Nếu vị trí khách ở tầng trên 2 thang:
o Nếu vị trí khách ở tầng dưới 2 thang:

o Nếu vị trí khách ở tầng giữa 2 thang:
=>Chuẩn
• Giải thuật 2: Gọi thang máy.
o Kiểu 1 là trên đường thang máy di chuyển, dừng lại đón khách.
o Kiểu 2 là trên đường thang máy di chuyển, không dừng lại đón
khách, đến tầng cuối cùng, quay lại đón khách (nếu thang được gọi
kiểu 2, sau khi đến tầng cuối cùng trong 1 lượt đi, kiểu gọi sẽ đổi
thành Kiểu 1)
=>Chuẩn.
1.3.

Thiết kế giao diện.
4


- Mô phỏng khá tốt hoạt động thang máy đôi.
- Đồ họa khá đẹp, dễ hình dung.
- Giao diện trong và ngoài thang chưa thật trực quan (Hướng mũi tên di
chuyển, phím chọn…)
=>Chưa thật chuẩn.

1.4. Kết luận.
Nhìn chung, thiết kế của nhóm là khá ổn, có thể chấp nhận được mặc
dù còn có một số sai sót cần chú ý.
8/10 điểm.

2. Cài đặt chương trình.
2.1. Các kĩ thuật làm việc với biến.
- Khai báo biến => Chuẩn
- Đặt tên biến => Chuẩn

- Sử dụng các kiểu dữ liệu hợp lí => Chuẩn
2.2. Các kĩ thuât xây dựng hàm, thủ tục.
Có những chương trình con quá dài khiến người đọc khó có thể quan sát
và nắm bắt được các chức năng: tính toán, đánh giá hay biến đổi biểu thức.
5


Cần đưa vào các tham số cho hàm để không phải xét quá nhiều trường hợp
tương tự nhau.
2.3.Các kĩ thuật viết mã nguồn hiệu quả.
- Các cặp dấu đóng mở ngoặc ở nhiều chỗ ko được going đúng, các
hang trong câu lệnh sau dấu đóng mở ngoặc cũng vậy.
- Cấu trúc rẽ nhánh chưa được tốt trong việc so sánh các điều kiện.
2.4.Các kỹ thuật bẫy lỗi và lập trình phòng ngừa.
 Kỹ thuật bẫy lỗi:
• Mã nguồn rõ ràng, dễ hiểu, chú thích chi tiết.
• Các hàm đảm bảo tốt tính nhất quán.
• Mục tiêu, nhiệm vụ các hàm được thống nhất hóa, tốt.
• Chương trình được cấu trúc tốt (các cấu trúc struct).
 Lập trình phòng ngừa:
• Giải thuật có logic, hoạt động tốt (C++).
• Chia rõ từng phần chương trình con kèm chú thích.
• Đảm bảo mối liên kết giữa các phần trong chương trình con.
2.5. Kỹ thuật viết tài liệu chương trình.
- Khá tốt, đầy đủ chức năng của phần mềm.
- Nên trình bày khoa học hơn để người đọc dễ quan sát hơn.
2.6. Phong cách lập trình.
- Trình bày chưa thật sự khoa học, hơi nhiều chú thích => chỉ chú thích
những chức năng cần thiết chứ không nên chú thích nhỏ.
- Việc căng chỉnh các dòng, các lệnh còn đôi chỗ chưa hợp lí (chưa

thẳng hàng, khoảng cách…)
2.7. Kết luận.
Nhìn chung việc cài đặt chương trình khá tốt

6

Điểm 7/10


3. Kiểm thử chương trình
3.1Danh sách các chức năng cần có
_Gọi thang máy từ bên trong thang máy 1,2
_Gọi thang máy từ bên ngoài
_Thang máy di chuyển
_Đóng mở cửa
_Hiển thị các kết quả di chuyển của thang máy
3.2Kiểm thử cho chức năng 1
* Gọi thang máy từ bên trong thang máy 1,2
_Liệt kê các chiến lược và kỹ thuật áp dụng:
+Kỹ thuật làm việc với biến:đặt tên biến(có tính chất gợi nhớ),kiểu dữ
liệu của biến phù hợp
+Kỹ thuật viết mã nguồn hiệu quả:sử dung các nguyên tắc chung(gióng
hang hợp lý,khoảng cách đủ để đọc..)
+Kỹ thuật xây dựng hàm ,thủ tục(Dặt tên hàm ngắn gọn ,có tính gợi
nhớ…)
+ Phong cách lâp trình:Viết chú thích rõ ràng..
Các TH kiểm thử:
Chức năng: Gọi thang máy từ bên trong thang máy 1,2
Bảng 1: Kết quả kiểm thử
S


input

Output

Excepti

TT

3

on

Kết
quả
Ok

1

1 Nhập tầng muon _Thang máy di chyển xử lý dược
đến:1,
xuống tầng 1

OK

2

2 Nhâp tầng muốn Thang máy di chyển xử lý được
đến 6
xuống tầng 6

3 Nhập tầng muốn Thang máy di chuyển
3 đến 2và 4 cùng 1 Đến cả hai tầng
lúc

Fail

7

Ko xử lýđược


3.3Kiểm thử cho chức năng 2
*Gọi thang máy từ bên ngoài
_Liệt kê các chiến lược và kỹ thuật áp dụng:
+Kỹ thuật làm việc với biến:đặt tên biến(có tính chất gợi nhớ),kiểu dữ
liệu của biến phù hợp
+Kỹ thuật viết mã nguồn hiệu quả:sử dung các nguyên tắc chung(gióng
hang hợp lý,khoảng cách đủ để đọc..)
+Kỹ thuật xây dựng hàm ,thủ tục(Dặt tên hàm ngắn gọn ,có tính gợi
nhớ…)
+ Phong cách lâp trình:Viết chú thích rõ ràng..
Chức năng: Gọi thang máy từ bên ngoài
Bảng 2: Kết quả kiểm thử
STT

input

Output

Excep

tion

1

Nhạp vị trí mà Thang máy di chuyển Xử lý được
ban dang ở và dến tầng5 và hướng di
hướng:
xuống

Kết
quả
Ok

VT:5 di xuong
2

Nhập VT tầng 6
hướng đi lên

Thông báo sai hướng

Xử lý được

3

Nhập đồng thời _thang máy di chuyển Ko xử lý
hai
VT đến tầng 2 sau đó di dược
2,5.Hướng đi lên chuyển đến tang 5


OK

Fail

3.4Kiểm thử cho chức năng 3
* Hiển thị các kết quả di chuyển khách
_Liệt kê các chiến lược và kỹ thuật áp dụng:
+Kỹ thuật làm việc với biến:đặt tên biến(có tính chất gợi nhớ),kiểu dữ
liệu của biến phù hợp
+Kỹ thuật viết mã nguồn hiệu quả:sử dung các nguyên tắc chung(gióng
hang hợp lý,khoảng cách đủ để đọc,sử dụng câu lệnh if ..,for,,.)
8


+Kỹ thuật xây dựng hàm ,thủ tục(Dặt tên hàm ngắn gọn ,có tính gợi
nhớ…)
+ Phong cách lâp trình:Viết chú thích rõ ràng..
Chức năng: Hiển thị các kết quả di chuyển khách
Bảng 3: Kết quả kiểm thử
S
TT
1

input

Output

Exc

eption

Từ tầng 1 đến tấng Di qua tầng các tầng Xử lý
5
2.3.4
được

2 Di từ tầng 6 về tầng Đi qua tầng 5,4,3
2

Kết
quả
OK

Xử lý dược OK

3 Thang 1 ở tầng 1, Thang 1 di chuyển lên Xử lý dược OK
thang 2 ở tầng 5
tầng 2
Có lệnh gọi từ ngoài
từ tầng 2
3.5 Kết luận
_Đánh giá chương trình: chạy ổn định, không bắt hết các trường hợp,mỗi
lần di nhập chỉ nhập dược 1 giá trị.Theo ý kiến nhóm :cho nhóm PE12 7
diểm(theo thang điểm 10).
4. Tinh chỉnh mã nguồn
4.1. Danh sách các chức năng cần tinh chỉnh
a. Chọn thang.
b. Gọi thang đến.
c. Chuyển khách.
d. Thao tác của khách.
e. Di chuyển.

4.2.Tinh chỉnh cho chức năng chọn thang
a. Các kĩ thuật sử dụng
- Tinh chỉnh các biểu thức logic
- Tinh chỉnh việc biến đổi dữ liệu
b. Đoạn code sau khi tinh chỉnh

9


void ChonThang()
{ int KC1,KC2,KCC1,KCC2;
KC1=abs(TM1.vitri-khach.vitri);
KC2=abs(TM2.vitri-khach.vitri);
KCC1=abs(TM1.tangcuoi-khach.vitri);
KCC2=abs(TM2.tangcuoi-khach.vitri);
//neu khach o tren 2 thang may
if((khach.vitri>TM1.vitri))
{
if(khach.vitri>TM2.vitri)
{
if((TM1.trangthai*TM2.trangthai)==1)
{
if((khach.trangthai==1))
{
if(khach.vitri!=6)
{
……………
}
}
else ……………

};
if((TM1.trangthai*TM2.trangthai)==-1)
{
if((khach.trangthai==1))
{
if(khach.vitri!=6)
{
……………….
}
}
else …………..
};
if((TM1.trangthai==0))
{
if(TM2.trangthai!=0)
{
10


if(khach.trangthai==1)
{
if(khach.vitri!=6)
{
…………..
}
}
else …………
}
};
if(TM2.trangthai==0)

{
if(TM1.trangthai!=0)
{
if(khach.trangthai==1)
{
if(khach.vitri!=6)
{
……………….
}
}
else …………….
}
};
};
};
if(khach.vitri{
if(khach.vitri{
if((TM1.trangthai*TM2.trangthai)==1)
{
if(khach.trangthai==-1)
{
if(khach.vitri!=1)
11


{
……………..
}

}
else ……………..
};
if((TM1.trangthai*TM2.trangthai)==-1)
{
if(khach.trangthai==-1)
{
if(khach.vitri!=1)
{
……………
}
}
else ………………..
};
if(TM1.trangthai==0)
if(TM2.trangthai!=0)
{
if(khach.trangthai==-1)
{
if(khach.vitri!=1)
{
……………
}
}
else ………………
};
if(TM2.trangthai==0)
if(TM1.trangthai!=0)
12



{
if(khach.trangthai==-1)
{
if(khach.vitri!=1)
{
……………
}
}
else …………
};
}
};
if(khach.vitri{
if(khach.vitri>TM2.vitri)
{
if((TM1.trangthai*TM2.trangthai)==-1)
{
if (TM1.trangthai==-1)
{
…………..
}
else …………….
};
if((TM1.trangthai*TM2.trangthai)==1)
{
if (TM1.trangthai==-1)
{
…………..

else
{
…………….
};
};
13


if(TM1.trangthai==0)
if(TM2.trangthai!=0)
{
if(khach.trangthai==1)
{
……………
}
else …………..
};
if(TM2.trangthai==0)
if(TM1.trangthai!=0)
{
if(khach.trangthai==-1)
{
………………….
}
else ………..
};
};
};
if((khach.vitri{

if(khach.vitri>TM1.vitri)
if((TM2.trangthai*TM1.trangthai)==-1)
{
if (TM2.trangthai==-1)
{
…………...
}
else ………………
};
if((TM1.trangthai*TM2.trangthai)==1)
{
if (TM2.trangthai==-1)
{
………………..
14


}
else
{
………………..
};
};
if(TM1.trangthai==0)
if(TM2.trangthai!=0)
{
if(khach.trangthai==-1)
{
………………
}

else ……………….
};
if(TM2.trangthai==0)
if (TM1.trangthai!=0)
{
if(khach.trangthai==1)
{
……………….
}
else …………..
};
};
if(TM1.trangthai==0)
if(TM2.trangthai==0)
{
………………..
};
if(TM1.vitri==khach.vitri)
if(TM1.trangthai==0)
if (TM2.trangthai!=0)
15


TM1.duocchon=1;
if(TM2.vitri==khach.vitri)
if(TM1.trangthai==0)
if (TM2.trangthai!=0)
TM1.duocchon=1;
if(TM2.vitri==khach.vitri)
if(TM2.trangthai==0)

if (TM1.trangthai!=0)
TM2.duocchon=1;
if(TM1.vitri==khach.vitri)
if(TM2.trangthai==0)
if (TM1.trangthai!=0)
TM2.duocchon=1;
if((TM1.vitri==khach.vitri))
if (TM2.trangthai!=0)
if (TM1.trangthai!=0)
{
……………
};
if((TM2.vitri==khach.vitri))
if(TM2.vitri!=TM1.vitri)
if(TM2.trangthai!=0)
if(TM1.trangthai!=0)
{
……………..
};
}
4.3. Tinh chỉnh cho chức năng di chuyển
a. Các kĩ thuật sử dụng
-Tinh chỉnh các biểu thức logic
-Tinh chỉnh việc biến đổi dữ liệu
b. Đoạn code sau khi tinh chỉnh
void GoiThangDen()
{
if(TM1.duocchon==1)
if(TM1.vitri!=khach.vitri)
16



{
……………….
int m,n;
m=abs(TM1.tangcuoi-TM1.vitri);
n=abs(TM1.vitri-khach.vitri);
………..
};
if(TM2.duocchon==1)
if(TM2.vitri!=khach.vitri)
{
………..
int m,n;
m=abs(TM2.tangcuoi-TM2.vitri);
n=abs(TM2.vitri-khach.vitri);
………….
};
};
4.4.
a.
b.

Tinh chỉnh cho chức năng chuyển khách
Các kĩ thuật sử dụng
Tinh chỉnh các biểu thức logic
Đoạn code sau khi tinh chỉnh
void ChuyenKhach()
{
if(((TM1.trangthai*khach.trangthai)==1)||(TM1.trangthai==0))

if(TM1.vitri==khach.vitri)
if(TM1.duocchon!=0)
{
………………………
};
if(((TM2.trangthai*khach.trangthai)==1)||(TM2.trangthai==0))
if(TM2.vitri==khach.vitri)
if(TM2.duocchon!=0)
{
……………………
};
17


}
4.5.
α.
β.

Tinh chỉnh cho chức năng thao tác của khách

4.6.

Tinh chỉnh cho chức năng di chuyển

Các kĩ thuật sử dụng
Tinh chỉnh các biểu thưc logic
Đoạn code sau tinh chỉnh
void ThaoTacCuaKhach()
{

……………..
while (…………)
{
if(……….)
{
if(khachgoi==4)
{
if(TM1.soluongkhach<=5)
{
……………..
}
}
else
{
…………….
};
};
};
}
a.Các kĩ thuật sử dụng
-Tinh chỉnh các biểu thức logic
-Tinh chỉnh việc biến đổi dữ liệu
b.Đoạn code sau khi tinh chỉnh
void DiChuyen()
{
int a,b;
…………..
if(T[a].thang1==1)
18



if(T[a].sokhachtra1==0)
{
………………
};
if(T[a].thang1==-1)
if(T[a].sokhachtra1==0)
{
…………………..
};
if(T[b].thang2==1)
if(T[b].sokhachtra2==0)
{
…………………
};
if(T[b].thang2==-1)
if(T[b].sokhachtra2==0)
{
…………………...
};
if(((TM1.trangthai*khach.trangthai)==1)||(TM1.trangthai==0))
if(TM1.vitri==khach.vitri)
if(TM1.duocchon!=0)
{
…………………
int m,n;
m=abs(TM1.tangcuoi-khach.vitri);
n=abs(khach.tangden-khach.vitri);
…………
};

if(((TM2.trangthai*khach.trangthai)==1)||(TM2.trangthai==0))
if(TM2.vitri==khach.vitri)
if(TM2.duocchon!=0)
{
……………;
…………………..
int m,n;
19


m=abs(TM2.tangcuoi-khach.vitri);
n=abs(khach.tangden-khach.vitri);
……………
};
if(T[a].sokhachtra1!=0)
{
………………….
};
if(T[b].sokhachtra2!=0)
{
…………………..
};
…………..
if(TM1.trangthai==0)
if(TM2.trangthai==0)
ThaoTacCuaKhach();
if(TM1.duocchon==2)
if(TM1.tangcuoi!=khach.vitri)
if(TM1.vitri==TM1.tangcuoi)
{

……………..
};
if(TM2.duocchon==2)
if(TM2.tangcuoi!=khach.vitri)
if(TM2.vitri==TM2.tangcuoi)
{
…………………
};
……………..
};

4.7Kết quả sau khi tinh chỉnh
Sau khi tinh chỉnh mã nguồn, số lượng dòng code của chương trình
nhiều hơn. Đồng thời, việc quan sát và công việc soát lỗi cũng trở nên khó khăn
hơn nếu có lỗi xảy ra. Nhưng tốc độ thực hiện của chương trình được cải thiện.
Tốc độ được cải thiện không nhiều do chương trình không quá lớn nên nằm
trong khả năng thực hiện tốt của trình dịch.
20


5.Đánh giá báo cáo
S

Tiêu chí

Nhận xét

TT
1


Ít (không có) lỗi
trình bày/lỗi chính tả
(Không được phép vi
phạm các lỗi trình bày cơ
bản)
2
Đầy đủ các phần
quy định

Chương trình không có các lỗi
chính tả. Các trình bài gây khó khăn cho
việc quan sát chương trình: Các câu lệnh
không lùi vào hợp lí, có các chú thích
không cần thiết
Chương trình chạy ổn định nhưng
không bắt hết các trường hợp,mỗi lần di
nhập chỉ nhập dược 1 giá trị cho một
thang một
3
Nội dung trình bày
Cách trình bày khá tốt. Nhưng các
khoa học
hàm con viết quá dài. Do không sử dụng
các tham số của hàm nên trong chương
trình con phải xét tất cả các trường hợp
riêng lẻ.
4
Phân chia công
Việc phân chia công việc của nhóm
việc hợp lý

PE12 là khá hợp lí, công việc khá rõ ràng
cho từng thành viên
5
Nội dung báo cáo
Nôi dung báo cáo của nhóm PE12
khá chi tiết, đầy đủ các nội dung theo yêu
cầu
Đánh giá của nhóm là chương trình viết khá tốt. Nhóm đánh giá tầm 7
điểm.

21



×