1. 程式人生 > >軟體測試(一)

軟體測試(一)

本人屬性小白,因課程需要 自學軟體測試相關內容,攥寫此係列記錄要點。如有不足,請多指教。

一、實際案例——會流血會流淚

      1994年秋天,迪斯尼公司釋出了第一個面向兒童的多媒體光盤遊戲Lion King Animated Storybook。這是迪斯尼首次進軍這個市場,通過大力宣傳,其產品銷售額非常可觀。孩子們都準備在夏天當一次 “獅子王”。然而在發售後,電話支援部門就淹沒在憤怒的家長和哭訴玩不成遊戲的孩子門電話狂潮中。後經證實,程式設計師用於開發遊戲的系統在大眾中並不常見,遊戲無法正常執行。

    美國愛國者導彈防禦系統首次應用在海灣戰爭中對抗伊拉克飛毛腿導彈攻擊。當時大家對這套系統讚譽有加,但不能否認它也出現了一些導致士兵傷亡的情況。其中一枚在沙烏地阿拉伯的多哈擊斃了28名美國士兵。是的,你沒看錯,確實是美國士兵。分析專家發現一個軟體缺陷導致系統時鐘錯誤並最終導致跟蹤系統準確度丟失。

可以看出,軟體缺陷總會在意想不到的地方出現。隨著應用領域的不同,其造成的影響和後果也會不同。最新的一個例子是在微信的安卓版本中輸入“2個數字+15箇中文句號”,接收和傳送訊息的手機都會停止響應。是誰這麼無聊,這樣的一種文字組合缺陷都能被發現。這也從一個側面反映出軟體測試的變幻莫測。

二、軟體缺陷——隱藏的殺手

1.軟體缺陷判斷

有人會說,只要執行出了問題就是軟體缺陷。那麼我們該怎麼判斷呢?可以參考以下五條規則:

①軟體未達到產品說明書標明的功能。

②軟體出現了產品說明書指明不會出現的錯誤。

③軟體功能超出產品說明書指明範圍。

④軟體未達到產品說明書雖未指出但應達到的目標。

⑤軟體測試員認為軟體難以理解、不易使用、執行速度緩慢,或者使用者認為不好。

需要注意的是:每一個使用軟體的人都會有自己的體驗和想法,針對第五條,作為軟體測試員最好能全面的客觀評價,做到合情合理。

2.軟體缺陷修復費用

從開始到計劃、編制、測試、一直到公開使用的過程中,都可能發現軟體缺陷。下圖顯示了隨著時間推移,修復軟體缺陷的費用是如何增加的。

從小蟲子的體型可以看到:費用呈幾何數級。隨時間推移,數十倍地增長。在編寫產品說明書早期發現問題,費用可能只要幾角錢;隨著時間雪球越滾越大,到最後發現問題,其處理費用可能達到上百元。

3.軟體測試員

軟體測試員的目標是發現軟體缺陷。

經常有產品開發小組要測試員只是為了證實軟體可以執行,而不是找缺陷。如果只測試應當達到的功能,建立測試使其通過,就會遺漏功能不足之處。這樣會漏掉軟體缺陷,浪費專案本身和公司錢財。作為軟體測試員,不應該只一門心思找軟體缺陷,還應該考慮如何在開發過程中儘快找出軟體缺陷,以便降低修復成本。

軟體測試員的目標是找出軟體缺陷,儘可能早一些。

然而,軟體測試員相當於客戶的眼睛,是第一次使用軟體的人,代表客戶說話,應力求完美。

因此,軟體測試員的目標是找出軟體缺陷,儘可能早一些,並確保其得以修復。

三、軟體測試——活躍的警察

1.測試原則

完全測試程式是不可能的。初涉軟體測試者可能認為拿到軟體後就可以進行完全測試,找出所有軟體缺陷,並使軟體臻於完美。年輕人,夢想還是要有的,不過在這裡我不建議你實現。即使是最簡單的程式也不行,因為:輸入量大;輸出結果多;軟體實現途徑多;軟體說明書沒有客觀標準,不同角度有不同標準。舉個例子,測試一款計算器,你真的要從0一直算下去嗎?

