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ể
CƠ SỞ LÝ THUYẾT
KIỂM THỬ PHẦN MỀ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:
Kiểm thử phần mềm là hoạt động đảm bảo chất lượng phần mềm và mang 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
Kiểm thử phần mềm để tránh những rủi ro, lỗi phát sinh trong suốt quá trình tạo ra sản phẩm
Lỗi càng phát hiện ra sớm càng giúp tránh được rủi ro và chi phí
1.2 Quy trình kiểm thử phần mềm
- Đầ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
Xác định phạm vi kiểm thử: thời gian, lịch trình cho các công việc
Xác định phương pháp tiếp cận
Xác định nguồn lực: con người và thiết bị
Lên kế hoạch thiết kế công việc test: các chức năng cần kiểm thử, cái nào 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
Review tài liệu: xác định công việc cần làm
Chuẩn bị dữ liệu kiểm thử: test data, test script
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
- Đầu vào: test plan, test design, test case, check list, test data, test automation script
Thực hiện các test case như thiết kế
So sánh với kết quả mong đợi sau báo cáo các bug xảy ra lên tool quản lý lỗi và theo dõi trạng thái của lỗi đến khi được sửa thành công
Đo và phân tích tiến độ
- Đầ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
- 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.
KIỂM THỬ TỰ ĐỘNG
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ử
2.2 Mục tiêu và nguyên tắc khi kiểm thử tự động
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
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
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
- 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ử
THỰC HÀNH KIỂM THỬ
PHÁT BIỂU 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…
1.2 Yêu cầu chức năng và phi 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ủ
Ngày sinh String Giới tính String
Số điện thoại String Địa chỉ String
Tên học phần String Điểm chuyên cần [0,10] Điểm giữa kỳ [0,10] Điểm cuối kỳ [0,10]
1.4 Bảng cơ sở dữ liệu
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
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
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ỳ
Biểu đồ ca sử dụng tổng quát
Hình 2: Biểu đồ ca sử dụng tổng quát
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
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ê
-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ê
Kiểm thử hộp đen Kiểm thử hộp trắng
1.7 Giá trị đầu vào, giá trị đầu ra với các chức năng kiểm thử
Tạo hồ sơ sinh viên
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ệ
Cập nhật hồ sơ sinh viên
Cập nhật hồ sơ thành công
Xóa hồ sơ sinh viên
Xóa hồ sơ thành công
Báo cáo và thống kê hồ sơ
Tạo báo cáo hồ sơ thành công
Tạo thống kê hồ sơ thành công
Mã sinh viên không hợp lệ
Mã sinh viên không tồn tại
Điểm thi đã tồn tại
Đ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!
Cập nhật điểm sinh viên
Cập nhật điểm thành công
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
Báo cáo và thống kê điểm
Tạo báo cáo điểm thành công
Tạo thống kê điểm thành công
CODE CHƯƠNG TRÌNH
#include using namespace std; struct Diem { string monHoc; float diemChuyenCan; float diemGiuaKy; float diemCuoiKy;
}; struct SinhVien { string maSV; string hoTen; string ngaySinh; string gioiTinh; string lop; string soDienThoai; string diaChi; vector danhSachDiem;
// Hàm thống kê hồ sơ sinh viên void thongkeHoSoSinhVien() { cout