Nối tiếp phần 1, Bài giảng Phân tích thiết kế đảm bảo chất lượng phần mềm: Phần 2 tiếp tục trình bày những nội dung về cài đặt hệ thống; cài đặt các modul; tổ chức dự án; xây dựng bộ test case cho kiểm thử đơn vị; rà soát và kiểm thử hệ thống; thực hiện các hoạt động rà soát; thực hiện test chức năng;... Mời các bạn cùng tham khảo!
HỌC PHẦN THAY THẾ TỐT NGHIỆP CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM PHÂN TÍCH THIẾT KẾ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM NGUYỄN MẠNH HÙNG ĐỖ THỊ BÍCH NGỌC Chương Cài đặt hệ thống CHƯƠNG 5: CÀI ĐẶT HỆ THỐNG 5.1 TỔ CHỨC DỰ ÁN Dự án Eclipse tổ chức Hình 5.1: • Các lớp thực thể điều khiển để thư mục \java resources, chia nhỏ thành package tương ứng: model, dao • Các trang jsp để thư mục \Web content, phần xử lí đăng nhập để thu mục chung này, phần xử lí riêng để vào thư mục Ví dụ, phần xử lí chức sinh viên để vào thư mục \sv • Các thư viện (file jar) kết nối CSDL, Junit add vào phần libraries java resources, đồng thời copy vào thư mục \Web content\WEB-INF\lib Hình 5.1: Tổ chức thư mục dự án web Eclipse 115 Chương Cài đặt hệ thống 5.2 CÀI ĐẶT CÁC MODUL Nội dung phần trình bày cài đặt chức năng: sinh viên đăng kí, giảng viên nhập điểm LHP, quản lí xem thống kê loại học lực Tuy nhiên: • Phần thực thể khơng trình bày code coi tập đơn giản cho người đọc • Chức nhập điểm xem thống kê cài đặt phần DAO, phần JSP coi tập cho người đọc • Riêng chức sinh viên đăng kí trình bày đầy đủ DAO trang JSP • Phần JSP sử dụng JSP đơn giản mà chưa áp dụng framwork vào với mục đích minh họa nghiệp vụ Cho nên chưa có xử lí html/css Người đọc áp dụng thêm vào để tăng tính thẩm mỹ phần giao diện • Người đọc cần chỉnh sửa thông tin kết nối vào CSDL (dbUrl dbClass, username, password) lớp DAO cho phù hợp với cấu hình CSDL máy • Nếu người đọc đổi tên bảng/tên cột CSDL phải cập nhật tương ứng câu lệnh SQL • Các lớp DAO có sử dụng store procedure sau code lớp code Store Procedure tương ứng gọi lớp 5.2.1 Chức đăng kí học Lớp DAO.java package dao; import java.sql.Connection; import java.sql.DriverManager; public class DAO { public static Connection con; public DAO(){ if(con == null){ String dbUrl = "jdbc:mysql://localhost:3307/qldktc? autoReconnect=true&useSSL=false"; String dbClass = "com.mysql.jdbc.Driver"; try { Class.forName(dbClass); = DriverManager.getConnection (dbUrl, "root", "Cnpm@2020?"); }catch(Exception e) { e.printStackTrace(); } } 116 Chương Cài đặt hệ thống } } Lớp ThanhvienDAO.java package dao; import java.sql.CallableStatement; import java.sql.ResultSet; import model.Hoten; import model.Thanhvien; public class ThanhvienDAO extends DAO{ public ThanhvienDAO() { super(); // TODO Auto-generated constructor stub } public boolean kiemtraDangnhap(Thanhvien tv){ boolean kq = false; if(tv.getUsername().contains("true") || tv.getUsername().contains("=")|| tv.getPassword().contains("true") || tv.getPassword().contains("=")) return false; String sql = "{call kiemtraDN(?,?)}"; //su dung stored procedure try{ CallableStatement cs = con.prepareCall(sql); cs.setString(1,tv.getUsername()); cs.setString(2,tv.getPassword()); ResultSet rs = cs.executeQuery(); if(rs.next()){ tv.setId(rs.getInt("id")); tv.setVaitro(rs.getString("vaitro")); //hoten Hoten ht = new Hoten(); ht.setHodem(rs.getString("hodem")); ht.setTen(rs.getString("ten")); tv.setHoten(ht); kq = true; } }catch(Exception e){ e.printStackTrace(); kq = false; } return kq; } } 117 Chương Cài đặt hệ thống CREATE DEFINER=`root`@`localhost` PROCEDURE `kiemtraDN`(IN usr VARCHAR(255), IN pwd VARCHAR(255)) BEGIN SELECT * FROM tblthanhvien WHERE username = usr AND password = pwd; END Lớp KihocDAO.java package dao; import java.sql.CallableStatement; import java.sql.ResultSet; import java.util.ArrayList; import model.Hocki; import model.Kihoc; import model.Namhoc; public class KihocDAO extends DAO{ public KihocDAO() { super(); // TODO Auto-generated constructor stub } /** * Lay danh sach cac hoc ki dang mo cho sinh vien chon dang ki hoc * @return danh sach ki hoc dang mo dang ki */ public ArrayList getKihocdangki(){ ArrayList kq=null; String sql = "{call kiDangDK()}"; //su dung stored procedure try{ CallableStatement cs = con.prepareCall(sql); ResultSet rs = cs.executeQuery(); while(rs.next()){ if(kq == null) kq = new ArrayList(); Kihoc kh = new Kihoc(); kh.setId(rs.getInt("idkihoc")); //nam hoc Namhoc nh = new Namhoc(); nh.setId(rs.getInt("idnamhoc")); nh.setTen(rs.getString("namhoc")); kh.setNamhoc(nh); //hoc ki Hocki hk = new Hocki(); 118 Chương Cài đặt hệ thống hk.setId(rs.getInt("idhocki")); hk.setTen(rs.getString("hocki")); kh.setHocki(hk); kq.add(kh); } }catch(Exception e){ e.printStackTrace(); kq = null; } return kq; } } CREATE DEFINER=`root`@`localhost` PROCEDURE `kiDangDK`() BEGIN SELECT a.id as idnamhoc, a.ten as namhoc, b.id as idhocki, b.ten as hocki, c.id as idkihoc FROM tblnamhoc a, tblhocki b, tblkihoc c WHERE c.idnamhoc = a.id AND c.idhocki = b.id AND c.dangdk = 1; END Lớp SinhvienKhoaDAO.java package dao; import java.sql.CallableStatement; import java.sql.ResultSet; import java.util.ArrayList; import model.Hoten; import model.Khoa; import model.Sinhvien; import model.SinhvienKhoa; public class SinhvienKhoaDAO extends DAO{ public SinhvienKhoaDAO() { super(); // TODO Auto-generated constructor stub } /** * lay danh sach cac khoa/nganh ma sinh vien dang hoc de chon dang ki hoc * @param idSV: id cua sinh vien * @return danh sach cacs doi tuong SinhvienKhoa */ public ArrayList getNganhcuaSV(int idSV){ ArrayList kq = null; String sql = "{call nganhcuaSV(?)}";// su dung stored procedure try{ CallableStatement cs = con.prepareCall(sql); 119 Chương Cài đặt hệ thống cs.setInt(1, idSV); ResultSet rs = cs.executeQuery(); while(rs.next()){ if(kq == null) kq = new ArrayList(); SinhvienKhoa svk = new SinhvienKhoa(); svk.setId(rs.getInt("idsvk")); // sinh vien Sinhvien sv = new Sinhvien(); sv.setId(rs.getInt("id")); sv.setMasv(rs.getString("masv")); //hoten Hoten ht = new Hoten(); ht.setHodem(rs.getString("hodem")); ht.setTen(rs.getString("ten")); sv.setHoten(ht); svk.setSinhvien(sv); //khoa Khoa k = new Khoa(); k.setId(rs.getInt("idkhoa")); k.setTen(rs.getString("tenkhoa")); svk.setKhoa(k); kq.add(svk); } }catch(Exception e){ e.printStackTrace(); kq = null; } return kq; } } CREATE DEFINER=`root`@`localhost` PROCEDURE `nganhcuaSV`(IN idSV INT) BEGIN SELECT a.id as idkhoa, a.ten as tenkhoa, b.id as idsvk, c.masv, d.* FROM tblkhoa a, tblsinhvienkhoa b, tblsinhvien c, tblthanhvien d WHERE b.idsinhvien = idSV AND b.idkhoa = a.id AND b.danghoc = AND c.idthanhvien =idSV AND d.id = idSV; END Lớp MonhocKihocDAO.java package dao; import java.sql.CallableStatement; import java.sql.ResultSet; import java.util.ArrayList; 120 Chương Cài đặt hệ thống import model.Kihoc; import model.Monhoc; import model.MonhocKihoc; public class MonhocKihocDAO extends DAO{ public MonhocKihocDAO() { super(); // TODO Auto-generated constructor stub } /** * Lay danh sach cac mon hoc duoc day hoc ki @idKihoc * @param idSVK: id cua sinh vien theo khoa/nganh hoc * @param idKihoc: id cua ki hoc dang chon * @return danh sach cac mon hoc duoc phep */ public ArrayList getMHcuaSV(int idSVK, int idKihoc){ ArrayList kq = null; String sql = "{call MHmaSVduocDK(?,?)}";// su dung stored procedure try{ CallableStatement cs = con.prepareCall(sql); cs.setInt(1, idSVK); cs.setInt(2, idKihoc); ResultSet rs = cs.executeQuery(); while(rs.next()){ if(kq == null) kq = new ArrayList(); MonhocKihoc mhkh = new MonhocKihoc(); mhkh.setId(rs.getInt("idmhkh")); //mon hoc Monhoc mh = new Monhoc(); mh.setId(rs.getInt("idmh")); mh.setTen(rs.getString("tenmh")); mh.setSoTC(rs.getInt("sotc")); mhkh.setMonhoc(mh); //ki hoc Kihoc kh = new Kihoc(); kh.setId(idKihoc); mhkh.setKihoc(kh); kq.add(mhkh); } }catch(Exception e){ e.printStackTrace(); kq = null; } return kq; } 121 Chương Cài đặt hệ thống } CREATE DEFINER=`root`@`localhost` PROCEDURE `MHmaSVduocDK`(IN idSVK INT, IN idKihoc INT) BEGIN DROP TEMPORARY TABLE IF EXISTS ketquamon; CREATE TEMPORARY TABLE ketquamon AS SELECT l.idmonhoc, SUM(k.diem*l.tile) as ketqua FROM tblmonhoc h, tbldangkihoc i, tblketqua k, tblmonhocdaudiem l WHERE i.idsinhvienkhoa =idSVK AND k.iddangkihoc = i.id AND l.id = k.idmonhocdaudiem GROUP BY l.idmonhoc; DROP TEMPORARY TABLE IF EXISTS idmondaqua; CREATE TEMPORARY TABLE idmondaqua AS SELECT idmonhoc FROM ketquamon WHERE ketqua >=4; DROP TEMPORARY TABLE IF EXISTS idmonchuaqua; CREATE TEMPORARY TABLE idmonchuaqua AS SELECT idmonhoc FROM ketquamon WHERE ketqua =4) AND (b.id IN (SELECT idmonhoc FROM idmonchuaqua) OR ((SELECT g.idmontienquyet FROM tblmontienquyet g WHERE g.idmonhoc = b.id) IN (SELECT idmonhoc FROM idmondaqua)) OR b.id NOT IN (SELECT idmonhoc FROM tblmontienquyet)); END Lớp LophocphanDAO.java package dao; import java.sql.CallableStatement; import java.sql.ResultSet; import java.util.ArrayList; import model.Kihoc; import model.Lophocphan; import model.Monhoc; import model.MonhocKihoc; public class LophocphanDAO extends DAO{ public LophocphanDAO() { super(); // TODO Auto-generated constructor stub } 122 Chương Cài đặt hệ thống /** * lay danh sach cac lop hoc phan cua @idMHKH ma sinh vien @idSVK * @param idMHKH: id cua mon hoc ki hoc * @param idSVK: id cua sinh vien khoa * @return: danh sach lop hoc phan co the dang ki duoc */ public ArrayList getLHPchoSVdangki(int idSVK, int idMHKH){ ArrayList kq = null; String sql = "{call LHPchoSVdangki(?,?)}";// su dung stored procedure try{ CallableStatement cs = con.prepareCall(sql); cs.setInt(1, idSVK); cs.setInt(2, idMHKH); ResultSet rs = cs.executeQuery(); while(rs.next()){ if(kq == null) kq = new ArrayList(); Lophocphan lhp = new Lophocphan(); lhp.setId(rs.getInt("id")); lhp.setTen(rs.getString("ten")); lhp.setSisotoida(rs.getInt("sisotoida")); lhp.setSisothucte(rs.getInt("sisothuc")); //monhockihoc MonhocKihoc mhkh = new MonhocKihoc(); mhkh.setId(idMHKH); //monhoc Monhoc mh = new Monhoc(); mh.setId(rs.getInt("idmh")); mh.setTen(rs.getString("tenmh")); mh.setSoTC(rs.getInt("sotc")); mhkh.setMonhoc(mh); //kihoc Kihoc kh = new Kihoc(); kh.setId(rs.getInt("idkihoc")); mhkh.setKihoc(kh); lhp.setMonhocKihoc(mhkh); kq.add(lhp); } }catch(Exception e){ e.printStackTrace(); kq = null; } return kq; } } CREATE DEFINER=`root`@`localhost` PROCEDURE `LHPchoSVdangki`(IN idSVK int,IN idMHKH 123 Chương 6: Rà soát Kiểm thử hệ thống ND_51 Nhập điểm thành cơng - Chưa có điểm sinh viên - Nhập đầu điểm cho số sinh viên Tại hình nhập điểm, giảng viên chọn học kì Active Giảng viên tìm kiếm mơn học chọn môn học Giảng viên chọn lớp học phần muốn nhập điểm Giảng viên nhậpđiểm hợp lệ cho đầu điểm muốn nhập cho số sinh viên danh sách Click nút Lưu Click Nút Hủy ND_52 Nhập điểm thành cơng - Đã có điểm sinh viên - Nhập đầu điểm cho số sinh viên Tại hình nhập điểm, giảng viên chọn học kì Active Giảng viên tìm kiếm mơn học chọn môn học Giảng viên chọn lớp học phần muốn nhập điểm Giảng viên nhậpđiểm hợp lệ cho đầu điểm muốn nhập cho số sinh viên danh sách Click nút Lưu Click nút Hủy Afer step 1: hệ thống hiển thị danh sách mơn học giảng viên dạy kì chọn ( Mã, Tên, Số tín chỉ, Mơ tả) After step 2: Hệ thống hiển thị danh sách lớp học phần giảng viên dạy ( Mã, tên, sĩ số thực, phịng học , ngày học, kíp học) After step 3: Hệ thống hiển thị danh sách sinh viên đăng ký lớp học phần: Thứ tự, Mã sinh viên, Họ tên, Các đầu điểm thàn phần, điểm thi, cột trung bình mơn, điểm chữ tự tính sau nhập After step 5: Hệ thống hiển thị thông báo: Bạn chưa nhập điểm cho tất sinh viên After step 6: Hệ thống đóng popup message, lại trang nhập điểm Afer step 1: hệ thống hiển thị danh sách môn học giảng viên dạy kì chọn ( Mã, Tên, Số tín chỉ, Mô tả) After step 2: Hệ thống hiển thị danh sách lớp học phần giảng viên dạy ( Mã, tên, sĩ số thực, phòng học , ngày học, kíp học) After step 3: Hệ thống hiển thị danh sách sinh viên đăng ký lớp học phần, điểm code ( chế độ Xem) : Thứ tự, Mã sinh viên, Họ tên, Các đầu điểm thàn phần, điểm thi, cột trung bình Chương 6: Rà sốt Kiểm thử hệ thống môn, điểm chữ tự tính sau nhập After step 5: Hệ thống hiển thị thông báo: Bạn chưa nhập điểm cho tất sinh viên After step 6: Hệ thống không chưa lưu điểm sinh viên trang nhập điểm ND_53 ND_54 ND_52 Nhập điểm Tại hình nhập điểm, khơng hợp lệ giảng viên chọn học kì Active Giảng viên tìm kiếm mơn học chọn mơn học Giảng viên chọn lớp học phần muốn nhập điểm Giảng viên nhập điểm có kí tự đặc biệt (khác kí tự ) Nhập điểm Tại hình nhập điểm, khơng hợp lệ giảng viên chọn học kì Active Giảng viên tìm kiếm mơn học chọn môn học Giảng viên chọn lớp học phần muốn nhập điểm Giảng viên nhập điểm >10 Nhập điểm Tại hình nhập điểm, khơng hợp lệ giảng viên chọn học kì Active Giảng viên tìm kiếm môn học chọn môn học Giảng viên chọn lớp học phần muốn nhập điểm Giảng viên nhập điểm có Hệ thống tự động chuyển kí tự đặc biệt thành trống Hệ thống tự động chuyển thành trống Hệ thống tự động làm tròn theo quy tắc lên xuống theo format A.C ( C có chữ số) Chương 6: Rà soát Kiểm thử hệ thống dạng A.B( B> chữ số) Module Thống kê theo loại học lực Bảng 6.9: Hướng dẫn xây dựng Test case chức cho module thống kê theo học lực Mã trường hợp kiểm thử Mục đích kiểm Các bước thực thử Quản lý xem thống kê theo học lực Precond: Quản lý đăng nhập thành công Chọn Xem thống kê -> Hiển thị hình Thống kê-> Chọn thống kê Loại học lực Giao diện (Phần viết trường hợp kiểm thử cho giao diện chung giao diện cho control) Giao diện chung Giao diện Trang chủ Quản lý Các label, textbox font chữ cỡ chữ, lề trái, có độ dài, rộng khoảng cách Kiểm tra tổng Kiểm tra bố cục, font chữ, nhau, không xô lệch thể giao diện tả, màu chữ - Khơng có lỗi tả, cấu hình trúc câu, ngữ pháp hình - Form bố trí hợp lý dễ sử dụng Chức 1.3 TK_1 Kết mong muốn Chương 6: Rà soát Kiểm thử hệ thống TK_2 TK_3 TK_4 TK_5 TK_6 Kiểm tra title hình Kiểm tra focus chuột Kiểm tra bố cục Kiểm tra hiển thị thông tin giao diện trường button hình Kiểm tra giao diện thu nhỏ, phóng to Kiểm tra thứ tự di chuyển trỏ hình nhấn phím Tab Kiểm tra thứ tự trỏ di chuyển ngược lại hình nhấn Shift-Tab Kiểm tra chức hình Enter Nhấn phím Ctrl Nhấn phim Ctrl + - Hiển thị title chức Focus set vào trường edit Hiển thị đầy đủ trường : + Mã NV: textview + Tên NV: Textview Button + Xem thống kê Màn hình thu nhỏ, phóng to tương ứng khơng bị vỡ giao diện Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: Từ phải qua trái, từ Tab liên tục xuống Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: từ lên trên, từ phải phím Shift-Tab liên tục qua trái thực Nhấn phím Enter nhấn Nếu chuộc ko focus vào button Thực chức button Nếu focus vào button thực chức button Giao diện Chọn thống kê TK_7 Các label, textbox font chữ cỡ chữ, lề trái, có độ dài, rộng khoảng cách Kiểm tra tổng Kiểm tra bố cục, font chữ, nhau, không xô lệch thể giao diện tả, màu chữ - Khơng có lỗi tả, cấu hình trúc câu, ngữ pháp hình - Form bố trí hợp lý Chương 6: Rà soát Kiểm thử hệ thống dễ sử dụng TK_8 TK_9 TK_10 TK_11 TK_12 Kiểm tra title hình Kiểm tra focus chuột Kiểm tra bố cục Kiểm tra hiển thị thông tin giao diện trường button hình Kiểm tra giao diện thu nhỏ, phóng to Kiểm tra thứ tự di chuyển trỏ hình nhấn phím Tab Kiểm tra thứ tự trỏ di chuyển ngược lại hình nhấn Shift-Tab Kiểm tra chức hình Enter Nhấn phím Ctrl Nhấn phim Ctrl + Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: Từ phải qua trái, từ Tab liên tục xuống Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: từ lên trên, từ phải phím Shift-Tab liên tục qua trái thực Nhấn phím Enter nhấn Giao diện Thống kê loại học lực - Hiển thị title chức Focus set vào trường edit Hiển thị đầy đủ trường : + Chọn Thống kê: Dropdown list: TK Loại học lực, TK sinh viên, TK mơn học + Chọn học kì: Dropdownlist Button + Xem Màn hình thu nhỏ, phóng to tương ứng không bị vỡ giao diện Nếu chuộc ko focus vào button Thực chức button Nếu focus vào button thực chức button Chương 6: Rà soát Kiểm thử hệ thống TK_13 Kiểm tra tổng Kiểm tra bố cục, font chữ, thể giao diện tả, màu chữ hình TK_14 Kiểm tra title hình Kiểm tra focus chuột Kiểm tra bố cục Kiểm tra hiển thị thông tin giao diện trường button hình TK_15 TK_16 TK_17 Kiểm tra giao diện thu nhỏ, phóng to Kiểm tra thứ tự di chuyển trỏ hình nhấn phím Tab Kiểm tra thứ tự trỏ di chuyển ngược lại hình nhấn Shift-Tab Nhấn phím Ctrl Nhấn phim Ctrl + - Các label, textbox font chữ cỡ chữ, lề trái, có độ dài, rộng khoảng cách nhau, khơng xơ lệch - Khơng có lỗi tả, cấu trúc câu, ngữ pháp hình - Form bố trí hợp lý dễ sử dụng Hiển thị title chức Focus set vào trường edit: Hiển thị đầy đủ trường : + Học kì: Textview + Table: TT, Loại HL, Số lượng SV đạt, Điểm TB sinh viên đạt Button + Quay lại Hyperlink + Loại HL Màn hình thu nhỏ, phóng to tương ứng khơng bị vỡ giao diện Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: Từ phải qua trái, từ Tab liên tục xuống Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: từ lên trên, từ phải phím Shift-Tab liên tục qua trái Chương 6: Rà soát Kiểm thử hệ thống TK_18 Kiểm tra chức hình Enter Nếu chuộc ko focus vào button Thực chức button Nếu focus vào button thực chức button thực Nhấn phím Enter nhấn Giao diện Thống kê sinh viên TK_19 Kiểm tra tổng Kiểm tra bố cục, font chữ, thể giao diện tả, màu chữ hình TK_20 Kiểm tra title hình Kiểm tra focus chuột Kiểm tra bố cục Kiểm tra hiển thị thông tin giao diện trường button hình TK_21 TK_22 Kiểm tra giao diện thu nhỏ, phóng to Kiểm tra thứ tự di chuyển trỏ hình nhấn phím Tab Nhấn phím Ctrl Nhấn phim Ctrl + - Các label, textbox font chữ cỡ chữ, lề trái, có độ dài, rộng khoảng cách nhau, không xô lệch - Không có lỗi tả, cấu trúc câu, ngữ pháp hình - Form bố trí hợp lý dễ sử dụng Hiển thị title chức Hiển thị đầy đủ trường : + Loại học lực: Textview + Học kì: Textview + Table: TT, Mã sv, Tên sv, Ngành, Tổng tc, Điểm TB Hyperlink + Tên SV Button + Quay lại Màn hình thu nhỏ, phóng to tương ứng khơng bị vỡ giao diện Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: Từ phải qua trái, từ Tab liên tục xuống Chương 6: Rà soát Kiểm thử hệ thống TK_23 TK_24 TK_25 TK_26 TK_27 Kiểm tra thứ tự trỏ di Con trỏ di chuyển theo chuyển ngược Forcus vào hình Nhấn thứ tự: từ lên trên, từ phải lại phím Shift-Tab liên tục qua trái hình nhấn Shift-Tab Nếu chuộc ko focus vào Kiểm tra thực button Thực chức chức năng button chính Nhấn phím Enter Nếu focus vào button hình nhấn thực chức Enter button Giao diện Điểm sinh viên Các label, textbox font chữ cỡ chữ, lề trái, có độ dài, rộng khoảng cách Kiểm tra tổng Kiểm tra bố cục, font chữ, nhau, không xô lệch thể giao diện tả, màu chữ - Khơng có lỗi tả, cấu hình trúc câu, ngữ pháp hình - Form bố trí hợp lý dễ sử dụng Hiển thị title chức năng: Điểm sinh viên Hiển thị đầy đủ trường : + Tên Sinh viên: Textview Kiểm tra title hình + Học kì: Textview Kiểm tra focus chuột + Table: TT, Mã MH, Tên Kiểm tra bố cục Kiểm tra hiển thị thông tin MH, Số tc, Điểm TB giao diện trường button ++dòng cuối table : hình Tổng số tc, điểm tb Tổng Hyperlink + Mã MH 4.Button + Quay lại Kiểm tra giao Nhấn phím Ctrl - Màn hình thu nhỏ, phóng to diện thu Nhấn phim Ctrl + tương ứng không bị vỡ giao Chương 6: Rà sốt Kiểm thử hệ thống nhỏ, phóng to TK_28 TK_29 TK_30 Kiểm tra thứ tự di chuyển trỏ hình nhấn phím Tab Kiểm tra thứ tự trỏ di chuyển ngược lại hình nhấn Shift-Tab Kiểm tra chức hình Enter diện Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: Từ phải qua trái, từ Tab liên tục xuống Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: từ lên trên, từ phải phím Shift-Tab liên tục qua trái thực Nhấn phím Enter nhấn Nếu chuộc ko focus vào button Thực chức button Nếu focus vào button thực chức button Giao diện Điểm môn học sinh viên TK_31 Các label, textbox font chữ cỡ chữ, lề trái, có độ dài, rộng khoảng cách Kiểm tra tổng Kiểm tra bố cục, font chữ, nhau, khơng xơ lệch thể giao diện tả, màu chữ - Khơng có lỗi tả, cấu hình trúc câu, ngữ pháp hình - Form bố trí hợp lý dễ sử dụng Chương 6: Rà soát Kiểm thử hệ thống TK_32 TK_33 TK_34 TK_35 TK_36 TK_37 Kiểm tra title hình Kiểm tra focus chuột Kiểm tra bố cục Kiểm tra hiển thị thông tin giao diện trường button hình Kiểm tra giao diện thu nhỏ, phóng to Kiểm tra thứ tự di chuyển trỏ hình nhấn phím Tab Kiểm tra thứ tự trỏ di chuyển ngược lại hình nhấn Shift-Tab Nhấn phím Ctrl Nhấn phim Ctrl + - Hiển thị title chức năng: Điểm môn học sinh viên Hiển thị đầy đủ trường : + Học kì: Textview + Tên Sinh viên: Textview + Môn học: Textview + Table: TT, Đầu điểm ,Trọng số, Kết quả, dòng cuối TB Môn, Điểm chữ, Điểm hệ Button + Print + Xuất file Excel Màn hình thu nhỏ, phóng to tương ứng khơng bị vỡ giao diện Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: Từ phải qua trái, từ Tab liên tục xuống Con trỏ di chuyển theo Forcus vào hình Nhấn thứ tự: từ lên trên, từ phải phím Shift-Tab liên tục qua trái Nếu chuộc ko focus vào button Thực chức button Nếu focus vào button thực chức button Validate trường thông tin Chú ý: Khi validate thông tin trường, tất trường khác hợp lệ Trường Chọn thống kê, Dropdown list Kiểm tra giá trị Trên hình Xem thống Giá trị mặc định Chọn mặc định kê thống kê: TK loại học lực Kiểm tra giá trị mặc định Kiểm tra chức hình Enter thực Nhấn phím Enter nhấn Chương 6: Rà soát Kiểm thử hệ thống trường: Chọn thống kê TK_38 TK_39 TK_40 TK_41 TK_42 TK_43 TK_44 TK_45 Kiểm tra danh Focus chuột vào dropdown sách loại list Chọn thống kê thống kê Trường Chọn Học kì, Dropdownlist Kiểm tra giá trị Trên hình Xem thống mặc định kê Kiểm tra giá trị mặc định trường: Chọn thống kê Kiểm tra danh Focus chuột vào dropdown sách loại list Chọn thống kê thống kê Kiểm tra button, link Kiểm tra button Kiểm tra cho phép click Tìm kiếm button Tìm kiếm Check Kiểm tra cho phép click hyperlink Loại hyperlink Loại học lực Học lực Check hyperlink sinh viên Check hyperlink môn học Hệ thống hiển thị danh sách loại Thống kê Giá trị mặc định Chọn thống kê: TK loại học lực Hệ thống hiển thị danh sách loại Thống kê Ln cho phép click button tìm kiếm Hệ thống cho phép click hyper Loại học lực dòng, hệ thống danh sách lsinh viên theo học lực chọn Kiểm tra cho phép click Hệ thống cho phép click hyper Mã hyperlink Mã sinh viên Mã sinh viên dòng, hệ thống danh sách điểm sinh viên Kiểm tra cho phép click Hệ thống cho phép click hyper Mã hyperlink Mã môn học Mã môn học, hệ thống Điểm môn học sinh viên Chức (Phần viết trường hợp kiểm thử cho chức module Thống kê) Chứng năng: Thống kê theo loại học lực Chứng năng: Thống kê loại học lực Tại hình thống kê loại Hệ thống hiển thị danh sách Nhập xác học lực, nhập xác tên Thống kê loại học lực theo học học kì học kì vào trường: Học kì kì chọn, loại học lực - Đã có điểm Click nút Tìm kiếm xếp dịng, xếp trung bình theo thứ tự cao đến thấp học kì loại học lực Chương 6: Rà soát Kiểm thử hệ thống bảng đánh giá, Ưu tú, Xuất sắc, Giỏi, Khá, Trung bình, Yếu kém: TT, Loại học lực, tống số sinh viên đạt loại đó, điểm trung bình sinh viên đạt TK_46 TK_47 TK_48 TK_49 TK_50 Nhập xác học kì - Học kì học Tại hình thống kê loại học lực, nhập xác tên học kì vào trường: Học kì Click nút Tìm kiếm Tại hình thống kê loại Nhập khơng học lực, nhập khơng chính xác tên xác tên học kì vào trường: học kì Học kì Click nút Tìm kiếm Tại hình thống kê loại học lực, nhập xác tên Click học kì có liệu học lực loại học lực vào trường: Học kì Click hyperlink học lực mong muốn Chứng năng: Thống kê sinh viên Tại hình thống kê loại học lực, nhập xác tên Thống kê sinh học kì có liệu học lực viên vào trường: Học kì - Có sinh viên Click hyperlink học theo học lực lực mong muốn có số lượng chọn sinh viên > Tại hình thống kê loại Thống kê sinh học lực, nhập xác tên viên học kì có liệu học lực - Khơng có sinh vào trường: Học kì viên theo học Click hyperlink học lực chọn lực mong muốn có số lượng sinh viên = Hệ thống hiển thị danh sách trống Hệ thống hiển thị danh sách trống Hệ thống chuyển hướng hiển thị giao diện: Thống kê sinh viên Sau bước 2: Hệ thống hiển thị danh sách sinh viên đạt loại học lực chọn, xếp theo thứ tự ngành học, đến thứ tự abc sinh viên: Thứ tự, mã sinh viên, họ tên, ngành học, khóa học, tổng số tín học kì, điểm trung bình học kì Sau bước 2: Hệ thống hiển thị danh sách trống sinh viên đạt loại học lực chọn danh sách lưới: Thứ tự, mã sinh viên, họ tên, ngành học, khóa học, tổng số tín học kì, điểm trung bình Chương 6: Rà sốt Kiểm thử hệ thống học kì TK_51 TK_52 TK_53 TK_54 Tại hình thống kê sinh Click Hệ thống chuyển hướng đến viên, click tên sinh tên sinh viên giao diên điểm sinh viên viên Chứng năng: Xem điểm sinh viên Tại hình thống kê loại học lực, nhập xác tên học kì có liệu học lực vào trường: Học kì Thống kê điểm Click hyperlink học sinh viên lực mong muốn có số lượng sinh viên > Tại hình Thống kê sinh viên, click hyperlink Tên sinh viên dịng Click Tại hình Điểm sinh viên, Mã mơn học Click mã môn học Chứng năng: Xem điểm môn học sinh viên Tại hình thống kê loại học lực, nhập xác tên học kì có liệu học lực vào trường: Học kì Click hyperlink học Thống kê điểm lực mong muốn có số lượng sinh viên sinh viên > Tại hình Thống kê sinh viên, click hyperlink Tên sinh viên dịng Tại hình điểm sinh Sau bước 3: Hệ thống hiển thị lên danh sách môn kết sinh viên học học kì đó, xếp theo thứ tự abc tên mơn học: Thứ tự, Tên mơn học, Số tín chỉ, điểm trung bình mơn sinh viên Dịng cuối Tổng số tín chỉ, điểm trung bình học kì Hệ thống chuyển hướng đến giao diêện điểm sinh viên Sau bước 4: Hệ thống lên chi tiết điểm môn học sinh viên: Mã mơn Tên mơn học Tổng tín - Các đầu điểm thành phần dạng bảng: +TT: Thứ tự +Đầu điểm: Tên đầu điểm thành phần + Trọng số: Tỉ lệ % đầu điểm thành phần Chương 6: Rà soát Kiểm thử hệ thống viên, click tên môn học + Kết quả: Điểm sinh viên Yêu cầu xây dựng test data cho chức thông kê: Do chức thống kê cần có liệu đầy đủ bảng thống kê được, việc xây dựng test data cho chức thống kê quan trọng cần thiết để phủ hết tình xảy Ví dụ u cầu xây dựng test data cho chức thống kê: STT Mục Yêu cầu liệu Loại sinh viên Đủ loại: - Ưu tú, - Xuất sắc, - Giỏi, - Khá, - Trung bình, - Yếu Số lượng học kỳ >=2 học kỳ có điểm Số lượng sinh viên thuộc loại = học kỳ Số lượng sinh viên thuộc loại Trong khoảng 1-10 học kỳ Số lượng sinh viên thuộc loại >100 học kỳ trung bình Số lượng sinh viên thuộc loại >1000 học kỳ nhiều 6.3 CÂU HỎI ÔN TẬP Thực hoạt động rà soát cho module Thực test chức cho module Bài tập dự án BÀI TẬP DỰ ÁN HỆ THỐNG QUẢN LÍ 234 ... MonhocKihoc mhkh2 = new MonhocKihoc(); mhkh2.setId (2) ; mhkh2.setKihoc(kh); Lophocphan lhp2 = new Lophocphan(); lhp2.setId(9); lhp2.setMonhocKihoc(mhkh2); Dangkihoc dk2 = new Dangkihoc(); dk2.setSinhvienKhoa(svk);... 5.3 .2 Cài đặt kiểm thử đơn vị Việc thực test đơn vị sử dụng Junit Ngoại trừ class interface, class lại cần thực unit test Mục tiêu unit test để đảm bảo unit (method, class) thực thiết kế Quy... • Bước 3: Báo cáo kết test, số lượng pass/false mô tả chi tiết trường hợp false Lưu ý cần thực chuẩn bị môi trường (kết nối DB, liệu mẫu) cần Rollback sau thực test để đảm bảo việc thực test