什麼是軟件測試?

一切只為了更好


軟件測試是伴隨軟件而產生,它是軟件工程中一個重要的部分,全程貫穿於軟件開發過程中,軟件測試是為軟件項目服務的,與軟件開發相輔相成,對提高產品質量起到至關重要的作用。軟件測試工作不是隨意性的,所有的軟件測試工作需從工程角度有組織有計劃有步驟的開展。

軟件測試的定義就是在規定條件下對軟件形成過程的文檔、數據以及程序進行的測試。

軟件測試有不同的分類不同的測試方法,什麼時間用什麼類型的測試,運用什麼測試方法都需要系統全面的學習後才能制定合理的測試策略。軟件測試中最重要的核心技能是:分析、計劃、設計能力。

軟件測試發展前景好,入門容易精通難,軟件測試綜合性很強,需要掌握的知識點很多,要想職業生涯走得更穩更快,最好進行靠譜的專業培訓,把基礎學紮實,全面系統性學習。


加肥的快樂星貓


軟件測試是伴隨著軟件的產生而產生的。早期的軟件開發過程中軟件規模都很小、複雜程度低,軟件開發的過程混亂無序、相當隨意,測試的含義比較狹窄,開發人員將測試等同於“調試”,目的是糾正軟件中已經知道的故障,常常由開發人員自己完成這部分的工作。對測試的投入極少,測試介入也晚,常常是等到形成代碼,產品已經基本完成時才進行測試。到了上世紀80年代初期,軟件和IT行業進入了大發展,軟件趨向大型化、高複雜度,軟件的質量越來越重要。這個時候,一些軟件測試的基礎理論和實用技術開始形成,並且人們開始為軟件開發設計了各種流程和管理方法,軟件開發的方式也逐漸由混亂無序的開發過程過渡到結構化的開發過程,以結構化分析與設計、結構化評審、結構化程序設計以及結構化測試為特徵。人們還將“質量”的概念融入其中,軟件測試定義發生了改變,測試不單純是一個發現錯誤的過程,而且將測試作為軟件質量保證(SQA)的主要職能,包含軟件質量評價的內容,Bill Hetzel在《軟件測試完全指南》(Complete Guide of Software Testing)一書中指出:“測試是以評價一個程序或者系統屬性為目標的任何一種活動。測試是對軟件質量的度量。”這個定義至今仍被引用。軟件開發人員和測試人員開始坐在一起探討軟件工程和測試問題。

軟件測試已有了行業標準(IEEE/ANSI ),1983年IEEE提出的軟件工程術語中給軟件測試下的定義是:“使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。這個定義明確指出:軟件測試的目的是為了檢驗軟件系統是否滿足需求。它再也不是一個一次性的,而且只是開發後期的活動,而是與整個開發流程融合成一體。軟件測試已成為一個專業,需要運用專門的方法和手段,需要專門人才和專家來承擔。



51得幣


關於軟件測試,我覺得可以這麼分:功能測試、自動化測試、測試開發、性能測試,

功能測試比較容易入門,但是經過短時間的入門學習,能不能找到工作,就是另一回事兒了。

我自己感覺,現在軟件行業不那麼景氣了,不如前兩年了,招人的公司少了,也就是很多的外包公司在招培訓班出來的學生,比如柯萊特、中軟等,稍微大點兒的公司,招人的要求也不低了。

軟件測試也是一個工程,也需要按照工程的角度去認識軟件測試,在具體的開展測試之前,我們需要明白我們要測的是什麼,我們要採取什麼方法去測試,這種測試所需的思維,需要我們經常地學習。

作為一個測試人員,我們最起碼能具備的能力是:根據需求編寫測試用例,這應該是作為測試所應具有的基本能力。

很遺憾,很多速成學習的同學並具備這樣的能力,不僅不會分析需求,而且連測試用例都不知道是什麼,這樣的同學,怎麼能算入門呢?

關於測試,很多人都有這樣一種認識:測試門檻低,經過短期的培訓,甚至幾個月的自學就能找到不錯的工作。

做測試,第一我們要知道“測什麼”,第二才是“怎麼測”,關於“測什麼”,就需要長時間的練習,至於“怎麼測”,就更需要鍛鍊了。

軟件測試,絕非是“點點點”,將軟件測試形容為“點點點”的同學,我十分肯定,他們所參與的項目,肯定不會太大。

比如現在做的產品,用戶量是七百多萬,用戶量這麼大,對於軟件的性能肯定有要求,同時每次版本迭代,在迴歸測試時,不可能手工去測試各個功能點,就會引入自動化測試,像性能測試和自動化測試,就絕不是簡單地“點點點”了。





莫離呢


軟件測試是指對尚未投入使用的軟件進行功能和可靠性檢驗,以驗證是否達到了軟件開發計劃的目標。

軟件測試是一件非常專業的工作,並不是簡單運行一下。測試包括:

支撐環境適應性測試

將軟件安裝到不同版本的操作系統中,看軟件是否能夠正常運行。

其中,還可能安裝卸載其它軟件,看該軟件是否會受到干擾,以此來驗證軟件的健壯性。

