軟件測試?yán)碚?/h1>
曾經(jīng)在B站看過一系列軟件測試的基礎(chǔ)理論,在這里記錄下,共同學(xué)習(xí)

計算機軟件分類

  • 按照層次劃分
    • 系統(tǒng)軟件
    • 支持軟件
    • 應(yīng)用軟件
  • 按結(jié)構(gòu)劃分
    • 單機軟件
    • 分布式軟件 C/S B/S
    C/S: 客戶端--服務(wù)器,B/S: 瀏覽器--服務(wù)端
  • 按照組織劃分
    • 開源軟件
    • 商業(yè)軟件

計算方式: 網(wǎng)格計算(地圖)、云計算

軟件缺陷由來

  • bug: 一只蟲子的由來
  • defect(缺陷)

軟件缺陷:

  • 軟件未能實現(xiàn)產(chǎn)品說明書的功能
  • 軟件出現(xiàn)了產(chǎn)品說明書指名的不應(yīng)該實現(xiàn)的功能
  • 產(chǎn)品軟件實現(xiàn)了產(chǎn)品說明書未能提到的功能
  • 軟件未實現(xiàn)產(chǎn)品說明書雖未明確提及但應(yīng)該實現(xiàn)的目標(biāo)
  • 軟件難以理解、不易使用、運行緩慢或者(從測試角度看)用戶體驗不佳

所有不滿足需求或者超出需求的都是缺陷
沒有不存在缺陷的產(chǎn)品,只有沒有發(fā)現(xiàn)的缺陷

概述 源于上世紀(jì)70th

  • 《測試數(shù)據(jù)選擇的原理》
  • 《軟件測試的藝術(shù)》
  • 軟件質(zhì)量保證部門: QA(質(zhì)量保證)、QC(質(zhì)量控制)、SQA

軟件測試國內(nèi)外現(xiàn)狀

正向思維(開發(fā)思維)

確信自己產(chǎn)品不存在問題

逆向思維

  • Glenford.j.Myers
  • 測試是為了發(fā)現(xiàn)錯誤而執(zhí)行一個程序或者系統(tǒng)的過程
    • 測試時證明程序有錯,而不是證明程序無措
    • 一個好的測試用例在于它發(fā)現(xiàn)以前未發(fā)現(xiàn)的錯誤
    • 一個成功的測試是發(fā)現(xiàn)了以前未發(fā)現(xiàn)的錯誤的測試

IEEE定義的測試

  • 在規(guī)定條件下運行系統(tǒng)或構(gòu)建的過程:觀察和記錄結(jié)果,并對系統(tǒng)或者構(gòu)建的某些方便給予評價
  • 分析軟件項目的過程: 檢測現(xiàn)有狀況和所需狀況之間的不同,并且評估軟件項目的特征

廣義軟件測試

  • 軟件測試是對軟件形成過程中的所有工作產(chǎn)品(包括程序以及相關(guān)文檔)進(jìn)行的測試
    而不僅僅是對程序的運行進(jìn)行測試
    • 驗證
      通過檢查和提供客觀證據(jù)來證實指定的需求是否滿足
    • 確認(rèn)
      通過檢查和提供客觀證據(jù)來證實特定目的的功能或者應(yīng)用是否實現(xiàn)

軟件測試的目的

  • 以最少的人力、物力和時間找出軟件中存在的各種錯誤缺陷,
    通過修正各種錯誤和缺陷保證軟件質(zhì)量,避免軟件發(fā)布后由于潛在各種軟件錯誤和缺陷造成的隱患所帶來的
    商業(yè)風(fēng)險。同時利用測試過程中得到的測試結(jié)果和測試信息,作為后續(xù)項目開發(fā)和測試過程改進(jìn)的重要輸入
    避免在將來的項目開發(fā)和測試中重復(fù)同樣的錯誤;采用更高效的測試管理手段,提高軟件測試的效率和軟件產(chǎn)品的質(zhì)量
  • 測試需要保證以下兩點: 程序做了它應(yīng)該做的事以及沒做它不應(yīng)該做的事。
  • 軟件測試的目的是盡可能早的找出軟件產(chǎn)品中潛藏的缺陷,并確保其得以修復(fù)
  • 軟件測試僅僅只是軟件質(zhì)量保證的重要手段之一,而真正提高軟件產(chǎn)品質(zhì)量,需要持續(xù)不斷的過程改進(jìn)。(開發(fā)的事)

