Chúng em đã rất cố gắng hoàn thiện báo cáo với tất cả sự nỗ lực, niềm say mê và sự thích thú, tuy nhiên, do bước đầu đi vào kiến thức môi trường thực tế, tìm hiểu và xây dựng đồ án trong
Trang 1TRƯỜNG Đ I H C ĐI N L CẠ Ọ Ệ Ự
BÁO CÁO CHUYÊN ĐÊỀ CÔNG NGH PHẦỀN MÊỀM Ệ
ĐÊỀ TÀI: Các ph ươ ng pháp ki m th phầần mềầm và Phần tch thiềết ể ử
: VŨ Đ C MINH Ứ : LÊ HOÀNG S N Ơ
Gi ng viên ả b môn ộ : Ph m Hôồng Đ c ạ ứ
Trang 2Chuyên ngành : CÔNG NGH PHẦỀN MÊỀM Ệ
Hà N i, ngày 11 tháng 11 năm 2022 ộ
PHIÊẾU CHẦẾM ĐI M Ể
Sinh viên th c hi n: ự ệ
NGUYỄỄN TÙNG LÂM
VŨ Đ C MINHỨ
LỄ HOÀNG S NƠ
Gi ng viên chấấm:ả
Trang 3Gi ng viên chấấm 1 :ả
Gi ng viên chấấm 2 :ả
Trang 4LỜI NÓI ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của khoa học công nghệ, đặc biệt là sự phát triển nhanh chóng của lĩnh vực công nghệ thông tin, công nghệ phần mềm ngày càng đi vào đời sống và được con người khai thác một cách rất hiệu quả biến
nó thành công cụ lao động hữu ích và đóng vai trò rất quan trọng trong đời sống xã hội và là công cụ lao động Công nghệ phần mềm là một phần quan trọng của lĩnh vực công nghệ thông tin, nó giúp con người có thể quản lí cơ sở dữ liệu một cách đơn giản, dễ dàng và nhanh chóng hơn, giúp tiết kiệm được rất nhiều thời gian và nhân lực Em thực hiện đề tài đồ án “Các phương pháp kiểm thử phần mềm và Phân tích thiết kế hệ thống quản lý thư viện” nhằm nâng cao thêm kiến thức và tầm hiểu biết của mình về lĩnh vực này lĩnh vực công nghệ thông tin nói chung và bộ môn thiết kế và quản lý hệ thống nói riêng
Đặc biệt, trong học kì này Với niềm hân hạnh và vinh dự khi được thầy Phạm Hồng Đức là người cố vấn, một người giáo viên tận tâm đã hướng dẫn, góp ý, thảo luận, giúp em có thể hoàn thiện được bài báo cáo này Trong thời gian được học tập
và thực hành dưới sự hướng dẫn của thầy, thầy giúp chúng em không những tiếp thu được nhiều kiến thức thực tế và bổ ích, mà còn được truyền sự say mê và thích
thú với bộ môn Công nghệ phần mềm.
Chúng em đã rất cố gắng hoàn thiện báo cáo với tất cả sự nỗ lực, niềm say mê
và sự thích thú, tuy nhiên, do bước đầu đi vào kiến thức môi trường thực tế, tìm hiểu và xây dựng đồ án trong một thời gian nhất định, với lượng kiến thức còn hạn
chế, nhiều bỡ ngỡ, nên đồ án “Các phương pháp kiểm thử phần mềm và Phân
tích thiết kế hệ thống quản lý thư viện” chắc chắn sẽ không thể tránh được những
mặt hạn chế và thiếu sót Chúng em rất mong nhận được sự quan tâm, thông cảm
và những đóng góp vô cùng quý giá của các thầy cô và các bạn để báo cáo của chúng em sẽ ngày càng hoàn thiện hơn
Sau cùng, chúng em xin kính chúc các thầy cô trong Khoa Công Nghệ Thông Tin dồi dào sức khoẻ, niềm tin vững vàng để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau Trân trọng!
Trang 5PHẦN I: CÁC PHƯƠNG PHÁP KIỂM THỬ PHẦN MỀM
1 Khái niệm
- Là sự kiểm tra việc phát triển phần mềm
- Công việc xuyên suốt quá trình phát triển phần mềm
- Kiểm tra xem sản phầm có đúng với đặc tả không,
- Có đáp ứng được nhu cầu của người dùng không,
- Có hoạt động hiệu quả không
=> Tức là chú trọng vào việc phát hiện lỗi phân tích, lỗi thiết kế
2 Các phương pháp kiểm thử phần mềm
2.1 Khái niệm về phép thử
- Một phép thử được gọi là thành công nếu nó phát hiện ra khiếm khuyết của phần
mềm
- Phép thử chỉ chứng minh được sự tồn tại của lỗi trong hệ thống chứ không chứng minh được hệ thống không có lỗi
- Một phép thử (ca thử nghiệm) bao gồm:
+ Tên của mô đun thử nghiệm
+ Dữ liệu vào
+ Dữ liệu ra mong muốn (đúng)
+ Dữ liệu ra thực tế (khi đã tiến hành thử nghiệm)
=> Các ca thử nghiệm nên được thiết kế khi tạo các tài liệu phân tích và thiết kế, không phải khi đã viết xong mã nguồn
2.2 Thử nghiệm chức năng và thử nghiệm cấu trúc
- Có hai kỹ thuật thử nghiệm tìm khuyết tật:
Trang 6+ Thử nghiệm chức năng
+ Thử nghiệm cấu trúc
2.2.1 Hộp đen – thừ nghiệm chức năng
- Thử nghiệm chức năng (functional testing) còn gọi là thử nghiệm hộp đen
(black box testing)
+ Là sự thử nghiệm sử dụng các ca thử nghiệm được thiết kế dựa trên đặc tả yêu cầu,
+ Tài liệu người dùng nhằm mục đích pháp hiện ra các khiếm khuyết
+ Thử nghiệm chức năng nhìn nhận mô đun được thử nghiệm như là một hộp đen
và chỉ quan tâm đến chức năng (hành vi) của mô đun, tức là kiểm tra xem có hoạt động đúng với đặc tả hay không
- Các ca kiểm thử bao gồm:
+ Các trường hợp bình thường và không bình thường (dữ liệu không hợp lệ…) của
mô đun
+ Thông thường, không thể thử nghiệm với mọi dữ liệu
+ Chiến lược chung khi thiết kế dữ liệu thử nghiệm là phân hoạch (dữ liệu) tương
đương
+ Phân hoạch tương đương chia miền dữ liệu vào ra thành các vùng, mà mỗi vùng chứa các dữ liệu có cùng hành vi
+ Do đó, đối với mỗi vùng dữ liệu chỉ cần xây dựng một ca thử nghiệm
+ Thêm vào đố là các ca sử dụng đối với biên giới của các vùng
+ Theo kinh nghiệm, các sai sót về lập trình thường sảy ra đối với các dữ liệu
biên.
Ví dụ:
Đối với hàm tính trị tuyệt đối của số nguyên, có thể chia
miền đối số thành 2 vùng:
- vùng dữ liệu ≥ 0
- vùng dữ liệu < 0
Trang 7Do đó các dữ liệu đầu vào để kiếm thử có thể là:
100,
-20,
và số 0
Ngoài thử nghiệm trên, thông thường còn cần kiểm tra với các dữ liệu đặc thù như:
- Biên của số trong máy tính (ví dụ -32768, 32767)
- Số 0, số âm, số thập phân
- Không có input
- Input ngẫu nhiên
- Input sai kiểu…
- Thử nghiệm chức năng có thể giúp chúng ta:
+ Phát hiện sự thiếu sót chức năng
+ Phát hiện khiếm khuyết
+ Sai sót về giao diện giữa các mô đun
+ Sự không hiệu quả của chương trình
+ Lỗi khởi tạo, lỗi kết thúc
- Thử nghiệm chức năng chỉ dựa trên đặc tả nên:
+ Không thể kiểm thử được các trường hợp không được khai báo trong đặc tả + Không đảm bảo thử hết được các khối mã nguồn của mô đun
- Thử nghiệm chức năng cũng không phát hiện được các đoạn mã yếu (có khả năng sinh lỗi với một trạng thái đặc biệt nào đó của hệ thông) và trong nhiều trường hợp việc đảm bảo xây dựng đầy đủ các ca thử nghiệm là khó khăn
Ví dụ: Xét hàm tìm một phần tử trong mảng
Trang 8Function TimX ( X: integer; A: mang; l : integer):
integer;
Đặc tả:
+Tham số nhập:
X: số nguyên cần tìm
A: mảng các số nguyên (bắt đầu chỉ số là 1)
l: chiều dài của mảng
+Kết quả xuất:
= 0 : nếu không tìm thấy
≠ 0 : nếu tìm thấy, giá trị kết quả chính là chỉ số của
phần tử đầu tiên được tìm thấy
Các bước tiến hành:
Bước 1: Phân lớp Dựa vào kết quả
- Không tìm thấy (= 0)
- Tìm thấy (≠ 0)
+ chiều dài l = 1
+ chiều dài l > 1
X xuất hiện 1 lần
X xuất hiện nhiều lần
+ ở đầu mảng
+ giữa mảng
+ cuối mảng
Bước 2: Chọn các phần tử đại diện
Trang 91 5 3 2 6 7 4 0
2.2.2 Hộp trắng – thử nghiệm cấu trúc
Thử nghiệm cấu trúc (structural testing)
- Là sự thử nghiệm dựa trên phân tích chương trình
- Là xác định đường đi (path) của chương trình (điều khiển) từ input đến output
- Mục đích của thử nghiệm cấu trúc là kiểm tra tất cả các đường đi có thể
- Tức là đảm bảo mọi lệnh đều được thực hiện ít nhất một lần trong một ca thử nghiệm nào đó
- Thử nghiệm cấu trúc chú trọng vào phân tích các cấu trúc rẽ nhánh và các
vòng lặp.
- Thử nghiệm cấu trúc xem xét chương trình ở mức độ chi tiết và phù hợp khi kiểm tra các mô đun nhỏ
- Thử nghiệm cấu trúc có thể không đầy đủ vì kiểm thử hết các lệnh không chứng
tỏ là chúng ta đã kiểm thử hết các trường hợp có thể
- Có khả năng tồn tại các tổ hợp lệnh khác nhau gây lỗi
- Ngoài ra, chúng ta không thể kiểm thử hết các đường đi đối với các vòng lặp lớn
Ví dụ:
[1]
Lệnh 1;
[2]
Lệnh 2;
[3]
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 10If điều kiện 1 then Lệnh 3;
[4]
Lệnh 4;
[5]
If điều kiện 2 then Lệnh 5
Else Lệnh 6;
[6]
Lệnh 7;
Các con đường thực hiện có thể có:
1->2->3->4->5->7
1->2->3->4->6->7
1->2->4->5->7
1->2->4->6->7
Tóm lại:
Thử nghiệm chức năng và thử nghiệm cấu trúc đều rất quan trọng và chúng
bổ khuyết lẫn nhau.
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 11Phần 2.phân tích dữ liệu
qua phần đánh giá trên em xin đưa ra mô hình quản lý thư viện của Khoa
CNTT như sau:
1.Biểu đồ phân cấp chức năng.
QLTV KHOA CNTT
NHẬP TÀI LIỆU
MƯỢN TÀI LIỆU
TRẢ TÀI LIỆU
LẬP PHIẾU MƯỢN TÌM KIẾM
BÁO CÁO THEO YÊU CẦU
CẬP NHẬT DANH MỤC
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 122.BIỂU ĐỒ LUỒNG:
2.1Cấp khung cảnh:
TT Kết quả
Hồi đáp TT yêu cầu
TT
2.2.Mức đỉnh
TT YC
TT
TT HỒI ĐÁP
DM TÀI LIỆU
TT KHO MƯỢN
DM ĐỘC GIẢ
KHO TRẢ
TT TT TT
ĐỘC GIẢ
TÀI LIỆU
BPQL ĐỘC GIẢ
XỬ LÝ TT
NHẬP DỮ LIỆU
ĐỘC GIẢ
Tài liệu
THỐNG KÊ BÁO CÁO
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 132.3Mức dưới đỉnh:
TT
TT TT
DM ĐỘC GIẢ TT CN TT TL MỚI
DM TÀI LIỆU TÀI LIỆU PL,CN
DM ĐỘC GIẢ TT
DM NGƯỜI MƯỢN
TT TT DM NGƯỜI TRẢ
TL CN TL CN
DM TÀI LIỆU TT(1) TT(2)
TT TT(3) THẺ TV(PHẠT)
BPQL
NHẬP DL ĐỘC GIẢ
ĐỘC GIẢ
CẬP NHẬT DANH
NHẬP TÀI
LIỆU
TÀI LIỆU
BPQL
TÌM KIẾM
QL TRẢ TÀI LIỆU
QL MƯỢN TÀI LIỆU
ĐỘC GIẢ
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 14ĐO
DM ĐỘC GIẢ THẺ TT
DM NGƯỜI MƯỢN DM TÀI LIỆU TT(1):thông tin trong thẻ thư viện, thông tin về tài liệu muốn đọc,muốn mượn,phiếu yêu cầu
TT (2): tài liệu được chấp nhận cho mượn, cho đọc
TT(3):thông tin về các độc giả và tài liệu muốn trả
TL CN:tài liệu cập nhật: mỗi khi 1 tài liệu được mượn hay được trả thì trong danh mục tài liệu
lại được cập nhật lại
Chú thích:
BPQL: bao gồm nhân viên làm việc tại thư viện, các cấp quản lý thư viện từ trên.
ĐỘC GIẢ: sinh viên, giáo viên, nhân viên trong khoa có thẻ thư viện.
ĐỘC GIẢ
ĐỘC GIẢ LÀM THẺ
MƯỢN
BPQL
BÁO CÁO THEO YÊU
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 153.Phân tích về dữ liệu
Xác định các thực thể:
Độc giả phiếu yêu cầu tài liệu
3.2.Xác định biểu đồ cấu trúc dữ liệu:
Thuộc tính 1NF 2NF 3NF
#số phiếu
Mã độc giả
Tên độc giả
Địa chỉ
#số phiếu
Mã độc giả Tên độc giả Địa chỉ
#số phiếu
Mã độc giả Tên độc giả Địa chỉ
#số phiếu Ngày mượn
Mã tài liệu
Mã độc giả
ĐỘC GIẢ PHIẾU YC
TÀI LIỆU PHIẾU YC
ĐỘC GIẢ
TÀI LIỆU
#Số phiếu
Mã độc giả Tên độc giả Địa chỉ
Mã tài liệu Tên tài liệu Nhà XB Năm XB Tác giả Ngày mượn
#mã tài liệu Tên tài liệu Nhà XB Tác giả Năm XB
#mã độc giả
Tên độc giả
Địa chỉ
Downloaded by Vu Vu (quangchinhlas199@gmail.com)
Trang 16Mã tài liệu
Tên tài liệu
Nhà XB
Năm XB
Tác giả
Ngày mượn
Mã tài liệu Tên tài liệu Nhà XB Năm XB Tác giả Ngày mượn
Mã tài liệu Tên tài liệu Nhà XB Năm XB Tác giả Ngày mượn
#mã độc giả Tên độc giả Địa chỉ
#mã tài liệu Tên tài liệu Nhà XB Năm XB Tác giả
Ta có các thực thể sau:
PYC(#số phiếu,MaTL,MaDG,Ngaymuon)
DG(#MaDG,TenDG,Diachi)
TL(#MaTL,TenTL,NhaXB,A\NămXB,Tacgia)
Downloaded by Vu Vu (quangchinhlas199@gmail.com)