有關軟件測試,腦里很空,目前自己Google、百度了一下“軟件測試”,
各種琳瑯滿目的培訓廣告,說明了啥?
這是好的征兆,自己體會嘍
寫下此文,全方面了解軟件測試,知己知彼、刨根問底、技能提高、職業規劃。
以下也是對軟件測試最基礎的認知。
1、什么是軟件
軟件 = 程序 + 文檔
程序:按實現設計的功能和性能要求執行的指令序列。
文檔:是與開發、維護和使用有關的圖文材料。
2、什么是軟件測試
軟件測試:描述一種用來促進鑒定軟件的正確性、完整性、安全性和質量的過程。
經典定義:在規定條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,并對其是否能滿足設計要求進行評估的過程。
【簡言之,對軟件質量的檢查】
3、軟件測試原則
一,測試人最好在需求階段開始介入。
二,程序員應該避免檢查自己的程序。
三,設計測試用例應盡量100%覆蓋需求。
四,應該充分注意測試中的群集現象。
五,對缺陷進行交叉測試和驗證。
六,制定嚴格的有指導性的計劃。
七,妥善保存測試計劃、測試用例、出錯統計和最終分析報告,為維護提供方便。
【簡言之,就是為了交付更高質量的產品給客戶】
4、軟件測試的對象
程序、數據、文檔
5、軟件測試分類
先貼上大神Findyou整理的一張圖
6、軟件開發流程
=> 需求分析?=>? 概要設計詳細設計?=>??軟件編碼?=>??單元測試?=>??代碼審查?=>??集成測試?=>??打包提交測試部?=>??等待測試提交bug?=>??修復bug?=>??等待測試回歸bug?=>??N輪?=>??版本上線?=>??面向用戶使用
7、軟件測試流程
-->需求分析?=>??設計和評審測試用例?=>??搭建測試環境?=>??等待開發研發完成提交測試包進行測試 =>??部署測試包?=>??冒煙測試?=>??執行測試用例?=>??缺陷跟蹤處理?=>??N輪?=>??版本上線?=>??面向用戶使用?=>??測試總結和報告
8、軟件測試階段
一般分為4個階段:單元測試、集成測試、系統測試、驗收測試
單元測試
單元測試是對軟件組成單元進行測試,其目的是檢驗軟件基本組成單位的正確性,測試的對象是軟件設計的最小單位:模塊。
集成測試
集成測試也稱聯合測試,將程序模塊采用適當的集成策略組裝起來,對系統的接口及集成后的功能進行正確性檢測的測試工作。
系統測試
系統測試主要包括功能測試、界面測試、可靠性測試、易用性測試、性能測試。
回歸測試
回歸測試指在軟件維護階段,為了檢測代碼修改而引入的錯誤所進行的測試活動。
ps. 回歸測試的研究方向還涉及自動化工具,面向對象回歸測試,測試用例優先級,回歸測試用例補充生成等。
9、軟件測試需要技能
硬技能 Hard skill(初級測試工程師)
以下表格是某大型培訓機構的課程介紹,大概可以知道需要掌握的技能了(更新于2018.06)
第1階段: 計算機基礎
1.1、【計算機基礎】計算機體系結構基礎;操作系統基礎
1.2、【軟件測試基礎】軟件的基礎概念;軟件質量及質量模型;軟件測試的基礎理論;軟件測試的需求分析;軟件測試流程及模型;軟件測試計劃及范例。
1.3、【管理工具】SVN
第2階段:?功能測試
2.1、【系統測試基礎】產品需求分析;黑盒用例設計;缺陷定義描述;測試報告撰寫。
軟件測試策略及方法:白盒測試、黑盒測試、灰盒測試、單元測試、集成測試、系統測試、回歸測試、驗收測試;
等價類劃分法、邊界值方法、因果圖法、判定表法、正交排列法、錯誤推算法、場景法編寫測試用例;
負載測試、壓力測試;易用性、兼容、安裝卸載、GUI、安全、文檔等測試
2.2、【測試管理工具】測試管理工具 Qc;缺陷管理工具 Jira;項目管理工具 禪道。主要包括:站點管理、版本管理、需求管理、測試計劃管理、測試執行管理、缺陷跟蹤管理等 測試平臺搭建
2.3、【配置管理工具】Git
2.4、【企業級環境配置】虛擬機;Linux基礎命令;LAMP環境搭建;WAMP環境搭建;中間件tomcat\Weblogic;數據庫的安裝;Linux網絡連接;應用軟件部署。
2.5、【常用數據庫】?安裝卸載;創建數據庫;數據庫的增刪改;查詢(單表,多表);視圖,存儲過程。主流的數據庫管理系統Oracle/MySQL/SQL Server
第3階段:自動化測試
3.1、【開發語言基礎Java、Python】基礎語法;程序機構;文件操作;面向對象;異常處理。
深入掌握通用的編程技能,廣泛了解C-S、B-S等各種系統的系統架構及核心技術實現,為白盒測試及自動化測試腳本打好基礎
了解Python的簡史,特點,掌握Python的語法,Python Web及自動化運維,為自動化測試腳本打好基礎
3.2、【Web端項目自動化】自動化測試原理;自動化測試適用范圍;Selenium的工作原理;Selenium的定位方式;Python+unittest框架;Svn+jenkins持續集成。
3.3、【移動端項目自動化】移動端測試原理;Appium的工作原理;元素定位技術;常見API使用;移動端環境部署;Python腳本開發;搭建完成無人值守框架;
3.4、【接口自動化】網絡協議Http、Https;抓包工具:fiddler;接口測試基礎及用例設計;使用Postman工具完成接口測試;
第4階段:性能測試
4.1、【性能測試基礎】性能測試理論;Web前端性能分析;性能測試分類;性能測試流程;性能測試用例編寫。
4.2、【性能測試工具】loadrunner工作原理;腳本開發技術;參數化技術;關聯技術;事務、檢查點和集合點;場景設計和監控。
4.3、【性能調優】數據庫調優;中間件調優;Linux調優。
4.4、【性能測試報告撰寫】撰寫性能測試報告步驟;合并、修飾性能監控結果。
ps. 高級測試工程師只能自己慢慢進階了
軟技能 Soft skill
測試意義:找到測試意義,才不會輕易迷失自己。
心理素質:看得清自己的路,抗壓能力。
主觀能動:找資料、與人溝通、實踐、總結。
樂觀精神:阿Q精神,做一行,愛一行。
溝通能力:快速全面描述并反饋跟進問題。
分析能力:發現、分析、解決、總結問題。
有條不紊:分配好所有事情的輕重緩急。
富有責任:對自己所做的一切進行負責。
大膽勇敢:勇敢的鉆研,嘗試,實踐、創新。
10、軟件測試職業規劃
第一階段:【測試員】初級測試工程師(初出校門)
自身條件:初入具備計算機專業學位,有一些手工測試經驗。
具體工作:執行測試用例,記錄bug,并回歸測試,通過qtp等測試工具錄制回歸測試腳本,并執行回歸測試腳本。
學習方向:開發測試腳本并且開始熟悉測試生存周期和測試技術。
第二階段:【測試工程師】程序分析員(1-2年)
自身條件:有1~2年工作經驗。具有初步的自動化測試能力,完善自動化測試腳本。
具體工作:設計和編寫測試用例,編寫自動測試腳本程序且擔任測試編程初期的領導工作。
學習方向:拓展編程語言、操作系統、網絡與數據庫方面的技能。
第三階段:【高級測試工程師】程序分析員(3-4年)
自身條件:有3~4年經驗。具有一定的行業業務知識,儲備系統分析員的能力。
具體工作:幫助開發或維護測試或編程標準與過程,分析軟件需求,獲得測試需求。確定測試需求相應的測試方法,獲得測試策略方案。參與同行的評審 (軟件需求,軟件測試計劃等),并為其它初級的測試工程師或程序員充當顧問。
學習方向:繼續拓展編程語言、操作系統、網絡與數據庫方面的技能。
第四階段:測試組負責人(4-6年)
自身條件:有4~6年經驗。具有豐富的行業業務知識,具有系統分析員的能力,專長性能測試。
具體工作:負責管理1~3名測試工程師或程序員。集中于技能方面,擔負一些進度安排和工作規模/成本估算職責。分析性能瓶頸的原因,為開發團隊提供bug解決策略。
學習方向:性能測試,測試技能
第五階段:【資深安全或性能測試工程師】測試/編程高級負責人(6-10年)
自身條件:有6~10年經驗的測試工程師或程序員。
具體工作:負責管理8~10名技術人員。性能測試整體方案設計,軟件系統性能問題定位和性能優化,內存優化及分析數據溢出等,分析系統的安全漏 洞等。負責進度安排、工作規模/成本估算、按進度表和預算目標交付產品。負責開發項目的技術方法。為一些用戶提供支持與演示。
學習方向:開發一些特定領域的技術專長
第六階段:測試/質量保證/開發(項目)、經理(10年以上)
自身條件:有10多年的工作經驗。
具體工作:管理8名或更多的人員參加的1個或多個項目。負責這一領域(測試/質量保證/開發)內的整個開發生存周期業務。為一些用戶提供交互和 大量演示。負責項目成本、進度安排、計劃和人員分工
第七階段:【公司級質量總監】計劃經理
自身條件:有10年以上開發與支持(測試/質量保證)活動方面的經驗。
具體工作:管理從事若干項目的人員以及整個開發生存周期。負責把握項目方向與盈虧責任