软工三的这个大作业需要在前人的框架基础上完成一个工程,和之前其他课程相比,有一种小学期的感觉,只不过并没有小学期那么充足的时间。
十一期间比较颓废,ftp几乎什么都没做,直接导致迭代一的大部分时间内在补ftp的坑。好在组长百忙之中熟悉接口并完成了大部分基础功能,迭代一ddl前粗暴地处理完的抢票逻辑再简单测试一下性能似乎也还算是说得过去。
迭代二我的主要任务是(迭代一未能开始的)功能测试和单元测试。课件的内容非常清晰,但刚开始写时并不顺利。在逐渐熟悉组长实现的接口后,在阅读django和selenium的相关文档的过程中,思路渐渐明朗起来。写完功能测试后又开始写一些接口的单元测试,宛如智障的我突然意识到之前写的功能测试里的部分内容实际上很容易转化为单元测试,于是单元测试写起来的压力小了一些,不过还是要重点测试一下功能测试未覆盖的部分。此外,单元测试部分很多功能用django的fixtures比用mock要善良很多,大部分坑在功能测试部分已经踩过了。
最后再简单总结一下遇到的问题吧。
首先是时间分配问题。大三开学之后明显感到比之前要忙得多,作业们铺天盖地拔山倒树而来,之前学期养成的拖延症似乎即将得到根治。
其次是经常遇到各种bug(似乎这个在写任何作业的过程中都必然遇到的问题似乎不应该在这里出现)。从最初的mysql安装到最后完成的各种测试,似乎没有没有bug的地方。
可能真正应该谈的问题是两个人的分工合作(及与之相关的计划)。按计划大致相当于按功能和测试分工,然而这实际上并不科学。理想情况下应该在完成一部分功能后(如果TDD的话,“完成一部分功能前”)及时测试并改正功能的bug,而我们是组长写功能,我写测试,然后一起(用大量的精力)改功能的bug和测试的bug。按功能和测试分工唯一的优点是开始时两个人只需要理解部分内容,容易上手,但在之后的开发过程中效率明显较低,得不偿失。