电梯调度(结对项目)④

一、软件测试

1.1 单元测试

在开发过程中,为了减少函数内逻辑错误导致程序出bug的概率,我们采用JUnit3对部分类的函数进行了单元测试。进行单元测试的函数包括GetPeopleIn(), GetPeopleOut(), HasPeopleOut(), GetNearestPsg(), GetMaxFloorPsg()等。以下为其中一个测试

public void testGetMaxFloorPsg()
    {
        EleController controller = new EleController();
        Passenger passenger1 = new Passenger(100, 2, 6, 1, 1);
        Passenger passenger2 = new Passenger(100, 1, 8, 2, 1);
        Passenger passenger3 = new Passenger(40, 8, 1, 3, -1);
        List<Passenger> passengers = new LinkedList<>();
        passengers.add(passenger1);
        passengers.add(passenger2);
        passengers.add(passenger3);
        controller.setPsgRequestList(passengers);

        assertEquals(8, controller.getMaxFloorPsg(1, 1, 1));

        passengers.remove(0);
        controller.setPsgRequestList(passengers);

        assertEquals(2, controller.getMaxFloorPsg(1, 1, 1));

        passengers.remove(0);
        controller.setPsgRequestList(passengers);

        assertEquals(1, controller.getMaxFloorPsg(1, 1, 1));
    }

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

1.2 黑盒测试

下面是10个测试用例

测试用例描述
无输入电梯正常运行
重量70 起始楼层1 终点楼层10电梯正常接客
重量100*5人多请求时电梯正常接客
重量100*5人 电梯2个多电梯时正常接客
重量100*10人超重时无法接客
起始楼层-2起始楼层非法
终点楼层21终点楼层非法
起始楼层1 终点楼层-1载客状态电梯不接与自身运行方向相反的乘客
起始楼层1 重点楼层-1未载客状态sstf算法由上行转为下行
更改任意合法电梯参数可以顺利更改电梯参数并运行

二、性能比较

由于乘客时随机生成的,数值不一定一致。

评价标准为总人数达到50时服务人数/总人数

Bus:0.3

SSTF:0.48

LOOK:0.34

三、结对项目总结

2.1 结对编程的优点

通过结对编程,开发者互相之间可以起到督促鼓励的作用。同时,两人所擅长的领域也可以形成互补,当其中一个开发者遇到了有困难的点,也可以向另一个人请教,这大大节省了开发时间,提高了开发效率。
然而,结对编程也有一些缺点。当两个开发者代码风格不够统一时,容易出现难以读懂对方代码的情况,进而影响进一步的开发。同时,如果一个人对自己负责的内容出现的bug不够熟知时,也会进而引发其他的bug。

2.2 个人优缺点

邓圣禹
优点:参与过Java语言项目开发,对开发流程较为熟悉。代码习惯较好。
缺点:拖延症太严重,耽误开发流程。

崔文光:
优点:搜集资料能力较强。善于沟通,编程速度快思路清晰,不拖泥带水。
缺点:对多线程开发方面的知识不够熟悉。

2.3 结对过程

由于开发时期正值寒假,我与崔文光同学无法在线下见面,于是采用了线上沟通的方式完成项目开发。我们于1月27日完成讨论,确定并开始了开发流程。由于对git的不熟悉,一开始的进度并没有按时提交到仓库中,而是在中期代码体积逐渐庞大后使用了git进行项目管理。
在结对开发过程中,我完成了第一阶段类的定义,并基本完成了第二阶段的bus调度算法。崔文光同学完善了bus调度算法,并完成了sstf、look调度算法与ui界面的开发。同时,我对ui界面逻辑进行了调整与改善,并进行了单元测试。此外,我们合力完成了博客与文档的撰写。
由于只能在线上沟通,我们无法提供线下版两人在讨论的结对照片,于是将线上结对讨论过程进行了截图记录如下。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.4 技术亮点与难点

技术亮点
  • 支持各种信息实时显示
  • 算法效率较高
技术关键点
  • 使用多线程技术,防止进程崩溃
  • 使用了大量单元测试,提高代码鲁棒性
遇到的技术难点
  • 进程创建问题
  • 同步函数问题
待完善之处
  • 接口较为混乱
  • 功能仍需完善
  • 前端样式可以进一步美化

2.5 其他收获

通过这次结对项目,我意识到了拖延症是一种可怕的坏习惯,会严重影响合作开发进度。同时,我搜集资料的能力也得到了提高,对java面向对象设计、多线程、单元测试等的认识得到了加深。总体来说,令我受益良多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值