thảo luận học phần kiểm thử phần mềm đề tài xây dựng và kiểm thử chức năng quản lý điểm sinh viên và kiểm thử tự động bằng công cụ google test

89 2 0
thảo luận học phần kiểm thử phần mềm đề tài xây dựng và kiểm thử chức năng quản lý điểm sinh viên và kiểm thử tự động bằng công cụ google test

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC THƯƠNG MẠI KHOA HTTTKT & TMĐT---****--- BÀI THẢO LUẬN HỌC PHẦN: KIỂM THỬ PHẦN MỀMĐề tài: Xây dựng và kiểm thử chức năng Quản lý điểm sinh viên và kiể

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC THƯƠNG MẠI

KHOA HTTTKT & TMĐT

-**** -

BÀI THẢO LUẬN

HỌC PHẦN: KIỂM THỬ PHẦN MỀM

Đề tài: Xây dựng và kiểm thử chức năng Quản lý điểm sinh viên và kiểm thử tự động bằng công cụ Google Test

Giảng viên: Đặng Quốc Hữu Nhóm thực hiện: Nhóm 4

Lớp học phần: 232_ECIT3021_01

HÀ NỘI, 2024

Trang 2

2.2.Mục tiêu và nguyên tắc khi kiểm thử tự động 9

2.3.Kiến trúc của một bộ kiểm thử tự động 9

2.4.Ưu, nhược điểm khi sử dụng kiểm thử tự động 10

B THỰC HÀNH KIỂM THỬ 12

I.PHÁT BIỂU BÀI TOÁN 12

1.1.Mô tả bài toán 12

1.2.Yêu cầu chức năng và phi chức năng 13

1.3.Bảng giá trị 14

1.4.Bảng cơ sở dữ liệu 14

1.5.Ca sử dụng 15

1.6.Cấu trúc kiểm thử 16

1.7 Giá trị đầu vào, giá trị đầu ra với các chức năng kiểm thử 17

II.CODE CHƯƠNG TRÌNH 18

III.KẾ HOẠCH KIỂM THỬ 31

3.1.Mục tiêu kiểm thử 31

3.2.Chiến lược kiểm thử 31

3.3.Tiêu chí đảm bảo đầu ra 31

3.4.Quy trình thực hiện 31

3.5.Lịch trình thực hiện 31

3.6.Hoạch định nguồn nhân lực 31

3.7.Phân công công việc 32

3.8.Các tài liệu báo cáo kiểm thử 33

IV.THIẾT KẾ CA KIỂM THỬ 33

Trang 3

4.1 Thiết kế kiểm thử dựa trên mô tả ca sử dụng 34

4.2 Thiết kế kiểm thử hộp đen 38

4.2.1 Thiết kế kiểm thử lớp biên (chức năng Nhập điểm sinh viên) 38

4.2.2 Thiết kế kiểm thử phân hoạch tương đương (chức năng Nhập điểm sinh viên) 45

4.2.3 Thiết kế kiểm thử bảng quyết định (Chức năng tạo hồ sơ sinh viên) 48

4.3 Thiết kế kiểm thử hộp trắng 50

4.3.1 Kiểm thử với dòng điều khiển (Chức năng xóa điểm sinh viên) 50

4.3.2 Thiết kế kiểm thử dòng dữ liệu 53

V CHUẨN BỊ KIỂM THỬ 59

5.1 Môi trường kiểm thử 59

5.2 Dữ liệu kiểm thử 60

VI THỰC HIỆN CA KIỂM THỬ 60

6.1 Thực hiện kiểm thử dựa trên tài liệu đặc tả 60

6.2 Thực hiện kiểm thử hộp đen 62

6.2.1 Thực hiện kiểm thử giá trị biên 62

6.2.2 Thực hiện kiểm thử phân hoạch lớp tương đương 68

6.2.3 Thực hiện kiểm thử bảng quyết định (chức năng tạo hồ sơ sinh viên) 70

6.3 Thực hiện kiểm thử hộp trắng 70

6.3.1 Thực hiện kiểm thử dòng điều khiển 70

6.3.2 Thực hiện kiểm thử dòng dữ liệu 72

VII ĐÁNH GIÁ 78

7.1 Số lượng ca kiểm thử được xây dựng theo mỗi kỹ thuật 78

7.2 Số ca kiểm có thể phát hiện ra lỗi 79

7.3 Các ca kiểm thử không phát hiện ra lỗi 79

7.4 Số ca kiểm thử trùng lặp 79

VIII KIỂM THỬ TỰ ĐỘNG BẰNG CÔNG CỤ GOOGLE TEST 79

8.1 Tổng quan về Google Test 79

8.2 Kiểm thử tự động chức năng nhập mã sinh viên 82

KẾT LUẬN 89

Trang 4

BẢNG PHÂN CÔNG NHIỆM VỤ VÀ ĐÁNH GIÁ

Trang 5

LỜI MỞ ĐẦU

Ngày nay, công nghệ ngày càng phát triển nhanh chóng, đã kéo theo hệ thống mạng và các phần mềm gia tăng về số lượng theo quy mô rộng và cả chất lượng của phần mềm theo chiều sâu Từ đó đã làm nảy sinh ra nhiều vấn đề về lỗi hỏng hóc phần mềm không đáng có, gây ra những ảnh hưởng nghiêm trọng đến những mặt khác Những lỗi này có thể do chính bản thân phần mềm bị hỏng hóc hoặc cũng có thể là do con người cố tình gây nên Vấn đề nan giải và đầy tính cấp thiết ấy đang ngày càng có xu hướng mở rộng và càng khó giải quyết

Vì vậy, yêu cầu đặt ra là cần có công tác kiểm thử phần mềm để có thể ngăn chặn và phòng ngừa các lỗi xuất hiện ở trong phần mềm Tuy nhiên, số lượng phần mềm ngày càng lớn gây khó khăn không nhỏ đến hoạt động kiểm thử khi thực hiện kiểm thử thủ công Từ đó đã xuất hiện các công cụ kiểm thử tự động nhằm hỗ trợ cho hoạt động kiểm thử, giúp giảm thời gian, giảm tài nguyên, tăng độ chính xác và sự đảm bảo

Đó là lý do nhóm chọn đề tài “Xây dựng và kiểm thử chức năng Quản lý điểm sinh viên và kiểm thử tự động bằng công cụ Google Test”

Trang 6

A CƠ SỞ LÝ THUYẾT I KIỂM THỬ PHẦN MỀM

1.1 Khái niệm

- Kiểm thử là quy trình kiểm chứng để đánh giá và tăng cường chất lượng của sản phẩm phần mềm, nhằm phát hiện lỗi hoặc bất cứ vấn đề gì về sản phẩm Kiểm thử phần mềm (software testing) là một hoạt động kiểm tra, đánh giá chất lượng của phần mềm

- Kiểm thử phần mềm đóng vai trò rất quan trọng:

tính sống còn trong các dự án sản xuất phần mềm Vì vậy nó đã trở thành quy trình bắt buộc trong các dự án phần mềm hiện nay

trình tạo ra sản phẩm

1.2 Quy trình kiểm thử phần mềm

1.2.1 Phân tích yêu cầu

- Đầu vào: tài liệu đặc tả yêu cầu, tài liệu thiết kế hệ thống, tài liệu khách hàng, bản prototype của khách hàng yêu cầu (nếu có),

