一、软件测试
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面向对象设计、多线程、单元测试等的认识得到了加深。总体来说,令我受益良多。
|