人事管理系统综合设计报告.doc

上传人:jian****018 文档编号:9094799 上传时间:2020-04-03 格式:DOC 页数:45 大小:575.50KB
返回 下载 相关 举报
人事管理系统综合设计报告.doc_第1页
第1页 / 共45页
人事管理系统综合设计报告.doc_第2页
第2页 / 共45页
人事管理系统综合设计报告.doc_第3页
第3页 / 共45页
点击查看更多>>
资源描述
综合课程设计题目: 人事管理系统 目录第1章 课题关键技术21.1 B/S结构的数据访问模式21.2 MyEclipse 简介21.3 oracle数据库简介31.4 开发技术简介3第2章 系统需求分析42.1 目标42.2 一般性需求42.3 功能简介42.4 可行性分析52.5 软硬件环境要求6第3章 系统总体设计63.1 系统总体架构73.2 功能模块细分与设计83.2.1 部门管理模块83.2.2 岗位管理模块93.2.3 员工入职管理模块103.2.4试用期员工管理模块103.2.5 部门调动管理模块113.2.6 岗位调动管理模块12第4章 系统详细设计1341 系统类设计134.1.1 实体类设计144.2 数据库设计254.2.1 数据库模型设计25第5章 源代码设计275.1 对数据库的操作的部分代码275.3 数据库的更新操作33第6章 系统测试416.1 黑盒测试和白盒测试416.2 测试准则426.3 白盒测试42第7章 结论43参考文献44 第1章 课题关键技术1.1 B/S结构的数据访问模式B/S(Browser/Server)结构,即浏览器/服务器模式,当前在web数据库开发中应用较广泛的一种模式,它是随着Internet技术的兴起,从传统的二层C/S(客户机/服务器)模式发展起来的新的网络结构模式,其本质是三层结构C/S模式。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现。但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本,如图1-1所示。图1-1三级结构组成1.2 MyEclipse 简介 本次系统开发所使用的前台开发技术为Java,所使用的软件为MyEclipse。Java是一种软件技术,是一种由美国SUN计算机公司所研究而成的语言,是一种较为高级的编程语言。利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,能够支持HTML,Struts,JSP,CSS,Javascript,SQL。同时,MyEclipse10.0为用户提供了高效、便捷的操作环境和友好的可视化操作界面。1.3 oracle数据库简介 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。ORACLE 数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。1.4 开发技术简介JSP技术JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP网页。所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称这Server-side Language。所以被许多人认为是未来最有发展前途的动态网站技术之一。第2章 系统需求分析2.1 目标 本系统的总体目标是搭建用人单位的人事信息管理平台,不仅满足目前的业务需要,还要满足公司的未来的发展,而且要具备良好的扩展性,形成公司未来人力资源管理信息化平台。2.2 一般性需求 一、集中数据管理、分布式应用,实现信息的全面共享,为决策者提供最新的人力资源数据。 二、完全基于浏览器的操作模式,安装简单,操作方便,具有良好的系统扩展能力。 三、灵活的模块需求设计。2.3 功能简介 本次课设的标题为人事管理系统,完成的是其中的部门管理模块,其基本功能的分析如下:2.3.1 部门管理 部门管理主要实现了两个模块,一个是新建部门,这是一个必不可少的模块,其他的操作均要根据部门的各种关联来解决;一个是部门列表,在部门列表中可以根据不同的条件进行查询,可以全部输入,也可以部分输入。在查询出来的部门列表中,可以对部门进行操作,其操作有:修改-对部门除了部门编号以外的信息进行修改,查询-对部门下的员工进行查询,删除-对部门进行删除(其中若是该部门下有员工,则不能进行该操作)。2.3.2 岗位管理 岗位管理下有三个模块,分别是:新建岗位,在该模块下,可以建立一个新的岗位,其中每一个岗位都属于其中的一个部门。岗位列表,在该模块下可对岗位进行查询,其中可以输入全部条件进行查询,也可以输入部分内容进行查询,在该查询中,有可以进行如下操作:修改-对部门信息进行修改;岗位下员工信息-对该岗位下的员工进行查询;删除-读岗位进行删除。第三个模块:岗位删除-输入岗位编号,删除该岗位。2.3.3 员工入职管理 本模块较为简单。但也是相当重要的一块。本模块只有一个简单的对个人数据进行插入2.3.4 试用期员工管理 本模块中,点击试用期员工查询,进入查询页面,可以通过员工编号、员工姓名、试用期状态、所在部门、所在岗位、开始日期、结束日期进行查询。进入查询后,查询出来的表中可以进行“操作”的操作,本操作可以更改员工的试用期状态;正常、延期、不录用、转正操作。员工转正查询中可以根据员工编号、员工姓名、所在部门、所在岗位、开始日期、以及结束日期进行查询员工的转正员工。2.3.5 部门调动管理 部门调动模块主要进行部门调动和已调动部门员工的查询。部门调动中可以通过员工编号、员工名称、部门编号、部门名称进行查询。查询出信息后。选择其中的单选按钮,在点击提交,进入了部门调动页面,填入选项信息后可进行部门的调动。可以在已调动部门员工查询中查询出已经掉的部门的员工信息。2.3.6 岗位调动管理 岗位调动管理中可以进行岗位调动、已调动员工岗位查询两个操作;在岗位调动中,可以通过部门编号、部门名称、员工编号、员工姓名之中的任意选项进行查询;查询出结果后可以进行别的操作,点击岗位调动,进入了岗位调动操作页面,页面填入信息后进行岗位调动。岗位调动完后,通过在职员工查询可以进行员工查询。2.3.7 员工离职管理 员工离职管理中主要有离职办理,离职员工信息查询两个模块,离职办理中,可进行离职,离职后的员工可以在离职员工信息查询中进行查询。2.4 可行性分析人事管理系统进行有效的可行性分析。可行性分析是世界上普遍采用的一种研究工程项目是否可行的科学技术。主要是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性的一种分析和研究,主要会从经济、技术、社会的方面来进行分析和研究,以减少项目开发风险,避免人力、物力和财力的浪费。新系统的目标确定后,就可以从以下三方面对能否实现新系统目标进行可行性分析: (1)技术可行性。根据新系统目标来衡量所需的技术是否具备,一般可从硬件、软件的性能要求、环境条件、技术人员水平和数量等方面去考虑和分析,其中开发人员的技术力量应首先考虑能力与水平,并考虑近期内可以培养和发展的技术人员。(2)运行可行性。本系统具有操作简单。系统功能、显示内容简单明了。操作者不必具有较高的计算机专业知识,也不必进行专门培训,只要经过短时间的操作就可以很快掌握并熟练使用。2.5 软硬件环境要求软件要求:l 版本控制:SVN-1.7.4l 数据库:oracle IDE:MyEclipse 10.0 系统平台:win7l 浏览器:IE浏览器l JDK:1.6版本以上l 中间件: Tomcat 6.0硬件要求:CPU Intel586/50MHZ或更高、内存在512MB或更高。第3章 系统总体设计3.1 系统总体架构 系统采用 MVC3三层架构,在C层对用servlet实现对用户的请求,再去调用service中DAO的借口实现对数据库中的操作,数据库是 oracle。人事管理系统 登录框员工入职管理岗位管理部门管理员工离职管理岗位调动管理部门调动管理试用期员工管理 人事管理系统的整体结构、功能模块MVC 架构 即模型,视图,控制器。 Model 实现系统的业务逻辑,表示企业数据和业务规则,通常对应着一些和数据库表映射的实体类和实现业务逻辑的方法。 View 层只负责界面的展示,对jsp文档。 Controller 层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以呈现,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。MVC中所有的用户请求都由 Controller 中的 Servlet 来处理,Servlet根据请求会从 View 层得到用户的输入,转换为对应的 Model 对象,然后把 Model 对象写入数据库进行数据持久化。相反 Controller 也负责从数据库中取出数据,封转成Model 对象,然后把Model 对象传到 View 进行显示。由于 MVC 的分层,模块之间的耦合性降低。视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。 本系统是完全基于MVC三层架构完成。3.2 功能模块细分与设计在这一部分,我们将各个子系统模块进一步划分子模块,划分的子模块与各个模块功能说明如下。3.2.1 部门管理模块部门管理模块主要包括新建部门、查询部门。如图所示:部门管理部门管理查询部门新建部门模块主要功能如下:(1) 新建部门,新建一个部门。(2) 查询部门,查询有哪些部门。用户新建部门部门列表部门管理3.2.2 岗位管理模块 岗位管理模块主要包括新建岗位、岗位列表、岗位删除。如图 所示: 岗位管理新建岗位岗位列表岗位删除岗位管理模块用例新建岗位岗位列表岗位管理岗位删除模块主要功能如下:(1)新建岗位,建立一个新的岗位。(2)岗位列表,可以查询出各个岗位。(3)岗位删除,删除一个岗位。3.2.3 员工入职管理模块 员工入职用于录入员工信息模块主要功能如下:(1) 录入员工信息3.2.4试用期员工管理模块试用期员工管理模块主要用于对试用期员工的操作。如图所示: 试用期员工管理试用期员工查询转正员工查询试用期员工管理模块用例试用期员工查询试用期管理转正员工查询 模块主要功能如下:(1) 试用期员工查询,主要用于查看试用期的员工。(2) 转正员工查询,主要用于查询转正的员工。3.2.5 部门调动管理模块 部门调动管理模块主要进行部门调动和已调动部门员工查询。如图所示:部门调动管理已调动部门员工查询部门调动部门调动管理用例部门调动部门调动调动员工查询模块主要功能如下:() 部门调动,对员工的部门进行更改。() 已调动部门员工查询,对已经调动部门的员工进行查询。3.2.6 岗位调动管理模块岗位调动管理 岗位调动管理主要进行岗位调动和已调动岗位员工查询。如图 3-8所示岗位调动已调动岗位员工查询岗位调动模块用例岗位调动岗位调动已调动岗位的员工查询模块主要功能如下:() 岗位调动,对员工进行岗位改变。() 已调动员工查询,对调动岗位的员工进行查询。第4章 系统详细设计详细设计阶段的任务就是把在总体设计阶段提出的比较抽象概括的解决问题的方法具体化,也就是“应该怎样具体地实现这个系统”。程序员可以根据详细设计进行代码的编写。在本阶段将包括系统的类设计和数据库的设计,确定实现模块功能所需要的算法和数据结构。41 系统类设计 系统的类设计是根据系统的用例图和总体设计时对系统的分析,抽象出系统的实体类,由业务逻辑抽象出一些处理系统业务逻辑的类包括一些数据结构和算法类,并进行数据的持久化。程序员可以根据类图进行编码实现系统的功能。4.1.1 实体类设计根据前面的分析需要我们抽象出了系统的实体类,这些实体类都需要进行持久化,它们和数据库中的表存在映射关系,为数据库表的设计提供了依据,实体类图如图 4-1 所示: 4.2 数据库设计4.2.1 数据库模型设计重要的部分数据库表的建设岗位表 (createdepartment)属性类型说明deptnovarchar(22)部门编号在22以内,为主键dnamevarchar(22)部门名称小于22位dstylevarchar(22)部门还是公司phonenumbervarchar(22)电话号码builddatevarchar(22)建立日期员工信息(checkin)属性类型说明useridvarchar(22)员工编号usernamevarchar(22)员工姓名sexvarchar(22)性别borndatevarchar(22)出生日期idcardvarchar(22)编号deptnovarchar(22)部门号pidvarchar(22)岗位idedtrydatevarchar(22)入职日期workdatevarchar(22)工作日期typevarchar(22)类型hirefromvarchar(22)离职yearbeginvarchar(22)开始yearendvarchar(22)结束politicvarchar(22)党员还是其他nationvarchar(22)出生地hometownvarchar(22)家乡emailvarchar(22)电子邮件heightvarchar(22)身高bloodvarchar(22)血型xueweivarchar(22)学位craduateschoolvarchar(22)毕业学校professionvarchar(22)教授craduatetimevarchar(22)毕业时间workvarchar(22)工作workredayvarchar(22)工作日期marriagevarchar(22)是否结婚psm(岗位管理)属性类型pidvarchar(22)pnovarchar(22)pnamevarchar(22)pstylevarchar(22)pmaxvarchar(22)varchar(22)firetable(离职表)属性类型idVarchar2(33)nameVarchar2(33)jobVarchar2(33)jobtypeVarchar2(33)partVarchar2(33)yearVarchar2(33)prikeyVarchar2(33)account(登录表)属性类型usernamevarchar(20)passworvarchar(20)第5章 源代码设计在完成需求分析、总体设计、详细设计的几个步骤、完成系统类图后接下来我们就可以编码实现了。在编码的阶段发现当员工的字段较多的时候,当从页面上传值,从request去取这些值的时候会有很多的get和set语句。在M层的BO和层的DTO进行数据转化的时候会出现很多类似的代码,在对数据库进行操作的时候也会出现这样的情况。对此就启发了我们是否能对此优化。经过反复的思考,利用反射机制,将这些操作都得以实现,提高代码的重用度,让程序看起来更加优雅,也具有相当的灵活性。5.1 对数据库的操作的部分代码package com.psm.model.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Set;import com.psm.model.dept.bo.DeptBo;import com.psm.model.dept.bo.DeptCheckin;public class DeptDao Connection conn; public DeptDao(Connection conn) this.conn = conn; public DeptDao() /* * 修改部门 */ public boolean alert(DeptBo user)throws SQLException boolean flag = false; if(user.getDeptno()!=null & !=user.getDeptno() PreparedStatement ps = conn.prepareStatement(update createdepartment set dname = ? ,dstyle = ?,phonenumber = ? ,builddate = ? where deptno = ?); ps.setString(1,user.getDname() ); ps.setString(2, user.getDstyle(); ps.setString(3, user.getPhoneNumber(); ps.setString(4, user.getBuilddate(); ps.setString(5, user.getDeptno(); ps.executeUpdate(); ps.close(); flag = true; else flag = false; return flag; /* * 删除一个部门 */ public void deptdel(String deptno)throws SQLException PreparedStatement ps = conn.prepareStatement(delete from createdepartment where deptno=? ); ps.setString(1, deptno); ps.executeUpdate(); ps.clearBatch(); /* * 新建一个部门时向数据库中插入一个新的部门 */ public void insert(DeptBo user)throws SQLException PreparedStatement ps = conn.prepareStatement(insert into createdepartment values(?,?,?,?,?); ps.setString(1, user.getDeptno(); ps.setString(2,user.getDname() ); ps.setString(3, user.getDstyle(); ps.setString(4, user.getPhoneNumber(); ps.setString(5, user.getBuilddate(); int i=ps.executeUpdate(); ps.close(); /* * 查询一个部门的全部员工 */ public List inquiry(String deptno)throws SQLException List list = new ArrayList(); System.out.println(33); PreparedStatement ps = conn.prepareStatement(select userid,username,sex,deptno,type from checkin where deptno = ?); ps.setString(1, deptno); ResultSet rs = ps.executeQuery(); while(rs.next() DeptCheckin dc = new DeptCheckin(); dc.setDeptno(rs.getString(deptno); dc.setSex(rs.getString(sex); dc.setType(rs.getString(type); dc.setUserid(rs.getString(userid); dc.setUsername(rs.getString(username); list.add(dc); System.out.println(44); System.out.println(list); return list; /* * * param deptno * return * throws SQLException */ public List checkup(String deptno)throws SQLException List list = new ArrayList(); PreparedStatement ps = conn.prepareStatement(select deptno,dname,dstyle,phoneNumber,builddate from createdepartment where deptno = ? ); ps.setString(1, deptno); ResultSet rs = ps.executeQuery(); while(rs.next() DeptBo usercreate = new DeptBo(); usercreate.setDeptno(rs.getString(deptno); usercreate.setDname(rs.getString(dname); usercreate.setPhoneNumber(rs.getString(phoneNumber); usercreate.setDstyle(rs.getString(dstyle); usercreate.setBuilddate(rs.getString(builddate); list.add(usercreate); return list; return null; /* * 根据 编号 和 名称 以及部门查找部门信息 */ public List lookup(HashMap has)throws SQLException List list = new ArrayList(); String s = ; Set keys = has.keySet(); Iterator it = keys.iterator(); System.out.println(ssssssssss lookup); while(it.hasNext() String keyName = (String)it.next(); String value = (String)has.get(keyName); if(!value.equals() & value!=null) s=s+keyName+ = +value+ +and ; System.out.println(s); s=s.substring(0,s.length()- 4); String sql = select deptno,dname,dstyle,phoneNumber,builddate from createdepartment where + s ; PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); while(rs.next() DeptBo usercreate = new DeptBo(); usercreate.setDeptno(rs.getString(deptno); usercreate.setDname(rs.getString(dname); usercreate.setPhoneNumber(rs.getString(phoneNumber); usercreate.setDstyle(rs.getString(dstyle); usercreate.setBuilddate(rs.getString(builddate); list.add(usercreate); return list; service的核心代码public boolean registerSuccess(String uname, String upass, String uemail,String image) boolean flag=false;Session session=sessionFactory.openSession();Transaction tx=session.beginTransaction();User user=new User();user.setUname(uname);user.setUpass(upass);user.setUemail(uemail);user.setImage(image);Serializable seria=session.save(user);if (seria!=null) flag=true;tx.commit();session.close();return flag;5.3 数据库的更新操作package com.psm.model.dept.service;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import com.psm.ctrl.dept.dto.DeptCheckinDto;import com.psm.ctrl.dept.dto.DeptDto;import com.psm.model.dao.DeptDao;import com.psm.model.dept.bo.DeptBo;import com.psm.model.dept.bo.DeptCheckin;public class DepartmentService private DeptDao userdao; private Connection conn; /* * 进行数据库连接 */ public DepartmentService() try Class.forName(oracle.jdbc.driver.OracleDriver); catch (ClassNotFoundException e) e.printStackTrace(); try conn=DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:orcl,scott,tiger); catch (SQLException e) e.printStackTrace(); userdao = new DeptDao(conn); /* * 删除部门 */ public boolean delservice(String deptno) System.out.println(2); boolean flag = false; List list;try list = userdao.inquiry(deptno); if( list.size()=0) try System.out.println(3); conn.setAutoCommit(false);userdao.deptdel(deptno);conn.commit();flag = true; catch (SQLException e) e.printStackTrace(); else try conn.rollback(); catch (SQLException e) e.printStackTrace(); flag = false; catch (SQLException e1) e1.printStackTrace(); return flag; /* * 查询部门员工 */ public List inquiryemploy(String deptno) List list = new ArrayList(); try List li = userdao.inquiry(deptno);if(null!=li & !li.isEmpty()Iterator it = li.iterator();while(it.hasNext()DeptCheckinDto dpdto = new DeptCheckinDto();DeptCheckin bo = (DeptCheckin) it.next();dpdto.setDeptno(bo.getDeptno();dpdto.setSex(bo.getSex();dpdto.setType(bo.getType();dpdto.setUserid(bo.getUserid();dpdto.setUsername(bo.getUsername();list.add(dpdto);System.out.println(list); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace(); return list; /* * 判断是否已经存在了一个部门 */ public boolean checkdp(DeptDto dto) /List list1 = new ArrayList(); String number = dto.getDeptno(); try List list = userdao.checkup(number);if(null=list | list.isEmpty() catch (SQLException e) e.printStackTrace();return true; /* * 修改部门 */ public boolean alertinfo(DeptDto userdto) boolean flaga =true; DeptBo ucreate = new DeptBo(); ucreate.setDeptno(userdto.getDeptno(); ucreate.setDname(userdto.getDname(); ucreate.setDstyle(userdto.getDstyle(); ucreate.setPhoneNumber(userdto.getPhoneNumber(); ucreate.setBuilddate(userdto.getBuilddate(); try boolean b = userdao.alert(ucreate); conn.setAutoCommit(false);if(b = true) conn.commit(); flaga = true;elseflaga = false;conn.rollback(); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace();System.out.println(5);return flaga; /* * 创建一个新部门 */ public boolean insertInto(DeptDto userdto) boolean flaga =false; DeptBo ucreate = new DeptBo(); ucreate.setDeptno(userdto.getDeptno(); ucreate.setDname(userdto.getDname(); ucreate.setDstyle(userdto.getDstyle(); ucreate.setPhoneNumber(userdto.getPhoneNumber(); ucreate.setBuilddate(userdto.getBuilddate(); try boolean flag =checkdp(userdto);if(flag=true) conn.setAutoCommit(false); userdao.insert(ucreate); conn.commit(); flaga = true;elseflaga = false; catch (SQLException e) e.printStackTrace();try conn.rollback(); catch (SQLException e1) e1.printStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace();return flaga; private boolean check(DeptDto userdto) / TODO Auto-generated method stubreturn false;/* * 取得查询信息 */ public List getPartment(HashMap has) List listdto = new ArrayList(); List listdao = null ; System.out.println(&7777); try listdao = (List)userdao.lookup(has); if(null!=listdao & !listdao.isEmpty() Iterator it = listdao.iterator();while(it.hasNext()DeptDto ucdto = new DeptDto();DeptBo udao = (DeptBo)it.next();ucdto.setDeptno(udao.getDeptno();ucdto.setDname(udao.getDname();ucdto.setPhoneNumber(udao.getPhoneNumber();ucdto.setDstyle(udao.getDstyle();ucdto.setBuilddate(udao.getBuilddate();listdto.add(ucdto); catch (SQLException e) e.printStackTrace();finally try conn.close(); catch (SQLException e) e.printStackTrace();/return listReturn;return listdto; 第6章 系统测试测试是为了发现程序中的错误而执行软件的过程,成功的测试是发现了至今尚未发现的错误。系统在发布之前要经过严格的测试过程,QA 要对软件的功能、性能等方面进行全面的测试,测试人员不仅要发现 bug 而且要确保发现的 bug 被正确修复。开发人员要写单元测试,保证自己写的每一个方法都是正确的,还要测试代码的覆盖率保证测试用例能够覆盖尽可能多的路径和代码。测试是为了保证软件的质量,软件质量需要由开发人员和测试人员共同保障,测试在软件生命周期中扮演者非常重要的角色,测试介入的越早越好,最好从需求阶段就开始介入,这就是通常所说的双 V 模型,小的系统自己测试一下就行了,但是大的项目必须经过严格的测试过程才能发布,这样软件的质量才能得到保障,项目才能够取得成功。6.1 黑盒测试和白盒测试对于软件测试而言,黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又成为功能测试。与黑盒测试法相反,白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。白盒测试又称结构测试。6.2 测试准则为了能设计出有效的测试方案,软件工程师必须充分理解并正确运用指导软件测试的基本准则。主要的测试准则如下:1. 所有的测试都应该能追溯到用户需求;2. 应该在测试开始之前的相当长时间就制定出测试计
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!