認識自動化測試

2021-09-24 22:58:09 字數 4031 閱讀 1385

軟體測試(英語:software testing),描述一種用來促進鑑定軟體的正確性、完整性、安全性和質量的過程。換句話說,軟體測試是一種實際輸出與預期輸出之間的審核或者比較過程。

1、單元測試

單元測試即為將整個軟體分解為各個

功能,隨後對單元進行測試。此類測試策略的優點在於所需分析資料較少,且針對性較強,程式開發者於開發過程中可通過操作經驗明確出現問題的大致區域,隨後針對此類問題對相關單元展開分析,進行問題排查。但需注意的是,某些程式中無具體單元驅動程式,即單個單元無法有效驅動,易出現問題,若針對此類軟體展開測試,需重點注意此類分解單元。

2、整合測試

整合測試

與單元測試相反,原理為將部分需測試部分作為整體進行整合,隨後針對此類整合部分進行測試。測試要求為此類被測試整合題應具有一定的結構,且屬於非漸增方式整合。對於較大軟體而言,整合測試方式較單元測試方式而言較為繁瑣,目前多數大型軟體的測試皆採取漸增方式進行測試。漸增測試方式為整合測試方式的衍生,其能夠按照不同次序對軟體進行測試,日常測試中,常將兩類方式進行整合測試,隨後按照次序展開選擇。

3、黑盒測試

黑盒測試,顧名思義即為將軟體測試環境模擬為不可見的「黑盒」。通過資料輸入觀察資料輸出,檢查軟體內部功能是否正常。測試展開時,資料輸入軟體中,等待資料輸出。資料輸出時若與預計資料一致,則證明該軟體通過測試,若資料與預計資料有出入,即便出入較小亦證明軟體程式內部出現問題,需盡快解決。

4、白盒測試

白盒測試相對於黑盒測試而言具有一定透明性,原理為根據軟體內部應用、源**等對產品內部工作過程進行除錯。測試過程中常將其與軟體內部結構協同展開分析,最大優點即為其能夠有效解決軟體內部應用程式出現的問題,測試過程中常將其與黑盒測試方式結合,當測試軟體功能較多時,白盒測試法亦可對此類情況展開有效除錯。其中,判定測試作為白盒測試法中最為主要的測試程式結構之一,此類程式結構作為對程式邏輯結構的整體實現,對於程式測試而言具有較為重要的作用。此類測試方式針對程式中各型別的**進行覆蓋式檢測,覆蓋範圍較廣,適用於多型別程式。實際檢測中,白盒測試法常與黑盒檢測法並用,以動態檢測方式中測試出的未知錯誤為例,首先使用黑盒檢測法,若程式輸入資料與輸出資料相同,則證明內部資料未出現問題,應從**方面進行分析,若出現問題則使用白盒測試法,針對軟體內部結構進行分析,直至檢測出問題所在,及時加以修改。

斷言定義

編寫**時,我們總是會做出一些假設,斷言就是用於在**中捕捉這些假設,可以將斷言看作是異常處理的一種高階形式。斷言表示為一些布林表示式,程式設計師相信在程式中的某個特定點該表示式值為真。可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言,而在部署時禁用斷言。同樣,程式投入執行後,終端使用者在遇到問題時可以重新啟用斷言。

#斷言 編寫**時,我們總是會做出一些假設,斷言就是用於在**中捕捉這些假設,可以將斷言看作是異常處理的一種高階形式。

#assert代表斷言,假設斷言的條件為真,如果為假誘發assertionerror

#assert 斷言的條件,錯誤的提公升

a = 0

assert a,"a is false"

print(a)

#上面的斷言**類似下面的if語句

a = 1

if not a:

raise assertionerror("a is false")

print(a)

斷言的優勢

編寫防禦性**

起到特殊的注釋作用

