天天看點

《應用程式性能測試的藝術(第2版)》—第2章 2.2節如何選擇性能測試工具

本節書摘來自異步社群《應用程式性能測試的藝術(第2版)》一書中的第2章,第2.2節如何選擇性能測試工具,作者【紐西蘭】ian molyneaux(莫得尼克斯),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

2.2 如何選擇性能測試工具

由于對工具本身的技術評估不夠,很多性能測試項目在腳本編寫階段就陷入問題的泥潭。很多測試服務供應商都支援來自各種工具供應商的解決方案,他們通常根據特定的客戶性能測試需求來選擇合适的性能測試工具。

web技術如日中天,幾乎每個性能測試供應商都提供http/s的支援。然而,在web技術裡面還有很多特别的設計,尤其是用戶端。如果你在應用中使用了大量的javascript、json或者微軟的silverlight,你就得充分考慮所選工具的功能以及技術限制。下面是一些關于如何選擇工具的建議。

協定支援

選擇性能測試工具最重要的一點就是確定你所選的工具能夠支援你的應用協定棧,也就是說你的應用用戶端如何同服務端進行通信。比如,在絕大多數情況下,一個典型的浏覽器會使用http或者https作為它的通信協定。

授權模式

在工具滿足應用協定棧需求的前提下,還要看工具的授權模式。大多數性能測試供應商通過下列子產品進行收費。

允許執行的最大規模負載測試(用虛拟使用者數來衡量)

這個計價方式通常會采用區間收費,比如以100個虛拟使用者作為入門價,虛拟使用者數越多,收費越貴。也有一些供應商會以一個較高的固定價格來提供無上限的虛拟使用者數。有一些供應商會提供一種短期授權,允許使用者臨時提高工具允許的最大虛拟使用者數,來獲得更大的負載。

工具支援的額外協定種類

當使用者購買工具的時候,也許隻選擇了http協定。但是後來由于項目需要,需要測試其他協定,比如citrix,這樣就需要支付額外的協定費用。新購買的額外協定是否适用已經購買的虛拟使用者數,不同供應商會有不同的做法。

額外的內建和監控插件

工具供應商通常會有一些可選插件,使用者可以在購買基礎軟體授權後按需購買可選插件。插件通常包括一些特定技術棧的監控工具,比如oracle、ms sql server和iis等;同時測試工具還可以和應用性能管理工具(application performance monitor,apm)或者持續內建(continuous integration,ci)工具進行內建。這些內建通常會收取一定費用。當考慮購買這些插件時,你需要清楚這些功能通常需要在目标伺服器上安裝相應的代理軟體,并且允許它們通路網絡;你必須確定這些需求在被測環境(system under test,sut)是可接受的。

在确定采購工具的候選名單時,確定你對各種工具的授權模式是非常清楚的。

腳本能力

很多性能測試工具提供商聲稱他們工具産生的腳本基本或者完全不需要手工編輯。對于一些簡單的頁面浏覽,或許可以做到完全不需要手工編輯腳本。但事實是你總會遇到需要手工編輯腳本的場景(或許是插入一些javascript或者一些代碼子產品來處理複雜的用戶端邏輯)。

你也許會發現你不得不對錄制的測試用例進行手工編輯以讓它能夠正确回放。一個工具可能需要你在每個腳本上耗費幾個小時的時間來讓它正确運作,而另一個工具基本可以自動化你剛才的操作,是以在選擇工具的時候你就必須充分考慮這部分額外工作對你的性能測試項目和測試團隊帶來的影響。

測試團隊的技術能力也是一個需要考量的因素。如果隊員有着很強的開發背景,那麼讓他們在測試腳本中進行一些手工編碼應該不成問題。但如果你的隊員不熟悉編碼,盡管前期投入比較大,你還是更應該考慮一款提供具有向導功能的性能測試工具來幫助測試人員更容易地建立腳本。

解決方案還是壓測工具

有些供應商隻提供性能測試工具,有些供應商提供整套的性能測試解決方案。解決方案通常要比單純的性能測試工具貴,但是它可以提供更完善的分析。除了性能測試,解決方案供應商通常提供:自動化需求管理、自動化資料構造和管理、性能測試前的應用性能調優、響應時間預測和容量評估、細到類和方法級别的apm應用性能分析、應用釋出後的終端使用者體驗(eue,end user experience)監控以及測試結果/測試資産的可視化的資料看闆。

自研還是外包

如果你的資源有限或者項目周期非常緊張,那還是考慮将性能測試項目外包給一個供應商會更加合适。一些工具供應商會提供一整套服務,從帶有實施支援的工具采購到全方位的性能測試服務。這些公司在測試領域非常專業,能夠使用合适的性能工具集來提供專業的性能測試服務。使用外包模式的優勢在于使用者不用為自己的應用專門購買一個性能測試工具,節省了時間和資源成本。但如果使用者的場景需要進行多次性能測試,使用外包模式來完成性能測試會比自己購買或者研發性能測試工具貴得多。

其他可選項

如果你的應用是基于web的,而且它也是面向消費者的,你也許有一個更好的選擇——軟體即服務(software as a service,saas)的性能測試服務。現在有很多供應商通過web提供性能測試服務,他們幫你實作整個測試流程:編寫關鍵測試用例,然後通過分布在各地的施壓引擎來對你的應用施加壓力。采用這種方式,使用者不需要自己提供足夠數量的施壓機器,性能測試服務供應商的施壓節點通常部署在主幹網絡,能夠真實地模拟大量終端使用者。對于低頻的大規模性能測試,saas化的解決方案非常有吸引力,而且性能測試服務供應商通常還提供終端使用者體驗監控。

采用saas化性能測試服務的一個不足之處在于你需要為每次測試付錢,對被測伺服器和網絡的監控也需要使用者自己來負責。當測試過程出現問題,使用者需要通過重複測試來排查時,整體開銷就相當可觀了。

總而言之,saas化的性能測試服務還是非常值得調研的。附錄c列舉了一些提供這類服務的供應商。

繼續閱讀