缺點、誤差、故障、失敗、問題、矛盾、錯誤、特殊、事件、缺陷、異常。。。程序員
首先要認識一個東西叫:產品說明書:編程
知足下列五個規則之一,便可以稱做,發生了一個軟件缺陷:編程語言
一、軟件未實現產品說明書要求的功能工具
二、軟件出現了成品說明書指明不該該出現的錯誤測試
三、軟件實現了產品說明書中未說起到的功能編碼
四、軟件爲實現產品說明書雖未說起,但應該實現的目標spa
五、軟件難以理解,不易使用,運行緩慢,從測試人員的角度,最終用戶會認爲很差設計
產品說明書成爲形成軟件缺陷的罪魁禍首,在許多狀況下,說明書沒有寫,或者寫的不夠全面,常常更改,或者整個開發小組沒有更好的溝通。第二缺陷,來源是設計,這是程序員規劃軟件的過程,產生缺陷的緣由與產品說明書同樣,隨意、易變,溝通不足。事件
軟件測試員究竟要作些什麼?內存
軟件測試員的目標就是發現軟件缺陷
儘量早的找出軟件缺陷
1.他們喜歡拿到新的軟件,安裝到本身的機器上,觀看結果
2.善於發現問題的緣由,喜歡解謎
3.不會放過任何蛛絲馬跡,出現一次的BUG,必然不會輕易放過,想盡一切可能的去發現它
4.具備創造性,想出富有創意,甚至超常的手段來尋找缺陷
5.判斷準確,要確保看到的問題,是否真正的存在缺陷
6.知道如何冷靜的和程序員溝通,告訴他,你的程序有BUG
7.善於說服,有一些問題,被認爲不重要,不用修復,測試人員要說明爲什麼必須修復,並推動缺陷的修復
1.測試計劃 是否符合產品說明書和產品需求,制定計劃
2.測試用例 列舉測試項目,描述驗證軟件的步驟
3.缺陷報告 描述測試出的問題,並記錄,
4.測試工具和自動測試
5. 統計和總結 測試過程的彙總
大爆炸模式優勢是簡單,計劃、進度安排和正規開發過程幾乎沒有,全部精力都花在開發軟件和編寫代碼上,最終產生了優秀的產品軟件,或者一堆廢品。
這種模式的測試 ,既容易,又困難,由於不可能回頭修復已經打亂的事情,軟件測試的工做其實就是報告發現的問題,讓客戶知道。
在大爆炸的模式上更進一步,至少考慮到了產品的需求,這種模式下一般是最初只有粗略的想法,接着進行一些簡單的設計,而後開始編碼,測試,以爲 能夠了,而後發佈產品。
採用這種模式的項目,從最初的構思到最終的產品要通過一系列步驟,每個步驟結束,項目小組會組織審查,並決定是否進入下一步,沒準備好,久停滯,直到準備好。
螺旋模式的整體思想是一開始沒必要詳細定義全部細節,從小開始,定義重要功能,努力實現這些功能,接受客戶反饋,而後進入下一階段。重複上述過程,直到獲得最終的產品。
敏捷開發以用戶的需求進化爲核心,採用迭代、按部就班的方法進行軟件開發。在敏捷開發中,軟件項目在構建初期被切分紅多個子項目,各個子項目的成果都通過測試,具有可視、可集成和可運行使用的特徵。換言之,就是把一個大項目分爲多個相互聯繫,但也可獨立運行的小項目,並分別完成,在此過程當中軟件一直處於可以使用狀態。
1.早點找出缺陷:產生更小的影響,會讓人更容易接受
2.控制情緒:找到嚴重缺陷,不要興奮,興沖沖的跑到程序員那裏,告訴他存在大問題,他是會不高興的。
3.不要老是報告壞消息:常常找程序員聊聊天,不要老是報告壞消息,別人會對你惟恐避之不及。
往靶盤上擲飛鏢,擲到靶盤上交準確,擲到靶心叫精確。
確認是保證軟件符合產品說明書的過程。
驗證是保證軟件知足客戶要求的過程。
質量包括:軟件功能的多少,運行能力。可靠性包括:產品的可靠性,好比,多少用戶,或者多長時間會崩潰等等。
是對確認和驗證的一個過程。
黑盒測試中,測試人員只須要知道軟件須要作什麼,沒法看到是這麼運行的,不知道軟件如何運行,只知道結果。黑盒測試又被成爲功能性測試或者行爲測試,
白盒測試:測試人員能夠訪問程序員的代碼,經過檢查代碼來協助測試。
靜態測試是指測試不運行的部分(好比踢下車胎,看看車漆)。
動態測試是指使用和運行軟件(發動汽車,聽聽發動機的聲音,上路行駛)
測試產品說明書,認真找出其中的缺陷。
1.邊界條件:軟件是很極端的,即要麼對,要麼不對,對必定範圍內的數據進行測試,每每是對的,可是在邊界處,是最有可能出現錯誤的。
2.測試邊界:例如 第一個減一/最後一個加1、空了再減,滿了再加等等
3.默認,空白,空值,零值和無
4.非法、錯誤、不正確和垃圾數據(要求輸入數字,則不能輸入字母等)
5.狀態測試:一旦使用某一項,使軟件改變了外觀,菜單,或者某些操做,就是改變了該軟件的狀態。
重複測試:
指不斷執行一樣的操做,不停的啓動關閉程序,要想找出一個軟件的缺陷,重複操做是不可避免的。
壓迫測試:
指軟件在不夠理想的狀態下運行,內存小,磁盤空間少,CPU速度慢等,有點相似於邊界條件測試。
重負測試:
與壓迫測試相反,壓迫測試是儘可能限制軟件,而重負測試是儘可能提供條件任其發揮, 讓軟件儘量的處理大的數據,最大限度發揮軟件能力,讓它不堪重負。
1.像笨拙用戶那樣作
2.在已經找到軟件缺陷的地方在找找
3.像黑客同樣考慮問題
4.憑藉經驗,直覺和預覽
不執行軟件的條件下有條理的審查軟件設計,體系結構和代碼,從而找出軟件缺陷的過程,,有時稱爲結構化分析。另外一個好處是能夠爲黑盒測試人員提供思路,他們可能沒必要了解代碼的細節,經過審查評論,能夠肯定問題或者找出容易產生問題的範圍。
數據引用錯誤:引用未經正確聲明和初始化的變量,常量,字符串等引發的缺陷。
數據聲明錯誤:不正確的聲明或者使用變量和常量
計算錯誤:數學問題,計算沒法的到預期的結果
比較錯誤:大於小於等於等,比較和判斷錯誤極可能是因爲邊界條件的問題
控制流程錯誤:編程語言中循環等未按照預期方式工做
子程序參數錯誤:錯誤的來源是子程序不正確的傳遞數據
輸入輸出錯誤:包括文件讀取,接收鍵盤或者鼠標輸入以及向屏幕輸出信息等
軟件是否使用了本語言以外的語言,是否能夠移植到其餘編譯器和CPU,是否考慮了兼容性,編譯程序是否產生警告或者提示的信息。