本篇博文主要討論以下幾個問題:首先舉兩個例子,2023年7月,首都機場由於軟體缺陷影響通訊傳輸,造成航班無法起飛,大批遊客滯留機場。還有,2023年北京奧運會官方**第二階段開始售票,短短不到半個小時,由於效能問題不能承受過多的同時線上購票,造成**癱瘓,不得不停止服務。1、為什麼要開展軟體檢測活動?
2、什麼是軟體測試?
3、如何理解軟體測試?
4、軟體測試和開發的關係?
5、軟體測試和質量保證的關係?
為什麼要進行軟體測試?答案很簡單,就是為了保證軟體質量。如果沒有軟體測試,就不能了解軟體產品的質量。測試是軟體工程中不可缺少的一部分,特別是當軟體無處不在、越來越貼近人們生活和工作的時候,軟體測試的必要性就越來越明顯。可以說軟體測試是軟體質量保證的關鍵步驟。
軟體測試奠基人bill hetzel(著有《軟體測試完全指南》一書)對軟體測試的定義是:軟體測試就是一系列活動,這些活動就是為了評估乙個程式或軟體系統的效能或能力,並確定其是否達到了預期結果。(現在有些書上稱為正方辯論)。
從上面這個定義中可以看到以下幾點:
(1)測試是試圖驗證驗證軟體是「工作的」,也就是驗證軟體功能執行的正確性。bill hetzel的質疑者glenford j. myers(著有《軟體測試的藝術》一書)對軟體測試的定義為:測試就是為了發現缺陷而執行乙個程式或者系統的過程。(與上面的觀點形成對比,被稱為反方辯論)。myers認為測試不應該著眼於驗證軟體是工作的,相反,應該用逆向思維去盡可能多的發現錯誤。他認為,從心理學的角度看,如果將「驗證軟體是工作的」作為測試的目的,非常不利於測試人員發現錯誤。從這個定義延伸出去,myers認為,乙個成功的測試必須是發現了軟體問題的測試,否則測試就沒有價值。(2)測試的目的是驗證軟體是否符合事先定義的要求。
(3)測試的活動是以人們的「設想」或「預期的結果」為依據。這裡的「設想」或「預期的結果」是指根據需求定義、軟體設計的結果。
myers提出的「測試目的是偽證」這一概念和bill hetzel提出的觀點「測試是試圖驗證軟體是正確的」針鋒相對,為軟體測試的發展指出了不同的努力方向,產生了新的軟體測試理論和方法。但是myers的理論也存在著一些問題,例如:
(1)如果知識強調測試的目的是尋找錯誤,就可能使測試人員容易忽略軟體產品的某些基本需求或客戶的實際需求,測試活動就可能會存在一定的隨意性和盲目性。
(2)如果只是強調測試的目的是尋找錯誤,可能會使開發人員產生乙個錯誤的印象,認為測試人員的工作就是挑毛病的。
(3)myers的軟體測試定義還強調測試是執行乙個程式或系統的程式,也就是說,測試活動是在程式**完成之後進行,而不是貫穿整個軟體開發過程的活動,即軟體測試不包括軟體需求評審、軟體設計評審和軟體**靜態檢查等一系列活動,從而使軟體測試的定義具有一定的侷限性和片面性。
bill hetzel的軟體測試定義可能是軟體測試活動的效率降低,甚至缺乏有效的方法進行測試活動(但他的軟體測試定義收到了國際標準採納)。
這正反兩發面的觀點是從不同的角度看問題,一方面通過測試來保證質量,另一方面又要進行測試方法和提高測試測試的效率,兩者應該相輔相成。因為測試不能證明軟體沒有絲毫錯誤,不能確認所有的功能可以正常工作,所以軟體測試要盡可能找出那些不能正常工作、不一致性的問題。軟體測試應該在這兩者之間平衡。
在傳統軟體工程,認為先有程式設計,後又測試。典型的就是瀑布模型。在瀑布模型中只有等到程式完成了才可以進行測試,強調測試僅僅是對程式的檢驗。但這種思想存在著較大的侷限性,與軟體開發的迭代思想、敏捷方法存在衝突,也不符合當今軟體工程的實際需求。
現在熱門普遍認為,軟體測試是貫穿整個軟體生命週期的,從需求評審、設計評審開始,測試就介入到軟體產品的開發活動或軟體專案實施中。典型的就是v模型。
sqa(軟體質量保證)與軟體測試之間的關係是:相輔相成,即存有包含關係又存有交叉的關係。
從上面幾個問題的討論結果可知:沒有測試,軟體就沒有質量;測試沒有做好,軟體問題可能會引起災難或給企業帶來巨大的損失。軟體測試就是軟體質量保障的重要手段之一,是軟體開發過程中不可缺少的部分。軟體測試,不僅要檢驗軟體是否已正確的實現了產品規格所定義的產品功能和特性,而且要確認所開發的軟體是否滿足使用者真正需求大的活動。軟體測試無法證明軟體是正確的,總是存在風險的,這就規定了軟體測試人員要盡可能地發現軟體問題。從這個意義上看,軟體測試是為了發現缺陷,而且要盡可能早地發現缺陷。
軟體測試 1 什麼是軟體測試?
軟體測試 qa 的定義無比簡單 所謂軟體測試,就是乙個或者一系列過程,確保軟體可以完成了該完成的功能,不執行不該有的操作。身為開發,恐怕沒有幾個人會樂於常常和測試打交道。原因很簡單,無非就是測試會站在乙個第三者的角度上將一些你寫的 中一些 他認為的 漏洞揪出來,而且像討債一樣催著你趕快fix。而很多...
什麼是軟體測試?
1983,ieee提出的軟體工程標準術語,定義為 使用人工和自動手段執行或測試某個系統的過程,其目的在於檢測它是否滿足規定的需求或是弄清楚預期結果與實際結果之間的差別。g.j.myers認為 測試時為了發現錯誤而執行程式的過程。好的測試方案是發現迄今為止尚未發現的錯誤的測試方案。成功的測試是發現了迄...
什麼是軟體測試,軟體測試的目的?
軟體測試 用來確認乙個程式的品質或效能是否符合開發之前所提出的一些要求 軟體測試就是在軟體投入執行前,對軟體需求分析 設計規格說明和編碼的最終複審,是軟體質量保證的關鍵步驟。軟體測試是為了發現錯誤而執行程式的過程 軟體測試的目的 1.確認軟體的質量,其一方面是確認軟體做了你所期望的事情,另一方面是確...