- Hoạt động: Đọc hiểu, nghiên cứu phân tích các yêu cầu có trong các bản tài liệu Đưa ra các câu hỏi còn thắc mắc về yêu cầu phần mềm với BA, team, leader, khách hàng để hiểu rõ hơn về yêu cầu sản phẩm

- Đầu ra: tài liệu chứa các câu hỏi và câu trả lời liên quan đến nghiệp vụ của hệ thống, tài liệu báo cáo tính khả thi, phân tích rủi ro của việc kiểm thử phần mềm

1.2.2 Lập kế hoạch kiểm thử

- Đầu vào: các tài liệu đặc tả đã được cập nhật thông qua các câu hỏi và trả lời được đưa ra trong giai đoạn phân tích yêu cầu

- Hoạt động:

cần thực hiện trước, sau, ai là người thực hiện

- Đầu ra: các tài liệu như test plan, test estimation, test schedule

1.2.3 Thiết kế kịch bản kiểm thử

- Đầu vào: test plan, test estimation, test schedule, các tài liệu đặc tả đã được cập nhật

- Hoạt động:

 Viết test case/checklist

 Chuẩn bị dữ liệu kiểm thử: test data, test script

Trang 7

 Review test case/checklist: tránh rủi ro trong thiết kế test case - Đầu ra: test design, test case, check list, test data, test automation script

1.2.4 Thiết lập môi trường kiểm thử

- Đầu vào: test plan, smoke test case, test data

- Hoạt động: Thực thi các smoke test case để kiểm tra môi trường kiểm thử đã sẵn sàng cho việc test chưa

- Đầu ra: môi trường đã được cài đặt đúng theo yêu cầu, sẵn sàng cho việc kiểm thử và kết quả của smoke test case

1.2.5 Thực hiện kiểm thử

- Đầu vào: test plan, test design, test case, check list, test data, test automation script

- Hoạt động:

và theo dõi trạng thái của lỗi đến khi được sửa thành công

- Đầu ra: test results (kết quả kiểm thử), defect reports (danh sách các lỗi tìm được)

1.2.6 Đóng chu trình kiểm thử

- Đầu vào: tất cả những tài liệu liên quan đã được tổng hợp, ghi chép và hoàn thiện đầy đủ trong suốt quy trình kiểm thử của dự án

- Hoạt động: Tổng kết báo cáo kết quả về việc thực thi test, chức năng nào hoàn thành/ chức năng chưa hoàn thành, lỗi còn nhiều ở chức năng nào, dev nào còn nhiều lỗi, lỗi có nghiêm trọng hay không

- Đầu ra: các tài liệu Test report, Test results (final)

1.3 Các cấp độ kiểm thử

Có 4 cấp độ kiểm thử phần mềm là:

- Kiểm thử đơn vị (Unit Testing) là cấp độ kiểm thử cơ bản, thực hiện test từng

module nhỏ trong hệ thống Kiểm thử đơn vị có thể được thực hiện tách biệt với phần còn lại của hệ thống tùy thuộc vào mô hình vòng đời phát triển được chọn cho ứng dụng cụ thể đó

- Kiểm thử tích hợp (Integration Testing) có nghĩa là kiểm thử kết hợp Một dự án

phần mềm được kết hợp bởi nhiều module riêng lẻ khác nhau và được code bởi nhiều lập trình viên khác nhau Chính vì thế kiểm thử tích hợp là tích hợp kiểm tra các module riêng lẻ với nhau thành một nhóm

- Kiểm thử hệ thống (System Testing) là thực hiện kiểm thử một hệ thống đã được

tích hợp hoàn chỉnh để xác minh rằng nó đúng yêu cầu của phần mềm Kiểm thử hệ thống nằm trong phạm vi kiểm thử hộp đen và do đó, không yêu cầu kiến thức về thiết kế bên trong của mã hoặc logic

Trang 8

- Kiểm thử chấp nhận (Acceptance Testing): Sau khi kiểm tra hệ thống đã sửa tất

cả hoặc hầu hết các lỗi, hệ thống sẽ được gửi đến người dùng hoặc khách hàng để kiểm tra chấp nhận Về cơ bản kiểm thử chấp nhận cũng khá giống kiểm thử hệ thống nhưng được thực hiện bởi khách hàng

1.4 Các kỹ thuật kiểm thử phần mềm

- Kiểm thử hộp đen: là một phương pháp kiểm thử phần mềm được thực hiện mà

không biết được cấu tạo bên trong của phần mềm, là cách mà các tester kiểm tra xem hệ thống như một chiếc hộp đen, không có cách nào nhìn thấy bên trong của cái hộp

Đối tượng kiểm thử có thể là 1 hàm chức năng, 1 module chức năng, 1 phân hệ chức năng

- Kiểm thử hộp trắng: là một phương pháp kiểm thử phần mềm trong đó tester biết

về cấu trúc nội bộ / thiết kế Người kiểm tra chọn đầu vào để thực hiện các đường dẫn thông qua mã và xác định đầu ra thích hợp Kiến thức lập trình và kiến thức thực hiện là rất cần thiết trong kiểm thử hộp trắng

Đối tượng được kiểm thử là 1 thành phần phần mềm, có thể là 1 hàm chức năng, 1 module chức năng, 1 phân hệ chức năng…

- Kiểm thử hộp xám: là phương pháp kiểm thử phần mềm kết hợp giữa kiểm thử

hộp đen và kiểm thử hộp trắng Hộp xám trong kiểm thử phần mềm giống như bán trong suốt, nhìn vào sẽ thấy lớp vỏ bên ngoài và một phần cấu trúc bên trong Đối tượng kiểm thử: Cấu trúc mã, cách sử dụng ứng dụng, kiểm thử tích hợp

1.5 Kỹ thuật thiết kế ca kiểm thử

- Kiểm thử tĩnh: Kiểm thử tĩnh là một kỹ thuật kiểm thử phần mềm để tìm kiếm

lỗi trong code, thuật toán, tài liệu yêu cầu và tài liệu thiết kế mà không cần thực thi code Kiểm thử tĩnh được ứng dụng ở giai đoạn đầu của quá trình phát triển phần mềm, giúp tránh lỗi sớm, dễ dàng xác định và giải quyết lỗi Kiểm thử tĩnh cũng có thể rút kinh nghiệm từ các lỗi tìm được và cải tiến quy trình

- Kiểm thử động: Kiểm thử động là một phương pháp kiểm thử phần mềm được

sử dụng để kiểm tra hành vi động của mã phần mềm Mục đích chính của kiểm thử động là kiểm tra hành vi của phần mềm với các biến động hoặc các biến không phải là hằng số và tìm ra các khu vực yếu trong môi trường thời gian chạy phần mềm Kiểm thử động là một trong các loại kiểm thử phần mềm, bao gồm cả kiểm thử tự động

2.1 Khái niệm

Kiểm thử tự động là quá trình sử dụng các công cụ và phần mềm để thực hiện các bước kiểm thử một cách tự động, thay vì thủ công bởi con người Các công cụ và kịch bản được thiết kế để tự động hóa việc thực hiện các bước kiểm thử, đánh giá kết quả và báo cáo kết quả kiểm thử

Trang 9

2.2 Mục tiêu và nguyên tắc khi kiểm thử tự động  Mục tiêu:

Tăng tốc độ thực hiện kiểm thử: Kiểm thử tự động thực hiện các trường hợp kiểm

thử bằng mã, giúp thực hiện kiểm thử nhanh hơn nhiều so với kiểm thử thủ công Tiết kiệm thời gian và công sức cho các nhà kiểm thử, cho phép họ tập trung vào các nhiệm vụ quan trọng hơn như phân tích kết quả và thiết kế trường hợp kiểm thử mới

