1. 程式人生 > >門道筆記 (6) 軟件測試基礎 (1)

門道筆記 (6) 軟件測試基礎 (1)

出現問題 故障 操作性 替代 功能測試 人員 數據 多重 圖片

測試理論

課程目標

這部分咱們將 將主要學習內容:

掌握測試相關理論知識

掌握運用相關的方法設計測試用例case

掌握提交缺陷bug報告

現在開始學習

1. 測試理論第一章

學習目標

軟件測試工程師

軟件測試質量

軟件測試概念

軟件測試原則

軟件測試模型

軟件測試分類

軟件測試風險

軟件測試工程師

崗位名稱

1、軟件測試工程師

2、自動化測試工程師

3、性能測試工程師

4、白盒測試工程師

5、測試開發工程師

崗位要求及後續職業規劃發展

結合我的經驗來 談談軟件測試:

  1. 軟件測試工程師行業前景好、職業壽命長:隨著項目經驗的增加,項目從業經驗越久經歷的項目越豐富,就更具有競爭力。而開發呢,大部分人 年齡越大就越做不動開發了。開發對腦力 精力 體力 要求都非常高,而軟件測試則低很多,所以 以前我做了5年的開發之後,轉測試了。我做軟件測試的薪資和以前做開發差不多,但輕松很多。

  1. 軟件測試入門的門檻 很低,不管你的年齡多大 不管你以前是做什麽的 不管你智商高不高,都可以轉行做測試。去年年底,鄰居是一位38歲的大姐,她以前是做外貿的, 後來又做了4年的家庭主婦,最終通過一些途徑 進入華為做軟件測試了。

  1. 從測試從業現狀來看,75%的測試人員還是處於點點點的狀態,即 手工測試。實際上手工測試是最具有價值的測試,95%以上的bug都是手工測試發現的。但是 只能做手工測試的測試工程師工資很低,有的學生都工作3年,但是他只能做手工測試,薪資也一直在一萬左右。為啥很多測試人員只能做手工測試?兩個原因:1 這是由於手工測試人員的入門門檻低造成的,很多測試人員在入門測試行業的時候,就沒有軟件開發背景。這點 還不是最主要的,沒有軟件技術背景 去學不就可以了嗎? 好,第二點 2 很多測試人員沒有繼續學習的想法,即 在測試的過程中,沒有繼續去學習軟件的知識。

在很多開發人員的眼裏,手工測試只是每天跟著文檔這裏點點那裏點點,沒有什麽技術含量。而測試人員 又經常找開發人員的麻煩,找他們的bug。所以 測試人員和開發人員,有時候 關系挺緊張的。怎麽解決呢?1 需要測試人員有良好的溝通能力;2 需要測試人員具備一定的軟件知識。

  1. 和手工測試 對應的是 自動化測試。自動化測試的技術含量比 手工測試要高很多,而且工資高很多。手工測試人員,大部分的工資在1萬左右,而自動化測試 15K 以上。

最沒有市場的應該是自動化測試。原因很簡單,多數規模中小的軟件公司,所開發的軟件的規模或者叠代周期都不會很長。而自動化測試的長處恰恰卻在對長叠代周期的項目可以起到節省人力物力的作用。當然我說的沒市場也只是局限在國內的中小規模的公司,很多大公司對自動化測試還是有需求的,並且這些人的待遇也普遍比手工測試高不少,很簡單的原因就是他們是會寫程序的。所謂自動化測試,也就是寫一個程序去測另一個程序。所以如果你是個自動化測試工程師,那麽一些小公司還是不要去面試了吧。

  1. 性能測試的薪資 挺高的,性能測試對一個測試人員的綜合素質要求是最高的,例如 如何測試MQ的性能,測試redis的性能等,不僅要求很多測試的知識,還有軟件開發的知識等。在我國,優秀的測試人員不是很多,原因就是很多測試人員 沒有技術背景。

  1. 外企對測試人員的重視程度要高於 國內企業,所以具備良好的英語讀寫能力,然後進入外企,是一個很好的方向。

  1. 持續的學習,才能更有競爭力。上面我提到了,我們是有目標的測試人員,我們不甘於只做手工測試。我們要做更加具有技術含量的測試人員,所以將來工作的同時,要持續的學習軟件開發的知識,學習軟件測試的知識。