測試無法顯示潛伏的軟體缺陷。這可以用農場的一個例子幫你理解。假設你是負責檢查馬匹是否感染寄生蟲的檢疫員。如果你在馬身上發現了寄生蟲的痕跡,可以斷定這匹馬感染了。但牽一匹外表完全正常的馬到你面前,你能說這匹馬是健康的嗎?很明顯,你並不能這麼說,況且總不能把馬切開一塊塊檢查吧。如果真是那樣的話,晚飯就有著落了。回到軟體測試,你可以報告已發現的軟體缺陷,卻無法報告潛伏的軟體缺陷。唯一方法是持續觀察。

軟體測試員在產品小組中不受歡迎。軟體測試員的目標還記得嗎?如果你不能正確告知,就會給編寫人員一種砸場子的感覺。這更多的涉及人與人之間的交流藝術,有幾點小建議:提早發現軟體缺陷,早期產生影響小,容易讓人接受;控制情緒,找到缺陷不要興高采烈的去告訴同事,彷彿自己打了勝仗一樣;不要總報告壞訊息,花點時間和同事聊聊天。

還有幾項測試原則在此不再敘述,感興趣的話可以自己去找找相關資源。

2.幾對術語比較

精確VS準確

 

思考一下,假如對計算器進行測試,你會測試返回結果是精確的還是準確的呢?或是兩項都測試呢?假如測試網球或格鬥遊戲的模擬程式呢?

驗證VS合法性檢查

驗證是保證軟體符合產品說明書的過程;合法性檢查是保證軟體滿足使用者要求的過程。通過一個例子來加深理解。

1990年4月,Hubble天文望遠鏡被送上赤道上空。它是一個反射望遠鏡,主要利用一面巨大的鏡子來放大觀察目標。製造鏡子是一項嚴格要求精度和準確度的艱鉅任務,地面上的測試又極其困難,只能在發射前仔細檢查其全部屬性。當Hubble上天之後問題便出現了,它無法正確聚焦。一位觀察家發現鏡子精度極高,但準確度不夠。測試雖然保證鏡子符合產品說明——驗證——但不能保證其滿足最根本的要求——合法性。

質量VS可靠性

軟體測試員常會錯誤的以為質量和可靠性是一回事。如果他們測試的程式一直穩定、可靠,就會認定這是高質量的產品。其實,可靠性只是質量的一個方面。軟體使用者對質量的看法可能包括功能是否齊全,產品能否在各種機型上執行,甚至包裝盒的色彩。為了確保程式質量高且可靠性強,軟體測試員必須在整個產品開發過程中進行驗證和合法性檢查。

測試VS質量評判(QA)

軟體測試員的目標是找出軟體缺陷,儘可能早一些,並確保其得以修復。

軟體質量評判人員的主要職責是建立和加強促進軟體開發並防止軟體缺陷的標準和方法。

軟體測試員會做一些QA工作,QA人員會進行一些測試。雙方的工作和任務是交織在一起的。重要的是瞭解自己的工作職責,並使其與開發小組的其他成員順利交流。

參閱書籍:《軟體測試》(美)Ron Patton著 周予濱 姚靜 等譯

相關推薦

軟體測試

本人屬性小白,因課程需要 自學軟體測試相關內容,攥寫此係列記錄要點。如有不足,請多指教。 一、實際案例——會流血會流淚       1994年秋天,迪斯尼公司釋出了第一個面向兒童的多媒體光盤遊戲L

Python 接口測試

blog 系統環境變量 resp 環境變量 nbsp 們的 www nload uic 1. 概念: 接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的

python結合excel數據輕松實現接口自動化測試

判斷 原因 一個 軟件測試 測試 相等 fin 完成 想去 在剛剛進入測試行業的時候,最開始也是做功能測試,我想很多夥伴和我一樣,覺得自動化測試都很高端,很神秘。迫不及待的想去學習作自動化測試。 以前比較常用數據庫+python做自動化,後面發現excel個人覺得更加適合,

vue2.0單元測試

.com str images alt 需求 org 封裝 min 測試 1.在vue init webpack XXX創建項目的時候 最後2步選擇YES就啟動了vue單元測試開始了 2.測試是使用karma+mocha框架來實現的方法,安裝虛擬瀏覽器模塊Phanto

selenium+python自動化測試環境

get gre gpo exe ren 瀏覽器版本 art lap close python裝的是3.5,chrome瀏覽器版本是17年初的 1.chromedriver 在http://chromedriver.storage.googleapis.com/index.h

Appium移動自動化測試--Mac安裝Appium

set appstore 軟件 www. http version master question 配置 一、Appium安裝 1. 直接安裝:Appium官網下載:https://bitbucket.org/appium/appium.app/downloads/  這

