目前市面上的不少軟體都會用到多方登入或者編輯的併發性問題,針對併發性問題有若干種方法,主要有以下幾種:
對於不同的併發性模型,測試過程中應該關注的要點:
1) 鎖的獲得。關鍵是系統必須把鎖正確地分配給第乙個請求的使用者。獲得鎖的操作是可以測試的:讓兩個使用者試圖同時進入編輯狀態,或者使用指令碼來產生比如1000個或者更多的編輯資料請求,這些請求是幾乎同時的,以此來驗證只有乙個請求獲得成功。
2) 鎖的效用。如果乙個使用者獲得了鎖,那麼系統必須保證其他任何使用者不能用任何方法修改這個資料,其中包括對資料的更新和刪除。具體的驗證方法是:讓乙個使用者開啟一條記錄(進入編輯模式並且保持這個狀態),同時其他使用者在應用程式的所有地方試圖編輯、刪除或者以其他方式更新資料。系統應該拒絕所有其他使用者更新資料的企圖。
3) 鎖的釋放。測試人員必須驗證:當編輯資料的使用者釋放了這條記錄以後(無論是更新完畢還是取消操作),系統能夠成功地讓其他使用者使用這條記錄。釋放鎖需要注意的乙個重要方面是錯誤處理,也就是持有鎖的使用者遇到錯誤(如客戶端系統崩潰了)的情況下,系統應該完成什麼樣的操作。鎖是否就失去了控制(處於無法釋放的狀態)?系統從釋放鎖的故障中重新恢復的能力需要重點考慮。
1) 在手動的方法中,兩個測試人員編輯資料,然後試圖同時儲存資料。第乙個使用者更新操作應該是成功的,但是第二個使用者應該得到一條訊息,其內容是另乙個人已經更新了資料,此時,他需要重新裝載資料並且重新完成修改操作。
2) 除了手動測試以外,還應該使用自動和海量的測試方法。為了保證開放的加鎖機制能夠使得同一時刻只有乙個使用者更新了記錄,我們可以利用指令碼發起成百上千的、幾乎同時發生的更新請求進行測試。其餘的使用者都應該收到錯誤訊息,訊息內容類似於:因為另乙個使用者已經更新了記錄,所以記錄不能儲存。
3) 與保守併發模型一樣,測試人員必須保證對所有可能修改資料的地方,開放的併發性得到驗證。其中包括來自使用者介面的不同部分的記錄操作。
軟體測試模型
線性模型 優點 即包含底層測試又包含高層測試 開發階段界定清晰 便於控制開發過程 缺點 風險後延,失去及早糾正的機會 錯誤的傳遞蔓延 返工量非常大,模型靈活性低 測試伴隨整個開發周期 優點 測試伴隨整個開發周期 更早的介入測試,降低成本 開發階段界定清晰 缺點 小型專案不適用 技術要求高,實踐困難 ...
nginx和apache併發效能測試對比
今天在ubuntu 12.04 service版本上搭建了apache2 php的站點以及nginx php5 fpm的站點,簡單地用apache自帶的ab工具測試了一下併發的效能,具體的測試指令碼如下 arr array for i 0 i 1000 i print r arr 具體的nginx和...
軟體測試 2 開發模型和測試模型
軟體的生命週期 軟體的生命週期是指從軟體產品的設想開始到軟體不再使用而結束的時間。一般分為6個階段 需求分析 計畫 設計 編碼 測試 執行維護。瀑布模型 瀑布模型是所有其他模型的基礎框架,每個階段只執行一次,因此是線性順序進行的軟體開發模式。優點 1.強調開發的階段性 2.強調早期計畫及需求調查 3...