這樣可能很嚴謹,但是對你的報告的讀者而言,這樣的數據有多大意義,因為他們沒有你這么幸運,有這么良好的環境。
三:做必要和合理的假設
生活有時候是需要一些妥協和折衷,如果這些折衷是必要的和合理的。因為跳出來看,我們的測試需要提供有價值的信息,所以為了這樣有價值的信息,做出必要和合理的假設是可以接受的。
好吧,也許這不是你想要的答案,但它是我目前給自己的解釋和安慰。
性能測試環境需要在嚴格獨立監控下管理,盡量保持與真實生產環境的一致性能。
“精確”的測試數據
對于一個嚴謹的測試員,我們的測試結果的描述也相當精確,如:用戶每個用戶的訪問時間為2.8729秒,10分鐘系統處理請求8634個。我以前一直認為,只要我把測試環境描述的很詳細,我的測試結果就是精確的。
實際上功能測試很容易得到測試結果,而性能測試很難得到精確的量化結果,我買了一輛汽車,開車去上班,去時車的各個功能非常正常,回來的時候車的功能也非常正常。我們通過功能測試很容易得出,這個車的功能沒有問題。
那么性能測試呢?再來看耗油情況,我去時上耗油3.29升,回來時耗油3.42升,同樣的一條路,同樣的人開同樣的車,那么是不一樣的耗油結果?如果我再試一遍,可能情況還會有變化。所以,我們很難得到精確的數據,但是這絲毫不影響我們測試結果的參考價值。
“宏觀/圍觀”的性能測試
這也是一個有趣的對立。在做性能測試,特別是整個產品的性能測試的時候,我們看到的是產品的核心功能和主要的大的功能模塊,比如數據庫、web服務器、核心的daemon等等。在腦海里,我們有一個架構圖,哪怕你沒有把它畫出來。所以有時候,我們會想,性能測試對于產品的視角是宏觀的,看大的組件,而不是具體的細節的東西。果真是如此嗎?看看下面的例子:
1. 把daemon的log級別改為debug (log_level從2改到5)之后,性能下降了差不多一半。
2. 關掉一個cache選項
3. 打開keepalive選項
4. 打開DNS反向查詢
.....
上面都是些細枝末節的設置,一個配置項而已,藏在DB的某張表或者某個ini里面。但是改變之后,得到的性能結果可能大不相同。這些都是否改變了我們以往的看法。
Scott Barber(性能測試方面的專家)在他的一篇文章里討論了這個話題。
“Macro- and Micro-tests, macro strategies and micro-plans, macro-level application usage and micro-level usage implementation details, macro-level result summaries for executives and micro-level test results for developers... it sounds like a day in the life of a performance tester to me.”
摘自他為Software Test & Performance雜志寫的一個系列文章,叫做Peak Performance,其中的2006年9月的一期,文章名是 Macro to Micro And Back Again Macro to Micro And Back Again,嗯,很好的詮釋。
亞里士多德說世上的道理不是被講一遍兩遍而是成千上萬遍,是的,因為Weinberg也講了一遍,就在上面提到的那本書里面。請原諒我再次引用他的話,粉絲嘛。“Although it's necessary to have an overview of the problem, the big picture often turns on one critical detail.”
critical detail, 對,就是這個term。其實不光是這里說的測試,工作和生活中的很多事情都是一樣,不是要不要關心細節,而是它是否critical。
那么,怎么區分一個細節是不是critical或者怎樣找到critical的detail呢?
嗯...,這是個好問題,不過不好意思這個不是這里要討論的范疇。
所以,你還認為性能測試只是學習如何使用性能工具么?它需要一個長期的個技術的積累,我們的路還很長。也許,我講的不夠本質,但性能測試這個領域,看到太多的新手在整天問工具的使用,學會了工具的使用就大言“我會(精通)性能測試!”。太多的公司叫新手的做性能測試,環境神馬的也不提供,你找個工具對軟件加壓一下吧!哎~!這未免是太貶低“軟件性能測試”了。
原文轉自:http://www.uml.org.cn/Test/201301104.asp