此次持續(xù)集成實驗是基于Travis CI集成的一個Django項目;該項目已經(jīng)完成前端框架以及部分的后端框架,我們小組(4人)需要做的是在該基礎上完成后端框架以及進行一定的優(yōu)化。此次實驗,我負責的是:
- Travis CI集成
- Django單元測試的調(diào)研
- 后端與微信公眾號相關的接口部分(Handler.py)的實現(xiàn)與測試。
本次實驗小組集中開發(fā)持續(xù)一周,最終完成項目所需功能,并進行相應的單元測試、功能測試以及性能測試與優(yōu)化。
整個過程熟悉了持續(xù)繼承開發(fā)的流程,微信公眾號平臺的開發(fā)以及git的使用。
Git
- 由于是小組作業(yè),因此
必須使用Git;我們在操作系統(tǒng)課上基本使用過git,在本次實驗過程中,小組成員更加熟悉對于git的操作。
Travis CI
這一塊是由自己做的,詳見http://www.itdecent.cn/p/951ce2fb255d
這一模塊自己先踩了一個巨坑,由于自己開始調(diào)研時不夠全面,先使用了https://travis-ci.org,導致我一度認為travis CI僅僅支持公開庫,使得我們的項目一度公開了一段時間,之后為了保證各種私密性,使用Travis對文件加密,感謝Nan同學的提醒,我才了解到私有庫也可以支持,不過是在https://travis-ci.com上,好在我們的項目在寫核心代碼之前就已經(jīng)設成私有庫,因此對我們影響不大;同時感謝Chen同學的提醒,我于是拋棄加密方式,將部署和測試的settings分開。
Travis CI的博客見:http://www.itdecent.cn/p/951ce2fb255d至于感想:
覺得Travis CI真的好用,以前小組作業(yè)時,并沒有使用過Travis,因此每次merge的時候都有些膽戰(zhàn)心驚,畢竟沒有人會全部看完其他分支的代碼,但是現(xiàn)在有了測試,有了Travis的自動build,我們只有發(fā)起pull request后build成功才會進行merge,能夠降低誤操作率。
測試
單元測試:單元測試非常重要,我們會進行測試,即A寫B(tài)實現(xiàn)的單元的測試類,B寫C的,依次類推。我們在后續(xù)的修補bug后,務必先得通過測試,才能push,只有在Travis上build成功,才能merge。
Django的單元測試的博客見:http://www.itdecent.cn/p/5533c866453a鎖的測試
我們經(jīng)過討論,最終決定每次加鎖時使用悲觀鎖,加鎖的位置也應該注意:僅在需要修改數(shù)據(jù)的時候加上。
我們也進行了對鎖的正確性的測試:給定100張票,1ms內(nèi)10000個人請求,最終成功搶到票的人數(shù) + remain_tickets = 總票數(shù);以及同時10000個人退票,最終成功退票的人數(shù) = remain_tickets。我們進行了各種測試,最終能夠保證我們的鎖的正確性。功能測試
能性能測試
測試的詳細說明在我們的文檔中有詳細介紹。
微信公眾號平臺開發(fā)
- 熟悉了如何開發(fā)微信公眾平臺
總結了如何對微信公眾號接口進行單元測試,博客見:http://www.itdecent.cn/p/e33d248482f3
小組管理與分工總結
- 鑒于上次我們小組的分工不明確,我們此次的任務分工都比較明確,且互不相關。
- 我們的每個迭代周期完成后產(chǎn)品都可以使用