Tăng tính nhất quán: Các kịch bản kiểm thử tự động đảm bảo rằng các bước kiểm

thử được thực hiện một cách chính xác và nhất quán mỗi lần Loại bỏ sự sai sót do con người, dẫn đến kết quả kiểm thử đáng tin cậy hơn

Tăng độ chính xác: Công cụ kiểm thử tự động có khả năng so sánh kết quả thực tế

với kết quả mong đợi một cách chính xác Phát hiện lỗi sớm và chính xác hơn so với kiểm thử thủ công

 Nguyên tắc:

Tự động hóa mọi thứ có thể: Tự động hóa tất cả các công đoạn kiểm thử có thể, từ

việc khởi chạy ứng dụng đến nhập dữ liệu và so sánh kết quả Giảm thiểu sự can thiệp của con người, giúp tăng tốc độ và hiệu quả của quá trình kiểm thử

Lặp lại: Chạy các kịch bản kiểm thử tự động nhiều lần để đảm bảo tính ổn định và

độ tin cậy của ứng dụng Phát hiện các lỗi tiềm ẩn có thể xảy ra sau nhiều lần sử dụng

Sử dụng mã nguồn mở: Sử dụng các công cụ và framework kiểm thử tự động mã

nguồn mở để giảm chi phí và tận dụng sự đóng góp của cộng đồng Tiếp cận nhiều lựa chọn công cụ đa dạng và phù hợp với nhu cầu cụ thể

Kiểm thử tự động mang lại nhiều lợi ích cho quá trình phát triển phần mềm Việc áp dụng các mục tiêu và nguyên tắc trên sẽ giúp tối ưu hóa hiệu quả của kiểm thử tự động, góp phần nâng cao chất lượng phần mềm

2.3 Kiến trúc của một bộ kiểm thử tự động

Tự động hóa kiểm thử phần mềm bao gồm một chuỗi các quá trình, các hoạt động, thao tác được quy tụ với nhau để thực hiện phần mềm cần kiểm thử và ghi lại kết quả kiểm thử

Phần lớn các kiến trúc kiểm thử thường là những hệ thống mở bởi yêu cầu kiểm thử là một tổ chức xác định

Trang 10

Hình 1: Kiến trúc kiểm thử

Trong đó, các công cụ được dùng để tự động hóa quy trình kiểm thử trong mô hình kiểm thử thực hiện các chức năng:

- Test Manager: quản lý việc thực hiện các kiểm thử của chương trình, theo dõi

dữ liệu kiểm thử, kết quả mong đợi và các chức năng, tiện ích của chương trình được kiểm thử

- Test data generator: sinh dữ liệu kiểm thử cho chương trình

- Oracle: tạo các phán đoán của kết quả mong đợi Nó có thể là các phiên bản

chương trình trước đó hoặc các hệ thống prototype Chú ý, ở đây không phải là cơ sở dư liệu Oracle

- File comparator: Đối chiếu kết quả kiểm thử chương trình với kết quả kiểm thử

trước đó và ghi lại sự khác nhau vào tài liệu

- Report generator: cung cấp các mẫu báo cáo và các tiện ích cho kết quả kiểm

thử

- Dynamic analyzer: thêm mã cho chương trình để tính lượng thời gian mỗi lệnh

được thực hiện

- Simulator: mô phỏng môi trường kiểm thử cho sản phẩm phần mềm 2.4 Ưu, nhược điểm khi sử dụng kiểm thử tự động

2.4.1 Ưu điểm:

Trang 11

- Tăng hiệu suất và tiết kiệm thời gian: Kiểm thử tự động thực hiện các trường hợp kiểm thử tự động, giúp tiết kiệm thời gian và công sức so với kiểm thử thủ công Tăng tốc độ phát triển và đưa sản phẩm ra thị trường nhanh hơn

- Tính nhất quán: Các kịch bản kiểm thử tự động đảm bảo các bước kiểm thử được thực hiện chính xác và nhất quán mỗi lần Nâng cao độ tin cậy của quá trình kiểm thử

- Tăng độ chính xác: Công cụ kiểm thử tự động so sánh kết quả thực tế với kết quả mong đợi một cách chính xác Phát hiện lỗi sớm và chính xác hơn so với kiểm thử thủ công

- Lợi ích khác: Khả năng chạy thử nghiệm song song trên nhiều thiết bị Dễ dàng theo dõi và quản lý quá trình kiểm thử Tạo báo cáo chi tiết về kết quả kiểm thử

2.4.2 Nhược điểm:

- Đòi hỏi kiến thức kỹ thuật cao: Cần có kiến thức về lập trình và công cụ kiểm thử tự động để viết kịch bản hiệu quả Yêu cầu đội ngũ nhân viên có trình độ chuyên môn cao

- Chi phí ban đầu cao: Đầu tư ban đầu cho việc mua công cụ, đào tạo nhân viên và xây dựng hệ thống kiểm thử tự động có thể tốn kém Phù hợp với các dự án lớn và dài hạn

- Không thể thay thế hoàn toàn kiểm thử thủ công: Kiểm thử tự động gặp khó khăn trong việc phát hiện các lỗi giao diện, trải nghiệm người dùng và các vấn đề về hiệu suất Vẫn cần sự can thiệp của con người để kiểm tra các yếu tố này - Nhược điểm khác: Khó khăn trong việc bảo trì và cập nhật kịch bản kiểm thử

khi phần mềm thay đổi Có thể bỏ sót một số lỗi do giới hạn của công cụ và kịch bản kiểm thử

Kiểm thử tự động là một công cụ mạnh mẽ giúp nâng cao hiệu quả và chất lượng của quá trình phát triển phần mềm Tuy nhiên, cần cân nhắc kỹ lưỡng các ưu và nhược điểm trước khi áp dụng để đảm bảo phù hợp với mục tiêu và ngân sách của dự án

Trang 12

B THỰC HÀNH KIỂM THỬ I PHÁT BIỂU BÀI TOÁN

1.1 Mô tả bài toán

Hệ thống quản lý điểm của sinh viên gồm có hai chức năng chính, bao gồm quản lý hồ sơ sinh viên và quản lý điểm sinh viên.

 Quản lý hồ sơ sinh viên:

- Chức năng tạo hồ sơ sinh viên

Khi sinh viên mới nhập trường thì bộ phận quản lý sinh viên tiến hành tạo hồ sơ sinh viên mới trên hệ thống, lưu các thông tin chi tiết về sinh viên vào trong hồ sơ Để làm việc này bộ phận quản lý sinh viên phải căn cứ vào hồ sơ dự tuyển và hồ sơ nhập học, từ đó lấy những thông tin cần thiết lưu vào hồ sơ

- Chức năng cập nhật hồ sơ sinh viên

Trong quá trình nhập thông tin, nếu có thông tin sai sót hoặc nhầm lẫn dựa trên sự phản ánh của sinh viên, cán bộ quản lý sinh viên cần tiến hành cập nhật lại các thông tin trong hồ sơ sinh viên trên hệ thống Ngoài ra còn trong trường hợp sau này, có một số thông tin của sinh viên thay đổi (ví dụ như số điện thoại, địa chỉ thường trú…) thì cán bộ quản lý sinh viên cũng cần cập nhật lại hồ sơ.

- Chức năng xóa hồ sơ sinh viên

