Hệ thống quản lý và chấm điểm tự động đã được luận văn xây dựng dựa trên kỹ thuật kiểm thử hộp đen để tiến hành quản lý và chấm điểm một cách tự động trong các cuộc thi, bài thi của môn
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
ĐINH THỊ THU TRANG
ỨNG DỤNG TỰ ĐỘNG HÓA KIỂM THỬ HỘP ĐEN
TRONG ĐÁNH GIÁ BÀI TẬP / BÀI THI NGÔN NGỮ LẬP TRÌNH
Chuyên ngành: Công nghệ Thông tin
LUẬN VĂN THẠC SỸ KỸ THUẬT CÔNG NGHỆ THÔNG TIN
Hà Nội – 2014
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
ĐINH THỊ THU TRANG
ỨNG DỤNG TỰ ĐỘNG HÓA KIỂM THỬ HỘP ĐEN
TRONG ĐÁNH GIÁ BÀI TẬP / BÀI THI NGÔN NGỮ LẬP TRÌNH
Chuyên ngành: Công nghệ Thông tin
LUẬN VĂN THẠC SỸ KỸ THUẬT CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN
TS NGUYỄN HỮU ĐỨC
Hà Nội – 2014
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan rằng luận văn thạc sĩ kỹ thuật đề tài: “Ứng dụng tự động
hóa kiểm thử hộp đen trong đánh giá bài tập / bài thi ngôn ngữ lập trình” là công
trình nghiên cứu của riêng tôi dưới sự hướng dẫn của TS Nguyễn Hữu Đức, trung
thực và không sao chép của người khác Trong toàn bộ nội dung của luận văn, các vấn đề nội dung được trình bày đều là những tìm hiểu và nghiên cứu của chính cá nhân tôi hoặc là được tham khảo các nguồn tài liệu đều có nguồn chỉ dẫn rõ ràng và hợp pháp
Hà Nội, ngày 22 tháng 1 năm 2014
Tác giả luận văn
Đinh Thị Thu Trang
Trang 4LỜI CẢM ƠN
Trước tiên tôi xin dành lời cảm ơn chân thành và sâu sắc nhất đến TS
Nguyễn Hữu Đức, người đã giúp đỡ, hướng dẫn và tạo mọi điều kiện tốt nhất cho
tôi từ khi tôi bắt đầu đến khi tôi hoàn thành luận văn của mình
Và tôi cũng xin chân thành cảm ơn các thầy cô giáo trong Viện Công nghệ Thông tin, Trường Đại học Bách Khoa Hà Nội đã tận tình giúp đỡ, đào tạo cung cấp cho tôi những kiến thức quý giá và đồng thời cũng hết sức quan tâm, động viên trong quá trình tôi học tập và nghiên cứu tại Trường
Nhân đây tôi cũng xin cảm ơn các bạn học trong lớp 12ACNTT-PC, đã luôn
ở bên tôi, chia sẻ kinh nghiệm, cung cấp tài liêu hữu ích trong suốt quá trình học tập tại Trường
Hà nội, Ngày 22 Tháng 01 Năm 2014
Tác giả luận văn
Đinh Thị Thu Trang
Trang 5MỤC LỤC
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC HÌNH VẼ
ĐẶT VẤN ĐỀ 1
CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT 6
1 Giới thiệu kiểm thử và khái niệm kiểm thử phần mềm 6
2 Các phương pháp kiểm thử phần mềm 7
2.1 Các cấp độ kiểm thử phần mềm 7
2.2 Các kỹ thuật kiểm thử phần mềm 8
3 Tự động hóa kiểm thử hộp đen 10
CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG 17
2.1 Mục tiêu của hệ thống tự động 17
2.1.1 Sơ đồ khối 11
2.1.2 Phương thức đánh giá áp dụng cho các tệp mã nguồn 21
3.1 Kiến trúc hệ thống 25
3.2 Miêu tả HT 25
3.2.1 Người dùng của HT 25
3.2.2 Mô hình nghiệp vụ chung của HT 26
3.3 Tổ chức dữ liệu hệ thống 27
3.4 Chức năng hệ thống 28
3.4.1 Chức năng dành cho người sử dụng là CBPTĐT 29
3.4.2 Chức năng dành cho người sử dụng là GV 29
3.4.3 Chức năng dành cho người sử dụng là SV 29
3.5 Các giả định 30
3.6 Yêu cầu về giao diện đồ họa và trang web của hệ thống 30
Trang 63.7 Yêu cầu về giao hiệu năng hệ thống 30
3.8 Đặc tả chi tiết yêu cầu HT 30
3.8.1 Đặc tả yêu cầu chức năng 30
3.9 Đặc tả yêu cầu về cơ sở dữ liệu 58
3.10 Các yêu cầu khác 63
4 Kỹ thuật hệ thống 63
4.1 Ngôn ngữ lập trình và môi trường hệ thống 63
4.2 Mô hình MVC 64
4.3 Zend Framework 64
4.4 Các công nghệ khác 67
4.5 Mô hình hệ thống 67
4.6 Ubuntu/Linux 68
4.7 PHP 68
4.8 MySQL 69
5 Tiểu kết 69
CHƯƠNG 3 – CÀI ĐẶT HỆ THỐNG 70
1 Cài đặt Zend Framework 70
2 Cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Ubuntu 76
3 Kết quả thực nghiệm 79
CHƯƠNG 4 - KẾT LUẬN 87
1 Nội dung nghiên cứu 87
2.Những khó khăn và hướng giải quyết 87
3 Kiến nghị 88
TÀI LIỆU THAM KHẢO 89
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1 : Cấp độ cơ bản của kiểm thử phần mềm 7
Hình 2 : Kiểm thử hộp trắng 9
Hình 3 : Kiểm thử hộp đen 11
Hình 4: Sơ đồ khối quá trình vận hành hệ thống 19
Hình 5: Lưu đồ quá trình chấm bài của Core (backend) 20
Hình 6 : Biểu đồ ca sử dụng tổng quan của HT 26
Hình 7: Quy trình quản lý bài tập tổng quan của HT 27
Hình 8: Biểu đồ ca sử dụng của người dùng là CBPTĐT 31
Hình 9: Biểu đồ hoạt động của quy trình Đăng nhập 32
Hình 10: Giao diện đăng nhập 32
Hình 11: Giao diện chính của CBPTĐT 33
Hình 12: Biểu đồ hoạt động của quy trình Quản lý thông tin cá nhân 34
Hình 13: Giao diện thông tin cá nhân 35
Hình 14: Giao diện đổi mật khẩu 35
Hình 15: Biểu đồ hoạt động của chức năng thành lập lớp/môn học 38
Hình 16: Khởi tạo lớp học 38
Hình 17: Khởi tạo hồ sơ GV 39
Hình 18: Xem thông tin GV 40
Hình 19: Biểu đồ ca sử dụng dành cho người dùng là GV 40
Hình 20: Giao diện đăng nhập 41
Hình 21: Biểu đồ hoạt động của quy trình Quản lý thông tin cá nhân 43
Hình 22: Biểu đồ hoạt động của chức năng duyệt danh mục lớp/môn học 44
Hình 23: Biểu đồ hoạt động của chức năng đề xuất bài tập môn học 45
Hình 24: Biểu đồ hoạt động của chức năng thông báo nhắc nhở 46
Hình 25: Biểu đồ hoạt động của chức năng tải tài liệu thực hiện bai tâp 47
Hình 26: Biểu đồ ca sử dụng dành cho người dùng là SV 49
Hình 27: Biểu đồ hoạt động của quy trình Đăng nhập 50
Trang 9Hình 28: Giao diện đăng nhập 50
Hình 29: Giao diện chính của SV 51
Hình 30: Biểu đồ trình tự quản lý thông tin cá nhân 52
Hình 31: Giao diện thông tin cá nhân 53
Hình 32: Giao diện đổi mật khẩu 53
Hình 33: Biểu đồ trình tự duyệt danh mục lớp/môn học 54
Hình 34: Giao diện danh mục lớp/môn học 54
Hình 35: Giao diện danh sách bài tập 55
Hình 36: Biểu đồ trình tự chức năng theo dõi thông báo nhắc nhở 57
Hình 37: Giao diện đăng tải tài liệu thực hiện bài tập 57
Hình 38: Mô hình MVC 64
Trang 10LỜI MỞ ĐẦU
ĐẶT VẤN ĐỀ
Trong giáo dục thì việc quản lý, tổ chức các kỳ thi lập trình hay trong các môn học có bài thi, bài lập trình là điều bắt buộc Tuy vậy, quá trình chấm điểm thủ công làm mất rất nhiều thời gian và công sức của giáo viên Hệ thống quản lý và chấm điểm tự động đã được luận văn xây dựng dựa trên kỹ thuật kiểm thử hộp đen để tiến hành quản lý và chấm điểm một cách tự động trong các cuộc thi, bài thi của môn học Hệ thống thuận lợi cho sinh viên tham gia làm các bài tập lập trình một cách trực tiếp, nhờ đó mà giáo viên sẽ được giảm thiểu tối đa việc chấm điểm bài thi, bài tập cho sinh viên Để thực hiện được việc chấm điểm tự động này, trước tiên giáo viên cần biên soạn bài tập lập trình cùng với các đầu vào và đầu ra chuẩn của các bài kiểm thử Kỹ thuật kiểm thử hộp đen thực chất là việc tự động biên dịch và chạy các chương trình do sinh viên thực hiện với các dữ liệu kiểm thử đầu vào, sau đó tự động đối sánh với các dữ liệu đầu ra chuẩn và dựa trên đó đánh giá mức độ hoàn thiện của chương trình theo tỷ lệ các bài kiểm thử thành công Hệ thống cũng được xây dựng cùng với đầy đủ các chức năng của một hệ thống quản lý bài tập lập trình,
do vậy sẵn sàng có thể đưa vào ứng dụng thực tiễn
Nội dung nghiên cứu của Luận văn có hai mục đích nghiên cứu như sau:
Kiểm thử hộp đen và cơ chế tự động hóa quá trình chấm điểm lập trình
Ứng dụng kiểm thử hộp đen xây dựng hệ thống quản lý và chấm điểm tự
động mã nguồn chương trình
Ngày nay, phát triển phần mềm là một trong những ngành nghề phát triển nhất chính vì thế mà việc dùng các công cụ tiên tiến sẽ giúp cho việc phát triển phần mềm trở nên hiệu quả hơn Với những công cụ và phương pháp chúng ta sẽ giảm thiểu được tối đa công sức, chi phí và thời gian cho việc phát triển phần mềm Tuy nhiên, với độ phức tạp và có sự giới hạn về thời gian, chi phí thì việc kiểm thử càng
Trang 11Ở Việt Nam thì việc kiểm thử chưa được chú trọng, với những công cụ lập trình hiện đại thì dường như chúng ta làm việc theo cảm tính nên vấn đề kiểm thử cũng không được quan tâm nhiều Những năm gần đây thì việc gia công phần mềm cho các công ty nước ngoài đã phát triển chính vì thế mà việc kiểm thử được chú trọng và phát triển hơn trước rất nhiều Các công ty, tập đoàn nước ngoài còn thuê chúng ta để kiểm thử Chính vì vậy mà sản phẩm chúng ta làm ra thì chất lượng phải được đặt lên hàng đầu, điều đó thể hiện ở việc nếu phần mềm nào không có tài liệu kiểm thử đi cùng thì sẽ không được chấp nhận
Trong quy trình đào tạo, một số môn học yêu cầu sinh viên phải thực hiện bài tập hàng tuần / bài tập lớn / bài kiểm tra và giáo viên cần thực hiện đánh giá các kết quả này để dựa vào đó tính điểm quá trình / điểm cuối kỳ cho môn học Phần lớn những bài tập này được công bố dưới dạng một tệp tài liệu hoặc một bộ mã nguồn chương trình Số lượng sinh viên lớn đôi khi dẫn đến tình trạng giáo viên không thể kiểm soát kết quả và chất lượng thực hiện của từng sinh viên trong lớp
Với hiện trạng như vậy nhu cầu xây dựng một hệ thống quản lý thông tin cho phép sinh viên gửi các bài tập cho giáo viên và cho giáo viên thống kê, đánh giá kết quả của từng sinh viên là cần thiết trong quy trình quản lý đào tạo
Trang 12LỜI MỞ ĐẦU
Mục tiêu của luận văn là xây dựng một hệ thống quản lý bài tập môn học và chấm điểm tự động trực tuyến trên công nghệ phổ biến như Joomla, Liferay,… cho phép tự động hóa quy trình nộp bài và đánh giá kết quả bài tập
Các phần còn lại của luận văn có cấu trúc như sau:
Chương 1 giới thiệu về khái niệm kiểm thử và các kỹ thuật kiểm thử thông thường, và cụ thể là kiểm thử hộp trắng, hộp đen và hộp xám
Chương 2 Phân tích và thiết kế chi tiết của hệ thống chấm thi tự động, đề xuất giải pháp ứng dụng kỹ thuật kiểm thử vào việc chấm điểm tự động các bài thi lập trình
Chương 3 cài đặt hệ thống và kết quả kiểm thử
Chương 4 kết luận
Một số hệ thống chấm điểm tự động
Online Judge là hệ thống chấm bài trực tuyến trên mạng Internet Các thành
viên chỉ cần nộp Source File lên và hệ thống sẽ chấm bài 1 cách tự động Kết quả
sẽ được thông báo tới người làm Dưới đây là số hệ thống Online Judge lớn trên thế giới nhằm giúp các bạn có thêm điều kiện để luyện tập:
1 http://uva.onlinejudge.org : Trang giải bài trực tuyến lớn nhất thế giới thuộc Đại học Valladolid – Tây Ban Nha (Universidad de Valladolid) Số lượng bài tập ở đây rất đa dạng và phong phú, từ những bài cơ bản về Quy Hoạch Động, Đồ Thị, thuật toán Tham Lam,… cho đến những bài tập đòi hỏi lượng kiến thức và kĩ năng nhất định của người làm
2 http://www.spoj.pl : Trang giải bài trực tuyến do 1 nhóm sinh viên trường Đại học GDANSK của Ba Lan sáng lập ra Đây là 1 trong những Online Judge lớn nhất trên thế giới với lượng bài tập phong phú Có khá nhiều các IOIers của Việt Nam (các bạn học THPT tham gia kỳ thi Olympic Tin Học Quốc Tế) tham gia ở trang này Điểm mạnh của hệ thống này là hỗ trợ khá nhiều ngôn ngữ lập trình: C++, Pascal, Java, Python, PHP,…Có 1 phiên bản tiếng Việt của SPOJ tại:
Trang 134 http://www.topcoder.com/tc : Trang giải bài nổi tiếng thế giới do 1 công ty lập
ra Hệ thống tổ chức định kỳ các kỳ thi và có phần thưởng cho những ai được điểm cao Tuy nhiên, đề bài hay và khá khó nên để giành được phần thưởng không phải đơn giản
5 VOJ (Vietnam Online Judge) là trang giải bài trực tuyến có giao diện và
đề bài bằng tiếng Việt http://vn.spoj.com/status/
6 Hệ thống chấm điểm tự động Alpha phiên bản 2.0: cho phép việc nộp bài thi hoàn toàn tự động thông qua giao diện web kết nối không dây và công bố kết quả chính xác ngay tức thời, làm tăng tính cạnh tranh, hào hứng của cuộc thi lều chõng Hiện nay, AMM đã có phiên bản mới nhất là phiên bản 2.0 và đã được áp dụng thành công tại các kỳ thi: Olympic Tin Học Sinh Viên Việt Nam 2005 & 2006; Kỳ thi học sinh giỏi Tin học Quốc Gia 2005 & 2006; Tin học trẻ không chuyên TPHCM 2005 & 2006; Thi tuyển đầu vào khối chuyên Tin học trường Phổ thông Năng khiếu 2006
Hệ thống AMM cho phép nhận bài thí sinh, tự động biên dịch và chấm theo các test được định nghĩa bởi giáo viên ra đề Kết quả chấm sẽ được công bố trực tiếp lên trang web và/hoặc kết xuất ra tập tin Excel Hệ thống gồm 2 phân hệ AMM Online (trực tuyến) và AMM Offline (ngoại tuyến)
7 Qualrus - phần mềm chấm điểm tự động: Qualrus được thiết kế không
phải để thay thế hẳn vai trò chấm điểm của giáo viên, mà giúp các học sinh có
nhiều thời gian suy nghĩ kỹ càng về bài viết trước khi có một bài làm hoàn chỉnh nộp cho giáo viên Phần mềm Qualrus do Trường Đại học Missouri (Mỹ)
Trang 14LỜI MỞ ĐẦU
phát triển và đang được ứng dụng vào việc chấm điểm bài làm sinh viên Phần mềm này sử dụng một số kỹ thuật thông minh khác nhau cho phép máy có thể so sánh nội dung bài viết với phần cơ sở dữ liệu thông tin mà các bài viết mẫu đã sử dụng nhằm phát hiện những bài viết sao chép từ mạng hay do các giáo viên, gia sư đưa ra trong các bài mẫu của họ
Trang 15CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
Để tăng hiệu quả về chất lượng phần mềm ta nên sử dụng một số kỹ thuật kiểm thử Mặt khác, các kỹ thuật kiểm thử là công cụ để việc kiểm thử đạt được hiệu quả
Trong kỹ thuật kiểm thử phần mềm có các loại kỹ thuật kiểm thử: kỹ kiểm thử hộp đen (back box testing): kỹ thuật này tìm các lỗi như thiếu chức năng, khả năng
sử dụng và các yêu cầu phi chức năng, kỹ thuật kiểm thử hộp trắng (white box testing): tìm hiểu về cấu trúc bên trong phần mềm và kỹ thuật kiểm thử hộp xám là
sự kết hợp của kỹ thuật kiểm thử hộp đen và kỹ thuật kiểm thử hộp trắng
Giới thiệu kiểm thử và khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là một hoạt động có vai trò rất quan trọng, xuyên suốt các giai đoạn phát triển phần mềm trong việc đảm bảo chất lượng phần mềm, đáp ứng các nhu cầu của người dùng Chính vì thế, kiểm thử phần mềm là một trong những quy trình bước bắt buộc trong các dự án phát triển phần mềm trên thế giới Ở Việt Nam, ngành phát triển phần mềm đang phát triển nên việc kiểm thử phần mềm không thể được xem nhẹ vì xác suất của sự thất bại là rất cao, ngoài ra, hầu hết các công ty phần mềm có uy tín luôn đặt quy trình kiểm thử lên hàng đầu và rất nghiêm ngặt nếu một phần mềm không có tài liệu kiểm thử thì không được chấp nhận Mục đích của kiểm thử là tìm ra những lỗi mà ta chưa phát hiện, tìm ra một cách nhanh nhất và chắc chắn rằng lỗi đó sẽ được sửa
Mục tiêu của kiểm thử là thiết kế được một bản kiểm thử có hệ thống và thực hiện nó một cách tốt nhất, tiết kiệm thời gian thực hiện, công sức và kinh phí thực hiện nó
Tuy nhiên, vấn đề kiểm thử thường gặp một số khó khăn như:
- Các hệ thống phức tạp cần rất nhiều tài nguyên và chi phí
- Quá trình phát triển phần mềm luôn phải trải qua những biến đổi cũng như sự mất mát thông tin do biến đổi làm cho việc kiểm thử gặp nhiều khó khăn
Trang 16CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
- Trong quá trình kiểm thử chưa chú trọng việc đào tạo con người
- Kiểm thử không khẳng định phần mềm hoàn toàn không có lỗi
2 Các phương pháp kiểm thử phần mềm
Người ta có 2 phương pháp kiểm thử:
a Kiểm thử tĩnh
Phương pháp sử dụng thủ công thông qua việc dùng giấy bút để kiểm thử, lặp
đi lặp lại từng chi tiết
b Kiểm thử động
Sử dụng máy để chạy chương trình theo từng bước
Kiểm thử tĩnh thường được tiến hành trước kiểm thử động nhằm tạo ra được kịch bản cho kiểm thử động để người kiểm thử dễ theo dõi
Kiểm thử để chấp nhận sản phẩm (Acceptance Test)
Các bộ phận đơn lẻ
Các nhóm bộ phận
Toàn bộ hệ thống
Toàn bộ hệ thống nhìn
từ khách hàng
Trang 17CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
b Kiểm thử tích hợp ((Integration Test )
Là việc kết hợp các thành phần trong ứng dụng lại với nhau thành một sản
phẩm hoàn chỉnh nhằm phát hiện ra các lỗi liên quan đến giao diện
c Kiểm thử hệ thống (System Test)
Là loại kiểm thử xem giao diện thiết kế và hệ thống sau khi tích hợp có tương thích thỏa mãn với yêu cầu đặt ra hay không
Kiểm thử hệ thống được bắt đầu tiến hành sau khi kiểm thử tích hợp đã được kiểm thử thành công Nó chiếm phần lớn thời gian và kinh phí
Điểm khác nhau rõ rệt là giữa kiểm thử hệ thống và kiểm thử tích hợp là kiểm thử tích hợp chú trọng đến các thành phần riêng lẻ khi chúng được tích hợp lại với nhau còn kiểm thử hệ thống là chú trọng đến toàn lỗi trên hệ thống
Kiểm thử hệ thống gồm các loại:
Kiểm thử chức năng (Functional Test)
Kiểm thử hiệu năng (Performance Test)
Kiểm thử khả năng chịu tải (Stress Test hay Loal Test)
Kiểm thử cấu hình (Configuration Test)
Kiểm thử bảo mật (Sercurity Test)
Kiểm thử khả năng phục hồi (Recovery Test)
d Kiểm thử chấp nhận sản phẩm (Acceptance Test)
Mục đích là kiểm thử khả năng cuối cùng chấp nhận được để sản phẩm phù hợp với các đạc tả, các yêu cầu của khách hàng và sản phẩm được khách hàng chấp nhận được để đi đến việc cuối cùng là thanh toán hợp đồng
Giai đoạn này thì người kiểm thử, đánh giá sẽ là khách hàng và nó được coi là giai đoạn cuối cùng của quá trình
2.2 Các kỹ thuật kiểm thử phần mềm
Các kỹ thuật kiểm thử phần mềm là thiết kế các trường hợp kiểm thử có khả năng cao nhất trong việc tìm và phát hiện ra lỗi với thời gian và công sức tối thiểu
Trang 18CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
Vậy nên việc quan trọng nhất là ta phải thiết kế và tạo ra tất cả các trường hợp kiểm thử có hiệu quả cao nhất Chính vì vậy ta có các kỹ thuật kiểm thử phần mềm sau:
Khi nói đến vấn đề kiểm thử hộp trắng cần quan tâm đến các luồng thực thi trong chương trình Nếu có thể thực hiện kiểm tra tất cả các luồng thực thi của chương trình thì có thể nói rằng chương trình đã được kiểm thử một cách triệt để Tuy nhiên, điều đó khó có thể thực hiện được vì số lượng luồng thực thi khác nhau trong một chương trình thường là rất lớn
Hình 2 mô tả khái quát ý tưởng của kỹ thuật kiểm thử hộp trắng
Hình 2 : Kiểm thử hộp trắng
Có 2 hoạt động kiểm thử hộp trắng:
- Kiểm thử luồng điều khiển: tập trung kiểm thử thuật giải chức năng
- Kiểm thử dòng dữ liệu: tập trung kiểm thử vòng đời của từng biến dữ
Trang 19CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
liệu được dùng trong giải thuật
b Kỹ thuật kiểm thử hộp xám
Kiểm thử hộp xám đòi hỏi phải có sự truy cập tới cấu trúc dữ liệu và giải thuật bên trong cho những mục đích thiết kế các ca kiểm thử, nhưng việc kiểm thử
sẽ được thực hiện ở mức người sử dụng hay mức hộp đen Kỹ thuật này thường
được ứng dụng trong kiểm thử tích hợp (intergartion testing) giữa 2 modun mã lệnh
được viết bởi hai chuyên viên thiết kế khác nhau, trong đó chỉ có giao diện được đưa ra để kiểm thử Kiểm thử hộp xám cũng có thể được ứng dụng trong việc đối
chiếu thiết kế, ví dụ, xác định giá trị biên hay thông báo lỗi
c Kỹ thuật kiểm thử hộp đen
Còn gọi là kiểm thử chức năng Việc kiểm thử này được thực hiện mà không cần quan tâm đến các thiết kế và viết mã của chương trình Kiểm thử theo cách này chỉ quan tâm đến chức năng đã đề ra của chương trình Vì vậy, kiểm thử loài này dựa vào bản mô tả chức năng của chương trình, xem chương trình có thực sự cung cấp đúng chức năng đã mô tả trong bản chức năng hay không mà thôi [2]
3 Tự động hóa kiểm thử hộp đen
Kiểm thử chức năng (Kỹ thuật kiểm thử hộp đen)
Kỹ thuật này dựa trên việc kiểm tra các chức năng của hệ thống, người kiểm thử hoàn toàn không quan tâm tới cấu trúc và hành vi bên trong của phần mềm Chính vì vậy người kiểm thử chỉ quan tâm tới chức năng có bị sai sót gì hay không
mà không quan tâm đến việc cài đặt cụ thế ra sao hay nói chính xác hơn là người kiểm thử chỉ quan tâm tới nhiệm vụ mà mô đun phải đảm nhiệm, đầu vào cho từng
mô đun và kết quả đầu ra sau khi đã được xử lý (Hình 3)
Kiểm thử hộp đen thực hiện các trường hợp kiểm thử để cố gắng tìm ra các lỗi như sau:
- Thiếu hoặc sai chức năng
- Lỗi cấu trúc dữ liệu hay dữ liệu bên ngoài
Trang 20CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
- Lỗi giao diện
- Lỗi bắt đầu hay kết thúc chương trình
- Lỗi thực thi chương trình
Hình 3 : Kiểm thử hộp đen
Kiểm thử hộp đen chia ra nhiều kỹ thuật:
- Phân đoạn tương đương
- Phân tích giá trị biên
- Đoán lỗi
- … …
Có 3 hướng tiếp cận chính trong phương pháp kiểm thử hộp đen:
- Phân tích miền vào\ra của chương trình: dẫn tới việc phân chia hợp lý miền vào/ra vào tập hợp con quan tâm
- Phân tích tính chất đáng chú ý của hộp đen để đề xuất một kỹ thuật kiểm thử hộp trắng thích hợp
- Heuristics: các kỹ thuật này giống với phân tích rủi ro với các đầu vào được lựa chọn ngẫu nhiên
Phân đoạn tương đương
Kỹ thuật này được sử dụng để chia vùng dữ liệu nhập vào cho chương trình thành các lớp thông tin/dữ liệu Mỗi lớp thể hiện thành một tập các giá trị hợp lệ và không hợp lệ Những lớp này có thể được xác định theo các cách sau:
Nếu điều kiện dữ liệu đầu vào được xác định trong khoảng miền giá trị [a,b] thì cần phân đoạn cho lớp tương đương hợp lệ và lớp tương đương không hợp lệ
Trang 21CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
VD: Nếu đầu vào của giá trị x nằm trong khoảng giá trị [0,50] thì lớp tương đương hợp lệ nằm trong khoảng là 0 <= x <= 50 và lớp tương đương không hợp lệ là x < 0 và x > 50
Nếu điều kiện đầu vào yêu cầu một giá trị xác định thì phân hoạch thành một lớp tương đương hợp lệ và hai lớp tương đương không hợp lệ
VD: Nếu đầu vào của giá trị x= 10 thì lớp tương đương hợp lệ là x = 10 và hai lớp tương đương không hợp lệ là x < 10 và x > 10
Nếu điều kiện đầu vào cần xác định giá trị của một phần tử của một tập hợp thì phân hoạch thì sẽ có một lớp tương đương hợp lệ và một lớp tương đương không hợp lệ
Nếu điều kiện đầu vào mang giá trị là Boolean thì phân hoạch một lớp tương đương không hợp lệ và phân hoạch một lớp tương đương không hợp
lệ sẽ tương ứng với hai giá trị là true và false
Ngoài ra, người kiểm thử có thể phán đoán theo khả năng, kinh nghiệm và trực giác của mình
Các trường hợp kiểm thử:
Sau khi sử dụng cách để xác định lớp có các giá trị hợp lệ và không hợp lệ là bước thiết kế các trường hợp kiểm thử dựa trên các giá trị của các lớp tương đương cho miền đầu vào Tiến trình thực hiện như sau:
1 Gán một giá trị duy nhất cho mỗi lớp tương đương
2 Sau khi các lớp tương đương hợp lệ được kiểm thử thì sẽ viết một trường hợp kiểm thử mới phủ nhiều nhất có thể các lớp tương đương hợp lệ chưa được phủ
3 Khi các lớp tương đương không hợp lệ được phủ tất cả các trường hợp kiểm thử, viết các trường hợp kiểm thử mới sao cho mỗi trường hợp kiểm thử mới chỉ phủ duy nhât một lớp tương đương không hợp lệ chưa được phủ
Trang 22CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
Điều kiện đầu
Các lớp tương đương không hợp
Không phải “M” hoặc “F”
Bảng ví dụ các lớp tương đương
Phân tích giá trị biên
Khi các ca kiểm thử sử dụng các giá trị biên thì tỷ lệ sẽ có tỷ lệ phần trăm cao hơn các ca kiểm thử khác
Các điều kiện biên là các điều kiện ở phía trên và phía dưới của các lớp tương đương đầu vào và lớp tương đương đầu ra Phân tích giá trị biên khác với phân hoạch tương đương ở chỗ:
- Phân tích giá trị biên sử dụng một hoặc một số phần tử để kiểm tra còn phân hoạch tương đương chúng ta sẽ chọn phần tử bất kỳ
- Ngoài việc tập trung vào điều kiện đầu vào kiểm thử cũng được suy ra từ các kết quả đầu ra
Ta có một số nguyên tắc để phân tích giá trị biên:
1 Nếu điều kiện đầu vào là khoảng giữa a và b thì giá trị được lấy để kiểm thử
sẽ là giá trị a và b, các giá trị sát trên và sát dưới giá trị a và b
2 Nếu điều kiện đầu vào là một số các giá trị thì các giá trị cực đại, cực tiểu sẽ được lấy để kiểm thử và các giá trị sát cực đại, cực tiểu cũng được lấy để kiểm thử
3 Sử dụng nguyên tắc 1 áp dụng cho đầu vào
4 Sử dụng nguyên tắc 2 áp dụng cho đầu ra
5 Nếu đầu vào hay đầu ra của 1 chương trình là một tập được sắp trật tự như
là 1 file tuần tự thì ta sẽ lấy giá trị đầu và giá trị cuối
Trang 23CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
6 Sử dụng sự khéo léo, sáng tạo của bản thân để có thể tìm được các điều kiện biên thích hợp
Ví dụ: Kiểm tra một hàm tính giá trị tuyệt đối của 1 số nguyên [2]
Các lớp tương đương như sau:
Để đưa ra được quy trình đoán lỗi là rất khó vì tất cả các lỗi đều rất khó đoán trước được và nó là quy trình có tính trực giác rất cao Chúng ta chỉ có ý tưởng cơ bản là liệt kê tất cả các lỗi có thể xảy ra, dễ xảy ra và sau đó sẽ viết các ca kiểm thử cho tất cả các trường hợp lỗi đó Ngoài ra chúng ta còn có một ý tưởng khác để thực hiện các ca kiểm thử có liên quan tới các giả định mà người lập trình có thể đã thực hiện khi đọc đặc tả như là những thứ bị bỏ sót khỏi đặc tả hoặc do tình cờ hoặc do người viết có cảm giác những đặc tả đó là rõ ràng Nói cách khác là ta sẽ liệt kê toàn
bộ các trường hợp đặc biệt mà có thể đã bị bỏ sót khi thiết kế chương trình
Kiểm thử phi chức năng [15]
Trái ngược với kiểm thử chức năng (kiểm thử hộp đen), đó là chỉ ra được phần mềm hoạt động đúng, nghĩa là phần mềm hoạt động tốt theo các hoạt động đã được liệt kê trong bảng yêu cầu chi tiết, loại kiểm thử này chứng thực rằng các chức năng của phần mềm có thể hoạt động bình thường ngay cả khi dữ liệu đầu vào không hợp
Trang 24CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
lệ hoặc không như ta mong đợi Sofware fault injection và fuzzing testing là một trong những ví dụ về kiểm thử phi chức năng Kiểm thử phi chức năng được thiêt kế
để kiểm chứng xem phần mềm trong điều kiện kiểm tra có thể chịu được các loại dữ liệu không hợp lệ hay không mong đợi
Các loại kiểm thử phi chức năng:
- Kiểm thử hiệu năng và khả năng chịu tải của phần mềm
Kiểm thử hiệu năng và khả năng chịu tải của phần mềm
Kiểm thử hiệu năng được thực hiện để xác định hệ thống chính hoặc phụ hoạt động thế nào trong từng lượng công việc theo đặc thù riêng của nó hoặc nó cũng có thể kiểm tra tính hợp lệ và chứng thực cho các thuộc tính chất lượng khác của hệ thống như là khả năng mở rộng, mực độ tin cậy, cách sử dụng tài nguyên Khả năng chịu tải quan tâm chính tới việc kiểm thử phần mềm có thể tiếp tục hoạt động với một số lượng lớn dữ liệu người dùng hay một lượng công việc riêng lẻ?
Kiểm thử tính ổn định
Là việc xem các chức năng của phần mềm có thể hoạt động liên tục trong khoảng thời gian cho phép được hay không Loại hoạt động này thường liên quan đến kiểm thử tải (độ bền) của phần mềm
Đó là việc ta cần kiểm tra giao diện người dùng có dễ sử dụng, dễ hiểu, thân thiện với người dùng hay không, nếu khó sử dụng, khó hiểu thì khách hàng sẽ ít khách hàng chấp nhận và dùng
Trang 25CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
Bảo mật là yếu tố rất cần thiết cho mọi sản phẩm phần mềm, việc bảo mật dữ liệu để ngăn chặn hacker xâm phạm trái phép vào hệ thống
Kiểm thử ở mức toàn cầu và cục bộ
Quốc tế hoá hay nội địa hoá là khía cạnh cần thiết của phần mềm Với mục đích việc giả lập môi trường nội địa để chạy chương trình, điều đó sẽ làm cho ứng dụng dễ dàng làm việc hơn
Loại kiểm thử này cố gắng tìm ra nguyên nhân mà hệ thống phần mềm hay phần phụ khác bị lỗi, chính việc này giúp cho phần mềm có độ bền cao hơn
Trang 26CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG
CHẤM THI TỰ ĐỘNG
Mục tiêu của hệ thống tự động
Lập trình là một kỹ năng có được thông qua việc thực hành và để giúp cho sinh viên thực hiện tốt việc này thì cần có những bài tập lập trình, chính việc này đã nhấn mạnh cho sinh viên các kỹ năng lập trình Hầu hết các kỹ năng lập trình sẽ có mức độ cũng như có nhiều chủ đề để cho sinh viên có thể lựa chọn Tuy nhiên, các
kỹ năng đó được thể hiện thông qua phương pháp lập, cấu trúc dữ liệu và giải thuật,…nhằm tạo ra nhiều loại bài tập có mức độ khác nhau cho sinh viên lựa chọn
Để sinh viên có thể làm việc hiệu quả thì giáo viên cần phải làm mẫu và chấm điểm các dạng bài tập nếu không thì sinh viên sẽ khá khó khăn trong việc thực hành
Thường thì các ứng dụng quản lý bài tập lập trình không yêu cầu giao diện người dùng Hầu hết các chương trình đó sẽ chỉ cần thực hiện đầu vào theo một số định dạng theo quy định, sau đó sẽ được xử lý trong bộ nhớ và đầu ra là kết quả tính toán
Sau khi chọn dạng bài tập và mức độ thì sinh viên có thể thực hiện ngay tại máy client của mình sau đó sẽ gửi lên máy chủ trong quãng thời gian quy định đã được đưa ra Khi thời hạn đã được đề ra mà kết thúc thì chương trình sẽ tự động chấm các bài thi hay các bài tập đã nhận được Chính điều này sẽ làm giảm tải công việc chấm bài của giáo viên
Bất cập trong việc chấm điểm bằng tay: theo cách truyền thống thì để chấm được bài cho sinh viên thì sinh viên sẽ phải viết bằng tay hoặc gửi mail cho giáo viên Giáo viên sẽ tổng hợp bài và tiến hành chấm điểm dựa trên kịch bản có sẵn Điều đó sẽ làm mất thời gian, công sức của giáo viên trong việc chấm bài dựa trên việc đã phân loại bài tập theo lớp, theo môn và theo mức độ của sinh viên Và việc
Trang 27CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
lặp lại quá trình đó lần thứ hai sẽ rất hiếm khi xảy ra Đôi khi có những sinh viên muốn kết thúc bài của mình một cách sớm hơn thời gian quy định thì điều đó là không thể xảy ra, chính vì thế mà ta có một số lỗi như sau:
- Tập trung vào các tiêu chuẩn: đối với việc chấm điểm thì sinh viên phải giải quyết một số câu hỏi dựa trên một phương pháp tiêu chuẩn bởi vì nếu các sinh viên không hiểu được các thuật toán để làm thì sẽ khó có thể giải quyết được bài toán theo đúng yêu cầu Tuy nhiên, cũng có những sinh viên có sáng tạo, sẽ có thể thiết
kế theo cách riêng của mình để giải quyết các yêu cầu của bài toán Chúng ta cần biết rằng một bài toán có thể có nhiều cách giải Đôi khi, giáo viên cho một tập tin
mã nguồn thì những sinh viên đó sẽ rất khó để làm theo và hiểu được thuật giải của bài toán đó
- Vấn đề đo thời gian chạy: nói chung để tìm hiểu xem một chương trình bài tập đã được thực hiện trong một quãng thời gian dài hay nó sẽ không có sự kết thúc thì chúng ta phải thiết lập thời gian kết thúc theo quy định, nếu sinh viên nộp bài quá thời gian quy định đó thì bài sẽ không được chấm
- Số lượng bài tập lập trình ít: chỉ có một số lượng bài tập lâp trình ít được đưa
ra trong một học kỳ Số lượng bài tập được đưa ra trong một học kỳ tỉ lệ thuận với sinh viên trong lớp và tỉ lệ nghịch với sinh viên tham gia
-Việc phân loại bài tập chậm: quá trình chấm điểm mất rất nhiều thời gian, giáo viên phải in mã sinh viên, bài tập ra giấy, sau đó chấm và cuối cùng phải nhập
điểm bằng tay vào máy, chính điều này sẽ làm tốn rất nhiều thời gian và công sức
Sơ đồ khối
1 Quy trình vận hành
Hệ thống quản lý và chấm điểm bài tập/bài thi lập trình cho phép CBPTĐT và
GV đăng thông tin, câu hỏi, bài tập, môn học vào các danh mục tương ứng, đồng thời cập nhật thông tin quyền hạn của người dùng hiện tại Hệ thống còn cho phép sinh viên upload bài tập theo môn học, hệ thống sẽ tự động chấm kết quả và gửi thông báo về cho sinh viên như việc bài giải đúng hay sai hoặc bài gửi có lỗi hay
Trang 28CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
không có lỗi, khi đó lỗi sẽ được tự động phân loại và hiển thị thông tin để sinh viên
có thể dễ dàng chỉnh sửa theo đúng yêu cầu Để thực hiện được việc trên thì hệ thống sẽ áp dụng theo phương án truyền thống cho các hệ thống chấm điểm tự động
là sử dụng một CSSDL để lưu trữ thông tin liên quan đến người đang thực hiện và một loạt thông tin liên quan đến việc chấm kết quả thi
Hệ thống quản lý bài tập/bài thi và chấm điểm tự động chi làm hai bộ phận lớn
đó là Web (frontend) và Core (backend) với chức năng phân biệt: Web xây dựng hệ thống quản lý thông tin còn Core tự động chấm điểm
Bộ phận Web (frontend) chứa các module cung cấp chức năng cơ bản của một
hệ thống thông tin quản lý: quản lý người dùng, quản lý nộp bài, quản lý môn học, quản lý điểm,
Bộ phận Core (backend) đảm nhiệm nhiệm vụ tự động chấm bài tập/bài thi Core thực hiện các tác vụ: biên dịch tệp mã nguồn được nộp bởi sinh viên thành tệp chạy được, và sử dụng tệp này với đầu vào dữ liệu theo chuẩn để thu được kết quả, sau đó mang tệp kết quả thu được sẽ so sánh với tệp kết quả mẫu (bộ kiểm thử), Core kết hợp với các điều kiện về thời gian nộp bài, để đưa ra kết quả chấm điểm
và thông tin quá trình chấm điểm sẽ được tự động lưu vào trong CSDL
Chúng ta có thể thấy Web và Core sử dụng điểm trung gian là CSDL, sử dụng dạng này thì hệ thống sẽ linh hoạt và hiệu quả hơn so với hệ thống không dùng CSDL hoặc là sự kết hợp của Web và Core là một thể duy nhất
Hình 4: Sơ đồ khối quá trình vận hành hệ thống
Testing Modules Database Submission Handler
MySQL Linux Server
PHP
Backend
Linux Server PHP
Trang 29CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Dưới đây là lưu đồ diễn tả quá trình chấm bài của backend Core
Hình 5: Lưu đồ quá trình chấm bài của Core (backend)
Bắt đầu
Đưa ra kết quả cuối cùng
Gọi trình biên dịch
Thực thi và mở file đầu vào/đầu ra
Kiểm tra quá trình xử lý quá lâu, PHP sử dụng PS
kiểm tra các quá trình con
Kiểm tra quá trình
Trang 30CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Mô tả quá trình Core xử lý chấm bài
1 Hệ thống sẽ nhận file upload từ người dùng gửi lên tạo tệp mã nguồn tương ứng từ bài nộp trên bộ nhớ ngoài (ổ cứng) của hệ thống và chuẩn bị tiến hành bước tiếp theo
2 Module xử lý tệp của Core đọc tệp mã nguồn từ bộ nhớ ngoài
3 Core tiến hành biên dịch mã nguồn, kiểm tra lỗi biên dịch, nếu lỗi biên dịch xảy ra tiến trình sẽ dừng lại
4 Đến bước này không có lỗi biên dịch nào phát sinh, tệp chạy được được sản sinh sau khi quá trình biên dịch kết thúc, tệp này được kiểm tra với các tiêu chí thời gian chạy (“Time Limit Exceed”)
5 Khi không có lỗi phát sinh tệp chạy được sẽ sản sinh kết quả chạy dựa vào
dữ liệu đầu vào chuẩn mà Core cung cấp (test input), kết quả mới thu được này tiếp theo đó được đem so sánh với kết quả chuẩn (test output)
6 Cuối cùng Core kết thúc quá trình bằng cách giải phóng các đối tượng dữ liệu sử dụng trong quá trình chấm bài (mã nguồn) tự động
Phương thức đánh giá áp dụng cho các tệp mã nguồn
a Yêu cầu chung của đánh giá
Để giảm bớt những vấn đề đã nêu trên, ứng dụng quản lý bài tập/bài lập trình
và chấm điểm tự động được xây dựng Sinh viên sẽ làm trên máy cá nhân của mình sau đó nộp bài lên server, chương trình chấm điểm tự động sẽ tiến hành kiểm tra xem chương trình đó có được thiết lập đúng hay không, nếu có lỗi xảy ra thì sẽ hiển thị lỗi chi tiết để sinh viên dễ dàng sửa lỗi, còn nếu chương trình đó đúng thì sẽ có thông báo thành công và sẽ được chấm điểm
[10] Như trên chúng ta đã nói về phân loại bài toán dựa trên thuật toán, chính
vì vậy mà khi thiết kế đầu vào cho bài toán sẽ phải tuân thủ theo quy trình thuật toán và để viết ra được kết quả Hệ thống sẽ cung cấp đầu vào và đầu ra theo tiêu chuẩn xử lý Một bài toán chỉ được chấp nhận khi nó đưa ra được kết quả đúng với đáp số đã được đưa ra từ trước
Trang 31CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Để giúp cho sinh viên hiểu được vấn đề và chạy thử chương trình của mình thì chương trình sẽ có bộ kiểm thử mẫu bao gồm dữ liệu đầu và đầu ra tương ứng Và đặc biệt làm bộ kiểm thử phải được giữ bí mật
Sẽ có hai yêu cầu về việc sử dụng bộ kiểm thử:
- Nếu một chương trình mà không thành công trên tất cả các tập kiểm thử thì chương trình đó không hoạt động được
- Có hai yêu cầu khi sử dụng bộ kiểm thử: một là chương trình thành công trên
bộ kiểm thử thì mới cho điểm, hai là chương trình sẽ được cho điểm những phần làm được theo kịch bản
Khi thiết lập bộ kiểm thử thì chúng ta luôn luôn sử dụng hết tất cả các trường hợp để từ đó có thể thay đổi một vài thông số cho đầu vào và đầu ra trong bài tập cho phù hợp
Lợi thế: Ưu điểm chính của phương pháp chấm điểm tự động chính là việc chấm điểm tự động giải quyết các sai sót trong quá trình chấm điểm bằng tay
Không có các chuẩn: không cần các kỹ năng cho việc xây dựng mô hình cơ sở chấm điểm Tất cả các câu trả lời sẽ được dựa trên tính xác thực của nó
Không có tính thẩm mỹ: Hệ thống sẽ không chấm điểm dựa trên tính thẩm mỹ về cách trình bày bài toán, chính vì thế mà sinh viên không cần dành quá nhiều thời gian cho việc làm đẹp cho mã nguồn Việc bài toán được viết có tính thẩm mỹ chỉ là việc giúp cho sinh viên thấy được
Trang 32CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
sự thuận lợi khi muốn chỉnh sửa hay sửa cấu trúc của code lập trình
Giới hạn về thời gian: Sau khi thời gian đã kết thúc mà sinh viên vẫn nộp bài thì chương trình sẽ không chấm điểm nữa
Tính nhất quán: việc chấm điểm sẽ sử dụng cùng một chương trình chấm, chứ không phải có nhiều chương trình chấm, và tương ứng với mỗi bài toán chúng ta có đầu vào và đầu ra khác nhau dựa trên quy định đưa ra từ đầu
Nhiều bài tập lập trình: Khi việc phải chấm điểm bài tập lập trình cho sinh viên không còn quá vất vả thì giáo viên nên sưu tầm và ra nhiều bài tập để sinh viên có những bài thực hành
Quá trình chấm điểm nhanh hơn: việc sử dụng chương trình để chấm điểm sẽ nhanh hơn rất nhiều lần so với việc phải chấm bằng tay
Giảm thiểu nguồn nhân lực: ứng dụng chỉ cần người có quyền truy cập vào hệ thống để xem kết quả chứ không cần có quá nhiều người tham gia vào quá trình này
Nhiều người tham gia: các bạn sinh viên của các lớp khác cũng có thể tham gia vào làm các bài lập trình để kiểm tra trình độ của mình, chính
điều này sẽ giúp sinh viên có thể làm được nhiều bài tập hơn nữa
Trang 33CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
b CSDL của hệ thống
Hệ thống sử dụng hệ quản trị cơ sở dữ liệu MySQL, lưu trữ thông tin cơ bản của người dùng và điểm số của sinh viên Thông qua dữ liệu này Web frontend của ứng dụng sẽ thực hiện chức năng của một hệ thống quản lý cơ bản:
admin exercises point submit_exercises
File_output
Id
Id_students Point Id_exercises Note
Id_subjects
Info_extend
Id
Link Id_exercises Time
Id_students Title
Status
Id
Code Name Weight Id_room Id_semester
Id_teachers
Id
Title Content Link Id_subjects Id_teacher
info_class institutes room semester
Hệ thống bảng dữ liệu của ứng dụng quản lý
Trang 34CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
3.1 Kiến trúc hệ thống
Hệ thống phần mềm phải được phát triển như một thành phần độc lập dạng addon của framework ứng dụng CMS/Portal (vd., component/module trong Joomla, portlet trong liferay) Phân biệt 2 loại giao diện frontend và backend cho các đối tượng sử dụng khác nhau Cụ thể:
a Các thành phần frontend được dùng tích hợp vào cổng/trang thông tin điện
tử công bố trên mạng Internet Người dùng là giáo viên có thể đăng nhập vào hệ thống, sửa đổi thông tin cá nhân, soạn thảo đề cương cho một bài tập mới, theo dõi quá trình nộp bài tập, cho điểm đánh giá và tạo bảng điểm/báo cáo Người dùng là sinh viên có thể đăng nhập vào hệ thống frontend để sửa các thông tin hồ sơ cá nhân, nộp bài tập, theo dõi kết quả học tập của mình Người dùng là cán bộ quản lý đào tạo có thể lập danh sách lớp và khởi tạo tài khoản cho các cán bộ, sinh viên
b Các thành phần backend được dành riêng cho cán bộ quản lý hệ thống Khi truy cập vào hệ thống tùy vào phân quyền người dùng có thể thay đổi chỉnh sửa các thông tin về tổ chức, thông tin về hồ sơ cán bộ, thực hiện các kết xuất báo cáo thống
GV: đây là lớp người dùng dành cho GV GV có vai trò quản lý lớp/môn học mình tham gia giảng dạy và các bài tập trong từng lớp/môn học đó
SV: đây là lớp người dùng dành cho SV SV có vai trò thực hiện và theo dõi bài tập của mình (được giao bởi GV)
Trang 35CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
3.2.2 Mô hình nghiệp vụ chung của HT
Dưới đây là biểu đồ ca sử dụng tổng quan của HT:
Hình 6 : Biểu đồ ca sử dụng tổng quan của HT
Ca sử dụng của CBPTĐT chỉ bao gồm việc quản trị các người dùng của HT, chứ không tham gia trực tiếp vào hoạt động chính của HT là quản lý bài tập
Các ca sử dụng của GV và SV có quan hệ mật thiết với nhau Các ca sử dụng này cấu tạo nên hoạt động chính của HT Biểu đồ hoạt động dưới đây mô tả quy trình quản lý bài tập tổng quan của HT với sự tham gia của 2 lớp người dùng này:
Trang 36CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Hình 7: Quy trình quản lý bài tập tổng quan của HT
3.3 Tổ chức dữ liệu hệ thống
Hệ thống phải đảm bảo quản lý được các loại hình dữ liệu:
Hồ sơ sinh viên
Hồ sơ giáo viên
Hồ sơ cán bộ phụ trách đào tạo
Lớp/Môn học
Đề cương bài tập môn học
Tài liệu thực hiện từng bài tập môn học
Chấm điểm tự động
Thông tin quá trình gửi bài tập môn học (KetQua)
Điểm đánh giá của giáo viên cho bài tập (KetQua)
Đối với lớp/môn học, các mục dữ liệu sau cần phải có:
Trang 37CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Tiêu đề môn học
Mục tiêu môn học
Tài liệu môn học
Danh sách sinh viên tham gia lớp học
Danh sách các bài tập của môn học
Đối với kết quả bài tập môn học, các mục dữ liệu sau cần phải có:
Thông tin quá trình gửi bài tập môn học (thời gian nộp, tiêu đề bài nộp) Điểm đánh giá của giáo viên cho bài tập
Tổ chức dữ liệu chi tiết cho hệ thống sẽ được phân tích cụ thể trong giai đoạn phân tích yêu cầu hệ thống
3.4 Chức năng hệ thống
Cho người sử dụng là sinh viên
o Sửa đổi hồ sơ cá nhân (mật khẩu)
o Duyệt danh mục môn học/ lớp tham gia
o Duyệt các bài tập có tham gia
o Nộp bài tập môn học
o Xem điểm bài tập
Cho người sử dụng là giáo viên
o Sửa đổi hồ sơ cá nhân (mật khẩu)
o Đề xuất bài tập lớn môn học có tham gia giảng dạy
o Theo dõi quá trình thực hiện bài tập
o Thông báo nhắc nhở
o Download các tài liệu thực hiện của một bài tập
o Chấm điểm bài tập
o Kết xuất kết quả (màn hình/ excel)
Cho người sử dụng là cán bộ quản lý đào tạo
o Khởi tạo hồ sơ cho sinh viên
Trang 38CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
o Khởi tạo hồ sơ cho giáo viên
o Thành lập lớp/môn học (gán sinh viên + giáo viên)
3.4.1 Chức năng dành cho người sử dụng là CBPTĐT
Đăng nhập
Khởi tạo hồ sơ cho sinh viên
Khởi tạo hồ sơ cho giáo viên
Thành lập lớp/môn học (bao gồm việc gán sinh viên và giáo viên
vào các lớp/môn học đó)
Đăng xuất
3.4.2 Chức năng dành cho người sử dụng là GV
Đăng nhập
Sửa đổi hồ sơ cá nhân
Duyệt danh mục lớp/môn học giảng dạy
Đề xuất bài tập môn học
Theo dõi quá trình thực hiện bài tập
Sửa đổi hồ sơ cá nhân
Duyệt danh mục lớp/môn học tham gia
Duyệt các bài tập có tham gia
Theo dõi thông báo nhắc nhở
Nộp bài tập môn học
Xem kết quả bài tập
Trang 39CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Đăng xuất
3.5 Các giả định
Trong một kỳ học, mỗi môn học sẽ chỉ mở một lớp học, tức là HT có thể gộp lớp học và môn học thành một đối tượng
HT không đáp ứng chức năng chấm điểm tự động cho GV
Các SV thực hiện bài tập một cách độc lập HT không hỗ trợ tổ chức các nhóm SV làm bài tập
Hồ sơ SV, GV sẽ được cung cấp bởi một HT khác bên ngoài và sẽ được CBPTĐT nhập vào HT
3.6 Yêu cầu về giao diện đồ họa và trang web của hệ thống
Phần mềm phát triển một cổng/trang thông tin điện tử để demo các tính năng của HTQLBT Trang web cần thể hiện các thông tin tĩnh, các tin bài được kết xuất từ CMS và các dữ liệu động được kết xuất từ hệ thống
Giao diện đồ họa các mô đun của hệ thống có khả năng tùy biến động theo nền giao diện mà người dùng lựa chọn Giao diện trang web sáng sủa, không cầu
kỳ để người dùng có thể dễ dàng theo dõi và thao tác
3.7 Yêu cầu về giao hiệu năng hệ thống
Hệ thống cần đảm bảo hoạt động tốt, ổn định trong tình trạng bình thường Ngoài ra, hệ thống cần đảm bảo đáp ứng được nhiều người dùng đăng nhập vào hoặc nhiều sinh viên nộp bài cùng một lúc
3.8 Đặc tả chi tiết yêu cầu HT
3.8.1 Đặc tả yêu cầu chức năng
3.8.1.1 Người dùng là CBPTĐT
Dưới đây là biểu đồ ca sử dụng của người dùng là CBPTĐT:
Trang 40CHƯƠNG 2 – PHÂN TÍCH VÀ THIẾT KẾ CHI TIẾT CỦA HỆ THỐNG CHẤM THI TỰ ĐỘNG
Hình 8: Biểu đồ ca sử dụng của người dùng là CBPTĐT
a Chức năng Đăng nhập (F101)
Mô tả: cho người dùng cung cấp thông tin đăng nhập vào HT để có thể sử
dụng các chức năng dành cho CBPTĐT
Đầu vào: tên đăng nhập và mật khẩu
Đầu ra: đăng nhập thành công hay không
Liên quan đến các ca sử dụng khác: chức năng Đăng nhập cần được thực
hiện thành công trước khi người dùng có thể thực hiện được các chức năng còn lại
Quy trình: biểu đồ hoạt động của quy trình Đăng nhập: