什麼是軟件測試
在必定的條件下,執行程序,比較實際結果與預期結果的過程前端
測試與調試的區別
測試 - 由測試人員完成 - 破壞性的
調試 - 由開發人員完成 - 建設性的mysql
測試的七大原則
經過測試能夠顯示缺陷的存在
窮盡測試是不可能的
測試要儘早介入
缺陷的集羣效應
殺蟲劑悖論
測試依賴於具體的商業背景
沒有缺陷的系統並不表明是有用的系統算法
測試過程/測試流程/測試生命週期
制定測試計劃 - 測試組長/主管/經理 - 測試任務,時間,人員的安排
制定測試方案 - 測試管理人員/測試工程師 - 如何測試的指導性文檔
分析測試需求 - 測試工程師 - 基於軟件需求文檔,分析測試點
設計並編寫測試用例 - 測試工程師 - 將分析的測試點轉換爲企業標準的測試用例
評審測試用例 - 開發+測試+需求人員
搭建測試環境(Linux,Windows)
執行測試用例,提交併跟蹤缺陷 - 測試工程師
撰寫測試報告 - 測試工程師
測試總結 - 測試管理人員sql
軟件生命週期
計劃階段 - 項目經理 - 任務,時間,人員安排
需求分析 - 需求工程師/產品經理 - 分析並整理前端收集到的零散需求,並造成文檔
概要設計 - 架構人員 - 對系統總體框架的設計,肯定系統模塊,模塊與模塊之間的關係,編寫核心代碼,肯定系統與子系統的關係
詳細設計 - 開發人員 - 對模塊內部的算法及邏輯結構進行詳細設計,包括類,方法,函數,數據庫,表等
編碼 - 開發人員 - 編寫代碼
測試 - 測試團隊 - 參見測試流程
發佈 - 發佈負責人 - 程序+數據+文檔
運維 - 運維人員 - 負責客戶或用戶使用軟件過程當中的問題數據庫
軟件開發模型
邊作邊改模型
瀑布模型 - 把生命週期中的各個環節肯定下來,可是環節不可逆,測試滯後
快速原型模型 - 在需求階段,經過原型不斷和客戶溝通需求,最終肯定需求,再進行系統的總體設計與開發
V模型 - 爲每一個開發活動對應相關測試活動
用戶需求 驗收測試
需求分析 系統測試
概要設計 集成測試
詳細設計 單元測試
編碼
W模型
需求分析 系統實施 測試需求分析 系統測試
概要設計 系統的集成 測試概設 集成測試
詳細設計 模塊的集成 測試詳設 單元測試
編碼 編碼
增量模型 - 按照功能點開發
每個增量是一個流程,開發,測試,需求能夠並行工做瀏覽器
測試分類 - 按照不一樣維度分類
一、測試階段劃分(按測試執行順序):
● 單元測試(Unit Testing)--UT
定義:針對軟件基本組成單元(軟件設計的最小單位)來進行正確性檢驗的工做;
測試目的:檢測軟件模塊對《詳細設計說明書》的符合程度。
● 集成測試(Integration Testing)--IT
定義:在單元測試的基礎上,將全部模塊按照概要設計要求組裝成爲子系統或系統,驗證組裝後功能以及模塊間接口是否正確的測試工做;
測試目的:檢測軟件模塊對《概要設計說明書》的符合程度。
● 系統測試(System Testing)--ST
定義:將已經集成好的的軟件系統,做爲整個基於計算機系統的一個元素,與計算機硬件、外設、某些支持軟件、數據和人員等其餘元素組合在一塊兒,安全
在實際運行(使用)環境下,對計算機系統進行的一系列的測試工做。
測試目的:與《需求規格說明書》作比較,發現軟件與系統需求定義不符合或與之矛盾的地方。
● 迴歸測試(Regression Testing)--RT
定義:軟件在測試或其餘活動中發現的缺陷通過修改後,進行的測試;
測試目的:驗證缺陷獲得了正確的修復,同時對系統的變動沒有影響之前的功能;
特色:迴歸測試能夠發生在任何一個階段,包括單元測試、集成測試和系統測試;
策略:
①、徹底重複測試:從新執行前期創建的全部測試用例,並確認缺陷解決和修改的擴散影響性;
②、選擇性重複測試:
——覆蓋修改法:選擇直接影響的用例;
——周邊影響法:選擇間接影響的用例;
——指標達成方法:達到指標的覆蓋率等。
流程:
1)制定迴歸測試策略
2)肯定測試的版本
3)按照迴歸測試策略執行迴歸測試
4)迴歸測試經過,關閉缺陷跟蹤單(問題單)
5)迴歸測試不經過,缺陷跟蹤單返回開發人員,經開發人員修改後再次進行迴歸測試
迴歸測試自動化:(需考慮的問題以下)
1)迴歸測試是一個重複的之前測試的測試,因此自動化是迴歸測試的追求;
2)自動化法包括:程序的自動運行、自動配置,用例的管理、自動輸入,測試自動執行,測試結果自動採集、比較及結論的自動輸出;
3)對比較穩定的可採用QTP、Robot、SilkTest等工具的「捕捉回放」工具;
4)爲了能實現自動化須要用到腳本語言,如:TCL、Python、Perl等;
5)對比較複雜的過程,沒法藉助工具的須要本身開發專用工具;
6)儘早考慮迴歸測試的自動化,造成工具化、可繼承和推廣的。
● 其餘測試階段
○ α測試:用戶在開發環境下進行的測試,評價軟件FLURPS
○ β測試:多用戶在實際使用環境下進行的測試
○ 驗收測試:用戶根據合同、《需求規格說明書》或《驗收測試計劃》對產品進行的驗收測試
注:FLURPS即:功能、局域化、可用性、可靠性、性能、技術支持
二、單元測試、集成測試、系統測試的比較:
● 測試方法:
單元測試屬於白盒測試範疇;
集成測試屬於灰盒測試範疇;
系統測試屬於黑盒測試範疇;
● 考察範圍:
單元測試主要測試內部數據結構、邏輯控制、異常處理等;
集成測試主要測試模塊間的接口與接口數據傳遞關係,以及模塊組合後的總體功能;
系統測試主要測試整個系統相對於需求的符合度;
● 評估基準:
單元測試主要經過邏輯覆蓋率來評估;
集成測試主要經過接口覆蓋率來評估;
系統測試主要經過測試用例對需求規格的覆蓋率來評估;服務器
主要的測試文檔:
● 測試計劃:測試範圍、方法、資源,以及相應測試活動的時間進度安排表的文檔;
● 測試方案:爲完成軟件集成特性的測試而進行的設計測試方法的細節文檔;
● 測試用例:爲完成一個測試項的測試輸入、預期結果、測試執行條件等因素的文檔;
● 測試規程:執行測試時測試活動序列的文檔;
● 測試報告:執行測試結果的文檔;
● 測試日報:天天測試執行狀況的記錄和總結。
三、軟件測試過程規範
首先來看看軟件最權威的規範CMM(capability maturity model 能力成熟度模型)關於過程的要素的描述有哪些?
● 角色(rolse):執行者、工做者
● 入口準則(entry criteria):過程執行的前提條件
● 輸入(input):過程所需資源
● 活動(activities):過程執行
● 輸出(output):過程執行結果
● 出口準則(exit criteria):過程結束的條件
● 評審和審覈(reviews and audits):監督活動
● 可管理和受控的工做產品(work products managed controlled):標準性的東西
● 測量(measurements):能夠度量的
● 書面規程(documented procedures):計劃文檔類
● 培訓(training):業務培訓等
● 工具(tools):過程執行採用的工具
這些要素已經全面囊括了一個過程的方方面面,若是在軟件流程中的每個過程都按照這樣的規範執行,那麼軟件質量就能獲得必定的保證!
那麼做爲軟件測試工做,在整個軟件開發流程中的每個過程當中有哪些工做要作的呢?下面我將分角色、分階段的來學習。
四、系統測試過程
在這裏主要研究軟件系統測試過程當中的輸入和輸出,瞭解咱們應該根據什麼來作、要作什麼以及咱們作的前後順序是怎麼安排的過程。
系統測試計劃階段:
輸入:軟件開發計劃、軟件測試計劃、需求規格說明書
輸出:系統測試計劃
系統測試設計階段:
輸入:需求規格說明書、系統測試計劃
輸出:系統測試方案
系統測試實現階段:
輸入:需求規格說明書、系統測試計劃、系統測試方案
輸出:系統測試用例、系統測試規程、系統測試預測試項
系統測試執行階段:
輸入:系統測試計劃、系統測試方案、系統測試用例、系統測試預測試項、系統測試規程
輸出:系統預測試報告、系統測試報告、缺陷報告
五、集成測試過程
一樣這個過程將研究集成測試過程各個階段的輸入及輸出。
集成測試計劃階段:
輸入:軟件測試計劃、概要設計說明書
輸出:集成測試計劃
集成測試設計階段:
輸入:概要設計說明書、集成測試計劃
輸出:集成測試方案
集成測試實現階段:
輸入:概要設計說明書、集成測試計劃、集成測試方案
輸出:集成測試用例、集成測試規程
集成測試執行階段:
輸入:集成測試計劃、集成測試方案、集成測試用例、集成測試規程
輸出:集成測試報告、缺陷報告
六、單元測試過程
一樣這個過程將研究單元測試過程各個階段的輸入及輸出。
單元測試計劃階段:
輸入:詳細設計說明書、軟件測試計劃
輸出:單元測試計劃
單元測試設計階段:
輸入:詳細設計說明書、單元測試計劃
輸出:單元測試方案
單元測試實現階段:
輸入:詳細設計說明書、單元測試計劃、單元測試方案
輸出:單元測試用例、單元測試規程
單元測試執行階段:
輸入:單元測試計劃、單元測試方案、單元測試用例、單元測試規程
輸出:單元測試報告、缺陷報告
七、需求分析階段
每一個階段有每一個階段的任務,這裏將瞭解需求分析階段的任務,及其軟件項目各工做人員的任務所在。
需求分析階段任務:
● 需求分析,完成SRS
● 軟件需求規格說明書的評審:檢查遺漏和存在問題
● 進行需求跟蹤
● 系統測試計劃
● 系統測試計劃的評審
八、概要設計階段
概要設計階段任務:
● 軟件系統各層設計,完成HLD
● HLD的評審
● 更新需求跟蹤
● 系統測試方案、用例的設計
● 系統測試方案、用例的評審
● 集成測試計劃
● 集成測試計劃的評審
9 、詳細設計階段
詳細設計階段任務:
● 軟件詳細模塊的設計,完成LLD
● 詳細設計的評審
● 更新需求跟蹤
● 集成測試方案、用例的設計
● 集成測試方案、用例的評審
● 單元測試計劃
● 單元測試計劃的評審
十、編碼階段
編碼階段任務:
● 軟件編碼
● 對代碼進行靜態質量檢查
● 代碼評審
● 單元測試方案、用例的設計
● 單元測試方案、用例的評審
十一、測試階段
測試階段的任務:
● 系統預測試項執行
● 系統預測試報告工做
● 執行各階段測試用例
● 各階段的缺陷記錄、修復
● 各階段日誌報告
● 各階段缺陷的迴歸測試
● 各階段測試報告
● 測試報告的評審數據結構
系統測試的類型:
功能測試-手工
功能測試-自動化
性能測試
兼容性測試
安全測試
接口測試
健壯性測試
安裝卸載升級測試
文檔測試架構
按照測試技術分:
白盒測試
灰盒測試
黑盒測試
按照是否運行程序:
靜態測試
動態測試
其餘測試相關開概念:
迴歸測試
冒煙測試
國際化測試 - I18N 本地化測試 - L10N
隨機測試
探索性測試
技術:
高級測試工程師
自動化測試工程師
性能測試工程師
安全測試工程師
接口測試
單元測試
數據庫管理員DBA
Linux系統運維
開發
運維
管理
測試組長、主管、經理
測試總監
項目經理
運維經理
質量部經理
業務:
需求工程師
產品經理
行業專家(電信,銀行,證券,供應鏈)
一個優秀的測試工程師須要具有的技能
素質:專業、性格、邏輯、情感
能力:測試基礎、標準與規範、測試流程、測試工具、測試方法
管理:管人、理事
行業經驗:業務、測試與行業背景結合愈來愈緊密
英語:外企、國外項目
性格:開朗、交流、團隊合做、追求完美、懷疑精神、善於說服
==========用例規範==========
測試用例的概念:
是爲某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或覈實是否知足某個特定需求。
爲何要寫測試用例:
便於可視化管理
避免測試點的遺漏
能夠提升測試效率
統一標準
便於重複測試
便於團隊交流
便於統計跟蹤
測試用例的八要素及其餘要素:
用例編號 – Test case no
測試項目/模塊 – Project name / Section
用例標題 – Test case name
優先級 - Priority
預置條件 – Pre-condition
輸入數據 - data
操做步驟 - Step
預期結果 – Expected result
做者 - author
版本 - version
日期 - data
測試結果 result
經過 - passed
失敗 - failed
阻礙 – blocked
未執行 - NA
-----------------
P1: 系統的基本功能,case數量應受到控制 15~20%
劃分依據:該用例執行失敗,會致使多處重要功能不可用;發生機率較高的,常用的功能
該類用例需在每一輪版本測試中執行
P2: 系統的重要功能,case數量較多 30~50%
劃分依據:各類應用場景,使用頻率較高的正常功能。功能交互相關。
在非迴歸的系統測試版本中都要執行,系統全部的重要功能都必須實現
P3: 系統的通常功能,case數量較多 30~50%
劃分依據:使用頻率低於P2,好比超長字符串,邊界值,事物完整性等
非迴歸的系統測試版本中不用都進行驗證,在系統測試的中後期不必定每一個版本都驗證
P4:無關緊要 10%
劃分依據:比較生僻的輸入,使用頻率很是低得功能
在版本測試中,有某些正常緣由,通過和產品經理進行溝通確承認以不執行
-----------------
測試用例的完整寫做過程
基於需求規格說明書分析測試需求-》設計測試用例-》寫做測試用例-》評審測試用例
用例如何評審?
當測試工程師完成用例的編寫後,先會通知開發與需求,開發和需求可提早查看測試用例,
測試工程師會安排評審會議,併發送會議邀請給相關開發,需求,項目經理,測試及開發組長。
測試,開發,需求等人員一塊兒開會,測試主導評審會議,並講解用例寫做相關內容,開發,
需求及其餘人員能夠提出建議及相關補充,會議經過後,測試再對用例進行最終整理。
什麼樣的用例是好的測試用例
從三個維度分析,第一個,用例設計角度,第二個,用例寫做角度,第三個,用例維護的角度
對需求的覆蓋
對被測試對象設計的瞭解
對具體的方法的使用
用例寫做符合5C原則
正確(correctness):數據輸入
清楚(clarity):操做步驟
簡潔(concision):標題
完整(completion):預期結果檢查完整
一致性(consistency):用例編號
用例易於維護
==========缺陷管理==========
缺陷的屬性:
建立者 reporter
建立時間 date
缺陷版本 version
缺陷類型 type
缺陷所屬的產品/項目/模塊 product, project, feature
指派給 assign to
缺陷編號 no
標題 title
缺陷嚴重程度 serverity
缺陷優先級 priority
缺陷狀態 status 狀態: 激活active,已解決fixed, 已關閉closed;
【新建new,正在修改inprogress, 打開open, 從新激活reopened】
詳細描述 description
系統環境 OS (服務器環境和客戶端環境)
測試環境(用戶名/密碼)test environment
重現率
預置條件 pre condition
步驟 steps
實際結果 actual result
指望結果 expected result
其餘信息 additional information
用例編號 testcase no
*附件 attachment (截圖,視頻,文件-log日誌)
==================
解決者
解決方案:已修復fixed, 重複duplicated, 不能重現cannot reproduced, 無效Invalid
(設計如此by design,外部緣由external issue), 不修復won't fix, 推遲修改postpone)
缺陷引起的緣由 root cause
代碼改動範圍
影響範圍
解決日期
==================
驗證人
驗證環境
驗證範圍
結果
---------
缺陷的等級劃分:
緊急 - 致使系統運行中斷,程序崩潰,核心業務未完成,測試工做沒法進行,核心金額計算錯誤
嚴重 - 主要流程沒法進行,功能與需求不符,輕微的金額計算錯誤
通常 - 次要功能出錯,提示信息不符,體驗差,
微小 - 很細小的問題,幾乎對功能沒有影響
須要加強的功能Enhancement - 須要加強的功能
界面(UI)bug:有多是比較嚴重的問題,也有多是比較微小的問題
--------------
缺陷管理流程中的幾個角色
開發
測試
開發組長
測試組長
缺陷處理流程/缺陷的生命週期
測試人員在執行測試用例的過程當中發現bug,將其上報到缺陷管理系統,並指派給開發,開發初步判斷缺陷,
若是是缺陷並須要修復的,開發修改代碼後將代碼提交到服務器上,並將bug解決爲 已解決,同時回指給測試。
測試環境經過最新代碼更新後,測試人員驗證bug,若是肯定已經修復,測試關閉bug;不然,測試從新激活bug。
若是開發認爲缺陷是重複缺陷,開發會將缺陷解決爲重複缺陷,並回指給測試,測試要肯定是否確實重複,
若是是,測試關閉bug,不然,測試從新 激活 bug。若是在開發環境不能重現bug,開發會將缺陷解決爲 不能重現,
並回指給測試,測試要肯定是否確實不能重現,若是是,測試關閉bug,不然,測試從新 激活 bug。
若是開發認爲是無效bug,開發會將缺陷解決爲 無效【外部緣由,設計如此】,並回指給測試,測試要肯定是否確實無效,
若是是,測試關閉bug,不然,測試從新 激活 bug。若是開發認爲缺陷不須要修復,開發會召集產品經理,開發組長,
測試人員及測試組長一塊兒討論,若是你們一致贊成該缺陷不須要修復,開發會將缺陷解決爲 不予修復,並回指給測試,測試關閉bug。
若是討論以後肯定該缺陷須要修復,開發會修改缺陷若是缺陷須要推遲到下一個版本修改,在產品經理,
項目經理及其餘相關人員贊成以後,開發能夠將缺陷解決爲推遲修改,並回指給測試。
--------------------
XAMPP部署禪道系統 Windows+Apache+Mysql+PHP
XAMPP是一個集成工具,具體安裝過程以下:
一、下載 xampp安裝包到本身的電腦,解壓後雙擊進入到安裝界面,全部步驟均默認安裝
二、安裝完成後,打開xampp,打開方式:XAMPP -> XAMPP Control Panel, 此時會打開xampp的面板。
三、修改Apache的端口號80,修改方法爲:XAMPP面板上面點擊Apache後面的Config按鈕,在顯示出來的菜單中點擊 Apache(httpd.conf),
此時會打開httpd.conf文件,找到 Listen 80,將80改成8008以後的端口,如8008,修改以後保存該文件並退出。點擊Apache後面的Config按鈕,
在顯示出來的菜單中點擊 Apache(httpd-ssl.conf),打開該文件,找到 Listen 443,將443改成其餘端口,如4437,修改以後保存該文件並退出。
四、啓動Apache,啓動的方法:點擊 Apache後面的 Start 按鈕,若是啓動成功,則變爲 Stop,若是啓動時報ports之類的錯誤信息,
則代表第3步所修改的兩個端口號可能被佔用,須要從新修改端口號。
五、啓動Mysql數據庫,啓動的方法:點擊 Mysql 後面的 Start 按鈕,啓動以後,則變爲 Stop, Mysql的默認端口號爲3306,不須要修改。
六、將禪道的代碼佈署在環境當中,過程以下,拷貝 禪道安裝包到本機的C:\xampp\htdocs,拷貝完成後在該壓縮文件上面點擊右鍵,選擇解壓到當前文件夾,
解壓完成以後會生成一個新的文件夾,名稱爲 zentaopms。
七、安裝禪道環境:在瀏覽器中輸入 http://localhost:端口號/zentaopms/www/,進入安裝禪道界面,點擊 開始安裝 按鈕,進入受權界面,點擊下一步按鈕,
進入系統檢查界面,所有爲經過時,點擊 下一步 按鈕,進入生成配置文件界面, 默認語言選擇 簡體,數據庫服務器內輸入數據庫所在電腦的IP地址
【若是數據庫服務器在本機,輸入 127.0.0.1或localhost】,服務器的端口爲 數據庫服務的端口,默認爲3306,數據庫的用戶名默認爲 root
【root用戶爲mysql數據庫最高權限的管理員用戶】,數據庫的密碼默認爲空【安裝完mysql以後,若是沒有設置 root用戶的密碼,則其密碼默認爲空】,
PMS使用的庫爲正在安裝的禪道系統的數據庫名稱,建表前使用的前綴 默認便可,不須要勾選擇 清空現有數據 ,點擊保存,進入保存配置文件頁面,
點擊下一步按鈕,進入設置賬號界面,輸入公司名稱,管理員賬號及密碼【注意:此處須要牢記管理員賬號與密碼】,不須要勾選擇 導入demo數據,
點擊保存按鈕。進入安裝成功界面,點擊 登陸禪道管理系統 按鈕,進入禪道系統的登陸界面,輸入用戶名與密碼以後便可登陸。
==========敏捷開發==========
敏捷體現的是一個字:快 - 在比較短的時期內發佈可工做的軟件產品
Scrum流程:
客戶/市場/高層 提出一些創意/新功能/缺陷,由產品負責人[產品經理]對其進行整理成產品功能列表[產品需求清單]【產品需求清單中的每個功能點,也稱之爲需求點
或故事-story】,產品負責人從產品需求清單中挑選出一個版本(迭代)須要完成的功能點,交由開發團隊,此時,開發團隊和產品負責人一塊兒開迭代計劃會,肯定一個
迭代的詳細計劃,並對開發任務進行分解及分配,當完成計劃會後,開發人員分別按照計劃開發各自負責的任務,當全部任務完成以後,團隊內部會進行 迭代評審會議,
會議的內容爲該迭代是否可以正常發佈,如能發佈,則在發佈以後,團隊進行 回顧會議。
三大角色:
產品負責人/產品經理:需求+相關管理工做
流程管理員/項目經理:大多數狀況下由項目經理或開發組長承擔
開發團隊:開發+測試
其餘概念:
版本:與傳統開發模式的版本相似
迭代- sprint:有可能一個版本有一個迭代,有可能一個版本有多個迭代
故事-story:須要開發的功能點
任務看板:將未開始的任務,已開始的任務及已完成的任務分類彙總
燃燼圖- burn down chart:以任務和時間爲Y與X軸,繪製天天的任務完成狀況,造成具體的圖形。
五大會議:
迭代規劃會議
每日站立會議
演示會議:產品經理演示需求的原型,開發人員演示功能點,全部開發的功能完成後的總體功能演示。
評審會議
回顧會議
里程碑 - mile stone
基線 - base line
最後期限 - dead line
==========軟件質量==========
質量的定義:實體的特性對需求的知足程度
軟件質量的三個層次:
符合需求規格
符合用戶顯式需求
符合用戶實際需求【顯式需求+隱式需求】
影響軟件質量的三大因素[軟件質量的鐵三角]
技術
流程
組織
問題:你是如何確保你所負責的功能模塊的質量的?
大家項目組是如何確保所測項目的質量的?
三大質量管理體系
ISO9000:八項質量管理原則 【以顧客爲中心,以顧客的需求爲導向】
CMM/CMMI:Capability Muturity Model/ Integration - 能力成熟度模型
初始級
可重複級
已定義級
已管理級
優化級
CMM與CMMI的區別:
表達方式:CMM階段式,CMMI可階段,可連續
關鍵過程域不一樣:第三級的關鍵過程域
六西格瑪:起源於製造業-摩托羅拉
核心:百萬樣本3.4個缺陷
軟件質量模型:內部質量與外部質量 - 六大特性,二十七大子特性