結合我的情況來說吧,我有5年的軟件開發經驗,當我從軟件開發 轉 軟件測試的時候,非常容易,我沒有做過手工測試,直接開始 自動化測試和性能測試。對於我們班大多數同學來說,因為沒有軟件開發的知識,所以 你要從手工測試開始。將來 在工作中,你不斷的學習,也會從事自動化測試 性能測試等工作。

軟件測試簡單的說 就是測試軟件質量的,那什麽是質量呢?

什麽是質量

物理學領域,物體所含物質的數量叫質量,是度量物體在同一地點重力勢能和動能大小的物理量,不準確的說就是多重 ,比如 2斤 10斤。

運用學領域,美國著名的質量管理專家朱蘭(J.M.Juran)博士從顧客的角度出發,提出了產品

質量就是產品的適用性。即產品在使用時能成功地滿足用戶需要的程度。

ISO8402(國際標準--質量管理和質量保證的術語) 定義

質量:反映實體滿足明確或隱含需要能力的特性總和。簡單的說,就是物品能不能滿足用戶需要,能很好的滿足 就是質量高,不能很好的滿足 就是質量低。

以京東商城為例

軟件質量

簡單的說,軟件質量就是 軟件能不能滿足用戶的需求。

詳細的說,所謂的軟件質量 是用來衡量一個軟件好與壞的標準,這個標準中 通常從以下幾個方面來衡量:

功能性

功能性

當軟件在指定條件下使用時,軟件產品提供滿足明確和隱含要求的功能的能力。

如,功能是否實現,登錄 註冊 搜索等 功能是否實現。軟件中 有一個搜索的功能,測試這個功能是否滿足用戶的需要。這都是功能測試。

性能

時間特性

軟件產品執行其功能時,提供滿足需求的響應時間和處理時間以及吞吐率等指標的能力。

資源利用性

軟件產品執行其功能時,提供滿足需求的CPU、內存等占用率的能力。

如,前幾年 雙11的時候 頁面打開非常慢 ,有時 頁面無法打開。為啥呢?大量的用戶 在同一時間訪問淘寶的服務器,導致服務器cpu使用率逐漸升高 超過性能瓶頸,然後隨著用戶的增多 服務器給用戶響應數據的時間 越來越長,所以用戶打開頁面 就很慢。

5萬用戶 ---- cpu 使用率40%,給用戶響應頁面的時間是0.06s

10萬用戶 ---- cpu 使用率60%,給用戶響應頁面的時間是0.06s

20萬用戶 ---- cpu 使用率65%,給用戶響應頁面的時間是0.06s

50萬用戶 ---- cpu 使用率75%,給用戶響應頁面的時間是0.06s

80萬用戶 ---- cpu 使用率80%,給用戶響應頁面的時間是0.07s

100萬用戶 ---- cpu 使用率85%,給用戶響應頁面的時間是0.1s

150萬用戶 ---- cpu 使用率95%,給用戶響應頁面的時間是2s

安全性

軟件在受到惡意攻擊的情形下依然能夠繼續正確運行的能力

通常 一個項目的主要功能開發完之後,為了項目的安全考慮,都要再集成一個安全保護模塊。避免非法訪問某些功能模塊,非法訪問某些數據,避免數庫被用戶直接操作 等安全控制。

例如,

不同用戶的權限控制---在系統中 A是老板,他可以刪除員工信息;B是普通員工,他沒有權限刪除員工信息。那對B的測試 就是安全性測試。

數據庫 默認是只接受哪個IP的訪問,簡單說 只能我這臺電腦連接數據庫並操作;你那臺不行。對你的測試,就是安全性測試後。

項目中,敏感信息 在網絡傳輸過程中,是否可以被抓包並解析。

