軟體開發全過程檢測及軟體測試自動化(轉貼)

2021-03-31 08:56:28 字數 3245 閱讀 7828

首先談談軟體測試。這可以說是乙個非常令人捉摸不定的領域。

「應該怎樣對我們的產品進行測試?」和

「怎樣才算對產品進行了足夠的測試?

」等問題,對於不同企業的不同類產品、同一企業的不同類產品、或不同企業的同一類產品,實際操作上都會有很大的不同。

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.總測試狀況的統計,報表的產生。

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

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

軟體開發全過程檢測及測試自動化 首先談談軟體測試。這可以說是乙個非常令人捉摸不定的領域。應該怎樣對我們的產品進行測試?和 怎樣才算對產品進行了足夠的測試?等問題,對於不同企業的不同類產品 同一企業的不同類產品 或不同企業的同一類產品,實際操作上都會有很大的不同。sei的sw cmm在它的成熟度第 的...

軟體測試 VS 軟體開發

對於 軟體測試與 軟體開發之間的關係,一直以來都很微妙,大型 制度健全的公司或許不那樣明顯但在中小型 制度尚不健全的公司,則變成為了老大難的問題。軟體需求 軟體開發 軟體測試是軟體公司技術部門的三大主力,今天我們要說的是軟體開發與軟體測試。軟體開發與軟體測試即是乙個統一體,也是乙個矛盾體。為什麼說他...

軟體開發實施過程

1 前期準備 公司開發人員對系統開發前期進行充分的使用者調研 需求分析和系統體系結構的設計準備工作。公司開發人員以及業務需求人員共同組建專案組,一名或兩名專案經理負責監控專案的整體實施,共同參與系統的全面設計 開發,並針對業務提出進一步開發需求,開展軟體使用者化工作,制定二次開發方案,參與設計業務系...