測試和調(diào)試的區(qū)別

  • 目標(biāo)、方法、思路都不同
  • 測試是從已知的條件開始的,使用預(yù)先定義的過程,并且有預(yù)期結(jié)果;調(diào)試是從未知的的條件開始結(jié)束過程可能無法預(yù)計
  • 測試可以計劃,可以預(yù)先制定測試用例和過程,工作進(jìn)度可以度量;描述調(diào)試的過程或者持續(xù)時間相對比較困難
  • 測試對象包括軟件開發(fā)過程中的文檔、數(shù)據(jù)以及代碼、而調(diào)試的對象一般來說只是代碼。

軟件的定義

  • 程序
  • 數(shù)據(jù)
  • 結(jié)構(gòu)

軟件工程

軟件工程包括兩個方面: 軟件開發(fā)技術(shù)和軟件項目管理。其中,軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、軟件工具盒軟件工程環(huán)境。

軟件項目管理包括軟件質(zhì)量、項目評估、進(jìn)度控制、人員組織、配置管理、項目計劃等。

  • 引起軟件危機的主要問題是軟件質(zhì)量問題。軟件工程主要解決的就是軟件質(zhì)量問題。而軟件測試是軟件質(zhì)量管理體系中一個非常重要的手段。
  • 類比: 在軟件生產(chǎn)過程中,項目經(jīng)理、軟件開發(fā)工程師、軟件測試工程師師最基本的三個角色。就像建筑工程里的項目經(jīng)理、建筑師(含建筑工人)
    、項目監(jiān)理之間的關(guān)系。

軟件生命周期

1、立項--需求分析--設(shè)計、編碼、測試--發(fā)布--運行維護(hù)--淘汰
2、詳細(xì):軟件立項--可行性研究--需求分析--概要設(shè)計--詳細(xì)設(shè)計--編碼實現(xiàn)--單元測試--集成測試--系統(tǒng)測試--驗收測試--運行維護(hù)
3、軟件開發(fā)過程:需求分析--系統(tǒng)設(shè)計--編碼&測試--用戶驗收--上線維護(hù)
  • 瀑布模型: 上一個階段的工作輸出是下一個階段的工作輸入,缺點是測試介入時間太短,不支持迭代
  • 快速原型模型:迅速建造一個可運行的軟件模型,便于理解和澄清,使得開發(fā)與客戶達(dá)成共識。
  • 增量模型 (常用):
    • 增量模型是把待開發(fā)的軟件模塊化,將每個模塊作為一個增量組件,從而分批次的分析、設(shè)計、編碼和測試這些增量組件
    • 開放不需要一次性把整個軟件產(chǎn)品交給用戶,而是可以分批次進(jìn)行提交
    • 優(yōu)點
      • 模塊化
      • 降低開發(fā)風(fēng)險
      • 開發(fā)順序靈活
    • 限制:
      • 要求管理人員把握全局水平較高
  • 迭代模型:
    • 迭代包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的版本)的全部開發(fā)活動和要使用該發(fā)布必須的所有其他外圍元素
    • 某種程度上,開發(fā)迭代是一次完整經(jīng)過所有工作流程的過程: 需求分析、程序設(shè)計、實施、測試
    • 優(yōu)點
      • 降低在一個增量上的開支風(fēng)險
      • 降低了產(chǎn)品無法按照既定進(jìn)度進(jìn)入市場的風(fēng)險
      • 加快整個開發(fā)進(jìn)度
      • 適應(yīng)需求變化容易
  • 敏捷模型
    • 輕文檔
    • 無界限
  • 螺旋模型

軟件測試概述

標(biāo)準(zhǔn)的測試過程至少包括以下:需求分析--測試計劃--測試設(shè)計--測試執(zhí)行--測試總結(jié)

1、V模型

  • 揭示了開發(fā)過程與測試過程中各階段的對應(yīng)關(guān)系,通過開發(fā)和測試同時進(jìn)行的方式來縮短周期,提高開發(fā)效率
    • 缺點與不足
      • 僅僅把測試過程作為在需求分析、系統(tǒng)設(shè)計以及編碼后的一個階段,忽略了測試對需求分析,系統(tǒng)設(shè)計的驗證,需求的滿足情況一直到后期的驗收測試才被驗證。
      • 沒有體現(xiàn) 盡早的和不斷地進(jìn)行軟件測試 的原則
      • 不支持迭代
V模型

上圖左右對應(yīng)

2、W模型

  • 由兩個V組成,分別代表測試與開發(fā)過程,明確的表示了測試與開發(fā)的并行關(guān)系
  • 測試伴隨著整個軟件開發(fā)周期,而且測試的對象不僅僅是程序,需求、設(shè)計等開發(fā)輸出的文檔同樣要測試


    W模型

