熟悉框架
本次实验我主要负责利用django框架完成微信消息的收发及部分前后端API,前期的难点在于理解整个框架的路由转发是怎么实现的。一开始不太理解微信图文链接的url是怎么关联上需要实现的/api/a/*等API的(也就不太清楚其他url需要怎么书写),在一些封装类的路由转发、前端js文件的调用逻辑、甚至静态文件的路径上卡了很久。
代码实现
清楚了整个项目的逻辑之后,代码实现倒是很迅速。
各个handler的handle方法逻辑都比较清楚,只有抢票业务的逻辑稍微复杂一点,但也遇见了诸如活动余票出现-1张这种愚蠢的bug。所以说做什么都不能离开测试emmmm。性能测试之前,数据库没有加锁,由于并发量不高,四个同学一起手动测试,读写结果也正常。后期利用Jmeter测试后发现,出现了1000个请求均返回“抢票成功”,但活动余票只少了700张的情况,(遂马上求助江老板帮忙加锁,在活动余票更新前都要锁定Activity对象,避免脏数据。
另外,自己的代码风格可读性、可维护性都不好,希望以后多学习、借鉴他人的优秀风格,争取不给队友增加额外负担(十万个抱歉
自动化测试
模拟微信服务器发送POST请求实现自动测试。难点在于POST发送的文本类型为'text/xml/',并遵从特定XML数据包格式,利用django的TestCase测试时,本想直接复制小伙伴的测试模板,但发现行不通,前后端API的POST请求均为multipart/form-data,xml格式不能直接使用函数的默认参数发送POST请求。然后就开始一点点探索正确的调用格式,调试过程中还顺便了解了一下django自己的WSGIRequest对象,最后得到的结论是Pycharm的调试功能真是太强大了,一直有VScode的小菜鸡爱上了(跑偏了。
性能测试
利用Jmeter进行性能测试。测试之前的需要先用脚本注册足够多的已绑定学号的用户。外部脚本引入django的model对象需要配置django的运行环境。然后就可以愉快的用Jmeter进行并发测试辣。另外,Jmeter可以从CSV文件中导入变量作为请求参数,十分友好。
网友评论