程序員,軟件測試知多少?

圖片描述

送給初級程序員的測試認知文

作為開發同學,一些基本的測試崗位相關知識還是很有必要了解一下,免的某些同學在工作中和測試同學斗嘴、打架、群毆等以及被測試鄙視....。

我們常常聽說的一些測試專業術語,比如白盒、黑盒、單元測試,相信搞作為程序員的你脫口而出的就是這三個詞匯吧,筆者在前幾年對測試也僅僅停留在這個兩個詞匯上,更多的就不得而知了。后來在一家做跨境電商的公司學到了一些新術語,也見到了測試崗位的一些日常,比如冒煙測試、測試用例(TC)、回歸測試、接口測試以及偶爾和我吵架等等。

白盒黑盒測試是按測試設計方法分類的,是指軟件測試設計的方法,而不是軟件測試的方法,注意這個區別。

黑盒測試是行為測試,即從軟件的行為而不是內部結構觸發來設計測試,也就是在軟件上到處點點等。白盒指的是在設計測試的過程中,設計者可以“看到”軟件系統的內部結構,并使用軟件的內部結構和知識來選擇測試數據及具體的測試方法。

功能測試和非功能測試

按測試的目,分為功能測試和非功能測試,單元測試是功能測試里的一種,每種測試的名稱和內容如下:
圖片描述

一個軟件除了基本功能之外,還有很多功能之外的特性,這些叫非功能需求,或者服務質量需求。然而,若沒有軟件的基本功能,這些特性都將無從表現出來,因此,我們要在軟件開發的適當階段——基本功能完成后再來做這些非功能測試,非功能測試有如下這些
圖片描述

其他分類下的測試

在開發軟件的過程中,不少測試起著“烽火臺”的作用,它們告訴我們軟件開發的流程是否順暢,比如冒煙測試是指測試不通過不能進行下一步工作,是一種基本驗證測試,據說是從硬件設計行業流傳過來的說法。當年設計電路板的時候,很多情況下,新的電路板一插上電源就冒起白煙,燒壞了。如果插上電源后沒有冒煙,那就是通過了“冒煙測試”,可以進一步測試電路板的功能了。還有驗證構建是否通過基本測試以及全面考核某方面的功能的驗收測試。

另一些測試名稱則是說明不同的測試方法
圖片描述

單元測試

對于開發來講,最最常用和熟悉的還是單元測試,怎樣才算一個好的單元測試?單元測試應該準確、快速地保證程序基本模塊的正確性。下面是驗證單元測試好壞的一系列標準:

  • 單元測試應該在最基本的功能/參數上驗證程序的正確性。

  • 單元測試必須由最熟悉代碼的人(程序的作者)來寫。

  • 單元測試過后,機器狀態保持不變。如果單元測試創建了臨時的文件或目錄,應該在Teardown(拆卸)階段刪掉。如果單元測試在數據庫中創建或修改了記錄,那么也許要刪除或恢復這些記錄,或者每一個單元測試使用一個新的數據庫,這樣可以保證單元測試不受以前單元測試實例的干擾。

  • 單元測試要快(一個測試的運行時間是幾秒鐘,而不是幾分鐘)。

  • 單元測試應該產生可重復、一致的結果。

  • 獨立性—單元測試的運行/通過/失敗不依賴于別的測試,可以人為構造數據,以保持單元測試的獨立性。

  • 單元測試應該覆蓋所有代碼路徑。

  • 單元測試應該集成到自動化測試的框架中。

  • 單元測試必須和產品代碼一起保存和維護。

然并卵!都說國內很多程序員是不寫單元測試的,甚至從來都不寫,筆者當年做Java的時候也沒寫過幾次(捂臉)。

回歸測試

在單元測試的基礎上,我們就能夠建立關于這一模塊的回歸測試(Regression Test)。Regress:return to a worse or less developed state,是倒退、退化、退步的意思。在軟件項目中,如果一個模塊或功能以前是正常工作的,但是在一個新的構建中出了問題,那么這個模塊就出現了一個“退步”(Regression),從正常工作的狀態退化到不正常工作的狀態。在一個模塊的功能逐步完成的同時,與此功能有關的測試用例也同樣在完善中。一旦有關的測試用例通過,我們就得到了此模塊的功能基準線(Baseline),一個模塊的所有單元測試就是這個模塊最初的Baseline。

針對一個Bug Fix,我們也要做Regression(海退) Test。目的是:

  1. 驗證新的代碼的卻改正了缺陷。

  2. 同時要驗證新的代碼有沒有破壞模塊的現有功能,有沒有Regression

