本文章主要总结本此课程大作业(“持续集成开发”微信抢票应用)的经验。
主要分为以下及部分:
1.个人分工
2.开发环境配置经验
3.代码实现教训
4.写各种测试的感受
5.个人总结
1.个人分工
在本此开发实践中我主要负责下面模块:
- 管理员用户的部分api接口(7个接口)的实现及自动测试
- 程序压力测试
下面是开发过程中撰写的一些博客。
微信公众平台测试接口号部署
Django单元测试
JMeter安装及使用
2.开发环境配置经验
我觉得开发过程中,配置好每个成员的开发环境是非常重要的。
我们本此实验可用的环境资源有:
- 腾讯云服务器(ubuntu16.04):需要配置MySQL、Nginx等环境。
- Git私有库:需要配置Travis。
- PyCharm专业版:需要配置与服务器的远程同步。
流程
我们首先给服务器配置了Anaconda,给每个人建立了账户,这样就可以各自跑自己的代码了。然后配置好了PyCharm与服务器的同步。
下面重要的是Travis的部署,我们组的一个同学在前期专门负责配置Travis,事实证明,配置好Travis的配置对于后来的开发是非常重要的。保证了每一步的测试正确性。
踩坑
环境配置过程中总共踩坑两次,一个是Travis配置,因为Travis是有自己的服务器环境的,所以在测试的时候,不能简单的用python的requests发送请求,而是应该使用Client类来实现。
二是MySQL的配置,最开始的时候我们使用的是默认配置,最后一天晚上发现字符编码报错,然后又改了数据库的默认设置。
感受
- 开始阶段开发环境的统一、规范是非常有必要的
- 需要提前调研开发技术,在环境配置阶段提前避坑
3.代码实现教训
我主要负责的是api接口的实现的测试(以及踩坑=_=)。
流程
其实就是按顺序看:实验文档、Django官方文档、服务器数据库、前端post代码。
踩坑
数据库中实际key名称、Django中models以及前后端接口之间不同导致编写代码出现奇怪的问题。
实际上,这使对于基础框架研究不深刻导致的。小组里面也有同学因为变量和前端代码不一致,后面导致有我们一起debug。
教训
- 提前研究清楚框架,比如变量命名规范以及各个函数接口的响应等。
- 不是很适应别人写的代码,总是想着帮他看看实现得怎么样,导致浪费时间。
4.写各种测试的感受
实际开发过程才发现TEST真的非常重要,大大缩减了验证代码效果的时间。
另外,我们组有位同学负责代码覆盖率的测试,我第一次测试完是79%,本来以为写的很全面的测试,最后发现确实很多情况没有想到。最后跟着测试覆盖率的标志,完善了测试。
压力测试测出了bug
加锁的问题一直没有想好怎么测试,Django的框架对于多线程的支持确实很差,所以我们主要通过压力测试来测,第一次测试就发现handler的加锁出了问题(吓出一身冷汗)。
感受
- 写代码测试是个很负责任的体现,我们小组的每次merge和push都是基于Travis的,所以每次merge都比较顺利,有了问题也比较容易解决。
5.个人总结
团队开发
第一次感觉的团队开发的重要性,之前的组队大作业每个人的合作也仅仅在于很机械的分块。这此开发实践,体会到了小组成员各自分工合作的“舒适感”。最重要的是比较注重规范,所以我们的进度比较平稳、分工也很明确。