2013-05-29 67 views
2

單元測試是衡量應用程序功能的好方法,但是我想知道有沒有人使用它來進行初步性能分析?使用單元測試來測量Django性能

我在說的是運行一些分析工具作爲自動化測試運行的一部分,保存性能結果,然後將它們與一些任意值進行比較,以便任何瓶頸都會跳出來。例如,我最近遇到了一個案例,即Django標記庫將模板解析時間增加了十倍 - 如果模板解析是在單元測試中構建的,則它可以更快地看到。

是否有任何模塊將這種測量包括到標準的Django和Python設置中?如果不是,你有什麼特別的建議或提醒我自己寫?謝謝!

+0

我們的CI監控測試時間,但性能分析可能會導致測試時間大幅增加。 – oleg

+0

當然,在運行測試時啓用/禁用配置文件切換將是謹慎的。小心分享您的解決方案? –

回答

1

我只會描述我們正在嘗試做什麼來估計發佈之間的初步性能影響。不知道這是否是最好的方法,但它適用於我們。

我們在Python/Django項目中有一堆測試。我們使用nose作爲測試跑步者。您可能知道,它有一個內置的命令行選項--with-xunit,它將測試結果轉儲爲xUnit格式的xml文件(順便提一下,jenkins CI支持)。

每當我們做一個發佈,我們正在執行一個測試運行,併爲我們產生一個xml文件(我們將它存儲在代碼庫中)。這裏有一個部分從它:

... 
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" name="test_full_access_ok" 
      time="1.775"/> 
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" 
      name="test_illegal_assigned_flag" time="0.008"/> 
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" name="test_illegal_comments" 
      time="0.049"/> 
... 

正如您可能注意到,對於所有的測試用例time屬性。所以,我們所做的只是將測試用例的執行時間與以前和當前版本(基本上是比較兩個xml文件)進行比較。

希望有所幫助。