Khi sinh viên đã tốt nghiệp ra trường hoặc không còn theo học tại trường, cán bộ quản lý sinh viên tiến hành xóa bỏ hồ sơ sinh viên trên hệ thống để đảm bảo về vấn đề bảo mật thông tin cho sinh viên.

- Chức năng báo cáo và thống kê hồ sơ sinh viên

Cán bộ quản lý sinh viên thực hiện việc báo cáo và thống kê về hồ sơ sinh viên theo yêu cầu, mục đích của ban giám hiệu và các phòng ban

 Quản lý điểm sinh viên:

- Chức năng nhập điểm cho sinh viên

Cuối mỗi học kỳ giảng viên sẽ tổng kết điểm học phần mà mình phụ trách theo từng lớp và gửi bảng điểm cho phòng đào tạo Cán bộ quản lý điểm của phòng đào tạo có nhiệm vụ nhận bảng điểm của giảng viên, đăng nhập vào hệ thống với tài khoản và password của mình để nhập điểm sau mỗi kỳ thi cho sinh viên.

- Chức năng cập nhật điểm cho sinh viên

Trong quá trình xử lý điểm, nếu phát hiện sai sót, hoặc có sự phản hồi, khiếu nại từ giảng viên hoặc sinh viên, thì thông qua hệ thống, cán bộ quản lý điểm sẽ sử dụng chức năng sửa điểm để cập nhật lại điểm số cho sinh viên.

- Chức năng xóa điểm cho sinh viên

Khi hệ thống gặp lỗi không thể nhập điểm hoặc không thể cập nhật lại điểm, cán bộ quản lý điểm sẽ phải tiến hành xóa điểm.

- Chức năng báo cáo và thống kê điểm cho sinh viên

Thông qua hệ thống, cán bộ quản lý điểm thực hiện việc báo cáo và thống kê theo yêu cầu của nhà trường Có thể bao gồm như báo cáo điểm trung bình của sinh viên theo lớp, khoa; báo cáo tiến độ học tập của mỗi sinh viên; thống kê số sinh viên đạt điểm cao theo từng lớp, ngành…

Trang 13

1.2 Yêu cầu chức năng và phi chức năng

 Yêu cầu chức năng

- Quản lý hồ sơ sinh viên cho phép cán bộ quản lý sinh viên thực hiện các chức năng:

 Tạo mới hồ sơ sinh viên khi có tân sinh viên nhập học

 Tiến hành cập nhật lại hồ sơ sinh viên khi có sự thiếu sót hoặc nhầm lẫn về thông tin trong hồ sơ

 Xóa bỏ hồ sơ sinh viên khi sinh viên thôi học hoặc đã tốt nghiệp

 Tạo các báo cáo thống kê về hồ sơ sinh viên theo yêu cầu, mục đích của ban giám hiệu và các phòng ban

- Quản lý điểm sinh viên cho phép cán bộ quản lý điểm thực hiện các chức năng:  Nhập điểm của sinh viên sau mỗi đợt thi cuối kì

 Cập nhật lại điểm khi có sự sai sót hoặc nhầm lẫn  Tiến hành xóa điểm khi gặp phải sự cố từ hệ thống

 Thực hiện việc báo cáo và thống kê theo yêu cầu của nhà trường

 Yêu cầu phi chức năng

- Yêu cầu về hoạt động

 Cấu hình tối thiểu: Hệ thống chạy với vi xử lý Core 2 Duo (Hoặc tương đương) và RAM yêu cầu 2GB trở lên

 Tính linh động: Hệ thống chạy được trên nhiều hệ điều hành khác nhau như Windows, MacOS và Linux

 Vấn đề bảo trì và nâng cấp: Mỗi lần bảo trì và nâng cấp hệ thống định kỳ sẽ không kéo dài quá 1h, không bảo trì trong giờ hành chính Khi cài đặt, có nhân viên được đào tạo kỹ thuật hỗ trợ phòng khi hệ thống có lỗi - Yêu cầu về hiệu năng

 Tốc độ: Tối đa 3s/ thao tác

 Phạm vi, giới hạn: Lưu trữ được từ 10.000 hồ sơ sinh viên trở lên Cho phép tối đa 5000 người truy cập vào hệ thống cùng lúc

 Độ tin cậy và tính khả dụng: Hệ thống cho phép truy cập 24/7 không kể thời gian bảo trì và nâng cấp Khi đăng nhập sai quá 5 lần thì tài khoản sẽ bị vô hiệu quá trong vòng 2h Tích hợp tường lửa (Firewall) và phần mềm diệt virus tự động quét phần mềm

- Yêu cầu về tính bảo mật

 Hệ thống cần phải đảm bảo không xảy ra sai sót, thất thoát, rò rỉ thông tin cá nhân của sinh viên

 Vấn đề mã hóa và xác thực danh tính: Cấp tài khoản và mật khẩu phải đảm bảo bí mật và an toàn

 Vấn đề về phân quyền và kiểm soát việc truy cập cũng cần được đảm bảo một cách tốt nhất

- Yêu cầu về văn hóa, chính trị

 Ngôn ngữ: tiếng Anh và tiếng Việt

 Tính hợp pháp của hệ thống: toàn bộ quy trình nghiệp vụ của hệ thống phải tuân theo nghị định/ quyết định về thương mại điện tử của Chính phủ

Trang 14

1.3 Bảng giá trị

Input Miền giá trị Mã sinh viên String

Bảng cơ sở dữ liệu hồ sơ sinh viên

MSV Họ tên Ngày sinh Giới tính Lớp SĐT Địa chỉ 21D01 TRAN A 01/01/2003 NAM 1 0100000000 HA NOI 21D02 LE B 02/02/2003 NU 1 0200000000 CA MAU 21D03 BUI C 03/03/2002 NAM 1 0300000000 SON LA 21D04 CAO D 04/04/2003 NAM 1 0400000000 HUE 21D05 NGO H 05/05/2002 NAM 1 0500000000 HA NOI 21D06 TO K 06/06/2002 NU 1 0600000000 HA NAM 21D07 LE L 07/07/2003 NAM 1 0700000000 LAI CHAU 21D08 GIAP M 08/08/2003 NAM 1 0800000000 HA TINH 21D09 VU N 09/09/2003 NU 1 0900000000 HUE 21D10 VU V 10/10/2002 NU 1 0000000010 HA NOI

Trang 15

Bảng cơ sở dữ liệu điểm sinh viên

MSV Tên học phần ĐCC Điểm giữa kỳ Điểm cuối kỳ

21D03 PHAT TRIEN HE THONG 9.5 7.5 8 21D04 PHAN TICH THIET KE 10 8.5 8.5

21D07 PHAT TRIEN HE THONG 8.5 7 7.5

1.5 Ca sử dụng

Biểu đồ ca sử dụng tổng quát

Hình 2: Biểu đồ ca sử dụng tổng quát

Trang 16

Biểu đồ ca sử dụng chức năng quản lý hồ sơ sinh viên

Hình 3: Biểu đồ ca sử dụng chức năng quản lý hồ sơ sinh viên

Biểu đồ ca sử dụng chức năng quản lý điểm sinh viên

Hình 4: Biểu đồ ca sử dụng chức năng quản lý điểm sinh viên

1.6 Cấu trúc kiểm thử

Quản lý hồ sơ sinh viên Quản lý điểm sinh viên -a1: Tạo hồ sơ sinh viên