3、H模型

  • 相對于V和W模型,H模型將測試活動完全獨立出來了,形成一個完全獨立的流程,將測試準(zhǔn)備活動和測試執(zhí)行活動清晰的體現(xiàn)出來
  • 途中標(biāo)記的其他流程可以是任意開發(fā)流程,只要測試條件成熟了,測試準(zhǔn)備活動完成了,測試活動就可以進(jìn)行了。
  • 支持迭代(好的模型)
  • 早準(zhǔn)備早執(zhí)行
  • 為了能夠?qū)﹂_發(fā)過程進(jìn)行測試,應(yīng)當(dāng)采用的測試過程模型為 W+H


    H模型

4、X模型

X模型

軟件測試管理理念

  • 盡早測試
    • 測試人員早起參加軟件項目,及時開展測試的準(zhǔn)備工作,包括編寫測試計劃、制定測試方案以及準(zhǔn)備測試用例
    • 盡早的開展測試執(zhí)行工作,一旦代碼模塊完成就應(yīng)該及時開展單元測試,一旦代碼模塊被集成成相對獨立的子系統(tǒng),便可以開展集成測試
    • 旦有BUILD提交,便可以看展系統(tǒng)測試工作
  • 全面測試
    • 對軟件的所有產(chǎn)品進(jìn)行全面的測試,包括需求、設(shè)計文檔、代碼,用戶文檔等。
    • 軟件開發(fā)及測試人員(有時包括用戶)全面的參與到測試工作中。
  • 全過程測試
    • 測試人員要充分關(guān)注開發(fā)過程,對開發(fā)過程的各種變化做出響應(yīng)。
    • 測試人員要對測試的全過程進(jìn)行跟蹤。
  • 獨立、迭代測試
    • 測試活動是迭代的
    • 應(yīng)當(dāng)將測試過程從開發(fā)過程中適當(dāng)?shù)某橄蟪鰜恚鳛橐粋€獨立的過程進(jìn)行管理

測試方法

單元測試

  • 說明:單元測試又稱模塊測試,是針對軟件設(shè)計的最小單位--程序模塊進(jìn)行正確性驗證的測試過程,其目的在于檢查每個程序單元是否能夠正確實現(xiàn)設(shè)計模塊中的
    模塊功能、性能、接口和設(shè)計約束等要求,發(fā)現(xiàn)各模塊可能存在的各種錯誤。單元測試需要從程序內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計用例。多個模塊可以平行的
    進(jìn)行單元測試。
  • 邏輯結(jié)構(gòu)和代碼功能

集成測試

  • 說明:集成測試也叫組裝測試。通常在單元測試的基礎(chǔ)上,將所有的程序模塊進(jìn)行有序的、遞增的測試。集成測試是檢驗程序單元或部件
    的接口關(guān)系,逐步集成為符合概要設(shè)計要求的程序部件或整個系統(tǒng)。

確認(rèn)測試

  • 說明:確認(rèn)測試也叫有效性測試。實在模擬環(huán)境下,驗證軟件的所有功能和性能及其他特征是否與用戶預(yù)期要求一致。通過了確認(rèn)測試之后的軟件,才具備了進(jìn)入系統(tǒng)測試階段的資質(zhì)

系統(tǒng)測試

  • 說明:系統(tǒng)測試實在真實的系統(tǒng)運行環(huán)境下,檢查完整的程序系統(tǒng)能否和系統(tǒng)(包括硬件、外設(shè)、網(wǎng)絡(luò)和系統(tǒng)軟件、支持平臺等)正確配置、連接、并最終滿足用戶的所有需求

驗收測試

  • 說明: 是軟件產(chǎn)品檢驗的最后一個環(huán)節(jié)。按照項目任務(wù)書或合同、供需雙發(fā)約定的驗收依據(jù)文檔進(jìn)行對整個系統(tǒng)的測試與評審,決定收或者拒收系統(tǒng)

黑盒測試

  • 說明:通過軟件表現(xiàn)來發(fā)現(xiàn)缺陷和錯誤,不關(guān)注程序內(nèi)部結(jié)構(gòu)和處理過程。程序界面處進(jìn)行測試,他只是檢查樣序是否按照規(guī)格說明書來。只關(guān)注輸入輸出。

白盒測試

  • 通過對程序內(nèi)部結(jié)構(gòu)分析、檢測來尋找問題。也稱結(jié)構(gòu)測試