創建撲克牌測試

Java List 1.Mainpublic class Main { /** * 1.面向對象思維(一張撲克) * 抽取共性屬性 * 花色 int * 牌值 int * 花色符號 String * 牌值符號 String * 抽取共性方法 *

移動端自動化測試appium環境搭建

mouseover 小試牛刀 ble web自動化 過程 bucket 搭建 node 服務 自動化測試有主要有兩個分類,接口自動化和ui自動化,ui自動化呢又分移動端的和web端的,當然還有c/s架構的,這種桌面程序應用的自動化,使用QTP,只不過現在沒人做了。 we

ORB_SLAM2編譯與測試

git 一段 分享 CI 圖像 它的 第三方 學習 clas ORB_SLAM2編譯與測試 學習視覺slam,經典的slam開源框架的學習,是不可避免的。記錄一下ORB_SLAM2的編譯與測試,此次配置的是無ROS版本。跑的數據集TUM Dataset 系統版本:ubun

python用selenium做自動化測試

python 用selenium做自動化測試: 在w3school裡搜尋css python3 test_w3school_search.py XPath路徑表示式: http://www.ruanyifeng.com/blog/2009/07/xpath_pa

異數OS TCP協議棧測試--資料傳輸篇

異數OS TCP協議棧測試(一)--資料傳輸篇 本文來自異數OS社群   github:  https://github.com/yds086/HereticOS 異數OS社群QQ群:  652455784  異數OS-織夢師(訊息中介軟體)群: 4

Metasploit Framework8後滲透測試

文章的格式也許不是很好看,也沒有什麼合理的順序 完全是想到什麼寫一些什麼,但各個方面都涵蓋到了 能耐下心看的朋友歡迎一起學習,大牛和槓精們請繞道   使用場景: Kali機器IP:192.168.163.132 WindowsXP機器IP:192.168.163.134  

自動化測試-get和post的簡單應用

今天主要介紹兩種測試的介面post和get: get和post是http的兩種基本請求方式,區別在於get把引數包含在url中傳遞;給而post把引數以json或鍵值對的方式利用工具傳遞。 get的傳遞隨便找個遊覽器就可以進行介面測試: 舉個栗子:這是個獲取學生資訊的介面 介面資訊:1:url

post方式介面測試_新建測試用例

第一種方式:拷貝別人的   第二種方式:自己建立 二、開啟瀏覽器(此處chrome),F12開啟開發模式,輸入網址登入,此時可獲取到登入的 Request URL     二、開啟postman,進入自己的Collections,新建New Tab,選擇P

介面測試postman、jmeter工具

介面測試-postman、jmeter工具操作篇 進行介面測試的時候,一般不是通過在client端進行業務來測試,而是通過藉助工具幫助我們傳送請求去呼叫介面,從而達到傳送資料或者獲取資料的目的。目前常用傳送HTTP請求的工具:postman、jmeter。當然這兩個工具不僅限於傳送資料,

介面測試介面基礎

介面測試基礎 介面測試:官方解釋就是測試系統元件間介面的一種測試;是功能測試中的一種;就是前端和後端直接的資料傳遞的測試,所以認為是可以歸於灰盒測試的一種。 可能很多測試同事並沒有專門測試過介面,但是在測試的過程中經常是遇到的 比如我們測試web應用的時候,

常見Nginx的中介軟體架構

#一、靜態資源Web服務 #檔案讀取 Syntax: sendfile on|off; Default : sendfile off; Context:http,server,location,if in location #tcp_nopush配置語法 #作用:sendfile開啟的情況下

軟體測試5——系統測試

文章目錄 系統測試 功能性測試 Alpha測試 Beta測試 非功能性測試 效能測試 客戶端效能 網路上效能 伺服器上效能

軟體測試6——自動化測試

文章目錄 自動化測試 手工測試和自動化測試 手工測試侷限性 自動化測試好處 適用場合 體系評估 原理和方法 自動化測試 軟體測試工作量很大,其中許多操作是重複性

深入淺出Android單元測試:單元測試基礎

想學習單元測試無從下手,本文對以最易懂的方式介紹單元測試。 若有錯漏,煩請斧正。轉載請註明出處。歡迎關注程式引力 作者:程式引力 | 謝一 (Evan Xie) 郵箱:[email protected] 軟體測試作為軟體質量的保障,有著十分重要的意義。按照不同