【《企业员工绩效管理系统的实现与测试分析案例》7100字】_第1页
【《企业员工绩效管理系统的实现与测试分析案例》7100字】_第2页
【《企业员工绩效管理系统的实现与测试分析案例》7100字】_第3页
【《企业员工绩效管理系统的实现与测试分析案例》7100字】_第4页
【《企业员工绩效管理系统的实现与测试分析案例》7100字】_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

企业员工绩效管理系统的实现与测试分析案例目录TOC\o"1-3"\h\u18787企业员工绩效管理系统的实现与测试分析案例 022511系统实现 0122641.1整体框架的搭建 031401.1.1基础环境安装 0156241.1.2Nacos安装 0267181.1.3Sentinel安装 2163581.1.4Bladex整体配置 3136631.2系统的模块划分以及具体实现 317141.2.1基础模块 3193751.2.2系统用户等级模块 4100531.2.3员工管理\工资管理模块 5216491.2.4员工绩效填写\审核\计算模块 934501.2.5员工请假\加班填写\审核模块 10239402整体测试 1314092.1概述 13276272.2测试用例与结果 13269982.3测试结论 151系统实现1.1整体框架的搭建1.1.1基础环境安装人员综合评价管理系统是基于SpringBoot的框架Bladex进行搭建开发的,首先要针对Baldex框架进行整合其中依赖SpringCloud的各种基础配置,首先要对最最基本的各种环境进行安装,包括Java8、Maven、MySQL、Redis、NodeJS等。1.1.2Nacos安装需要进行Nacos的安装,首先通过git命令,在GitHub上面下载源码获取到对应的目录结构,然后找到bin目录其中包含了Windows环境下的启动脚本startup.cmd。可以直接使用命令将其启动,不过在目前有限的服务器限制下需要在指令后面加入参数即’cmdstarup.cmd-mstandalone’使Nacos在单机模式运行而非集群模式。同时若想要关闭服务即可直接使用对应的shutdown.cmd。开启之后便可直接访问默认地址http://localhost:8848/nacos查看nacos监控界面效果。如图1.1和图1.2。图1.SEQ图\*ARABIC\s11nacos登录界面图1.SEQ图\*ARABIC\s12nacos监控界面在本项目中使用Nacos主要在于分布式架构中往往伴随CAP的理论。其中P代表了分区容错,在整个系统中如果某个节点出现问题不会直接导致整个系统的运作失常,可以通过切换到其他可用的节点来恢复正擦使用。C表示着高一致性,通常在整个分布式架构中会存在一个Leader用于写操作并转发通知其他节点进行同步。A表示高可用,保证每个请求都会得到一个响应,无论响应成功或者失败。理论上来讲CAP不可能同时保证,现在主流的注册中心如Zookeeper、Eureka都是分别注重CP和AP。而Nacos同时支持AP和CP模式,可以通过服务注册使得选择来决定是AP模式还是CP模式。1.1.3Sentinel安装Sentinel安装方式比较简单可以直接在github上获取对应的jar包直接使用java指令启动。使用Sentinel的目的主要在于Sentinel有着丰富的应用场景,在秒杀情况下可以防止突发的流量超过系统可以承受的范围,对消息进行削峰和填谷,控制集群流量,及时的熔断一些下游不可用的应用等。同时提供了非常完善的实时监控系统,开发者可以通过控制台查看到接入应用的数据。除此之外Sentinel还有着非常广泛的开源生态,提供开箱即用的框架或库的整合,例如与SpringCloud,Dubbo的结合,只需要引入相应的依赖并进行简单的配置即可快速接入Sentinel。Sentinel监控界面如图1.3和图1.4。图1.SEQ图\*ARABIC\s13sentinel登录界面图1.SEQ图\*ARABIC\s14sentinel监控界面1.1.4Bladex整体配置打开Bladex项目框架之后,需要修改Springboot的yml配置文件来通知Bladex使用之前配置的各种准备环境。首先找到application.yml直接修改数据库的设置使其使用本地的数据库,导入Nacos配置找到工程doc/nacos/blade.yaml文件,修改nacos中点发布内容,因为是部署在windows服务器,所以需要避免中文注释或者进行unicode转码,以防乱码导致启动失败。之后进入Nacos管理平台进行配置,新建配置新增blade-dev.yaml、blade-flow-dev.yaml配置,主要是配置mysql与redis的地址,保证服务可以正常启动。1.2系统的模块划分以及具体实现1.2.1基础模块登录时序图如图1.5。图1.SEQ图\*ARABIC\s15登录时序图Bladex的登录方式使用Token模式,与传统的cookie和session登录方式有所不同token登录方式为用户发送登录请求和账号密码,服务通过内部的算法生成token并进行存储然后发送回用户端。这样做的好处是避免了cookie,session遭遇攻击而对客户的隐私造成侵犯,同时又有效的减少了内部计算时长和IO读写次数。在某些应用场景下用户由于网络延迟会出现一些重复提交申请操作,用户在无感知的情况下会对服务器造成很大的压力,浪费很多不必要的资源,而token可以很好的解决这种情况。在用户表方面这部分功能使用雪花id实现新建用户使生成主键。大多数情况下程序员会通过使主键自增来避免插入操作时对主键id的操作,这样的操作可以虽然满足基本需求,然而bladex主要是集中在分布式方面,雪花ID在这方面可以比普通自增id有更多的应用场景。1.2.2系统用户等级模块请求时序图如图1.6。图1.6请求时序图Bladex虽然已经实现了基础的用户管理功能,但是其功能并不足够完美,本项目需要的特定的系统用户等级模块依旧需要进行额外的操作。但Bladex还是可以省下大量的时间,需要做的只是在其基础的用户管理基础之上进行添加修改。为了满足这种应用场景需要添加新的数据库用户表用来存储系统所需要的用户的各种信息。然后找到bladex自带的用户数据表,通过观察可以发现bladex使用blade-user表记录用户的登录信息和基本信息,其中包含一个字段role_id来记录其对应的用户权限,顺着这个信息可以找到blade_role表,这个表就是bladex用来记录权限相关的数据表。若要实现需求的功能只需要将新建的用户表与这个blade_role表进行关联。在用户登录到系统的时候可以获取到对应用户在role表中的信息,通过信息中包含的关联字段即可以读取到用户在新设计的表中的数据来实现想要的用户权限管理功能。上述的做法有着优化的空间,用户权限管理主要是为了防止低等级的用户查询到不可被其查看的数据。而正常的做法需要每次都去查询结果再进行判断,这种方式虽说并不会对整体性能造成太大的影响,但本着学术、性能最优的观念可以对其进行小幅度的性能提升。由于整个系统所要求的权限用户并不多(目前仅有四种权限),可以通过在内存中记录对应的权限标识,这样可以使用在用户登录的过程中就得到的权限标识与内存中记录的标识进行对比,从而减少后续逻辑操作的同时减少对数据库的访问。值得一提的是存储在内存中的数据完全不需要借助Redis等nosql高性能缓存,通过最简单的java静态变量即可,这样不仅省去了操作redis的代码编写,同时减少了服务与redis通讯连接带来的消耗。这里也可以利用java的一些技巧,使用枚举类型代替普通常量。这样做的好处在于数据进行转换时避免异常的发生。最终用户管理效果如图1.7可以在此界面进行权限管理配置相关权限内容。图1.7权限管理效果图1.2.3员工管理\工资管理模块添加新员工时序图如图1.8。图1.8添加新员工时序图对此模块进行需求分析不难发现,这个功能的实现是基于用户权限的,只有拥有人事的管理权限才可以使用这部分的全部功能。在这方面通过上述的权限管理可以实现前面一部分的功能,在识别了人事权限之后,系统会为其提供相关的界面和功能按钮,人事权限可以在功能管理-用户管理界面添加新的用户在角色管理界面为其添加权限。在人员管理-工资管理界面添加对应的工资信息,在工资查看界面使用生成工资按钮核算绩效并生成对应工资。这部分的功能需要手动实现,本章节主要描述除核算工资外的所有功能。在已经获取了对应的权限并提供了功能接口和界面的情况下。系统管理以及权限管理为bladex提供并且已经做了相关修改,主要需要实现的便是添加了新的用户之后要在工资管理界面生成对应的员工信息,和空的工资信息。员工工资表即在权限管理模块添加的新的功能表blade_staff,这里面记录了员工的基本工资信息和休假信息。需要将这个表与blade_user进行新的关联,然而这部分管理的主要逻辑为当blade_user表进行插入操作的时候blade_staff需要获取到blade_user的插入信息。这部分功能若果想要直接sql进行操作会变得非常麻烦,同时上文也曾提及blade的user主键是使用雪花id算法进行生成的,可以说是完全找不到生成的规律。在并发的情况下也完全杜绝了查询user最后生成的数据的id来进行关联的可能性。所以这部分的主要实现全部移植到java的代码部分,在blade添加用户的接口中找到对应的user数据并生成staff的orm实体对象数据,在user插入数据成功之后进行staff的插入操作。这种做法将原本的sql操作转为了逻辑操作也将需要关注的重心从sql语句的实现到数据库事务的管理层面,需要保证数据的一致性,即user表中插入的部分字段数据要和我们staff表中的同类型字段数据保持一致。通过springboot的@Transactional注解将service接口直接声明为事务接口,这样就可以将两个插入过程融合到一个事务当中,这样当user数据插入失败的同事数据库会直接进行数据回滚操作。需要注意的是由于blade-x主要提供了分布式的框架,所以blade本身的用户模块是单独搭建的,所以想要调用blade的user模块就需要使用fegin进行远程调用。Fegin是SpringCloud组件中用作远程服务调用的组件。与Dubbo不同,Fegin是一个声明式的HTTP接口,它可以使HTTP客户端变得的简单,使用Fegin只需要创建一个接口并添加一个注解。Fegin有着可以插拔的特性,可以与Nacos进行搭配使用,默认实现了负载均衡,底层使用了HttpClient作为服务器框架,在写法上仅需要使用fegin的注解实现controller接口即可调用对应的serveice服务。现在流行的远程调用方式有两个,一个是RPC调用,RPC是用来处理不同机器的进程与进程之间的相互通讯过程。在网络方面不实现应用层协议,通常直接利用tcp协议通过socket直接进行交互。Fegin所提供的远程调用方式是基于HTTP协议进行的,即服务提供者提供一个正常的网络接口,服务消费者直接通过类似web用户请求服务器的过程直接得到具体服务的返回结果。从效率上来看RPC没有http协议繁琐的过程从而使服务调用速度变快,但是对于开发者而言处理RPC需要一定的技术支撑,但对HTTP请求对于web开发者而言可谓是基础中的基础,对于一些公司而言会降低一些成本。关于用户管理模块中包含的工资模块,需要新添加achievement表用于记录绩效相关内容,结合工资及请假加班信息进行工资核算。针对其余用户权限,普通员工仅能看到工资界面且不可以做任何的操作,这部分内容可以直接通过获取权限控制返回内容实现,另外普通员工仅可以查看自己的工资相关内容。这部分需要进行特殊处理,如果仅通过权限判读会使其拥有读权限进而获取所有的信息,所以在调用查看接口时需要额外获取员工id来进行条件查询。计算工资流程图如图1.9。图1.9计算工资流程图此模块应根据不同公司需求制定工资核算公式,本项目默认使用公式为,普通工资除以当月工作日乘出勤天数(当员工请假时出勤天数会按照请假信息减少)加绩效工资乘绩效评级。此处绩效评级S为绩效工资乘1.2,A为绩效工资乘 1.1,B为普通绩效乘1.0,C为普通绩效乘0.9,D为普通绩效乘0.8。涉及到小数计算同样适用Bigdecimal解决精度缺失问题。计算工资功能应当由人事权限在月末使用一次,使用多次的话会产生重复数据需手动处理。当员工请假且无加班调休的情况下,调休时间会变成负数,当使用计算工资功能后会自动清零。工资管理界面效果如图1.10,不同权限可以看到的结果内容不完全相同。图1.10工资管理界面点击生成工资按钮即可生成本月工资。1.2.4员工绩效填写\审核\计算模块绩效填写审核流程时序图如图1.11图1.11绩效填写审核时序图这部分主要需要实现所有级别的用户都可以在绩效管理界面填写绩效内容,经理(管理员)可以对填写的绩效内容进行审核。需要在数据库中添加新的用于存储绩效信息的表blade_achievements。同时使此表的主键与员工信息表和blade_user表进行关联。普通员工进行填写操作服务器端仅为普通的插入、修改操作,然而有一些字段上的要求则可以完全移交给前端进行判断减少服务器压力,需要遵循blade-saber的填写原则进行修改,找到新建立的绩效管理页面的对应文件achievement.vue在添加字段的模板处为需要校验的字段添加校验方式,如项目数量require=true使此字段为必填字段。也可以通过trigger来设定字段的类型,如使项目完成度为数字类型trigger=number。针对经理(管理员)权限,在添加所有增删改查权限的基础上还要实现对员工工作绩效的评分,正常的实现需要一个新的数据单元来管理这部分内容,然而比较简单的方式就是使得绩效评分内容作为一个新的字段加入到绩效表中,这样使得绩效评分操作从一个独立的操作变为对绩效表的update操作,大大减少了逻辑深度和工作量。关于绩效最终等级的计算公式为项目完成度-(项目缺陷度*项目修改完成度/100)+项目计划完成度+评分的最终结果除以300保留小数点后两位四舍五入,若结果小于0.9则为D,大于0.9小于1.0则为C,大于1.0小于1.1则为B,大于1.1小于1.2则为A,大于1.2则为S。判断结果以字符串的格式存入数据库取出时使用字符串的equals进行判断,此处不使用枚举主要是与数据库进行兼容。由于计算时涉及到小数,需要使用java的bigdecimal进行处理,Bigdecimal是java.Math包中提供的API类,可以对小数进行精确的运算,防止java浮点数的精度缺失问题。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。BigDecimal所创建的是对象,不能直接使用运算符直接进行运算操作,需要使用其提供的方法进行具体的运算。方法中的参数也必须是BigDecimal的对象。绩效管理页面效果如图1.12,不同权限看到结果不完全相同,仅管理员有评分按钮,可以通过评分按钮对绩效进行评分得出绩效评级。图1.12绩效管理页面1.2.5员工请假\加班填写\审核模块请假加班审核流程如图1.13。图1.13请假申请审核流程此模块与绩效模块大致相同,主要实现所有权限可以申请加班或请假,经理(管理员)可以对请假/加班申请进行审批。此模块在逻辑上比较复杂,员工提交请假申请需要根据不同公司规定制定不同的请假要求,需要管理员人工查验,当管理员通过申请则需要在员工表中修改调休字段数值。因此同样需要进行数据库事务操作,此处由于涉及的数据库操作较多可以使用MYSQL的存储过程,将操作流程封装简单调用,同时此处涉及到多线程安全问题,在查询时应当在select语句后加入forupdate关键字为查询的数据添加写锁,保证多人操作时避免数据紊乱。请假加班界面效果如图1.14不同权限看到结果不完全相同,管理员可以通过或驳回按钮对数据进行操作,并修改对应数据的审批状态。图1.14请假加班管理页面

