一、 軟件相關知識
1.什么是軟件?
軟件=程序(源程序,目的程序)+數據+文檔
備注:軟件測試對象包括以上三部分
2.IT技術部門結構組成
1) 產品部:用戶需求文檔(預期結果),界面原型圖
2) 開發部:編碼,得到程序(源程序,目的程序)(實際結果)
3) 測試部:比對實際結果與預期結果之間的差別(得到程序的bug、文檔的bug、數據的bug)
4) 運維部:后期運行上線中涉及的數據維護、技術問題等。
3.軟件的生命周期(軟件是怎么做出來的?)
1) 項目計划
2) 需求(需求規格說明書SRS)
3) 設計(概要設計說明書+詳細設計說明書)
4) 編碼(源程序,目的程序)
5) 測試(bug)
6) 運行上線
(測試從需求階段就開始介入)
(瀑布模型中測試在編碼之后介入)
4.軟件的項目組成人員
1) 項目經理
2) 需求分析人員
3) 設計人員
4) 編碼人員
5) 測試人員
6) 運維人員
7) 配置管理人員:
配置項=代碼+文檔,整個軟件研發過程中所有交付件。
8) SQA:軟件質量保障工程師
職責:
a) 指定規范,流程
b) 監督項目組成人員按照流程工作,若違反,提出NC項(不符合項)
c)檢測評審項目成果,尤其是測試交付件
5.軟件研發模型/流程
1) 瀑布模型
100%需求——100%設計——100%編碼——100%測試——投入使用
優點:需求穩定,重復工作少,質量高
缺點:項目周期長,成本高
2) 螺旋模型
50%需求——50%設計——50%編碼——50%測試——首版本上線
版本迭代,迭代周期4-8個月
3) 敏捷模型(小版本迭代)
20%需求——20%設計——20%編碼——20%測試——首版本上線
版本迭代,平均迭代周期1個月左右
優點:項目周期短,小版本迭代,快速上線
缺點:需求不穩定,重復工作多,質量下降
6.軟件缺陷引入的原因
1) 需求:50%~60% 不重視需求導致頻繁變更
2) 設計:20%
3) 編碼:15%
4) 其他:5%
7. 軟件缺陷的分類
1) 遺漏:軟件未實現需求中明確說明的部分
2) 錯誤:軟件中的實際效果與需求中描述的不一致
3) 額外實現:軟件實現了需求中未明確說明的部分
二、測試基礎
1.軟件測試的定義
使用人工或自動化的手段來運行軟件的過程,其目的在於檢測他是否滿足規定的需求,或是弄清楚預期結果與實際結果之間的差別
2. 軟件測試的目的
1) 發現錯誤 有些錯誤偶發,有些錯誤藏很深
2) 檢測是否滿足功能需求、性能需求、可靠性需求等
3) 軟件測試不能證明軟件不存在缺陷
3.軟件測試的原則
1) 所有的測試工作都應該追溯到用戶需求
2) 盡早啟動測試工作,需求階段就介入
3) 窮盡測試是不可能的
4) 測試是有風險的 遺漏
5) 並非所有的缺陷都值得修復
6) 殺蟲劑怪事(測試用例對缺陷存在免疫能力)
7) 帕累托法則,28法則
80%缺陷存在於20%的核心業務模塊中
8) Bug的群集效應
發現的缺陷越多,說明存在的缺陷越多
A25個bug B6個bug 增強測試誰
9) 前進兩步,后退一步
V1.00
5000=500fail+4500pass
V1.01 回歸測試
(1)驗證缺陷修復是否正確(執行500條用例)
(2)重復測試
——完全重復測試(工作量巨大,考慮使用自動化)
——選擇重復測試(主要選擇相關功能進行重復測試)
三、測試方法
1.根據測試技術划分(根據是否關注程序內部結構)
1) 黑盒測試:不需要關注程序內部結構
2) 白盒測試:需要分析程序源代碼(代碼走查,寫驅動,打樁)
3) 灰盒測試:白加黑
2.根據是否動態運行軟件
1) 靜態測試:測試過程中不需要運行軟件,包括代碼走查、需求評審、文檔測試、用例評審
2) 動態測試:測試過程中需要運行軟件
3.根據是否使用自動化測試工具
1) 人工測試
2) 自動化測試
四、測試過程
1、 測試階段
1) 單元測試(UT)
-
- 測試范圍:最小單位,函數或類
- 測試依據:詳細設計說明書
- 測試方法:白盒測試
- 評估基准:邏輯覆蓋,每個邏輯都測
2) 集成測試(IT,組裝測試)
-
- 測試范圍:模塊之間的接口,集成后的功能
- 測試依據:概要設計說明書(概設)
- 測試方法:灰盒測試
- 評估基准:接口覆蓋
3) 系統測試(ST)
-
- 測試范圍:整個系統的功能及非功能(性能、兼容、安全、界面等等)
- 測試依據:需求規格說明書(SRS)
- 測試方法:黑盒測試
- 評估基准:需求覆蓋
4) 驗收測試(UAT)
-
- 三種測試策略
a) 正式驗收測試(外包)
——參與人員:以用戶為主的測試,參與人員包括項目組人員(產品、開發、測試),用戶代表
——驗收測試的結果,兩種(用戶可接受;用戶不可接受)
b) α測試:
——用戶參與測試,在開發場地開展,旁邊有技術人員指導
c) β測試:
——用戶參與測試,在用戶實際環境展開,無技術人員指導