灰盒測試

  • 介于黑盒白盒之間的測試。關(guān)注輸出對于輸入的正確性;同時也關(guān)注內(nèi)部表現(xiàn),但是不會很詳細(xì),只是通過表象、事件、標(biāo)志來判斷內(nèi)部運行狀態(tài)。
  • 同時考慮了用戶端、特定的系統(tǒng)知識和操作系統(tǒng)。它在系統(tǒng)組件的協(xié)同性環(huán)境中評價應(yīng)用軟件設(shè)計

靜態(tài)測試

  • 指不實際運行被測對象,而是只是靜態(tài)的檢查代碼、界面或文檔中可能存在的錯誤
    • 代碼測試:代碼是否符合標(biāo)準(zhǔn)和規(guī)范
    • 界面測試: 界面與需求文檔是否相符
    • 文檔測試: 測試用戶手冊和需求說明是否真正符合用戶需求

動態(tài)測試

  • 實際運行被測對象,輸入相應(yīng)的測試數(shù)據(jù),檢查實際的輸出結(jié)果和預(yù)期結(jié)果是否相符。判斷動態(tài)還是靜態(tài)的標(biāo)準(zhǔn)是看程序是否運行。

功能測試

  • 是黑盒測試的一方面,檢查實際軟件功能是否滿足客戶需求
    • 邏輯功能測試
    • 界面測試
    • 易用性測試
    • 安裝測試
    • 兼容性測試
    • 。。。

性能測試

  • 功能的另個一指標(biāo),主要關(guān)注軟件在某一功能在指定的時間、空間條件下,是否正常使用
  • 性能測試包括很多方面,主要是時間性和空間性。

回歸測試

  • 指新版本測試前,重復(fù)執(zhí)行之前某一個重要版本的所有測試用例
  • 目的:
    • 驗證之前版本的缺陷是否全部被修復(fù)
    • 確認(rèn)修復(fù)缺陷沒有引發(fā)新的缺陷

冒煙測試

  • 指一個新版本進(jìn)行系統(tǒng)大規(guī)模的測試之前,先驗證一下基本功能是否實現(xiàn),是否具備可測性。也叫可測性測試。

隨機測試

  • 隨意性測試,指測試人員基于經(jīng)驗和直覺的探索性測試,目的是模擬用戶的真實操作,并發(fā)現(xiàn)一些邊緣性錯誤

測試原則

  • 所有測試標(biāo)準(zhǔn)都建立在用戶需求之上
  • 軟件測試必須基于""質(zhì)量第一",當(dāng)時間和質(zhì)量沖突,時間要服從質(zhì)量
  • 實現(xiàn)定義好產(chǎn)品質(zhì)量標(biāo)準(zhǔn),只有有了質(zhì)量標(biāo)準(zhǔn),才能根據(jù)測試結(jié)果,對產(chǎn)品質(zhì)量進(jìn)行分析評估
  • 軟件項目啟動,軟件測試開始
  • 窮舉測試時不可能的
  • 第三方測試更有效,更客觀
  • 軟件測試計劃是軟件測試的前提
  • 測試用例是設(shè)計出來的,不是寫出來的,所以要根據(jù)測試的目的,采用相應(yīng)的方法去設(shè)計測試用例,從而提高測試效率,
    更多發(fā)現(xiàn)錯誤,提高程序可靠性
  • 對發(fā)現(xiàn)錯誤更多的程序段,應(yīng)該進(jìn)行更深入的測試,一般來說,一段程序中已經(jīng)發(fā)現(xiàn)的錯誤數(shù)越多,其中存在錯誤的概率也越大
  • 重試文檔,妥善保存一切測試文檔(測試計劃、測試用例、測試報告)
  • 應(yīng)該把“""盡早和不斷測試"作為座右銘
  • 回歸測試的關(guān)聯(lián)性一定要引起充分注意,修改一個錯誤而引發(fā)更多錯誤現(xiàn)象很常見
  • 測試應(yīng)該從小規(guī)模到大規(guī)模
  • 不可將測試用例置之度外,排除隨意性
  • 必須徹底檢查每一個測試結(jié)果
  • 一定要注意測試中的錯誤集發(fā)生現(xiàn)象,這和程序員的編程水平和習(xí)慣有很大關(guān)系
  • 對測試錯誤結(jié)果一定要有一個確認(rèn)的過程

測試計劃編寫(5W1H)

  • what、why、who、where、when、how

制定測試目標(biāo)從以下幾個方面著手

  • 理解系統(tǒng)
  • 及早介入
  • 理解企業(yè)文化和過程
  • 測試期望
  • 吸取教訓(xùn)
  • 工作量大小
  • 解決方案的類型
  • 技術(shù)選擇
  • 預(yù)算
  • 時間表
  • 分階段解決方案
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內(nèi)容