-a2: Cập nhật hồ sơ sinh viên -a3: Xóa hồ sơ sinh viên -a4: Báo cáo và thống kê

=> -b1: Nhập điểm sinh viên-b2: Cập nhật điểm sinh viên -b3: Xóa điểm sinh viên -b4: Báo cáo và thống kê

Trang 17

Kiểm thử hộp đen Kiểm thử hộp trắng - Test Use Case: a1, b1

 Tạo hồ sơ thành công

 Mã sinh viên không hợp lệ

 Mã sinh viên đã tồn tại

 Ngày sinh không hợp lệ

 Số điện thoại không hợp lệ

 Tạo báo cáo hồ sơ thành công

 Tạo thống kê hồ sơ thành

 Mã sinh viên không hợp lệ

 Mã sinh viên không tồn tại

 Nhập điểm thành công

 Điểm thi đã tồn tại

 Điểm chuyên cần không hợp lệ Nhập lại!

Trang 18

 Điểm giữa kỳ không hợp lệ

 Mã sinh viên không hợp lệ

 Mã sinh viên không tồn tại

 Không tìm thấy môn học

 Xóa điểm thành công

 Tạo báo cáo điểm thành công

 Tạo thống kê điểm thành

Trang 19

// Hàm thống kê hồ sơ sinh viên