對于“回歸測試”中的“回歸”,我們可以將其理解為“回歸到以前不正常的狀態”。回歸測試最好要自動化,因為這樣就可以對于每一個構建快速運行所有回歸測試,以保證盡早發現問題。單元測試是回歸測試的基礎。在專注于模塊基本功能的單元測試之外,還有功能測試——從用戶的角度檢查功能完成得怎么樣。

探索性測試

探索性測試是為了某一個特定目的而進行的測試,且就這一次,以后一般也不會重復測試。在軟件工程的實踐中,“Ad hoc”大多是指隨機進行的、探索性的測試。

探索式測試的測試流程是不可重復的,因為它的測試都是“特定”測試,沒法重復。這一原因,使得探索式測試不能自動化,就這一點而言,還達不到CMMI二級——可重復級。

作為管理人員來說,如果太多的小強是在探索式測試中找出來的,那我們就要看看測試計劃是否基于實際的場景,開發人員的代碼邏輯是否完善,等等。

場景/集成/系統測試

在軟件開發的一定階段,我們要對一個軟件進行全面和系統的測試,以保證軟件的各個模塊都能共同工作,各方面均能滿足用戶的要求。這類測試叫系統/集成測試。這一方法的核心思想是:當用戶使用一個軟件時,他/她并不會獨立使用各個模塊,而是把軟件作為一個整體來使用。我們在做場景測試的時候,就需要考慮在現實環境中用戶使用軟件的流程是怎樣的,然后模擬這個流程,看看軟件能不能滿足用戶的需求。這樣,才能使軟件符合用戶的實際需求。

應該什么時候做集成測試呢?是不是越早越好?原則上是當一個模塊穩定的時候,就可以把它集成到系統中,和整個系統一起進行測試。在模塊本身穩定之前就提早做集成測試,可能會報告出很多Bug,但是這些由于提早測試而發現的Bug,有點像汽車司機在等待綠燈時不耐煩而拼命地按喇叭——也就是說,有點像噪音。我們還是要等到適當的時機再開始進行集成測試。

了解完這些概念后,我們來看看究竟一個測試工程師的職責是怎么樣的呢,下面列舉一些:

  • 制定測試計劃

  • 設計與編寫測試用例

  • 實施測試

  • BUG跟蹤

  • 測試報告與總結

  • 其他測試工程活動

很多測試工作并不是說,有了測試工程師,把測試相關的全部事情扔給他們就完事了,需要開發和測試配合,共同完成某些測試任務,軟件測試也不僅僅是為了發現bug然后提給開發,測試=質量保障,提升質量相關的都是測試工程師需要關注和負責的,軟件測試的目標是幫助項目打造用戶喜歡的產品。

文章首發于我的微信公眾號,關注可獲得每次最新推送
文章首發于我的微信公眾號,關注可獲得每次最新推送


《構建之法》讀書筆記之二

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456162.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ffmpeg最新源代碼(定期更新)

為了方便那些不能連接到ffmpeg的SVN倉庫更新源代碼的用戶,ffmpeg工程組特開辟一個專區,定期更新ffmpeg的源代碼,并將其快照上傳,有需要的朋友可以長期關注本帖。ffmpeg的編譯指令通常為:1、配置:configurat…

vue 入門環境搭建

公司項目要用vue.js來開發,要使用vue來開發前端框架,首先要有環境,所以給大家介紹一下如何搭建vue環境。其實很簡單: 1.首先下載安裝node.js。 去官網https://nodejs.org/zh-cn/下載安裝包。 2.安裝webpack 打開cmd命令界面&#…

【解決】Win10修改host沒有權限問題

Step1:右鍵文件選擇屬性,選擇安全,點擊編輯: Step2:在彈窗中點擊添加,在彈窗中點擊高級: Step3:在彈窗中點擊立即查找,選中當前用戶,點擊確定: …

[已授權] 互聯網定位技術小談

? 誠邀阿里云先知社區邀請,不勝感激!今日小編在此為大家介紹一下互聯網中所應用的定位技術。互聯網的發展日新月異,技術迭代很快,各行各業的智慧在互聯網這片藍天下碰撞結晶,造福大眾。今天要講述的集中定位方式&…

H.264解碼器ffmpeg完整優化代碼(包括PC和Windows Mobile版本)

這里把前段時間對ffmpeg0.48進行簡化和修改,包括修正內存泄漏,修改一些語句使Max Speed能夠打開這些。其實代碼還是比較亂的,也有很大的繼續優化空間。這個工作花費了我一些休息時間,不過,我確實學習到了很多。這個代碼…

1.4.在TypeScript中使用JQuery

