Skip to content

Latest commit

 

History

History
executable file
·
1069 lines (969 loc) · 57.4 KB

测试文档.md

File metadata and controls

executable file
·
1069 lines (969 loc) · 57.4 KB

员工考勤系统测试文档

1. 白盒测试 测试通过

1.1 用户相关Dao层测试 测试通过

1.1.1 显示所有用户信息 测试通过

@Test
public void showAllUsersDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    List<User> list = userDao.showAllUsers();
    for (User user : list) {
        System.out.println(user);
    }
}

在这里插入图片描述

1.1.2 更新用户信息 测试通过

    @Test
    public void updateUsersDao() {
        UserDao userDao = (UserDao) ac.getBean("userDao");
        User user = new User("1024", "tests", "ttestword",
                "0", "xx@mail.com", "88", "200", true);
        int num = userDao.updateUserInfo(user);
        System.out.println(num == 1);
    }

测试结果通过 在这里插入图片描述

1.1.3 获取用户个人信息 测试通过

@Test
public void findInfoByEmpnoDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    String empno = "2001";
    User use = userDao.findInfoByEmpno(empno);
    System.out.println(use);
}

测试结果通过 在这里插入图片描述

1.1.4 根据部门编号获取部门名称 测试通过

@Test
public void findDepnameByDepnoDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    String depName = userDao.findDepnameByDepno("100");
    System.out.println(depName);
}

测试结果通过 在这里插入图片描述

1.1.5 新增用户 测试通过

@Test
public void addANewUserDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    User user = new User("2333", "yyx2", "1", 
            "10", "xx@mail.com", "88", "200", true);
    int i = userDao.addANewUser(user);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述 在这里插入图片描述

1.1.6 计算所有用户数 测试通过

@Test
public void countAllUsersDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    int sum = userDao.countAllUsers();
    System.out.println(sum);
}

测试结果通过 在这里插入图片描述

1.1.7 删除用户 测试通过

@Test
public void deleteAUserDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    int sum = userDao.deleteAUser("2333");
    System.out.println(sum);
}

测试结果通过 在这里插入图片描述

1.1.8 找出某部门下所有员工 测试通过

