Đăng xuất Tải bài tập mẫu Quản lý bài tập Thống kê điểm Đăng nhập Xuất đề Xem đề bài Tải bài làm Xem điểm Chấm bài
3.1.2 Mô tả các ca sử dụng của hệ thống:
- Ca sử dụng "Đăng nhập":
Đối tượng sử dụng (actor): Giáo viên, Học sinh.
Ca sử dụng này mô tả các bước đăng nhập của các actor vào hệ thống. Các bước thực hiện:
+ Hệ thống yêu cầu actor nhập tên đăng nhập, mật khẩu và mã xác thực. + Actor nhập xong thông tin đăng nhập và kích nút đăng nhập.
+ Hệ thống kiểm tra thông tin đăng nhập. Nếu đăng nhập thành công, hệ thống sẽ dựa trên thông tin để đăng nhập vào actor tương ứng. Nếu thất bại, hệ thống sẽ yêu cầu người dùng đăng nhập lại.
- Ca sử dụng: "Đăng xuất":
Đối tượng sử dụng: bao gồm các thành viên trong ca sử dụng "Đăng nhập"
Ca sử dụng mô tả việc đăng xuất khỏi hệ thống. Các bước thực hiện:
+ Actor thực hiện chức năng "Đăng xuất"
+ Hệ thống hiển thị yêu cầu xác nhận đăng xuất.
+ Hệ thông thực hiện đăng xuất actor ra khỏi hệ thống. Nếu actor không xác nhận thì hệ thống giữ nguyên hiện trạng.
- Ca sử dụng "Tải bài tập mẫu":
Đối tượng sử dụng (actor): Giáo viên
Ca sử dụng này mô tả việc Giáo viên tải các bài tập mẫu lên hệ thống để sinh các ca kiểm thử.
Các bước thực hiện:
+ Giáo viên đăng nhập vào hệ thống và kích vào nút "Tạo bài tập".
+ Hệ thống yêu cầu giáo viên nhập tên bài tập và đặc tả yêu cầu và chọn nhóm (bài tập cơ bản, bài tập nâng cao, v.v..) cho bài tập.
+ Giáo viên kích vào nút "Tải file mẫu" và chọn đường dẫn chứa tệp tin Java . + Hệ thống kiểm tra định dạng của tệp tin tải lên. Nếu là tệp tin được chọn chứa mã nguồn Java thì thực hiện tải tệp tin và đưa ra thông báo thành công khi tải xong. Ngược lại, nếu tệp tin không phải mã nguồn Java, hệ thống yêu cầu Giáo viên chọn lại tệp tin Java.
+ Sau khi có được tệp tin chứa bài tập mẫu, Giáo viên kích vào nút "Sinh ca kiểm thử".
+ Hệ thống thực hiện sinh đồ thị CFG, đường kiểm thử, ca kiểm thử cho mỗi bài tập tương ứng.
+ Giáo viên kích vào nút "Lưu" để hoàn tất việc tải bài tập mẫu. - Ca sử dụng "Quản lý bài tập":
Đối tượng sử dụng : Giáo viên.
Ca sử dụng này gồm các ca sử dụng con mô tả việc Giáo viên xem, sửa, xóa, phân nhóm cho bài tập mẫu.
Các bước thực hiện:
+ Giáo viên sau khi đăng nhập bấm vào tab "Quản lý bài tập".
Ca sử dụng "Xem bài tập":
+ Giáo viên kích vào nút "Xem bài tập".
+ Hệ thống hiển thị các bài tập mẫu mà Giáo viên đã tải lên. Mỗi bài tập bao gồm: Tên bài tập, đặc tả, đồ thị CFG, tập đường kiểm thử, tập ca kiểm thử.
Ca sử dụng "Sửa bài tập":
+ Giáo viên (actor) chọn một bài tập mẫu và kích vào nút "Sửa bài tập".
+ Hệ thống hiển thị chức năng cho phép sửa trực tiếp trên phần tên bài tập và đặc tả và tải bài tập mẫu. Nếu tên bài tập trùng với một tên khác đã có sẵn, hệ thống yêu cầu Giáo viên nhập lại tên.
+ Hệ thống kiểm tra xem tệp tải lên có đúng định dạng Java không. Nếu không đúng định dạng, hệ thống yêu cầu Giáo viên tải lại tệp tin Java.
Ca sử dụng "Xóa bài tập":
+ Giáo viên kích chọn vào một bài tập muốn xóa và kích nút "Xóa bài tập".
+ Hệ thống đưa ra thông báo xác nhận có xóa bài tập hay không?
+ Hệ thống thực hiện xóa bài tập. Nếu Giáo viên không bấm xác nhận xóa thì hệ thống giữ nguyên hiện trạng.
- Ca sử dụng "Xuất đề ":
Đối tượng sử dụng: Giáo viên.
Ca sử dụng mô tả quá trình Giáo viên tạo đề kiểm tra. Các bước thực hiện:
+ Giáo viên kích vào tab "Chấm bài và quản lý bài làm" và bấm nút "Tạo đề kiểm tra".
+ Hệ thống hiển thị các bài tập đã có sẵn trên hệ thống.
+ Giáo viên kích vào các bài tập chọn làm đề kiểm tra, sau đó kích nút "Xuất đề".
+ Hệ thống xuất ra một đề kiểm tra dưới dạng MS Word. - Ca sử dụng "Chấm bài":
Đối tượng sử dụng: Giáo viên.
Ca sử dụng mô tả quá trình Giáo viên chấm bài lập trình cho học sinh. Các bước thực hiện:
+ Giáo viên đăng nhập vào hệ thống và bấm vào tab "Chấm bài và quản lý bài làm".
+ Hệ thống hiển thị các bài tập mà học sinh đã tải thành công. Giáo viên kích chọn vào từng bài làm của học sinh và bấm nút "Chấm bài".
+ Hệ thống thực hiện sinh ca kiểm thử từ mã nguồn bài tập của học sinh và so sánh với các ca kiểm thử mẫu. Tỷ lệ các ca kiểm thử trùng nhau trên bài làm của học sinh so với ca kiểm thử mẫu chính là số điểm (làm tròn) tương ứng của từng bài.
+ Hệ thống hiển thị điểm của học sinh sau mỗi lần chấm bài. - Ca sử dụng "Thống kê điểm":
Đối tượng sử dụng: Giáo viên.
Ca sử dụng mô tả quá trình Giáo viên thống kê điểm và in phiếu điểm theo danh sách lớp.
Các bước thực hiện:
+ Giáo viên đăng nhập vào hệ thống và bấm vào tab "Chấm bài và quản lý bài làm".
+ Hệ thống hiển thị danh sách học sinh và điểm theo lớp. + Giáo viên chọn một lớp và bấm nút "In điểm".
+ Hệ thống xuất ra MS Excel điểm của các học sinh theo lớp. - Mô tả ca sử dụng "Xem đề bài":
Đối tượng sự dụng: Học sinh.
Ca sử dụng mô tả quá trình Học sinh mở đề kiểm tra để bắt đầu làm bài. Các bước thực hiện:
+ Học sinh đăng nhập vào hệ thốngbấm tab "Chấm bài và quản lý bài".
+ Hệ thống hiển thị đề bài dưới dạng MS Word. + Học sinh kích vào nút "Xem đề bài".
+ Hệ thống hiển thị các bài tập tương ứng với bài tập trên đề kiểm tra, thời gian làm bài và bắt đầu tính giờ.
+ Hệ thống đưa ra thông báo hết giờ khi thời gian làm bài kết thúc. - Mô tả ca sử dụng "Tải bài làm":
Đối tượng sử dụng: Học sinh.
Ca sử dụng mô tả quá trình Học sinh tải bài làm lên hệ thống. Các bước thực hiện:
+ Học sinh khi làm bài xong sẽ chọn bài tập trong đề tương ứng trên hệ thống để thực hiện tải bài tập.
+ Học sinh kích vào nút "Tải bài làm" và chọn đường dẫn đến tệp tin Java. + Hệ thống kiểm tra định dạng tệp tin tải lên. Nếu tệp tin tải lên không phải mã nguồn Java, hệ thống yêu cầu người dùng tải lại.
+ Hệ thống đưa ra thông báo khi việc tải bài tập hoàn tất. - Mô tả ca sử dụng "Xem điểm":
Đối tượng sử dụng: Học sinh.
Ca sử dụng mô tả quá trình học sinh xem điểm trên hệ thống. Các bước thực hiện:
+ Học sinh sau khi đăng nhập sẽ bấm vào tab "Kiểm tra".
+ Hệ thống hiển thị bài kiểm tra mà học sinh đã làm. + Học sinh kích vào nút "Xem điểm".
+ Hệ thống hiển thị điểm của học sinh. + Học sinh bấm vào nút "Chi tiết".
+ Hệ thống hiển thị danh sách các ca kiểm thử lỗi đã phát hiện được trên bài tập của học sinh và danh sách ca kiểm thử mẫu.
3.2 Kiến trúc tổng thể của hệ thống chấm bài lập trình
Luận văn hướng đến xây dựng mô hình chấm bài lập trình tự động sử dụng trong các trường THPT, THCS. Kiến trúc tổng thể của hệ thống được hể hiện trong Hình 3.2. Hệ thống gồm ba mô-đun chính: "Quản lý bài tập" gồm các tính năng cho phép các giáo viên cập nhật các bài tập lập trình để học sinh thực hiện. Mỗi bài tập bao gồm đặc tả bài toán (yêu cầu bài toán), mã nguồn chuẩn và tập các ca kiểm thử. Các tính năng tìm kiếm, cập nhật (sửa, xóa, thêm v.v.) cũng sẽ được cung cấp trong mô-đun này. Mô-đun "Sinh ca kiểm thử tự động" cho phép giáo viên sinh các ca kiểm thử ứng với từng bài toán đã được mô tả ở mô-đun "Quản lý bài tập". Các ca kiểm thử sinh ra sẽ được cập nhật vào mô-đun "Quản lý bài tập" cho bài toán tương ứng. Cuối cùng là mô-đun "Chấm bài và quản lý bài làm ". Mô-đun này cho phép học sinh xem các đề bài, tải các bài tập của mình lên, xem được kết quả bài làm của mình. Đối với giáo viên, mô-đun "Chấm bài và quản lý bài làm" cho phép quan sát được các bài làm của từng học sinh và điểm tương ứng với từng bài.
Hình 3.2. Kiến trúc tổng thể của hệ thống chấm bài lập trình
Sinh ca kiểm
thử tự động Quản lý bài tập Chấm bài và quản lý bài làm.
Giáo viên
Giáo viên, Học sinh
3.3 Kiến trúc của mô-đun sinh ca kiểm thử tự động
Hiện tại, luận văn mới chỉ xây dựng được một phần của hệ thống đó là mô-đun
"Sinh ca kiểm thử tự động". Kiến trúc của mô-đun "Sinh ca kiểm thử tự động" được mô tả trong Hình 3.3. Đầu vào của mô-đun là tập tin chứa mã nguồn Java cần kiểm thử. Đầu ra là báo cáo kiểm thử in ra các ca kiểm thử tự động sinh ra từ mã nguồn.
Hình 3.3. Kiến trúc của mô-đun sinh ca kiểm thử tự động
Đầu tiên, mã nguồn được đưa vào mô-đun "Xây dựng CFG" để thực hiện phân tích mã nguồn. Tại đây, hệ thống sử dụng công cụ JDT (Java Development Tooling) chuyển đổi mã nguồn sang dạng cây cấu trúc trừu tượng (AST - Abstract Syntax Tree). Từ cây AST, đồ thị dòng điều khiển sẽ được xây dựng thông qua một thuật toán. Sau khi có được đồ thị, mô-đun "Sinh đường đi kiểm thử" thực hiện tìm các đường đi độc lập trên đồ thị và lấy ra tập đường thi hành có số đường đi nhỏ nhất thỏa mãn một tiêu chí kiểm thử. Tiếp theo, mô-đun "Giải hệ ràng buộc" sẽ sử dụng một thuật toán để trích ra các hệ ràng buộc có trên tập đường thi hành. Hệ thống sử dụng SMT solver Z3 và kỹ thuật sinh ngẫu nhiên để tìm nghiệm thỏa mãn cho các hệ ràng buộc đó. Mô-đun "Sinh ca kiểm thử" sẽ phân tích mã nguồn và đưa ra kết quả đầu ra mong muốn cho mỗi ca kiểm thử. Cuối cùng, hệ thống in ra báo cáo kiểm thử là danh sách các ca kiểm thử sinh ra từ mã nguồn. Xây dựng CFG Sinh đường đi kiểm thử Giải hệ ràng buộc (Z3) Sinh ca kiểm thử
Báo cáo kiểm thử Mã nguồn Java
3.4 Giới thiệu công cụ sinh ca kiểm thử tự động
Để hỗ trợ giáo viên sinh các ca kiểm thử, luận văn nghiên cứu phát triển một công cụ hỗ trợ giúp sinh các ca kiểm thử tự động từ mã nguồn Java. Đầu vào của công cụ là mã nguồn chuẩn (mã nguồn không có lỗi) của giáo viên, đầu ra công cụ sẽ là đồ thị CFG, tập các đường đi kiểm thử, tập các ca kiểm thử (gồm dữ liệu kiểm thử và giá trị đầu ra mong đợi ) tương ứng.
Công cụ xây dựng bằng ngôn ngữ Java, sử dụng thư viện hỗ trợ JDT để phân tích mã nguồn giúp xây dựng CFG. Ngoài ra, để giải hệ ràng buộc giúp sinh các ca kiểm thử, công cụ sử dụng SMT solver Z3 kết hợp với kỹ thuật sinh ngẫu nhiên để tìm nghiệm thỏa mãn các hệ ràng buộc.
3.4.1. Giao diện công cụ sinh ca kiểm thử tự động