voidthongkeHoSoSinhVien() {

cout<<"\nHo so sinh vien:"<<endl;

for (size_t = 0; i < danhSachSinhVien.size(); ++i) {

cout<<"Ma SV: "<<danhSachSinhVien[]maSV<<", Ho ten: "

<<danhSachSinhVien[]hoTen<<", Lop: "<<danhSachSinhVien[]lop

<<", So dien thoai: "<<danhSachSinhVien[i.soDienThoai

<<", Dia chi: "<<danhSachSinhVien[i.diaChi<<endl; }

// Hàm tạo định dạng cho mã sinh viên và kiểm tra trùng lặp mã sinh viên

boolisValidMaSV(conststd :: string&maSV) {

if (maSV.length() !=5||!isupper(maSV[])) return false; // Kiểm tra độ dài và ký tự thứ 3 là chữ in hoa

if (!isdigit(maSV[]) ||isdigit(maSV[1) ||!isalpha(maSV[]))

for (size_t; i<maSV.length(); ++i) { if (!isdigit(maSV[])) returnfalse; }

returntrue;}

boolmaSVDaTonTai(conststring&maSV) {

for (size_t; i<danhSachSinhVien.size(); ++i) { if (danhSachSinhVien[]maSV==maSV) {

boolisValidNgaySinh(conststring&ngaySinh) { for (size_t; i<ngaySinh.size(); ++i) {

boolisValidSoDienThoai(conststring&soDienThoai) { for (size_t; i<soDienThoai.length(); ++i) {

// Kiểm tra mã sinh viên

while (!isValidMaSV(sv.maSV) ||maSVDaTonTai(sv.maSV)) { if (!isValidMaSV(sv.maSV)) {

Trang 20

cout<<"Ma sinh vien khong hop le \nNhap lai: ";

getline(cin, sv.hoTen);

cout<<"Nhap ngay sinh (dd/mm/yyyy): "; getline(cin, sv.ngaySinh);

//Kiểm tra ngày sinh

while (!isValidNgaySinh(sv.ngaySinh)) {

cout<<"Ngay sinh khong hop le \nNhap lai (dd/mm/yyyy): "; getline(cin, sv.ngaySinh);

}

cout<<"Nhap gioi tinh (nam/nu): "; getline(cin, sv.gioiTinh);

cout<<"Nhap lop: "; getline(cin, sv.lop); floatsoDienthoai;

cout<<"Nhap so dien thoai: "; cin>>sv.soDienThoai;

// Kiểm tra số điện thoại

while (!isValidSoDienThoai(sv.soDienThoai)) {

cout<<"So dien thoai khong hop le \nNhap lai: ";

cout<<"Tao ho so sinh vien thanh cong."<<endl; cout<<"\nThong tin ho so sinh vien vua tao:"<<endl;

cout<<"Ma SV: "<<sv.maSV<<", Ho ten: "<<sv.hoTen<<", Ngay sinh: "<<sv.ngaySinh<<", Gioi tinh: "<<sv.gioiTinh

<<", Lop: "<<sv.lop<<", So dien thoai: "<<

sv.soDienThoai<<", Dia chi: "<<sv.diaChi<<endl;

while (!isValidMaSV(maSV)) {

cout<<"Ma sinh vien khong hop le \nNhap lai: "; cin>>maSV;

}

boolfoundfalse; do {

for (size_t; idanhSachSinhVien.size(); ++i) { if (danhSachSinhVien[]maSV==maSV) {

cout<<\nHo so sinh vien can cap nhat:"<<endl;

Trang 21

cout<<"Ma SV: "<<danhSachSinhVien[i.maSV<<", Ho ten: "<<danhSachSinhVien[]hoTen<<", Ngay sinh: "<<

danhSachSinhVien[i.ngaySinh<<", Gioi tinh: "<<

danhSachSinhVien[i.gioiTinh<<", Lop: "<<danhSachSinhVien[]lop

<<", So dien thoai: "<<

danhSachSinhVien[i.soDienThoai<<", Dia chi: "<<

intluaChon;

cout<<\nChon muc can cap nhat:"<<endl; cout<<"1 Ma sinh vien"<<endl;

cout<<"2 Ho ten"<<endl; cout<<"3 Ngay sinh"<<endl; cout<<"4 Gioi tinh"<<endl; cout<<"5 Lop"<<endl;

cout<<"6 So dien thoai"<<endl; cout<<"7 Dia chi"<<endl;

cout<<"Lua chon cua ban: ";

getline(cin, danhSachSinhVien[i.maSV);

while (!isValidMaSV(danhSachSinhVien[]maSV) ||

maSVDaTonTai(danhSachSinhVien[i.maSV)) {

if (!isValidMaSV(danhSachSinhVien[i.maSV)) { cout<<"Ma sinh vien khong hop le \nNhap lai:

getline(cin, danhSachSinhVien[i.hoTen);

cout<<"Cap nhat ho ten thanh cong."<<endl; break;

case3

cout<<"Nhap ngay sinh moi: "; cin.ignore();

getline(cin, danhSachSinhVien[i.ngaySinh);

cout<<"Cap nhat ngay sinh thanh cong."<<endl; break;

case4

cout<<"Nhap gioi tinh: "; cin.ignore();

Trang 22

getline(cin, danhSachSinhVien[i.gioiTinh);

cout<<"Cap nhat gioi tinh thanh cong."<<endl; break;

case5

cout<<"Nhap lop moi: "; cin.ignore();

getline(cin, danhSachSinhVien[i.lop); cout<<"Cap nhat lop thanh cong."<<endl; break;

case6

cout<<"Nhap so dien thoai moi: "; cin.ignore();

cin>>danhSachSinhVien[]soDienThoai;

cout<<"Cap nhat so dien thoai thanh cong."<<

getline(cin, danhSachSinhVien[i.diaChi);

cout<<"Cap nhat dia chi thanh cong."<<endl;

cout<<\nThong tin ho so sinh vien vua tao:"<<endl; cout<<"Ma SV: "<<danhSachSinhVien[i.maSV<<", Ho ten: "<<danhSachSinhVien[]hoTen<<", Ngay sinh: "<<

danhSachSinhVien[i.ngaySinh<<", Gioi tinh: "<<

danhSachSinhVien[i.gioiTinh

<<", Lop: "<<danhSachSinhVien[i.lop<<", So dien thoai: "<<danhSachSinhVien[]soDienThoai<<", Dia chi: "<<

while (!isValidMaSV(maSV)) {

cout<<"Ma sinh vien khong hop le \nNhap lai: "; cin>>maSV;

}

for (size_t; i<danhSachSinhVien.size(); ++i) {

Trang 23

if (danhSachSinhVien[]maSV==maSV) {

danhSachSinhVien.erase(danhSachSinhVien.begin() +i); cout<<"Xoa ho so sinh vien thanh cong."<<endl;

for (size_t; i<danhSachSinhVien.size(); ++i) {

cout<<"Ma SV: "<<danhSachSinhVien[]maSV<<", Ho ten: "

<<danhSachSinhVien[]hoTen<<", Lop: "<<danhSachSinhVien[]lop<<endl;

cout<<"Ten hoc phan:"<<endl;

for (size_t; jdanhSachSinhVien[].danhSachDiem.size();

++j) {

cout<<danhSachSinhVien[i.danhSachDiem[]monHoc<<": "

cout<<"Diem chuyen can: "<<

danhSachSinhVien[i.danhSachDiem[]diemChuyenCan<<endl; cout<<"Diem giua ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemGiuaKy<<endl; cout<<"Diem cuoi ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemCuoiKy<<endl; }

cout<<endl; }

// Hàm tạo khoảng hợp lệ cho điểm

boolisValidDiem(floatdiem) {

return (diem>=&&diem<=10);

while (!isValidMaSV(maSV)) {

cout<<"Ma sinh vien khong hop le Nhap lai: "; cin>>maSV;

}

boolfoundfalse; do {

for (size_t; idanhSachSinhVien.size(); ++i) { if (danhSachSinhVien[]maSV==maSV) {

foundtrue; Diemd

boolduplicatefalse;

Trang 24

do {

cout<<"Nhap ten hoc phan: "; cin.ignore();

getline(cin, d.monHoc);

// Kiểm tra xem điểm cho học phần này đã tồn tại chưa

duplicate=false; for (size_tj=0; j<danhSachSinhVien[i.danhSachDiem.size(); ++j) {

if (danhSachSinhVien[i.danhSachDiem[].monHoc

} while (!isValidDiem(.diemCuoiKy));

danhSachSinhVien[]danhSachDiem.push_back(); cout<<"Nhap diem thanh cong."<<endl;

cout<<\nBang diem sinh vien da nhap:"<<endl; cout<<"Ma SV: "<<danhSachSinhVien[i.maSV

<<", Ho ten: "<<danhSachSinhVien[i.hoTen<<", Lop: "<<danhSachSinhVien[]lop<<endl;

cout<<"Diem:"<<endl; for (size_tj=0; j<

danhSachSinhVien[i.danhSachDiem.size(); ++j) {

cout<<danhSachSinhVien[i.danhSachDiem[].monHoc

<<": "<<endl;

cout<<"Diem chuyen can: "<<

danhSachSinhVien[i.danhSachDiem[]diemChuyenCan<<endl;

Trang 25

cout<<"Diem giua ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemGiuaKy<<endl; cout<<"Diem cuoi ky: "<<

while (!isValidMaSV(maSV)) {

cout<<"Ma sinh vien khong hop le \nNhap lai: "; cin>>maSV;

}

boolfoundfalse; do {

for (size_t; idanhSachSinhVien.size(); ++i) { if (danhSachSinhVien[]maSV==maSV) {

cout<<\nHien thi sinh vien can cap nhat diem:"<<endl;

cout<<"Ma SV: "<<danhSachSinhVien[i.maSV<<", Ho ten: "<<danhSachSinhVien[]hoTen<<", Lop: "<<

cout<<"Ten hoc phan:"<<endl; for (size_tj=0; j<

danhSachSinhVien[i.danhSachDiem.size(); ++j) {

cout<<danhSachSinhVien[i.danhSachDiem[].monHoc

<<": "<<endl;

cout<<"Diem chuyen can"<<

danhSachSinhVien[i.danhSachDiem[]diemChuyenCan<<endl; cout<<"Diem giua ky"<<

danhSachSinhVien[i.danhSachDiem[]diemGiuaKy<<endl; cout<<"Diem cuoi ky"<<

danhSachSinhVien[i.danhSachDiem[]diemCuoiKy<<endl;

Trang 26

if (danhSachSinhVien[i.danhSachDiem[]monHoc==

monHoc) {

floatdiemChuyenCan, diemGiuaKy, diemCuoiKy; cout<<"Nhap diem chuyen can moi: ";

cout<<"Cap nhat diem thanh cong."<<endl;

cout<<\nBang diem sinh vien vua cap nhat:"<<endl;

cout<<"Ma SV: "<<danhSachSinhVien[i.maSV<<", Ho ten: "<<danhSachSinhVien[]hoTen<<", Lop: "<<danhSachSinhVien[]lop

cout<<"Diem:"<<endl; for (size_t0; j

danhSachSinhVien[i.danhSachDiem.size(); ++j) {

cout<<danhSachSinhVien[i.danhSachDiem[]monHoc<<

": "<<endl;

cout<<"Diem chuyen can: "<<

danhSachSinhVien[i.danhSachDiem[]diemChuyenCan<<endl; cout<<"Diem giua ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemGiuaKy<<endl; cout<<"Diem cuoi ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemCuoiKy<<endl; }

return; }

cout<<"Khong tim thay hoc phan "<<monHoc<<" trong danh sach diem cua sinh vien."<<endl;

Trang 27

stringmaSV;

cout<<"Nhap ma sinh vien can xoa diem: "; cin>>maSV;

while (!isValidMaSV(maSV)) {

cout<<"Ma sinh vien khong hop le \nNhap lai: "; cin>>maSV;

}

for (size_t; i<danhSachSinhVien.size(); ++i) { if (danhSachSinhVien[]maSV==maSV) {

cout<<\nHien thi sinh vien can phai xoa diem:"<<endl; cout<<"Ma SV: "<<danhSachSinhVien[i.maSV<<", Ho ten: "<<danhSachSinhVien[]hoTen<<", Lop: "<<danhSachSinhVien[]lop

cout<<"Ten hoc phan:"<<endl; for (size_tj=0; j<

danhSachSinhVien[i.danhSachDiem.size(); ++j) {

cout<<danhSachSinhVien[i.danhSachDiem[].monHoc

<<": "<<endl;

cout<<"Diem chuyen can"<<

danhSachSinhVien[i.danhSachDiem[]diemChuyenCan<<endl; cout<<"Diem giua ky"<<

danhSachSinhVien[i.danhSachDiem[]diemGiuaKy<<endl; cout<<"Diem cuoi ky"<<

danhSachSinhVien[i.danhSachDiem[]diemCuoiKy<<endl;

danhSachSinhVien[i.danhSachDiem.size(); ++j) {

if (danhSachSinhVien[i.danhSachDiem[]monHoc==

monHoc) {

danhSachSinhVien[i.danhSachDiem.erase(danhSachSinhVien[]danhSachDiem.begin() +);

cout<<"Xoa diem thanh cong."<<endl; return;

} }

cout<<"Khong tim thay mon hoc "<<monHoc<<" cua sinh vien co ma "<<maSV<<endl;

for (size_t; idanhSachSinhVien.size(); ++i) { file<<danhSachSinhVien[i.maSV<<","<<

danhSachSinhVien[i.hoTen<<","<<danhSachSinhVien[]ngaySinh

<<","<<danhSachSinhVien[]gioiTinh<<","<<

danhSachSinhVien[i.lop

Trang 28

for (size_t; idanhSachSinhVien.size(); ++i) {

file<<"Ma SV: "<<danhSachSinhVien[i.maSV<<", Ho ten: "<<danhSachSinhVien[]hoTen<<", Lop: "<<danhSachSinhVien[]lop

// Kiểm tra nếu danh sách điểm của sinh viên không rỗng

if (!danhSachSinhVien[i.danhSachDiem.empty()) { file<<"Ten hoc phan:"<<endl;

for (size_tj=0; j<

danhSachSinhVien[i.danhSachDiem.size(); ++j) {

file<<danhSachSinhVien[i.danhSachDiem[].monHoc

<<": "<<endl;

file<<"Diem chuyen can: "<<

danhSachSinhVien[i.danhSachDiem[]diemChuyenCan<<endl; file<<"Diem giua ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemGiuaKy<<endl; file<<"Diem cuoi ky: "<<

danhSachSinhVien[i.danhSachDiem[]diemCuoiKy<<endl;

Trang 29

stringmaSV, monHoc;

floatdiemChuyenCan, diemGiuaKy, diemCuoiKy;

for (size_t0; idanhSachSinhVien.size(); ++i) { if (danhSachSinhVien[i.maSV==maSV) {

Trang 30

intluaChon; do {

cout<<\nMenu: "<<endl;

cout<<"1 Tao ho so sinh vien"<<endl; cout<<"2 Cap nhat ho so sinh vien"<<endl; cout<<"3 Xoa ho so sinh vien"<<endl; cout<<"4 Thong ke ho so sinh vien"<<endl; cout<<"5 Nhap diem cho sinh vien"<<endl; cout<<"6 Cap nhat diem cho sinh vien"<<endl; cout<<"7 Xoa diem cho sinh vien"<<endl;

cout<<"8 Bao cao va thong ke diem sinh vien"<<endl; cout<<"0 Thoat"<<endl;

cout<<"Lua chon cua ban: ";

Trang 31

III KẾ HOẠCH KIỂM THỬ 3.1 Mục tiêu kiểm thử

Nhằm đảm bảo rằng chương trình đáp ứng được đầy đủ các yêu cầu của chức năng quản lý điểm của sinh viên và kết quả phù hợp cho từng bộ số liệu của các ca kiểm thử Xác định và chỉ rõ các lỗi hay rủi ro liên quan nếu có và đảm bảo các lỗi đều được xử lý sau khi kiểm thử kết thúc Kiểm tra chức năng hệ thống (system testing): kiểm tra chức năng quản lý điểm của sinh viên.

3.2 Chiến lược kiểm thử

Kiểm thử chức năng quản lý điểm của sinh viên hoạt động chính xác bằng việc thực hiện kiểm thử thủ công dựa trên 6 kỹ thuật kiểm thử (thiết kế kiểm thử Use Case, kiểm thử biên, phân hoạch tương đương, bảng quyết định, dòng điều khiển và dòng dữ liệu) đưa vào các dữ liệu hợp lệ và không hợp lệ để xác nhận kết quả mong đợi khi xảy ra với dữ liệu hợp lệ, thông báo lỗi xuất hiện khi nhập vào dữ liệu không hợp lệ Tiêu chí hoàn thành: các testcase đều được thực hiện và các lỗi có thể xác định được đề cập.

3.3 Tiêu chí đảm bảo đầu ra

Run rate: Tỷ lệ giữa các trường hợp kiểm thử được thực hiện / tổng số trường

Pass rate: tỷ lệ giữa số lượng các trường hợp kiểm thử pass/ số lượng các trường hợp kiểm thử được thực hiện đạt trên 90%.

3.4 Quy trình thực hiện

- Chuẩn bị các trường hợp, kịch bản cần kiểm tra

- Thiết kế các test case và số liệu cho quá trình kiểm thử - Thực thi các trường hợp kiểm thử và kiểm tra kết quả - Kiểm tra lại sau khi sửa lỗi

Trang 32

Test manager

Trang 33

3.8 Các tài liệu báo cáo kiểm thử

kiểm thử

Tài liệu này cần được lập bởi Test leader trước khi kiểm thử

Khi kiểm thử hết một vòng hoặc trước khi kết thúc dự án cần cho ra báo cáo tổng kết quá trình đánh giá trình bày tổng kết về kết quả kiểm thử và đánh giá hệ thống

IV THIẾT KẾ CA KIỂM THỬ

BẢNG CƠ SỞ DỮ LIỆU HỒ SƠ SINH VIÊN

21D01 TRAN A 01/01/2003 NAM 1 0100000000 HA NOI 21D02 LE B 02/02/2003 NU 1 0200000000 CA MAU 21D03 BUI C 03/03/2002 NAM 1 0300000000 SON LA 21D04 CAO D 04/04/2003 NAM 1 0400000000 HUE 21D05 NGO H 05/05/2002 NAM 1 0500000000 HA NOI 21D06 TO K 06/06/2002 NU 1 0600000000 HA NAM 21D07 LE L 07/07/2003 NAM 1 0700000000 LAI CHAU

Trang 34

21D08 GIAP M 08/08/2003 NAM 1 0800000000 HA TINH 21D09 VU N 09/09/2003 NU 1 0900000000 HUE 21D10 VU V 10/10/2002 NU 1 0000000010 HA NOI

BẢNG CƠ SỞ DỮ LIỆU ĐIỂM SINH VIÊN

21D03 PHAT TRIEN HE THONG 9.5 7.5 8 21D04 PHAN TICH THIET KE 10 8.5 8.5

21D07 PHAT TRIEN HE THONG 8.5 7 7.5

4.1 Thiết kế kiểm thử dựa trên mô tả ca sử dụng

4.1.1 Chức năng tạo hồ sơ sinh viên

 Đặc tả ca sử dụng

Tên ca sử

dụng Tạo hồ sơ sinh viên Tác nhân Cán bộ quản lý sinh viên

Mục đích Để tiến hành tạo hồ sơ sinh viên

Mô tả Cán bộ quản lý sinh viên chọn chức năng Tạo hồ sơ sinh viên, sau đó nhập các thông tin về mã sinh viên, họ tên, ngày sinh, giới tính, số điện thoại và địa chỉ của sinh viên

Điều kiện đầu vào

Cán bộ quản lý sinh viên đăng nhập vào hệ thống thành công

Trang 35

1 Cán bộ quản lý sinh viên chọn chức năng Tạo hồ sơ sinh viên

2 Hệ thống hiển thị giao diện điền thông tin mã sinh viên, họ tên, ngày sinh, giới tính, số điện thoại, địa chỉ

3 Cán bộ quản lý sinh viên nhập thông tin mã sinh viên, họ tên, ngày sinh, giới tính, số điện thoại, địa chỉ và tạo hồ sơ sinh viên

4 Hệ thống thông báo tạo hồ sơ sinh viên thành công và hiển thị thông tin hồ sơ sinh viên đã được tạo

5 Kết thúc ca sử dụng

Luồng rẽ nhánh

A1: Mã sinh viên đã tồn tại

1 Hệ thống thông báo mã sinh viên đã tồn tại và yêu cầu nhập mã sinh viên khác

2 Cán bộ quản lý sinh viên nhập mã sinh viên mới và tạo hồ sơ sinh viên

Hệ thống thông báo tạo hồ sơ sinh viên thành công và hiển thị thông tin hồ sơ sinh viên đã được tạo

A2: Mã sinh viên không hợp lệ

1 Hệ thống thông báo mã sinh viên không hợp lệ và yêu cầu nhập mã sinh viên khác

2 Cán bộ quản lý sinh viên nhập lại mã sinh viên hợp lệ và tạo hồ sơ sinh viên

3 Hệ thống thông báo tạo hồ sơ sinh viên thành công và hiển thị thông tin hồ sơ sinh viên đã được tạo

A3: Ngày sinh không hợp lệ

1 Hệ thống thông báo ngày sinh không hợp lệ và yêu cầu nhập lại ngày sinh

2 Cán bộ quản lý sinh viên nhập lại ngày sinh hợp lệ và tạo hồ sơ sinh viên

3 Hệ thống thông báo tạo hồ sơ sinh viên thành công và hiển thị thông tin hồ sơ sinh viên đã được tạo

A4: Số điện thoại không hợp lệ

1 Hệ thống thông báo số điện thoại không hợp lệ và yêu cầu nhập lại số điện thoại

2 Cán bộ quản lý sinh viên nhập lại số điện thoại hợp lệ và tạo hồ sơ sinh viên

3 Hệ thống thông báo tạo hồ sơ sinh viên thành công và hiển thị thông tin hồ sơ sinh viên đã được tạo

 Thiết kế ca sử dụng dựa trên kịch bản hành vi

Trang 36

2 Mã sinh viên không hợp lệ

Nhập điểm cho sinh viên

Tác nhân Cán bộ quản lý điểm

Mục đích Để tiến hành nhập điểm cho sinh viên

Mô tả Cán bộ quản lý điểm chọn chức năng Nhập điểm cho sinh viên, sau đó nhập các thông tin về mã sinh viên, tên học phần, điểm chuyên cần, điểm giữa kỳ, điểm cuối kỳ của sinh viên

Thông báo nhập điểm cho sinh viên thành công, điểm của sinh viên được lưu trên hệ thống

Trang 37

Luồng chính

1 Cán bộ quản lý điểm chọn chức năng Nhập điểm cho sinh viên 2 Hệ thống hiển thị giao diện điền thông tin mã sinh viên, tên học phần, điểm chuyên cần, điểm giữa kỳ, điểm cuối kỳ

3 Cán bộ quản lý điểm nhập thông tin mã sinh viên, tên học phần, điểm chuyên cần, điểm giữa kỳ, điểm cuối kỳ và tạo bảng điểm sinh viên

4 Hệ thống thông báo nhập điểm cho sinh viên thành công và hiển thị điểm của sinh viên đã được tạo

5 Kết thúc ca sử dụng

Luồng rẽ nhánh

A1: Mã sinh viên không hợp lệ/ không tồn tại

1 Hệ thống hiển thị mã sinh viên không hợp lệ/ chưa tồn tại và yêu cầu nhập lại

2 Cán bộ quản lý điểm nhập lại mã sinh viên khác

3 Hệ thống thông báo nhập điểm cho sinh viên thành công và hiển thị bảng điểm của sinh viên đã được tạo

A2: Điểm thi đã tồn tại

1 Hệ thống hiển thị điểm thi học phần của mã sinh viên vừa nhập đã tồn tại và yêu cầu nhập lại tên học phần

A3: Thông tin điểm không hợp lệ

1 Cán bộ quản lý điểm nhập thông tin không hợp lệ, hệ thống hiển thị lỗi

1.1 Điểm chuyên cần không hợp lệ 1.2 Điểm giữa kỳ không hợp lệ 1.3 Điểm cuối kỳ không hợp lệ

viên

hiển thị thông tin bảng điểm của sinh viên đã được tạo

 Thiết kế ca sử dụng dựa trên kịch bản hành vi

 Mô tả các ca kiểm thử

Trang 38

Test case

MEM – – – Điểm đã tồn tại Nhập lại

Nhập lại! 3 21D02 KIEM THU PHAN

Nhập lại! 4 21D02 KIEM THU PHAN

Nhập lại! 5 21D02 KIEM THU PHAN

Nhập lại! 6 21D10 Kiểm thử phần

4.2 Thiết kế kiểm thử hộp đen

4.2.1 Thiết kế kiểm thử lớp biên(chức năng Nhập điểm sinh viên)

Trang 39

 Điểm kiểm tra

4.2.1.2 Sinh test case

Kiểm thử chức năng Nhập điểm sinh viên và 129 test cases

4.2.1.3 Các ca kiểm thử

 Nhập điểm sinh viên :

Input : Mã sinh viên (MSV), Tên học phần, Điểm chuyên cần (CC), Điểm giữa kỳ (GK), Điểm cuối kì (CK)

Output: Điểm đã tồn tại Nhập lại!, Nhập điểm thành công, Mã sinh viên không tồn tại Nhập lại!, Mã sinh viên không hợp lệ, Điểm chuyên cần không hợp lệ Nhập lại!, Điểm giữa kỳ không hợp lệ Nhập lại!, Điểm cuối kỳ không hợp lệ Nhập lại!

121D01KIEM THU PHAN MEM———Điểm đã tồn tại Nhập lại!

221D11————Mã sinh viên không tồn tại Nhập lại!

321DABC————Mã sinh viên không hợp lệ Nhập lại!

421D02PHAN TICH THIET KE———Điểm đã tồn tại Nhập lại!

521D02KIEM THU PHAN MEM000Nhập điểm thành công

621D02KIEM THU PHAN MEM001Nhập điểm thành công

721D02KIEM THU PHAN MEM006Nhập điểm thành công

821D02KIEM THU PHAN MEM009Nhập điểm thành công

921D02KIEM THU PHAN MEM0010Nhập điểm thành công

Trang 40

1021D02KIEM THU PHAN MEM010Nhập điểm thành công

1121D02KIEM THU PHAN MEM011Nhập điểm thành công

1221D02KIEM THU PHAN MEM016Nhập điểm thành công

1321D02KIEM THU PHAN MEM019Nhập điểm thành công

1421D02KIEM THU PHAN MEM0110Nhập điểm thành công

1521D02KIEM THU PHAN MEM070Nhập điểm thành công

1621D02KIEM THU PHAN MEM071Nhập điểm thành công

1721D02KIEM THU PHAN MEM076Nhập điểm thành công

1821D02KIEM THU PHAN MEM079Nhập điểm thành công

1921D02KIEM THU PHAN MEM0710Nhập điểm thành công

2021D02KIEM THU PHAN MEM090Nhập điểm thành công

2121D02KIEM THU PHAN MEM091Nhập điểm thành công

2221D02KIEM THU PHAN MEM096Nhập điểm thành công

2321D02KIEM THU PHAN MEM099Nhập điểm thành công

2421D02KIEM THU PHAN MEM0910Nhập điểm thành công

2521D02KIEM THU PHAN MEM0100Nhập điểm thành công

2621D02KIEM THU PHAN MEM0101Nhập điểm thành công

2721D02KIEM THU PHAN MEM0106Nhập điểm thành công

2821D02KIEM THU PHAN MEM0109Nhập điểm thành công

2921D02KIEM THU PHAN MEM01010Nhập điểm thành công

3021D02KIEM THU PHAN MEM100Nhập điểm thành công

Ngày đăng: 19/04/2024, 23:58

Tài liệu cùng người dùng

Tài liệu liên quan