此次持续集成实验是基于Travis CI集成的一个Django项目;该项目已经完成前端框架以及部分的后端框架,我们小组(4人)需要做的是在该基础上完成后端框架以及进行一定的优化。此次实验,我负责的是:
- Travis CI集成
- Django单元测试的调研
- 后端与微信公众号相关的接口部分(Handler.py)的实现与测试。
本次实验小组集中开发持续一周,最终完成项目所需功能,并进行相应的单元测试、功能测试以及性能测试与优化。
整个过程熟悉了持续继承开发的流程,微信公众号平台的开发以及git的使用。
Git
- 由于是小组作业,因此
必须
使用Git;我们在操作系统课上基本使用过git,在本次实验过程中,小组成员更加熟悉对于git的操作。
Travis CI
这一块是由自己做的,详见https://www.jianshu.com/p/951ce2fb255d
这一模块自己先踩了一个巨坑,由于自己开始调研时不够全面,先使用了https://travis-ci.org,导致我一度认为travis CI仅仅支持公开库,使得我们的项目一度公开了一段时间,之后为了保证各种私密性,使用Travis对文件加密,感谢Nan同学的提醒,我才了解到私有库也可以支持,不过是在https://travis-ci.com上,好在我们的项目在写核心代码之前就已经设成私有库,因此对我们影响不大;同时感谢Chen同学的提醒,我于是抛弃加密方式,将部署和测试的settings分开。
Travis CI的博客见:https://www.jianshu.com/p/951ce2fb255d至于感想:
觉得Travis CI真的好用,以前小组作业时,并没有使用过Travis,因此每次merge的时候都有些胆战心惊,毕竟没有人会全部看完其他分支的代码,但是现在有了测试,有了Travis的自动build,我们只有发起pull request后build成功才会进行merge,能够降低误操作率。
测试
单元测试:单元测试非常重要,我们会进行测试,即A写B实现的单元的测试类,B写C的,依次类推。我们在后续的修补bug后,务必先得通过测试,才能push,只有在Travis上build成功,才能merge。
Django的单元测试的博客见:https://www.jianshu.com/p/5533c866453a锁的测试
我们经过讨论,最终决定每次加锁时使用悲观锁,加锁的位置也应该注意:仅在需要修改数据的时候加上。
我们也进行了对锁的正确性的测试:给定100张票,1ms内10000个人请求,最终成功抢到票的人数 + remain_tickets = 总票数;以及同时10000个人退票,最终成功退票的人数 = remain_tickets。我们进行了各种测试,最终能够保证我们的锁的正确性。功能测试
能性能测试
测试的详细说明在我们的文档中有详细介绍。
微信公众号平台开发
- 熟悉了如何开发微信公众平台
总结了如何对微信公众号接口进行单元测试,博客见:https://www.jianshu.com/p/e33d248482f3
小组管理与分工总结
- 鉴于上次我们小组的分工不明确,我们此次的任务分工都比较明确,且互不相关。
- 我们的每个迭代周期完成后产品都可以使用