軟件測試價值論

發表于:2011-06-21來源:未知作者:娃娃點擊數: 標簽:軟件測試
軟件測試的價值來源于公司的價值,公司的價值來源于商業上的成功。對于生成純軟件的公司來說軟件產品就是商品,而用戶就是市場,在非壟斷行業中,用戶的選擇是自由的,增加用戶黏度和吸引用戶是公司策略的重心,而軟件測試就是其中的有力支撐之一。

  最近在壇子里發現很多新人詢問軟件測試的價值在哪里?。又見公司迅猛擴張,招收了很多測試工程師,部分測試工程師也再詢問此類問題。經過一番思考,再結合我多年的工作和學習情況,在此做一拋磚引玉之文。

  軟件測試的價值來源于公司的價值,公司的價值來源于商業上的成功。對于生成純軟件的公司來說軟件產品就是商品,而用戶就是市場,在非壟斷行業中,用戶的選擇是自由的,增加用戶黏度和吸引用戶是公司策略的重心,而軟件測試就是其中的有力支撐之一。

  如何進行軟件測試才能體現出軟件測試的價值呢?

  首先從軟件的生命周期開始,軟件生命周期為計劃,需求,設計,編碼,測試,維護六個環節。從這里看出測試似乎在編碼之后才開始進行,然而等到編碼完成之后,都已經木已成舟,這個時候不管怎么改都已經無濟于事了。為此在這里我們要把測試從這里抽出來,與其他五個部分并行,越早發現缺陷越有利于節約成本提升效益。 那么現在把軟件測試的生命周期定義為:需求,架構,設計,單元測試,功能測試,集成測試,性能測試七個部分。每個部分目的不同,體現的價值也不同,綜合起來就能夠完成支撐公司商業成功的目的。

  在需求階段,測試人員需要去分析產品人員提供的需求文檔,因為有效的需求是功能的抽象,我們要從需求文檔中挖掘出有效的需求,剔除模糊不清,模棱兩可的需求。再把有效的需求進行功能化,這里可以通過以往的經驗來分析,也可以參考以往的版本,如果是全新的產品,則可以借鑒類似的產品,或其他平臺上有類似功能的產品,詳細到功能也可以參考別的產品類似的功能,對這些功能加以比較和分析,取長補短,整合創新。以此可以給產品人員和開發設計人員提供更好的建議和意見,以期增加產品的吸引力。比如一個登錄的功能,很多軟件都有,大不了就是輸入用戶名密碼,驗證碼,僅此而已。其實我們可以結合環境加以創新,比如手機終端軟件,就可以提供語音輸入登錄,用戶讀出自己設定的數字組合即可認為輸入密碼成功。在音頻技術相對成熟的情況下,實現起來并不是很困難。

  在我們分析出需求的功能點之后,我們可以根據業務邏輯確定目前所存在的功能點哪些是屬于必須要有的功能點,這些功能點一個也不能少,從而給開發設計人員一個提醒,在設計的時候首先就要考慮這些功能點。其次可以確定那些功能點在當前的同類產品中屬于創新的,可以作為產品的亮點存在的,這些功能點沒有的話,將會導致產品變得大眾化而毫無吸引力,那么開發設計人員在設計過程中將會投入較多的精力來設計和實現這些功能點。也可以分析出那些功能點可有可無,在項目時間和資源緊張的情況下,可以先不做或者放棄的,這樣可以節約資源和時間,爭取提前發布,搶占市場。這些就是需求測試中需要去完成的,也是測試價值的體現之一。

  架構設計階段,這個階段屬于承上啟下的重要階段,不僅是產品成敗的關鍵,也是公司技術實力的體現,這里測試人員要從全局著眼,架構的好壞直接影響到軟件的穩定性,擴展性,可維護性以及性能負載能力等。而測試人員重點考慮的就是性能負載能力,我們要分析出系統的性能瓶頸可能在架構的那些環節出現,通過以往的經驗及和設計人員的溝通,來加以分析和考慮。軟件性能問題的產生來源于資源的有限,在硬件形式表現為cpu處理速度,內存大小及讀寫速度,硬盤大小,硬盤I/O速度,網絡帶寬,網絡節點分布等,而軟件形式為是否多線程并發,是否有死鎖,數據庫訪問速度,頻發程序的算法,內存管理安全等。而軟件架構則會涉及到網絡,cpu使用,硬盤,內存,數據庫,頻發程序,任務并發等多個方面,在這些方面入手考慮架構的性能指標,為軟件架構設計提供初步的性能風險評估,避免后期來調整架構,這樣可以有效的減少重復工作的時間,大大縮短項目開發周期,并且也為軟件后期的維護,擴展,測試降低成本。這是測試價值的體現之二。

  設計階段,這個階段主要是軟件接口和功能的設計,包括概要設計和詳細設計。在這個階段里,測試人員需要重點關注接口和功能的可測性,同時也是設計測試用例的時候,我們需要弄清楚當前的接口設計是否可測,這是非常關鍵的事情,一旦接口定下來,后期將會直接影響到測試的實施和有效性。這里我舉一個簡單的例子:某款軟件,主要給用戶提供天氣信息的顯示,接口很簡單,就是從指定的內容提供商處獲取天氣資源并發送到終端,由終端顯示給用戶。主要定制了三個接口,從內容提供商處獲取資源,將資源傳送給終端,計費。然而問題就出現在計費這里,計費是采取包月,而服務器不會給終端下發服務器時間,因為沒有這個接口,終端時間是不可靠的,而在設計的時候是從服務器下發的天氣資源包中獲取時間的,當然這個時間也是準確可靠的。計費測試的用例主要的有:新用戶可以免費使用七天,然后再次使用將提示用戶開始計費。包月用戶在包月期之內不會收到提示,且功能正常使用;包月失效后的用戶會收到計費提示,如果不繳費,則停止資源下發?,F在問題來了,計費的標準時間無法控制。因為開發人員并未給測試留輸入接口,那么這里不測試是不可能,因為這屬于重點功能,為此只能讓開發人員編譯三個版本,測試完畢之后再將時間接口改回去,由于代碼的改動,必須要做一次全功能回歸,為此開發修改代碼,測試,再修改代碼,再回歸測試,平白無辜增加了兩天時間。如果在設計的時候提出來在這里需要留測試接口,那么這里兩天時間我們就可以省下來了。這是測試價值的體現之三。

  單元測試階段,這個階段主要依賴于開發人員自己完成,但是測試用例需要由測試人員來提供,現在國際流行的敏捷開發,其主要考核點之一就是單元測試的覆蓋度,單元測試覆蓋度越高,越節約測試時間,像谷歌這樣的單位,開發人員和測試人員比例為10:1,全仰仗于此。這里測試人員就是提供測試用例及評估單元測試的有效性和覆蓋度,保證大部分缺陷被扼殺在搖籃里。單元測試做的好的話,可以避免掉很多低級缺陷,從而大大的降低測試成本和時間,并且軟件的可靠性也會大大的提升。而自動化測試也基本在單元測試階段建立,為后期的回歸測試節約了大量的人力。這就是測試價值的體現之四。

  功能測試,由于前面各類測試的完成,在這個階段重點集中于功能的驗證和異常測試,保證每個功能的有效性和可靠性,給用戶提供一個良好的使用環境,也可以檢驗對需求實現的完整程度,以及功能實現是否契合了需求提出的要求。保證所有實現的功能都是正確可用,可靠的。這是測試價值的體現之五。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97