@Test
public void findUserByDepnoDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    List<User> list = userDao.findUserByDepno("200");
    try {
        for (User u : list) {
            System.out.println(u);
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}

测试结果通过 在这里插入图片描述

1.1.9 显示某部门信息 测试通过

@Test
public void showDepartmentInfoDao() {
    CompanyDao companyDao = new CompanyDaoImpl();
    List<DepartmentInfo> list = companyDao.showDepartmentInfo("400");
    try {
        for (DepartmentInfo u : list) {
            System.out.println(u);
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}

测试结果通过 在这里插入图片描述

1.1.11 获取部门员工数 测试通过

@Test
public void countUsersByDepDao() {
    UserDao userDao = (UserDao) ac.getBean("userDao");
    int sum = userDao.countUsersByDep("200");
    System.out.println(sum);
}

测试结果通过 在这里插入图片描述

1.1.12 获取公司信息 测试通过

@Test
public void showCmpInfoDao() {
    CompanyDao companyDao = new CompanyDaoImpl();
    List<Company> list = companyDao.showCmpInfo();
    System.out.println(list);
}

测试结果通过 在这里插入图片描述

1.1.13 从excel中读取用户信息 测试通过

@Test
public void readUsersFromXls() {
    List<User> list = null;
    try {
        list = FileUtils.readUsersFromXls("/Users/jesse/Desktop/inputusers.xls");
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (list != null) {
        for (User user : list) {
            System.out.println(user);
        }
    }
}

测试结果通过 在这里插入图片描述 在这里插入图片描述

1.2 用户相关Service层测试

1.2.1 获取所有用户信息 测试通过

@Test
public void showAllUsersService() {
    UserService userService = ac.getBean("userService", 
    						UserServiceImpl.class);
    for (User user : userService.showAllUsers()) {
        System.out.println(user);
    }
}

测试结果通过 在这里插入图片描述

1.2.2 修改用户信息 测试通过

@Test
public void updateUsersService() {
    UserService userService = ac.getBean("userService", 
            UserServiceImpl.class);
    User user = new User("1024", "service", "ttestword", 
            "0", "xx@mail.com", "88", "200", true);
    int num = userService.updateUserInfo(user);
    System.out.println(num == 1);
}

测试结果通过 在这里插入图片描述

1.2.3 获取用户个人信息 测试通过

@Test
public void findInfoByEmpnoService() {
    UserService userService = ac.getBean("userService", 
    					UserServiceImpl.class);
    String empno = "2001";
    User use = userService.findInfoByEmpno(empno);
    System.out.println(use);
}

测试结果通过 在这里插入图片描述

1.2.4 获取部门名称 测试通过

@Test
public void findDepnameByDepnoService() {
    UserService userService = ac.getBean("userService", 
    					UserServiceImpl.class);
    String depno = "200";
    String depname = userService.findDepnameByDepno(depno);
    System.out.println(depname);
}

测试结果通过 在这里插入图片描述

1.2.5 获取用户总数 测试通过

@Test
public void countAllUsersService() {
    UserService userService = ac.getBean("userService", 
    					UserServiceImpl.class);
    int sum = userService.countAllUsers();
    System.out.println(sum);
}

测试结果通过 在这里插入图片描述

1.2.6 新增用户 测试通过

@Test
public void addANewUserService() {
    UserService userService = ac.getBean("userService", UserServiceImpl.class);
    User user = new User("1024", "yyxService", "1", 
            "10", "xx@mail.com", "88", "200", true);
    int i = userService.addANewUser(user);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述 在这里插入图片描述

1.2.7 删除用户 测试通过

@Test
public void deleteAUserService() {
    UserService userService = ac.getBean("userService", 
    					UserServiceImpl.class);
    int num = userService.deleteAUser("1025");
    System.out.println(num == 1);
}

测试结果通过 在这里插入图片描述

1.2.8 获取部门下的所有员工 测试通过

@Test
public void findUserByDepnoService() {
    UserService userService = ac.getBean("userService", UserServiceImpl.class);
    List<User> list = userService.findUserByDepno("200");

    try {
        for (User u : list) {
            System.out.println(u);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

测试结果通过 在这里插入图片描述

1.2.9 获取部门信息 测试通过

@Test
public void showDepartmentInfoService() {
    CompanyService companyService = new CompanyServiceImpl();
    ArrayList<DepartmentInfo> list = companyService.showDepartmentInfo("200");
    try {
        for (DepartmentInfo u : list) {
            System.out.println(u);
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}

测试结果通过 在这里插入图片描述

1.3 排班(arrangement)相关Dao层测试

1.3.1 获取当前所有排班 测试通过

@Test
public void showAllTurnoutToManagerDao() {
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    List<TurnoutManager> turnoutManagers = arrangeDao.showAllTurnoutToManager();
    System.out.println(turnoutManagers);
    for (TurnoutManager t : turnoutManagers) {
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.3.2 按月度获取排班情况 测试通过

@Test
public void showUsersTurnoutByMonthToManagerDao(){
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    String time = "2020-11-01 00:00:00";
    List<TurnoutManager> turnoutManagers = arrangeDao.showUsersTurnoutByMonthToManager(time);
    for(TurnoutManager t : turnoutManagers){
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.3.3 按月度显示某个员工的所有排班情况 测试通过

@Test
public void showAUserTurnoutByMonthToManagerDao(){
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    String empno = "2001";
    String time = "2020-05-01 00:00:00";
    List<TurnoutManager> turnoutManagers = arrangeDao.showAUserTurnoutByMonthToManager(empno, time);
    for(TurnoutManager t : turnoutManagers){
        System.out.println(t);
        System.out.println(t.getArrno());
        System.out.println(t.getEmpno());
        System.out.println(t.getStart());
        System.out.println(t.getEnd());
        System.out.println(t.getRlstart());
        System.out.println(t.getRlend());
    }
}

测试结果通过 在这里插入图片描述

1.3.4 显示一个用户所有月份的排班 测试通过

@Test
public void showAUserAllTurnoutToManagerDao(){
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    String empno = "2001";
    List<TurnoutManager> turnoutManagers = arrangeDao.showAUserAllTurnoutToManager(empno);
    for(TurnoutManager t : turnoutManagers){
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.3.5 增加新的排班 测试通过

@Test
public void addNewArrangementDao(){
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    TurnoutManager t1 = new TurnoutManager();
    t1.setEmpno("1001");
    t1.setStart(Timestamp.valueOf("2020-05-12 08:45:48"));
    t1.setEnd(Timestamp.valueOf("2020-05-12 17:45:48"));
    t1.setChecktypename("30");
    t1.setIsover(false);
    t1.setIstemporary(false);
    System.out.println(t1.getStart());
    System.out.println(t1.getEnd());
    int i = arrangeDao.addNewArrangement(t1);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.3.6 根据部门返回所有排班 测试通过

@Test
public void showAllTurnoutToInteDao(){
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    List<TurnoutManager> turnoutInte = arrangeDao.showAllTurnoutToInte("100");
    System.out.println(turnoutInte);
    for (TurnoutManager t : turnoutInte) {
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.3.7 以部门为单位获取没有被批准的请假 测试通过

@Test
public void showLeaveApplyByDepDao(){
    ArrangeDao arrangeDao = new ArrangeDaoImpl();
    List<LeaveApply> list = arrangeDao.showLeaveApplyByDep("200");
    System.out.println(list);
    for (LeaveApply t : list) {
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.3.8 更新arrangement表中的某人的某个时间段排班的isleave为1, 表示该段排班请假了 测试通过

@Test
public void updateIsapplyArrangeDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    int num = arrangeDao.updateIsLeaveArrange("1",
            "2020-05-01 00:00:00", "2020-06-01 00:00:00");
    System.out.println(num == 1);
}

测试结果通过 在这里插入图片描述

1.3.9 获取一条请假申请 测试通过

@Test
public void showAUserLeaveApply(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    LeaveApply leaveApply = arrangeDao.showAUserLeaveApply(10000);
    System.out.println(leaveApply);
}

测试结果通过 在这里插入图片描述

1.3.10 删除某一条排班 测试通过

@Test
public void deleteArrByArrnoDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    int i = arrangeDao.deleteArrByArrno(1136);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.3.11 获取某个员工在某个区间内的出勤情况 测试通过

@Test
public void showAUserTurnoutBetweenDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();

    List<TurnoutManager> list = arrangeDao.showAUserTurnoutBetween(
            "2002", "2020-05-03 08:45:48", "2020-05-13 08:40:48");
    for (TurnoutManager turnoutManager : list) {
        System.out.println(turnoutManager);
    }

}

测试结果通过 在这里插入图片描述

1.3.12 改变某一条加班申请的状态 测试通过

@Test
public void updateIsApplyOverDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    int i = arrangeDao.updateIsApplyOver(10009, 1);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.3.13 获取某条加班申请的信息 测试通过

@Test
public void showOverApplyByOvernoDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    OverApply overApply = arrangeDao.showOverApplyByOverno(10009);
    System.out.println(overApply);
}

测试结果通过 在这里插入图片描述

1.3.14 获取被主管同意的加班申请 测试通过

@Test
public void showApprovedLeaveByEmpnoDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    List<LeaveApply> list = arrangeDao.showApprovedLeaveByEmpno("2002");
    if (list != null) {
        for (LeaveApply li : list) {
            System.out.println(li);
        }
    }
}

测试结果通过 在这里插入图片描述

1.3.15 获取某部门仍待批准请假 测试通过

@Test
public void countUnapprovedLeaveByDepDao(){
    ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl();
    Integer sum = arrangeDao.countUnapprovedLeaveByDep("200");
    System.out.println(sum);
}

测试结果通过 在这里插入图片描述

1.4 排班(arrangement)相关Service层测试

1.4.1 获取所有排班 测试通过

@Test
public void showAllTurnoutToManagerService() {
    ArrangeService arrangeService = new ArrangeServiceImpl();
    List<TurnoutManagerFront> turnoutManagers = arrangeService.showAllTurnoutToManager();
    try {
        for (TurnoutManagerFront t : turnoutManagers) {
            System.out.println(t);
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}

测试结果通过 在这里插入图片描述

1.4.2 显示某个月的所有排班(以六月测试) 测试通过

@Test
public void showUsersTurnoutByMonthToManagerService(){
    ArrangeService arrangeService = new ArrangeServiceImpl();
    String time = "2020-06-01 00:00:00";
    List<TurnoutManagerFront> turnoutManagers = arrangeService.showUsersTurnoutByMonthToManager(time);
    try {
        for (TurnoutManagerFront t : turnoutManagers) {
            System.out.println(t);
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}

测试结果通过 在这里插入图片描述

1.4.3 显示某个员工的所有排班 测试通过

@Test
public void showAUserAllTurnoutToManagerService(){
    ArrangeService arrangeService = new ArrangeServiceImpl();
    String empno = "2001";
    List<TurnoutManagerFront> turnoutManagerFront = arrangeService.showAUserTurnoutToManager(empno);
    for(TurnoutManagerFront t : turnoutManagerFront){
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.4.4 显示一个员工某个月的排班 测试通过

@Test
public void showAUserTurnoutByMonthToManagerService(){
    ArrangeService arrangeService = new ArrangeServiceImpl();
    String empno = "2002";
    String time = "2020-05-01 00:00:00";
    List<TurnoutManagerFront> turnoutManagerFront =
            arrangeService.showAUserTurnoutByMonthToManager(empno, time);
    for(TurnoutManagerFront t : turnoutManagerFront){
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.4.5 获取某个部门的请假申请 测试通过

@Test
public void showLeaveApplyByDepService(){
    ArrangeService arrangeService  = new ArrangeServiceImpl();
    List<LeaveApply> list = arrangeService.showLeaveApplyByDep("200");
    for(LeaveApply l : list){
        System.out.println(l);
    }
}

测试结果通过 在这里插入图片描述

1.4.6 驳回某个请假申请 测试通过

@Test
public void disagreeLeaveApplyService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    int i = arrangeService.disagreeLeaveApply(10026);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.7 删除某个排班 测试通过

@Test
public void deleteArrByArrnoService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    int i = arrangeService.deleteArrByArrno(1071);
    System.out.println(i == 1);
}

测试结果通过在这里插入图片描述

1.4.8 更新某项排班 测试通过

@Test
public void updateArrByArrnoService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    TurnoutManager turnoutManager = new TurnoutManager();
    turnoutManager.setArrno(1034);
    turnoutManager.setStart(Timestamp.valueOf("2020-08-05 08:17:00.0"));
    turnoutManager.setEnd(Timestamp.valueOf("2020-08-05 20:17:00.0"));
    turnoutManager.setIsover(false);
    int i = arrangeService.updateArrByArrno(turnoutManager);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.9 添加被影响的排班 测试通过

@Test
public void addAffectedArrService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    int i = arrangeService.addAffectedArr(3309);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.10 删除被影响的所有排班 测试通过

@Test
public void deleteAllAffectedArrService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    int i = arrangeService.deleteAllAffectedArr();
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.11 获取某个排班 测试通过

@Test
public void showArrByArrnoService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    TurnoutManagerFront turnoutManagerFront = arrangeService.showArrByArrno(1121);
    System.out.println(turnoutManagerFront);
}

测试结果通过 在这里插入图片描述

1.4.12 删除被影响的某条排班 测试通过

@Test
public void deleteAffectedArrByArrnoService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    int i = arrangeService.deleteAffectedArrByArrno(3309);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.13 获取某人的所有请假申请 测试通过

@Test
public void showLeaveApplyEmpno(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    List<LeaveApply> list = arrangeService.showLeaveApplyEmpno("2002");
    for (LeaveApply leaveApply : list) {
        System.out.println(leaveApply);
    }
}

测试结果通过 在这里插入图片描述

1.4.14 添加一条新的请假申请 测试通过

@Test
public void addNewLeaveApplyService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    LeaveApply leaveApply = new LeaveApply();
    leaveApply.setEmpno("2002");
    leaveApply.setStart(Timestamp.valueOf("2020-08-05 08:17:00"));
    leaveApply.setEnd(Timestamp.valueOf("2020-08-05 20:17:00"));
    leaveApply.setReason("赶集去了");
    int i = arrangeService.addNewLeaveApply(leaveApply);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.15 删除某条请假申请 测试通过

@Test
public void deleteLeaveApplyByLeavenoService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    int i = arrangeService.deleteLeaveApplyByLeaveno(10030);
    System.out.println(i == 1);
}

测试结果通过 在这里插入图片描述

1.4.16 获取某人的所有加班申请 测试通过

@Test
public void showOverApplyByEmpnoService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    List<OverApply> overApplies = arrangeService.showOverApplyByEmpno("2002");
    for (OverApply overApply : overApplies) {
        System.out.println(overApply);
    }
}

测试结果通过 在这里插入图片描述

1.4.17 获取某人今天的所有排班 测试通过

@Test
public void showUserArrADayService(){
    ArrangeServiceImpl arrangeService = new ArrangeServiceImpl();
    List<TurnoutManagerFront> list = arrangeService.showUserArrADay("2002",
            (new Timestamp(System.currentTimeMillis()).toString()));
    for (TurnoutManagerFront t : list) {
        System.out.println(t);
    }
}

测试结果通过 在这里插入图片描述

1.5 多线程环境线程安全测试 测试通过

1.5.1 检测是否有相应需要主管审批的请假或加班线程 测试通过

new Thread(new Runnable() {
    @Override
    public void run() {
        String depno = u.getDepno();
        ArrangeServlet.count = 0;//主管登录后肯定要开启先收到提醒
        isInteLogin = true;
        while (isInteLogin) {
            String name = Thread.currentThread().getName();
            System.out.println("扫描待申请线程开启:" + name);
            int i = arrangeService.countUnapprovedByDep(depno);
            UserServlet.isApply = i != 0;
            System.out.println("当前是否有申请:" + UserServlet.isApply);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
        }
    }
}).start();
  • 无需任何需要审批的情况 在这里插入图片描述
  • 存在需要审批的请假或加班,转为由false转为true,该线程运行未发现冲突 在这里插入图片描述

1.5.2 扫描两个上传到服务器的文件夹,定期清理文件的线程 测试通过

new Thread(new Runnable() {
    @Override
    public void run() {
        String rootPath = request.getServletContext().getRealPath("/WEB-INF");
        while (isLogin) {
            synchronized (User.class) {
                File xlsFile = new File(rootPath + "/uploadxls");
                File imgFile = new File(rootPath + "/userimg");
                File[] files = xlsFile.listFiles();
                if (files != null) {
                    for (File f : files) {
                        f.delete();
                    }
                }

                files = imgFile.listFiles();
                if (files != null) {
                    for (File f : files) {
                        f.delete();
                    }
                }
            }
            String name = Thread.currentThread().getName();
            System.out.println("进行文件缓存清理" + name);

            //设定线程运行间隔时间
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}).start();
  • 登录后开启线程 在这里插入图片描述
  • 上传文件到服务器,10s以后被该线程自动清理 在这里插入图片描述

2. 黑盒测试 测试通过

2.1 登录与注册 测试通过

2.1.1 登录 测试通过

  • 首页登录界面 在这里插入图片描述
  • 输入账号密码 在这里插入图片描述
  • 登录成功跳转到相应用户类型的主页 登录成功跳转到相应用户类型的主页
  • 账号密码错误 在这里插入图片描述

2.1.2 注册 测试通过

  • 注册界面 在这里插入图片描述
  • 点击发送邮箱验证码时,未输入邮箱会提醒 在这里插入图片描述
  • 填写邮箱后会发送验证码 在这里插入图片描述
  • 进入邮箱可以看到发送的验证码 在这里插入图片描述
  • 若两次输入密码不一致会警示 在这里插入图片描述
  • 若验证码不正确或者未发送,也会警示(上面邮箱可以看到正确验证码是3020) 在这里插入图片描述
  • 两次输入的密码都一样且验证码正确,注册成功 在这里插入图片描述

2.2 经理 测试通过

2.2.1 个人信息查看与修改 测试通过

在这里插入图片描述

  • 在此界面可以直接进行个人信息修改 在这里插入图片描述

2.2.2 查看所有员工 测试通过

  • 可以看到能够显示企业内当前所有员工 在这里插入图片描述
  • 修改相应的信息之后将信息选中,点击更新选中,更新成功 在这里插入图片描述

2.2.3 按部门查看用户 测试通过

  • 选中“算法部门”进行测试 在这里插入图片描述

2.2.4 新增用户 测试通过

  • 点击新增用户,输入新增的用户信息 在这里插入图片描述
  • 点击“确认新增”后回到所有员工界面,可以看到新增成功 在这里插入图片描述

2.2.5 删除选中用户 测试通过

  • 点击“删除选中”后系统自动刷新页面,可以看到成功删除 在这里插入图片描述

2.2.5 批量导入用户 测试通过

  • 点击“批量导入用户信息”,看到弹出的文件选择框 在这里插入图片描述
  • 选择文件 在这里插入图片描述
  • 选择完毕后提交文件,系统回到员工界面可以看到添加的用户和excel文件中的用户信息一致,用户批量导入成功 在这里插入图片描述

2.2.6 公司信息查看 测试通过

  • 点击公司信息可以看到公司信息 在这里插入图片描述

2.2.7 班次信息查看 测试通过

  • 点击班次信息可以看到所有部门所有班次 在这里插入图片描述
  • 选择某个月份,查看公司该月所有的班次信息 在这里插入图片描述
  • 选择某个月份和部门,查看该部门该月所有的班次信息 在这里插入图片描述
  • 查看某员工某月的排班 在这里插入图片描述

2.2.8 临时加班管理 测试通过

  • 查看安排的临时排班的打卡情况 在这里插入图片描述
  • 点击“创建临时排班”,创建临时排班,会在这段时间内所有员工(除请假外)安排上一个临时加班 在这里插入图片描述
  • 观察到所有员工都被安排一个临时加班,除工号2002的员工以为,因为他此时请假 在这里插入图片描述
  • 工号为2002的员工的请假申请(isapply=1表示是被批准的请假),该员工请假的时间正好在刚刚安排的临时加班中 在这里插入图片描述

2.3 主管 测试通过

  • 主管用户登录后会先提醒是否有需要审批的排班 在这里插入图片描述
  • 个人信息与部门信息修改逻辑与经理相同,已测试 在这里插入图片描述 在这里插入图片描述

2.3.1 请假审批 测试通过

  • 进入审批界面后显示本部门所有需要审批的请假 在这里插入图片描述
  • 点击批准,如果请假期间有排班,提醒主管可以去修改被影响的排班 在这里插入图片描述
  • 显示被请假影响的排班 在这里插入图片描述
  • 选中可删除排班,删除成功 在这里插入图片描述
  • 选中修改被影响排班,修改成功 在这里插入图片描述
  • 点击不进行重新排班,回到审批页面 在这里插入图片描述
  • 测试驳回请假,可以看到点击驳回后。没有请假申请了 在这里插入图片描述

2.3.2 加班申请 测试通过

  • 在子菜单中点击加班申请,显示本部门所有加班申请 在这里插入图片描述
  • 选中后点击批准,确定后会增加相应的排班 在这里插入图片描述
  • 到“班次安排”界面可以看到增加的排班 在这里插入图片描述

2.3.3 主管班次安排 测试通过

  • 点击班次安排可以看到本部门所有班次安排 在这里插入图片描述
  • 查看某一位员工所有月份的班次 在这里插入图片描述
  • 查看某个员工某个月份的排班 在这里插入图片描述
  • 选中排班,点击删除可以将排班删除,可以看到排班号1135和1031的排班被删除 在这里插入图片描述
  • 选中排班点击更新选中,表格上方弹出该排班的信息可以进行点击修改,修改成功。 在这里插入图片描述
  • 点击增加排班,在表格上方能显示输入框,输入一个排班,点击确定,可以看到新增,测试成功。 在这里插入图片描述
  • 导出当前显示的排班为excel格式,点击“导出当前”,浏览器下载文件,打开文件与浏览器内的数据对比,完全一致,测试通过 在这里插入图片描述
  • 点击批量添加,进入到批量添加页面 在这里插入图片描述
  • 多选几个员工,再选择连续的天数和每天的上下班时间以及是否是加班,点击添加。 在这里插入图片描述
  • 进入排班界面可以看到批量添加的排班(只截图部分),测试成功 在这里插入图片描述
  • 点击“导入排班”,选择一个xls文件,读取文件中的排班信息后,查看。可以看到添加成功,测试通过。 在这里插入图片描述

2.3.4 出勤信息 测试通过

  • 点击出勤信息,进入到出勤信息界面,可以看到本部门员工的实际上班时间和打卡情况,是否迟到等信息 在这里插入图片描述
  • 输入工号查该员工所有月份的出勤信息,测试成功 在这里插入图片描述
  • 输入员工号和月份查看该员工在该月的出勤信息,测试通过 在这里插入图片描述

2.4 员工 测试通过

2.4.1 个人信息 测试通过

  • 个人信息修改逻辑已测试,此处测试上传本人照片到百度AI的后台,打卡的时候进行人脸识别用 在这里插入图片描述
  • 可以看到在百度ai的后台库中有该照片 在这里插入图片描述

2.4.2 查看班次安排 测试通过

  • 点击班次安排,看到登录员工的所有班次,可以按月份选择查看,测试通过 在这里插入图片描述

2.4.3 查看出勤信息 测试通过

  • 点击出勤信息,看到登录员工的所有出勤信息,可以按月份选择查看,测试通过 在这里插入图片描述

2.4.4 请假申请 测试通过

  • 点击申请的请假界面,可以看到自己已经申请的请假,包括被驳回的,已批准的,待批准的 在这里插入图片描述
  • 选中申请的请假,点击取消申请,可以看到申请不存在,测试通过 在这里插入图片描述
  • 点击“申请请假”,可以看到会拉下请假申请框 在这里插入图片描述
  • 填写请假申请,点击确定,会看到自己的请假申请界面会多出一条请假申请,同时当前部门的主管会收到有新的请假需要审批的通知 在这里插入图片描述
  • 选中请假申请,点击销假,选中的申请发送到主管进行批准,测试通过 在这里插入图片描述

2.4.5 加班申请 测试通过

  • 点击加班申请界面,可以看到当前申请的加班状态 在这里插入图片描述

  • 选中加班申请,点击“取消申请”,可以看到申请被取消 在这里插入图片描述

  • 点击“申请加班”,在下拉的框中填写加班信息,点击“确定”,能够看到自己界面的加班部分有新的加班申请,同时,主管登录的界面会收到审批的通知 在这里插入图片描述

2.4.6 员工人脸识别打卡

  • 点击进入打卡界面,根据员工的设置,弹出提醒今日的下一条排班的上下班时间 在这里插入图片描述
  • 点击确认后可以看到今日的所有排班 在这里插入图片描述
  • 点击“开始打卡”,再点击“开启摄像头”。看到摄像头正常运行 在这里插入图片描述
  • 点击“拍照打卡”,可以看到本人脸识别成功 在这里插入图片描述
  • 查看打卡时间和打卡类型为正确,表明打卡成功 在这里插入图片描述
  • 测试用手遮挡摄像头,点击“拍照打卡”,结果失败。符合预期。 在这里插入图片描述
  • 重新使用正确的脸部打卡,打卡成功,表明完成一条排班了。随即提示下一条排班的时间 在这里插入图片描述