當前位置:
首頁 > 最新 > 軟體開發全過程檢測及軟體測試自動化

軟體開發全過程檢測及軟體測試自動化

首先談談軟體測試。這可以說是一個非常令人捉摸不定的領域。「應該怎樣對我們的產品進行測試?」和「怎樣才算對產品進行了足夠的測試?」等問題,對於不同企業的不同類產品、同一企業的不同類產品、或不同企業的同一類產品,實際操作上都會有很大的不同。

SEI的SW-CMM在它的成熟度第三級的「軟體產品工程」關鍵過程域中,把軟體開發周期中不同階段的測試作為實施活動中的關鍵實踐。(在SW-CMM版本2.0 的討論過程中,曾經有過提議,在成熟度第二級設立一個關鍵過程域「軟體測試管理」。但在版本2.0 的討論稿C 中,並沒有這樣做。從這裡我們也可以看出,SW-CMM本身也是一個人為地制定的「軟體」。)

一般地,基於開發周期中不同階段對不同對象所進行的測試,可劃分為:

單元測試(unit test ):

由編程的開發人員自行計劃與完成的,針對單個或相關聯的一組程序單元的測試。

組裝測試(inegration test ):

計劃於設計階段,由開發人員與測試人員合作完成的,針對結合起來的不同單元以及它們的介面的測試。

系統測試(system test ):(可認為包括「可用性與圖形用戶界面測試」)

測試整個系統,以證實它滿足要求所規定的功能、質量和性能等方面的特性。

回歸測試(regression test ):

用於驗證改變了的系統或其組件仍然保持應有的特性。

驗收測試(acceptance test ):

測試整個系統,以保證其達到可以交付使用的狀態。

關於上述各階段的測試的具體內容及實現的方法,讀者可參考SW-CMM及有關軟體工程和軟體測試的書籍。千萬不要停留在只參考SW-CMM,因為該文件只講述要做些什麼,而沒有介紹怎樣做。同時,所有的資料中談及的內容及方法,都是一般化的。對於一個特定軟體的測試,必須經過使用者對通用的測試方法的改變及改進,才能有效和達到高效率。

下面,談談軟體測試的其他方面的一些問題。

一個被人忽略的軟體測試目的

在談到測試時,許多作者都引用了Grenford J. Myers 就軟體測試目的提出的以下觀點:

1.測試是程序的執行過程,目的在於發現錯誤;

2.一個好的測試用例在於能發現至今未發現的錯誤;

3.一個成功的測試是發現了至今未發現的錯誤的測試。

這是一種比較狹窄的觀點。作為一個清醒的、縱觀全局的軟體開發人員或管理者,我們應當從軟體過程的角度來看測試。

一個被人忽略的軟體測試目的是:測試可以幫助發現當前開發工作所採用的軟體過程(也是一個「軟體」)的缺陷,以便進行改進。(在以下的討論中,「錯誤」與「缺陷」基本上認為代表相同意義。)

怎樣理解這種說法呢?

首先,測試並不僅僅是為了要找出錯誤。分析錯誤產生的原因和錯誤在開發的哪一個階段產生,具有非常重要的意義。

通過分析錯誤的原因,我們可以立即在開發行動中對其進行改正。同時,這種分析也能幫助我們推理出與所分析的錯誤有關聯的潛在錯誤,從而有針對性地設計出檢測的方法。

通過分析錯誤產生於哪一個開發階段、而又在哪一個階段被發現,我們可以判斷從錯誤的產生到錯誤的發現,跨越了多少個開發階段。軟體開發的一條重要原則是儘早發現與修正錯誤。(當然,更高的一條原則是盡量預防錯誤的出現。)一個錯誤能夠超越本開發階段而不被發現,就指明了該開發階段的檢測手段有缺陷,從而也不難有針對性地制定出加強的措施與辦法。這也就是軟體過程改進的一項重要內容。如果能做到在同一開發階段發現及修正錯誤,該開發機構就可以預期有一個高質量的產品及一個低成本、高效率的軟體過程。

有些項目的主持人,認為以儘快的速度把測試之前的所有開發階段完成(實際並沒有完成),早日開始測試,以圖達到快速和高質量(因為似乎有更長的時間可用於測試)。實際的效果將會是俗語所說的「欲速不達」。從常識就可以知道,花開發時間去繼續擴大發展前面階段引入的錯誤,得出的只能是更大量的需要耗時修正的錯誤。

因此,正確分析與利用測試的結果,我們可以非常有效地進行軟體過程改進。

軟體開發全過程檢測,力爭本階段修正錯誤

從上面的討論,我們很自然的就能領會到,軟體錯誤的發現絕不能等到測試才開始(按常規,最早的測試就是編碼後的單元測試)。因此,筆者提出一個軟體工程的守則:軟體開發全過程檢測,力爭本階段修正錯誤。單元測試是在軟體開發的「實現階段」才開始的,在此之前的「可行性研究與計劃階段」,「需求分析階段」,「概要設計階段」,和「詳細設計階段」,都必須有非常明確切實的手段與措施對開發結果進行檢驗,以保證階段的正確完成。

怎樣判斷一個軟體過程的優劣,怎樣進行軟體過程改進,都可以在這個守則的指導下進行。這個守則是簡單明確的,但因企業背景、條件的不同,開發環境條件的不同,項目產品的不同,實際的軟體過程的實現方法就會變化無窮。考慮實現這個原則的方法的時候,可以盡量多參考各種理論及經驗,但在選擇制定本企業開發實踐中使用的軟體過程時,就必須處處根據是否能給自身的項目帶來好處,以及自身的條件進行考慮。千萬不要僅僅為了滿足某個「標準」的提法而做一些無實際意義的工作。要盡量避免煩瑣,爭取做到簡單、有條理和有最大的效果。

軟體測試的自動化

軟體測試的工作量很大(據統計,會用到40% 的開發時間;一些可靠性要求非常高的軟體,測試時間甚至佔到總開發時間的60% ),但測試卻是在整個軟體過程中極有可能應用計算機進行自動化的工作,原因是測試的許多操作是重複性的、非智力創造性的、需求細緻注意力的工作。計算機就最適合於代替人類去完成這些任務。企業在這方面的投資,會對整個開發工作的質量、成本、和周期帶來非常明顯的效果。

一些適於考慮進行自動化的測試操作為:

1.測試個案的生成(包括測試輸入,標準輸出,測試操作指令等)。

2.測試的執行寫控制(包括單機與網路多機分布運行;夜間及假日運行。測試個案調用控制;測試對象、範圍、版本控制等。)。

3.測試結果與標準輸出的對比。

4.不吻合的測試結果的分析、記錄、分類、和通報。

5.總測試狀況的統計,報表的產生。

測試自動化與軟體配置管理是密不可分的。與測試有關的資源都應在配置管理中進行統一的計劃考慮。另外,測試工具的採用也是一個提高質量的關鍵,有些專用的測試工具能幫助發現一些用任何測試個案都難以觸及的錯誤。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 軟體測試學園 的精彩文章:

TAG:軟體測試學園 |