安全性在中國正在受到越來越多的重視,比如前段時間鬧得沸沸揚揚的CSDN密碼泄密門,相應的安全性測試也會越來越受重視。常見的SQL註入等漏洞可以借助於AppScan這類安全性測試工具檢測出來。

兼容性

常見的兼容性:瀏覽器 一個網頁愛googe瀏覽器上能否正常顯示 在IE瀏覽器上是否正常顯示;操作系統 服務器端能否部署在linux系統上,能否部署在windows系統上。

再如,咱們用的屏幕共享工具,若學生的電腦是thinkpad T430的話 無法指定的這個學生的桌面共享給其他學生。

再如,某款遊戲,我們要對她進行顯卡的兼容性測試。

可靠性

可靠性

在指定條件下使用時,軟件產品維持規定的性能級別的能力。

成熟性

軟件產品為避免由軟件內部的故障而導致失效的能力。

容錯性

軟件出現故障或者違反其指定接口的情況下,依然維持規定的性能級別的能力。

易恢復性

失效發生後,重建規定的性能級別並恢復受直接影響的數據的能力。

例如 一個項目持續運行了一年 沒出現問題。縱使發生了故障,也能迅速的恢復數據。例如 美國911事件後,雙子座大廈的計算機數據能迅速的恢復 就是可靠性的表現。

易用性

易用性

在指定條件下使用時,軟件產品被理解、學習、使用和吸引用戶的能力。

易理解性

軟件產品讓用戶無須過多學習就能理解的能力。

易學性

軟件產品讓用戶即使參加了學習,學習成本高低的能力。

易操作性

軟件產品讓用戶操作方便,符合使用習慣的能力。

吸引性

軟件產品讓用戶覺得舒服、操作吸引眼球的能力。

用戶體驗性

是以上幾個特性的統稱,部分企業把易用性也稱之為用戶體驗性,是一個比較時髦的詞。

安裝/卸載

執行安裝/卸載時,能按照一定的規格和流程將軟件安裝上的能力。

可維護性

易分析性

軟件出問題後,快速判斷問題點並能快速修復的能力。

易改變性

軟件修改後可快速發布,快速投入生產的能力。

穩定性

軟件避免由於軟件修改而造成意外結果的能力。

易測試性

軟件版本升級修改後被快速確認的能力

如,從開發的角度 代碼容易維護(容易看懂 容易修改);軟件出現bug,通過日誌記錄系統 可以迅速的定位到問題所在。

可移植性

適應性

軟件不需采用其他手段就可適應不同的指定環境的能力。例如 在小米Android系統中的原生視頻播放app,可以直接安裝在 華為Android系統中,若這樣,就是這個app是可移植的。

易安裝性

軟件在指定環境中被快速安裝的能力。如在線更新、安裝包自動生成等。

共存性

軟件在同一環境下同與其他軟件共存的能力。如 360安全衛士 和 騰訊管家 是否能共同存在。

易替換性

軟件在同一環境下,替代另一個相同用途的軟件的能力。

在進行軟件測試的時候,通常可以從這幾個方面 來判斷這個軟件質量如何。但到底是否符合質量要求,還是要看 需求規格說明書。如,性能,性能好不好的標準是 需求規格說明書。

綜合應用

1.請針對紙杯,從哪幾個方面進行測試?

尋找水杯是否有說明書,如果有需要充分閱讀並理解水杯說明書,按說明書描述,測試到所有需求點

按測試關註點劃分主要分為以下幾個方面:

功能測試:

主要關註水杯基本功能

1.1 水杯是否可以正常裝水

1.2 水杯是否可以正常喝水

1.3 水杯是否有蓋子,蓋子是否可以正常蓋住

1.4 水杯是否有保溫功能,保溫功能是否正常保溫

1.5 水杯是否會漏水,蓋住蓋子擰緊後是否會漏水

界面測試:

主要關註水杯外觀、顏色、設計等方面

2.1 外觀是否完整

2.2 外觀是否舒適

2.3 顏色搭配及使用是否讓人感到舒適

2.2 杯子外觀大小是否適中

2.3 杯子是否有圖案,圖案是否易磨損

易用性測試:

