先前自己網上整理的一些資料——其中包括測試定義、測試方法分類、測試原則、測試策略、測試模型,希望對和我一樣剛剛入門的小伙伴有些許幫助??理論知識還是基礎,重點還是要在項目實戰里懂的運用貫通知識點
1.定義(目的):發現軟件程序中的錯誤而執行程序的過程
1)軟件測試為了發現程序存在的代碼或業務邏輯錯誤;2)軟件測試為了檢驗產品是否符合用戶需求;3)軟件測試為了提高用戶的體驗
2.測試方法分類(能按照不同的維度區分軟件測試方法的分類,熟悉每一個方法的特點):
按開發階段分{? ? 單元測試:對軟件組成單元進行測試,目的是驗證軟件基本組成單位的正確性,測試對象是軟件設計的最小單位:模塊/? ? 集成測試:也稱聯合測試、組裝測試,將程序模塊采用適當的集成策略組裝起來,對系統接口集成后的功能進行檢測,驗證軟件單位間接口是否正確。? ? 系統測試:就是一個系統的測試。包括功能、性能、軟件運行軟硬件環境的進行測試,大部分時間是在這個階段。? ? 驗收測試:確保軟件準備就緒,按照項目合同、任務書、雙方約定的驗收依據文檔,展示系統的原始需求是否滿足。??}
按是否運行{? ? 靜態測試:指不運行被測程序,僅僅通過分析或者檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。? ? 對需求規格說明書、軟件設計說明書、對源程序做結構分析、流程圖分析、符號執行來找bug。? ?? ???動態測試:通過運行被測程序,檢查運行結果與預期結果的差異,并分析運行效率、正確性、健壯性。這種方法? ? 通過三部分組成:構造測試用例、執行程序、分析程序的輸出結果。}
按是否查看代碼{? ? 白盒測試:結構測試、透明測試、邏輯驅動測試、基于代碼測試,即研究源代碼和程序的結果? ?? ???黑盒測試:只關心軟件的輸入輸出{? ?? ???功能測試? ?? ???{功能測試:測試軟件功能是否符合需求、? ?? ???界面測試:UI測試,系統界面是否合理,整體風格是否一致,界面文字是否正確,圖片是否美觀、? ?? ???冒煙測試:對象是每一個新編譯的需要正式測試的軟件版本,確認基本功能正常,后續可以正式測試工作、? ?? ???回歸測試:錯誤修正后或功能環境發生變化后進行的重新測試,確認修改不會影響其他功能、? ?? ???業務邏輯測試:側重在業務流程,基本功能已合格的基礎上,準備組合多種測試數據,來驅動或輔助各種約束條件下的業務流程,確定最終數據結果是否符合預期、? ?? ???兼容性測試:測試系統與其他軟硬件的兼容性(APP、C/S架構、B/S架構)、? ?? ???易用性測試:測試軟件在使用是用戶是否使用覺得方便、主觀性較強}? ?? ?? ?? ?? ?? ?? ?? ?性能測試? ?? ???{性能測試:為獲取驗證系統的性能指標而進行的測試,一般會在不同的負載情況進行、? ?? ???負載測試:通過改變系統負載的方式,增加負載來發現系統性能存在的問題、? ?? ???壓力測試:強度測試,主要是確定系統的穩定性,高負載長時間穩定性壓力測試,極限負載情況下導致系統崩潰的破壞性壓力測試、? ?? ???容量測試:確定系統可以處理同時在線用戶數的最大數量,使系統承受超額的數據容量來發現它是否能夠正確處理、? ?? ???并發測試:測試多用戶并發訪問同一個應用,模塊,數據時是否產生隱藏的并發問題,如內存泄漏,線程鎖,資源爭用,而幾乎所有的性能測試都會用到并發測試、? ?? ???配置測試:對被測系統的軟硬件環境調整,了解不同環境對系統性能影響程度,從而找到系統各項資源的最優分配原則、? ?? ???可靠性測試:評估產品在規定的壽命期限內,預期使用,存儲,運輸等所有環境,保持功能可靠性而進行活動}? ? }? ?? ?? ?? ?灰盒測試:介于白盒黑盒之間的測試,多用于集成測試階段,不僅關注輸入輸出的正確性,同時也關注程序內部的情況。}
是否手工執行{? ? 手工測試:手工的一個個去輸入用例,然后觀察結果,和機器測試相對應? ?? ???自動化測試(Automation Testing):在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常和異常條件,? ? 就是把人為驅動的測試行為轉化為機器執行的過程。}
其他{? ? 隨機測試:、? ? 冒煙測試:是在將代碼更改嵌入到產品的源樹中之前對這些更改進行驗證的過程,? ? 冒煙測試設計用于確認代碼中的更改會按預期運行,且不會破壞整個版本的穩定性、? ? 安全測試:測試系統防范非法入侵的能力、? ? 探索性測試:測試思維技術,沒有很多實際測試方法,技術,工具,是測試人員應該具有? ? 的一種能力,探索性測試強調人員的主觀能動性,能夠摒棄復雜的測試計劃,測試用例設計? ? 過程,強調在碰到問題時及時改變測試策略。? ? 回歸測試:錯誤修正后,軟件功能、環境發生變化后的重新測試,確認修改不會對其他功能造成影響。? ? Alpha測試:前期用戶測試,公司內部員工與部分用戶模擬實際操作環境下進行的驗收測試,也稱為內測、? ? Beta測試:后期測試,系統已經通過內部測試大部分的錯誤已經修正即將正式發行,在一個、多個真實環境下發布版本,進行測試,也稱為公測。}
3.軟件測試原則(熟悉基本約定):
1)測試應該盡早介入;----需求分析2)所有的測試都應追溯到用戶需求;3)程序員應該避免檢查自己的程序。除了單元測試。因為程序員對于自己的作品,思維具有局限性。無法保證測試質量。交給第三方或者專業測試,運用各種測試技術,利用豐富的測試經驗和對bug的敏感,去提高軟件的質量;4)設計測試用例時應考慮到合法的輸入和不合法的輸入以及各種邊界條件,特殊情況下還要制造極端狀態和意外狀態。5)二八原則,測試發現的錯誤中80%很可能起源于20%的模塊中;6)對錯誤結果要進行一個確認過程;7)制定嚴格的測試計劃;8)完全測試是不可能的,測試需要終止;9)妥善保存測試過程中的所有文檔
4.軟件測試策略(高效合理的安排測試任務):
測試策略在結構上可以包括:(1)測試級別:常見的測試級別有單元測試,集成測試和系統測試。大部分的測試組織里面,單元測試由開發負責,而集成測試和系統測試由測試部門或者質量保證部門負責。(2)角色與職責:需要在測試策略里面明確定義各個角色,以及該角色的職責。比如項目經理,測試組長,測試工程師…(3)環境需求:這一點非常重要,它將描述測試時需要的系統環境,包括軟硬件以及網絡環境等等。在澄清環境需求的時候,測試組織可以識別出資源方面的風險。(4)風險分析:影響測試過程的風險都應該盡早被識別出來,而且必須有相應的解決辦法以便消除或者減輕這些風險。(5)測試進度:測試進度將會評估完成測試所需要的時間。在設定進度的時候,首先需要明確測試范圍,然后根據測試資源的多少來制定能被各方面認可的測試進度計劃。做一個非常準確的進度計劃是困難的事情,因為測試過程中充滿了各種不確定性,所以一般計劃者需要考慮增加一定的buffer。當然,制定進度計劃的時候可以參考已有的項目的數據。如果是一個全新的軟件項目,專家認為將初始計劃的時間翻倍比較靠譜!(6)回歸測試方法:回歸測試用來保證之前fix bug的代碼不會影響軟件的其他部分,這樣需要我們選擇已經執行過的測試用例重新運行。測試人員需要找到一個方法來確定哪些測試用例應該在回歸測試中運行,用例不能太多,因為資源有限,用例也不能太少,否則會達不到必須的測試強度。不過,如果測試部門對待測系統以及軟件架構非常了解的話,就比較容易找到合適的回歸測試集合。(7)測試范圍:要測試的內容,可能是某些模塊,可能是某些指標,比如功能,性能,易用性…(8)測試優先級:測試范圍內的東西不會都是一樣重要的,加上測試資源各種有限,所以為測試排定優先級是十分的必要。
5.軟件測試模型(了解軟件測試在項目研發過程中的定位):
V模型
[img=522,0]D:\YNote\m13489136960@163.com(1)\4ba87e21bc14458bb9e719ca7728315d\clipboard.png[/img]
V模型(測試 )1、單元測試又稱模塊測誠,針對軟件設計中的最小單位—程莊模塊,進行正確性檢查的測試工作。單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。單元定義:C中指一個函數,Java中指一個類,在圖形化的軟件中,單元一般指1個窗口,1個菜單。2、集成測試又叫組裝測試,通常在單元測試的基礎上,將所有程序模塊進行有序的、遞增的測試。重點測試不同模塊的接口部分。3、系統測試(system testing):指的是將整個軟件系統看為一個整體進行測試,包括對功能、性能、以及軟件所運行的軟硬件環境進行測試。系統測試在系統集成完畢后進行測試,前期主要測試系統的功能是否滿足需求,后期主要測試系統運行的性能是否滿足需求,以及系統在不同的軟硬件環境中的兼容性等。4、驗收測試α測試:Alpha是內測版本,即現在所說的C8,比版本表示該軟件僅僅是一個初步完成品,通常只在軟件開發者內部交流,也有很少一部分發布給專業測試人員。一般而言,該版本軟件的bug較多,普通用戶最好不要安裝。β測試:Beta是公測版本,是對所有用戶開放的測試版本。該版本相對于a顏已有了很大的改進,消除了嚴重的錯誤,但還是存在著一些陷需要經過大規模的發布試來進一步消除。這一版本通常由軟件公司免費發布,用戶可從相關的站點下載。通過一些專業愛好者的測試,將結果反饋給開發者,開發者們再進行有針對性的修改。該版本也不適合一般用戶安裝。λ測試:Camma版本,指的是軟件版本正式發行的候選版。該版本已經相當成熟了,與即將發行的正式版相差無幾,成為正式反布的候選版本。軟件正式版本推出之前的幾個版本,需要有人測試一下,看看是不是有問題。在開發該軟件的公司內部的由該公司內部人員式的稱為:Alpha測試,Alpha 測式主要看有沒有功能缺失或系統錯誤,Alpha 測試完后一般不會有大問題了。然后巴軟件拿給用戶測試稱為:beta 測試,主要是看用戶對軟件外觀、使用方便等的反應。這么多的式版一方面為了最終產品盡可能地滿足用戶的需要,另一方面也盡量成少了軟件中的bug。然后做過一些修改,成為正式發布的候選版本時,叫做gamma(現在叫做RC-ReleaseCandidate)。簡單來說,阿爾法測試主要是測試人員在開發環境下的測試,貝塔測試是在實際環境中的測試,或者公司內部人員在模擬真實環境中的測試。V模型的優缺點(測試重點)1、優點:包含了底層測試(單元測試)和高層測試(系統測試); ??清楚的標識了開發和測試的各個階段; ??自上而下逐步求精,每個階段分工明確,便于整體項目的把控。2、缺點:自上而下的順序導致了,測試工作在編碼之后,就導致錯誤不能及時的進行修改; ? ?? ?? ?實際工作中,需求經常變化,導致v模型步驟,反復執行,返工量很大,靈活度較低。 改良:每個步驟都可以進行小的迭代工作
W模型(重要)
定義:開發一個v;測試一個v也叫雙V模型
[img=515,0]D:\YNote\m13489136960@163.com(1)\a18c1e494612402b8a2516656dbfb42f\clipboard.png[/img]
優點: ? ?開發伴隨著整個開發周期,需求和設計同樣要測試; ? ?更早的介入測試,可以發現初期的缺陷,修復成本低; ? ?分階段工作,方便項目整體管理。缺點: ? ?開發和測試依然是線性的關系,需求的變更和調整,依然不方便; ? ?如果沒有文檔,根本無法執行w模型;對于項目組成員的技術要求更高!
H模型
[img=331,0]D:\YNote\m13489136960@163.com(1)\29324bcd3209411ba1369934e016ac91\clipboard.png[/img]
?H模型的優點:
>開發的H模型揭示了軟件測試除測試執行外,還有很多工作; >軟件測試完全獨立,貫穿整個生命周期,且與其他流程并發進行; >軟件測試活動可以盡早準備、盡早執行,具有很強的靈活性; >軟件測試可以根據被測物的不同而分層次、分階段、分次序的執行,同時也是可以被迭代的。H模型的缺點: >管理型要求高:由于模型很靈活,必須要定義清晰的規則和管理制度,否則測試過程將非常難以管理和控制; >技能要求高:H模型要求能夠很好的定義每個迭代的規模,不能太大也不能太小; >測試就緒點分析困難:測試很多時候,你并不知道測試準備到什么時候是合適的,就緒點在哪里,就緒點的標準是什么,這就對后續的測試執行的啟動帶來很大困難; >對于整個項目組的人員要求非常高:在很好的規范制度下,大家都能高效的工作,否則容易混亂。例如:你分了一個小的迭代,但是因為人員技能不足,使得無法有效完成,那么整個項目就會受到很大的干擾。