功能測試

對照軟件開發設計說明,對每個功能是否已經提供,予以一一驗證。每個功能能否達到預期目標,需要通過一組輸入來獲得輸出,看輸出結果是否符合設計要求。

可靠性測試

人為輸入一些不合格數據,看軟件能否識別。如果軟件未對不合格數據進行判斷,輕者出現錯誤結論,重者可能是系統崩潰。

一般情況下,測試可靠性,需要列出超出正常範圍的數據和臨界值,然後一一輸入驗證軟件是否可靠。

用戶體驗測試

軟件是否被用戶接受,需要在一定範圍試運行,讓用戶進行體驗。看軟件是否符合大多數人的操作習慣,軟件的顯示內容是否易於理解。

安全性測試

有些關鍵應用,還需要對軟件安全性進行驗證。比如軟件是否會造成系統崩潰,是否會完成數據洩密,是否會被其它無關人員操控等等。

合規性驗證

對軟件是否符合法律法規進行驗證。比如某些插件是否涉及到軟件著作權問題,某些顯示符號是否涉及到知識產權等。

總之,軟件測試不是一件簡單的事。它需要嚴密的測試方案,嚴謹的測試過程,詳盡的測試結果,需要客觀的測試結論。


湧進風雲


軟件測試定義是:為了發現程序中的錯誤而執行程序的過程

它是幫助識別開發完成(中間或最終的版本)的計算機軟件(整體或部分)的正確度(correctness) 、完全度(completeness)和質量(quality)的軟件過程;是SQA(software quality assurance)的重要子域。

軟件測試的目標:

(1)測試是為了發現程序中的錯誤而執行程序的過程;