主要關註水杯使用是否方便

3.1 水杯喝水時否方便

3.2 水杯拿起放下是否方便

3.3 水杯裝水是否方便

3.5 水杯攜帶是否方方便

3.6 水杯是否有防滑功能

3.7 水杯裝有低溫或者高溫水時,是否會讓手感到不適

性能測試:

4.1 水杯裝滿水時,是否會露出來

4.2 水杯最大使用次數

4.3 水杯的保溫性是否達到要求

4.4 水杯的耐寒性是否達到要求

4.5 水杯的耐熱性是否達到要求

4.6 水杯掉落時時,是否可以正常使用

4.7 水杯長時間放置時,是否會發生泄露

兼容性測試:

主要關註水杯是否可以裝其他液體,如果汁、汽油、酒精等

可移植性測試:

是否和其他蓋子兼容

6.1 將水杯放在常溫環境中,使用是否正常

6.2 將水杯放在零下的環境中,使用是否正常

6.3 將水杯放在高於正常溫度的環境中,使用是否正常

安全性測試:

主要關註水杯是否釋放有毒物質等

7.1 當水杯裝上水後,是否會產生有毒物質

7.2 把水杯放在零下環境時,是否會產生有毒物質

7.3 把水杯放在高溫環境時,是否會產生有毒物質

  1. 具體需求: 有一個登陸頁面, 上面有2個textbox, 一個提交按鈕。

尋找登陸是否有說明書,如果有需要充分閱讀並理解登陸說明書,按說明書描述,測試到所有需求點

按測試關註點劃分主要分為以下幾個方面:

功能測試(Function test)

1. 輸入正確的用戶名和密碼,點擊提交按鈕,驗證是否能正確登錄。

2. 輸入錯誤的用戶名或者密碼, 驗證登錄會失敗,並且提示相應的錯誤信息。

3. 登錄成功後能否能否跳轉到正確的頁面

4. 用戶名和密碼,如果太短或者太長,應該怎麽處理

5. 用戶名和密碼,中有特殊字符,和其他非英文的情況

6. 記住用戶名的功能

7. 登陸失敗後,不能記錄密碼的功能

8. 用戶名和密碼前後有空格的處理

9. 密碼是否以星號顯示

界面測試(UI Test)

1. 布局是否合理,2個testbox 和一個按鈕是否對齊

2. testbox和按鈕的長度,高度是否復合要求

3. 界面是否好看

4. 圖片,顏色,字體,超鏈接,是否都顯示正確

性能測試(performance test)

1. 打開登錄頁面,需要幾秒

2. 輸入正確的用戶名和密碼後,登錄成功跳轉到新頁面,不超過5秒

3. 能支持多少個用戶同時登陸

安全性測試(Security test)

1. 登錄成功後生成的Cookie,是否是httponly (否則容易被腳本盜取)

2. 用戶名和密碼是否通過加密的方式,發送給Web服務器

3. 用戶名和密碼的驗證,應該是用服務器端驗證, 而不能單單是在客戶端用javascript驗證

4. 用戶名和密碼的輸入框,應該屏蔽SQL 註入攻擊

5. 用戶名和密碼的的輸入框,應該禁止輸入腳本 (防止XSS攻擊)

6. 錯誤登陸的次數限制(防止暴力破解)

可用性測試(Usability Test)

  1. 1. 是否可以全用鍵盤操作,是否有快捷鍵

2. 輸入用戶名,密碼後按回車,是否可以登陸

兼容性測試(Compatibility Test

1. 主流的瀏覽器下能否顯示正常已經功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)

2. 不同的平臺是否能正常工作,比如Windows, Mac

3. 移動設備上是否正常工作,比如Iphone, Andriod

4. 不同的分辨率

5. 不同的瀏覽器大小 (瀏覽器最大化, 和非最大化)

軟件輔助性測試 (Accessibility test

軟件輔助功能測試是指測試軟件是否向殘疾用戶提供足夠的輔助功能

如, 高對比度下能否顯示正常 (視力不好的人使用)

門道筆記 (6) 軟件測試基礎 (1)