2整体测试2.1概述软件测试主要是用来检验项目最终的成果,查看实现的逻辑功能是否与预期相符,识别计算机软件的正确性、完整性的软件过程。软件测试的最终标准在于用户的主要需求。最大的缺陷在于无法满足用户的需求,要进行测试就需要指制定对应的测试标准。软件测的方式有很多种,大致可以分为单元测试、集成测试、确认测试、系统测试、验收测试等。在人员综合评价管理系统的测试中,主要采用黑盒测试对整体的逻辑功能进行测试,通过各种逻辑需求进行使用并查验结果。2.2测试用例与结果员工功能测试用例和结果如表2.1。需求操作预期结果员工登录展示界面用普通员工登录系统观察展示出的界面人员管理-工资查看,请假加班管理-请假加班,绩效管理-绩效管理。符合预期员工工资查看进入工资界面查看结果仅有查看权限,且仅能看到自己的记录。符合预期员工请假加班进入请假加班界面查看结果可以添加、修改记录,可以查看且仅能查看自己的记录。符合预期员工添加请假加班申请点击添加按钮,添加相关内容后点击提交查看结果员工姓名、原因、开始结束时间、类型(请假或加班)为必填选项,附加说明为选填,可以成功添加,刷新出对应数据。符合预期员工绩效查看进入绩效页面查看结果可以添加记录,可以查看且仅能查看自己的记录。符合预期员工绩效填写点击添加按钮,添加相关内容后点击提交查看结果员工姓名、项目数量、完成度、缺陷修改完成度、计划完成度、项目名称、项目描述、具体内容创建时间为必填,附加说明为选填,可以添加成功,刷新出对应数据。符合预期表2.SEQ表\*ARABIC\s11员工功能测试用例表管理员功能测试用例和结果如表2.2。表2.SEQ表\*ARABIC\s12管理员功能测试用例表需求操作预期结果管理员登录展示界面使用管理员账户登录系统查看展示内容人员管理-工资查看,请假加班管理-请假加班,绩效管理-绩效管理。符合预期管理员工资查看进入工资界面查看结果拥有查看所有人的工资权限,可以看到所有记录。符合预期管理员请假加班管理进入请假加班界面查看结果可以查看所有人的请假加班记记录包括申请记录,可以对记录进行增删改查操作,并且所有操作可以全部成功。符合预期管理员通过\驳回请假\加班申请选中请假条目并点击通过\驳回按钮并查看结果在当前页面审批状态显示已通过\未通过,并且在人员工资管理界面可以看到对应换休时间的正确修改符合预期管理员绩效管理进入绩效界面查看结果,并选中条目进行评分拥有增删改查权限,查看所有提交的绩效记录,可以对绩效进行评分,并生成对应评级。符合预期人事权限测试结果及用例如表2.3。表2.SEQ表\*ARABIC\s13人事权限功能测试用例表需求操作预期结果人事登

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论