testcase(測試用例): 所有測試用例的基類,它是軟體 測試中最基本的組成單元。乙個test case就是乙個測試用例,是乙個完整的測試流程,包括測試前環境的搭建setup,執行測試**(run),以及測試後環境的還原(teardown)。測試用例是乙個完整的測試單元,可以對某一問題進行驗證。

testsuite(測試套件):多個測試用例test case集合就是testsuite,testsuite可以巢狀testsuite

testloder:是用來載入 testcase到testsuite中,其中有幾個loadtestsfrom_()方法,就是從各個地方尋找testcase,建立他們的例項,然後add到testsuite中,再返回乙個testsuite例項

texttestrunner:是來執行測試用例的,其中的run(test)會執行testsuite/testcase中的run(result)方法。

texttestresult:測試結果會儲存到texttestresult例項中,包括執行了多少用例,成功與失敗多少等資訊

testfixture:又叫測試腳手,測試**的執行環境,指測試準備前和執行後要做的工作,包括setup和teardown方法

import unittest

#unittest使用的方法

class ourtest(unittest.testcase):

"""繼承編寫測試的基礎類

"""def setup(self):

"""類似於類的init方法,在測試執行之初制動執行,通常用來做測試資料的準備

"""def test_add(self):

"""具體測試的方法,使用testcase編寫具體測試的方法,函式名稱必須以test開頭

函式當中的內容通常是獲取預期值,和執行結果值

然後對兩個值進行斷言

"""def teardown(self):

"""類似類的del方法,用來**測試的環境

"""if __name__ == "__main__":

unittest.main()

unittest小例子

import unittest

#舉個栗子

class ourtest(unittest.testcase):

"""繼承編寫測試的基礎類

"""def setup(self):

"""類似於類的init方法,在測試執行之初制動執行,通常用來做測試資料的準備

"""self.a = 1 #測試使用的引數1

self.b = 1 #測試使用的引數2

self.result = 3 #預期的結果

def test_add(self):

"""具體測試的方法,使用testcase編寫具體測試的方法,函式名稱必須以test開頭

函式當中的內容通常是獲取預期值,和執行結果值

然後對兩個值進行斷言

unittest模組已經封裝好了更多的斷言方法

"""run_result = self.a + self.b

self.assertequal(run_result,self.result,"self.a+self.b不等於3") #斷言兩個值相等

def teardown(self):

"""類似類的del方法,用來**測試的環境

"""if __name__ == "__main__":

unittest.main()

unitest常用的斷言方法

斷言方法 斷言描述

assertequal(arg1, arg2, msg=none) 驗證arg1=arg2

assertnotequal(arg1, arg2, msg=none) 驗證arg1 != arg2

asserttrue(expr, msg=none) 驗證expr是true,如果為false

assertfalse(expr,msg=none) 驗證expr是false,如果為true

assertis(arg1, arg2, msg=none) 驗證arg1、arg2是同乙個物件

assertisnot(arg1, arg2, msg=none) 驗證arg1、arg2不是同乙個物件

assertisnone(expr, msg=none) 驗證expr是none

assertisnotnone(expr, msg=none) 驗證expr不是none

assertin(arg1, arg2, msg=none) 驗證arg1是arg2的子串

assertnotin(arg1, arg2, msg=none) 驗證arg1不是arg2的子串

assertisinstance(obj, cls, msg=none) 驗證obj是cls的例項

ssertnotisinstance(obj, cls, msg=none) 驗證obj不是cls的例項

自動化測試 web自動化測試

自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...

測試自動化 自動化測試的定義

相關術語 automated testing test tool,automated testing test suite,automated testing test script等.具體參見 http en.wikipedia.org wiki test automation 推薦書籍 1 軟體...

測試自動化

自動化測試有兩種含義 開發過程的自動化單元測試和功能驗證階段的自動化黑盒測試。這兩者融合到daily build中,是daily build的最重要核心。daily build和自動化單元測試另文詳述,此處主要說說自動化功能測試。自動化測試的投入產出比以及實際應用效果其實不高 自動化測試作為提高測試...