软件设计是决定软件性能的关键
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                软件设计是决定软件性能的关键
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            大家更多的是關注測試工具,測試技巧,而少有人去從根本上來分析、測試軟件。一個優秀的軟件性能測試工程師要具有宏觀和微觀的軟件測試觀。他要分析軟件的 架構,了解軟件的運行模式,了解通訊協議,更是一個軟件開發高手。就象一個醫生,他要通過多年的深造和摸索,要了解病理、藥理,他才能對癥下藥,好了,不 多說了,說一下軟件設計對軟件性能的影響。這是我遇到的一些實際的例子。 例子一:一個網站,允許注冊用戶可以上傳一些圖片、文檔、影音文件,把這些文件做為大二進制文件存儲到數據庫中。功能并不是太復雜,軟件的功能測 試沒有問題,開始進行性能測試。5個用戶的并發都沒有通過,功能出錯了,性能測試也就進行不下去了,分析原因,原來軟件設計的時候,為每一個上傳的文件設 計了一個“ID”字段做為主鍵,該字段是自增的,在ORACLE數據庫中沒有自增字段,需要編寫觸發器來自增,但是軟件開發人員在應用程序中編寫了一個函 數,在上傳文件前從數據庫中獲得最大ID,然后加一,再填寫其他信息,選擇文件,上傳,這樣在多用戶使用的時候必然造成ID字段值重復,系統必然出錯。這 個錯誤修改后,進行性能測試,設計者把所有的上傳文件都保存到一個數據表中,他沒有考慮網站的流量和上傳文件數量很多的情況,結果在進行數據庫壓力測試的 時候,當數據庫中有10萬條記錄時,假設每個上傳文件的大小是1M,該數據表的查詢、備份、恢復都非常困難,當多用戶瀏覽、上傳這些文件時,性能嚴重下 降。這就是一個軟件設計存缺陷。 例子二:一個圖形管理軟件,架構采用的是B/S模式,通過在IE中嵌入ACTIVX控件,根據從數據庫中讀取出的測量點數據,在ACTIVX中繪制 成各種曲線,該測量點數據是井的數據,每米取10個點,每點有16條數據,每口井的井深平均按5000米算,500口井的數據就非常龐大了。在性能測試的 時候,我首先分析了軟件的運行機制,客戶端發出請求--WEB服務器(分析)--讀取數據庫數據--生成HTML和數據流返回客戶端--客戶端控件根據點 數據繪制成曲線。從這些過程中看性能的瓶頸應該在WEB服務器和數據庫間。(ACTIVX控件有的性能測試工具不支持,但協議可以看成是HTTP,并可以 看成是一次請求),因ACTIVX運行在客戶端,這部分的性能主要是受客戶端影響。在性能測試過程中發現,性能真的是受數據讀取速度的影響,更可怕的是, 該數據庫竟然沒有設置索引,設置索引后,軟件開發人員竟然在索引字段用了trim()函數來去掉空格,造成索引字段沒有起到作用,汗一個!!!!。 從上面的例子可以看出,設計才是決定性能的關鍵。 
 
                        
                        
                        轉載于:https://blog.51cto.com/newhappy/135995
總結
以上是生活随笔為你收集整理的软件设计是决定软件性能的关键的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: [转]Javascript的IE和Fir
 - 下一篇: [导入]extjs 教程