我們可以通過類型定義文件(*.d.ts)實現在TS中使用JQ 1.4.1.方式1 通過GitHub項目,手動下載,不過推薦使用第二種方式 項目地址: https://github.com/DefinitelyTyped/DefinitelyTyped 1.4.2.通過typings的方式 項目地址:https://gi…

Python的DataFrame切片大全(包含多重索引)

碼字不易,喜歡請點贊!!! 摘要 這篇主要講解如何對pandas的DataFrame進行切片,包括取某行、某列、某幾行、某幾列、以及多重索引的取數方法。 ? 選取行名、列名、值 ? 以標簽(行、列的名字)…

sql server 保留小數,向上保留指定位數的小數,僅記錄,勿看。

比如 4.05 要取成 4.1 , 4.16 取成 4.2 ,4.5 取成 4.5 ,意思就是小數部分第二位不管是多少都丟掉然后加0.1,但是如果是 4.5 這樣完整的就不需要處理。 可以像下面這么寫。 select ceiling(4.56*10)/10轉載于:https://www.cnblogs.…

HelloCsdn

博客聲明我的第一個文章我的第一個文章 從現在開始,我要再這里記錄我的學習心得和體會,讓我們相互學習,一起努力,共同進步.

H264學習指南

因為最近手頭的活基本搞完了,人也閑了下來,這么熱的天氣,突然想寫這么一篇文章。不過首先聲明的是我對H264并不是太熟悉。但多多少少也學習了這么久了,寫點心得出來對自己是個交待,同時也希望給新手們一點幫助&#xf…

什么是數據分析的關鍵指標?

什么是核心關鍵指標呢? 這是一個好問題,不過沒有標準的答案。企業性質不同,所處行業、發展階段不同,關注點當然不同。不過大體可以這樣來劃分。 1、發展階段不同,需求不同 對于一個想要做數據化管理的企業來說&#xf…

01Pandas_數據結構

Pandas數據結構 做python數據分析,數據挖掘,機器學習的童鞋應該都離不開pandas。在做數據的預處理的時候pandas尤為給力。 本文主要介紹pandas中的兩種數據結構:series,dataframe。 import pandas as pd 1.Series 首先來介紹series數據結…

加密函數

MD5:密碼為web頁面做準備,建議使用MD5 PASSWORD() :修改當前用戶或其他用戶密碼 mysql> SELECT MD5(admin); #對admin進行MD5的加密(32位)----------------------------------| MD5(admin) |--------------------------------…

如何使用notepad運行python程序

關于使用notepad運行python程序 首先要確保python解釋器已經安裝成功,查看方法,windows可以在命令提示符中查看,通過按下winR鍵,調出運行窗口,在輸入框中輸入cmd回車,然后在命令行中輸入python,若出現版本信息,例如Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC…

H.264學習歷程(天之驕子)

半年前,我知道了H.264這個名詞。那個時候決定學習H.264,可是我連資料都不知道如何收集。而且整個學校就只有我一個人在學習H.264,找不到人交流,所以那個時候學得真的是舉步維艱,很痛苦,而能在網上認識一個學…

插入排序:表折半插入

在前一篇插入排序:表插入中。我們用靜態鏈表的存儲方式。直接插入的策略,構建了一種新的插入排序算法:表插入。有人可能會想到:相同是靜態鏈表的形式,為什么不使用更高效的折半插入策略呢?這樣的想法真的非…

C++編譯報錯:重復定義

http://note.youdao.com/noteshare?idcb2bed862a2daae89775603168f297af轉載于:https://www.cnblogs.com/taiyang-li/p/6637093.html

【機器學習】sklearn實現---歸類為5大類

sklearn實現---歸類為5大類 sklearn.preprocessing.scale()(最常用,易受異常值影響)sklearn.preprocessing.StandardScaler()sklearn.preprocessing.minmax_scale()(一般縮放到[0,1]之間,若新數據集最大最小值范圍有變…

關于安裝deepin+window10雙系統有時沒有聲音的問題

關于安裝deepinwindow10雙系統有時沒有聲音的問題 這個問題小編目前還沒有解決,求大神幫忙! deepin社區官網:深度科技社區 還可以參考一下其他的教程 深粉交流:新手剛剛安裝好DEEPIN,但沒有聲音,怎而解決? 冰封飛飛(云網牛站):在Deepin系統中…

如何讀H.264的標準和代碼

首先,還是要弄清楚編解碼的流程和 H.264 的關鍵技術,看白皮書就知道了,另外 H.264 綜述類的文章和別人的學位論文一般也會講到; 其次,弄清楚代碼的各個函數實現的功能,這個可以看看 JM 代碼里各個函數前面的…