(2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案;

(3)成功的測試是發現了至今為止尚未發現的錯誤的測試。

軟件測試的內容:

軟件測試主要工作內容是驗證(verification)和確認( validation ),下面分別給出其概念:

驗證(verification)是保證軟件正確地實現了一些特定功能的一系列活動,即保證軟件做了你所期望的事情。(Do the right thing)

1.確定軟件生存週期中的一個給定階段的產品是否達到前階段確立的需求的過程;

2.程序正確性的形式證明,即採用形式理論證明程序符號設一計規約規定的過程;

3.評市、審查、測試、檢查、審計等各類活動,或對某些項處理、服務或文件等是否和規定的需求相一致進行判斷和提出報告。

確認(validation)是一系列的活動和過程,目的是想證實在一個給定的外部環境中軟件的邏輯正確性。即保證軟件以正確的方式來做了這個事件(Do it right)

1.靜態確認,不在計算機上實際執行程序,通過人工或程序分析來證明軟件的正確性;

2.動態確認,通過執行程序做分析,測試程序的動態行為,以證實軟件是否存在問題。

軟件測試的對象不僅僅是程序測試,軟件測試應該包括整個軟件開發期問各個階段所產生的文檔,如需求規格說明、概要設計文檔、詳細設計文檔,當然軟件測試的主要對象還是源程序。

從不同的角度出發,軟件測試可以劃分為不同的分類:

從是否關心軟件內部結構和具體實現的角度劃分

A.白盒測試

B.黑盒測試

C.灰盒測試

從是否執行程序的角度

A.靜態測試

B.動態測試。

從軟件開發的過程按階段劃分有

A.單元測試

B.集成測試

C.確認測試

D.驗收測試

E.系統測試


宇波波夫


軟件測試是伴隨著軟件的產生而產生的。早期的軟件開發過程中軟件規模都很小、複雜程度低,軟件開發的過程混亂無序、相當隨意,測試的含義比較狹窄,開發人員將測試等同於“調試”,目的是糾正軟件中已經知道的故障,常常由開發人員自己完成這部分的工作。

早期企業對測試的投入極少,測試介入也晚,常常是等到形成代碼,產品已經基本完成時才進行測試。到了上世紀80年代初期,軟件和IT行業進入了大發展,軟件趨向大型化、高複雜度,軟件的質量越來越重要。這個時候,一些軟件測試的基礎理論和實用技術開始形成,並且人們開始為軟件開發設計了各種流程和管理方法,軟件開發的方式也逐漸由混亂無序的開發過程過渡到結構化的開發過程,以結構化分析與設計、結構化評審、結構化程序設計以及結構化測試為特徵。

軟件測試主要工作內容是驗證(verification)和確認( validation ),下面分別給出其概念:

驗證(verification)是保證軟件正確地實現了一些特定功能的一系列活動,即保證軟件做了你所期望的事情。(Do the right thing)

1.確定軟件生存週期中的一個給定階段的產品是否達到前階段確立的需求的過程

2.程序正確性的形式證明,即採用形式理論證明程序符號設一計規約規定的過程

3.評市、審查、測試、檢查、審計等各類活動,或對某些項處理、服務或文件等是否和規定的需求相一致進行判斷和提出報告。

確認(validation)是一系列的活動和過程,目的是想證實在一個給定的外部環境中軟件的邏輯正確性。即保證軟件以正確的方式來做了這個事件(Do it right)


偵查一線


軟件測試經典的定義是:在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟件質量。我認為軟件測試就是通過對既定場景的明確,然後對待進行質量評估的需求,通過一定的測試手段,對需求進行質量評估,並提交缺陷的過程。

對於現在的互聯網環境來說,我認為軟件測試這種說法是比較狹窄的,給人一種軟件測試這種工作貌似只針對軟件,其實在當下測試對象已經不侷限於特定的軟件,還包括需求,數據,系統等,而軟件的表現形式也更加的多種多樣,例如web頁面、h5,APP、接口等。

對既定場景的理解

在進行測試之前,我們需要理解測試執行的特定環境和既定條件,就是說你要明白是在什麼條件下執行的測試,數據是什麼、打算執行什麼樣的行為、程序的運行狀態是什麼等。比如要進行性能測試的時候,你要明確測試場景,準備測試數據,要進行接口測試的時候要明確入參類型,入參數據。

待進行質量評估的需求

這裡待進行質量評估的需求,我認為就是要進行質量評估的對象,隨著互聯網技術的不斷髮展,需要對種對象進行質量評估,同時測試的需求也不斷的豐富,我們需要除了要對APP進行功能測試,為了給用戶提供更好的體驗,還要進行專項測試包括兼容性測試、電量測試、流量測試、流暢度測試等等,接口要進行常規的業務邏輯測試以外,因為用戶量太大,同時也要進行接口的性能測試,為了驗證某個新功能用戶是否喜歡,要進行小流量的灰度測試,等等,還有很多種需求,也就衍生出很多種測試。


測試手段

我認為的測試手段並不是說是手動執行還是自動化執行,我覺得測試的手段更應該是一種能力。

為了讓測試儘早的介入需求,在需求評審階段測試人員要對需求進行測試,這裡的測試是指評估需求的合理性,邏輯是否完整並且正確,設計是否合理,這裡的測試手段閱讀需求的能力,對業務熟悉的能力,邏輯能力。對APP進行功能測試,需要手動執行,這裡的測試手段是你的功能用例設計能力,需要自動化執行,那就需要你的代碼編寫能力以及一些測試框架的熟悉使用能力。針對不同的測試需求,就需要使用不同測試工具的能力。

質量評估

當測試執行完後,手機到測試結果後,就要進行質量評估了,在收集測試數據時,一定要保證數據的正確性,才能進行有有有效的質量評估,質量評估可以簡單的理解為就是對需求的實現是否與預期的相吻合。

提交缺陷

當通過各種測試手段發現了系統存在問題,這是就需要提交給開發人員進行修復,那就需要你提交高質量的缺陷了,提交一個缺陷並不是把問題描述一遍就行了,而是將你的測試數據,系統的狀態,什麼樣的場景,具體的表現形式,以及你認為的可能原因是什麼,修改建議都要表述清楚。能提交高質量的bug,也是一名測試工程師專業性的表現。


總結

軟件測試我更偏向是一個過程,在這個過程中要理解測得是什麼,要準備哪些測試的數據,要怎麼測,又如何對測試結果進行評估。


測試軒


主要是通過軟件測試這一步驟去查找發現預期效果和實際效果的區別和問題,對軟件進行評估衡量是否能夠滿足設計的要求和特點。說通俗一點就是為了找出軟件裡面有沒有bug,比如我開發了一個購物的軟件,然後我在裡面買東西,發現不用付款就可以結賬成功,然後大量的人通過這個渠道買東西造成了公司大量損失。軟件測試的作用就是去發現並指出問題的一個職業,對一個好的軟件測試員來說,一個軟件有很多的地方需要去測試,不僅是會造成損失的要測試、影響客戶體驗的也需要測試指出。軟件測試主要是要細,一個軟件往往大錯誤就不不多,最多的就是小錯誤小毛病。測試軟件崗位主要適合於大部分IT開發,現在軟件測試也是一個發展比較快的東西,在未來潛力也是比較大的。


歆語


主要是通過軟件測試這一步驟去查找發現預期效果和實際效果的區別和問題,對軟件進行評估衡量是否能夠滿足設計的要求和特點。


說通俗一點就是為了找出軟件裡面有沒有bug,比如我開發了一個購物的軟件,然後我在裡面買東西,發現不用付款就可以結賬成功,然後大量的人通過這個渠道買東西造成了公司大量損失。


軟件測試的作用就是去發現並指出問題的一個職業,對一個好的軟件測試員來說,一個軟件有很多的地方需要去測試,不僅是會造成損失的要測試、影響客戶體驗的也需要測試指出。


軟件測試主要是要細,一個軟件往往大錯誤就不不多,最多的就是小錯誤小毛病。


測試軟件崗位主要適合於大部分IT開發,現在軟件測試也是一個發展比較快的東西,在未來潛力也是比較大的。


電商品鑑


軟件測試是指軟件生存週期中所有的檢查、評審和確認工作,其中包括了對分析、設計階段,以及完成開發後維護階段的各類文檔、代碼的審查和確認。或者說是使用人工操作或者軟件自動運行的方式來檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別的過程。


分享到:


相關文章: