1. 程式人生 > >《Selenium2自動化測試實戰基於Python語言》讀書筆記--第1章

《Selenium2自動化測試實戰基於Python語言》讀書筆記--第1章

第1章 自動化測試基礎

1.1 軟體測試分類

根據專案流程階段劃分軟體測試

1) 單元測試:又稱模組測試,是對程式中的單個子程式或具有獨立功能的程式碼段進行測試的過程;

2)整合測試:是在單元測試的基礎上,先通過單元模組組裝成系統或子系統,再進行測試,重點是檢查模組之間的介面是否正確;

3)系統測試:是針對整個產品系統進行的測試,驗證系統是否滿足需求規格的定義,以及軟體系統的正確性和效能等是否滿足其需求規格的要求;

4)驗收測試:是部署軟體之前的最後一個測試階段,驗收測試的目的是確保軟體準備就緒,向軟體購買者展示該軟體能夠滿足使用者的需求;

白盒測試、黑盒測試、灰盒測試

1)黑盒測試:通俗來講,黑盒測試並不關心盒子裡面的結構是什麼,只關心輸入資料和輸出結果。

它只檢查程式呈現給使用者的功能是否按照需求規格說明書的規定正常使用、程式是否能接收輸入資料併產生正確的輸出資訊。黑盒測試著眼於程式外部結構,不考慮內部邏輯結構,主要針對軟體介面和軟體功能進行測試;

2)白盒測試:側重於研究盒子裡面的結構和結果。

它是按照程式內部的結構測試程式,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行,檢驗程式中的每條邏輯路徑是否都能按預定要求正確工作;

3)灰盒測試:介於白盒和黑盒測試之間。

既關注輸入、輸出的正確性,同時也關注內部表現。結合上述兩種測試方法,但關注的點,也介於兩者之間,不會側重的那麼深。

功能測試、效能測試

1)功能測試:檢查功能是否符合需求。

功能測試又可以細分為:邏輯功能測試、介面功能測試、易用性測試、安裝測試、相容性測試。

2)效能測試:通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。

效能測試也分為:空間效能、時間效能。

時間效能:主要是指軟體的一個具體的響應時間;

空間效能:主要是指軟體執行時所消耗的系統資源,eg:硬碟、CPU、記憶體、頻寬等。

手工測試、自動化測試

1)手工測試:由測試人員一個一個地去執行測試用例,通過鍵盤滑鼠等輸入一些引數,並檢視返回結果是否符合預期結果。

2)自動化測試:是把以人為驅動的測試行為轉化為機器執行的一種過程。

自動化測試可分為:功能自動化測試、效能自動化測試。

功能自動化測試:通過測試工具(或框架)錄製/編寫測試指令碼,對軟體的功能進行測試,並驗證測試結果是否正確,從而代替部分的手工測試工作,達到節約人力成本和時間成本的目的;

效能自動化測試:通過效能測試工具模擬成千上萬的虛擬使用者向系統傳送請求,從而驗證系統的處理能力。

冒煙測試、迴歸測試、隨機測試、探索性測試和安全測試

這幾個概念是針對於測試周期而言,既不算具體明確的測試階段,也不是具體的測試方法。

1)冒煙測試

是指在對一個新版本進行大規模的系統測試之前,先驗證一下軟體的基本功能是否實現,是否具備可測性。

就是指測試小組在正式測試一個新版本之前,先投入較少的人力和時間驗證一個軟體的主要功能,如果主要功能都沒有執行通過,則打回開發組重新開發,這樣做的好處是可以節省時間和人力投入到不可測的專案中。

2)迴歸測試

是指修改了舊程式碼後,重新進行測試以確認修改後沒有引入新的錯誤或導致其他程式碼產生錯誤。

迴歸測試是一個迴圈的過程,如果迴歸的問題通不過,則需要再次修復再次進行迴歸驗證,直到所有的問題迴歸通過為止。

3)隨機測試

是指測試中的所有輸入資料都是隨機生成的,目的是模擬使用者的真實操作,並發現一些邊緣性的錯誤。

隨機測試可以發現一些隱蔽的錯誤,但是也有缺點,例如測試不繫統、無法統計程式碼覆蓋率和需求覆蓋率、發現的問題難以重現等,一般是放在測試的最後執行,隨機測試更專業的升級版叫做探索性測試。

4)探索性測試

可以說是一種測試思維技術,它沒有很多實際的測試方法、技術和工具,但卻是所有測試人員都應該掌握的一種測試思維方式。

探索性測試強調測試人員的主觀能動性,拋棄繁雜的測試計劃和測試用例設計過程,強調在碰到問題時及時改變測試策略。

5)安全測試

安全測試是在IT軟體產品的生命週期中,特別是產品開發基本完成至釋出階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的過程。

1.2 分層的自動化測試

測試金字塔–敏捷大師Mike Cohn 《Succeeding with Agile》

分層自動化–Martin Fowler

傳統的自動化測試: 基於產品UI層的自動化測試,是將黑盒功能測試轉化為由程式或工具執行的一種自動化測試。

分層自動化測試: 倡導是從黑盒(UI)單層到黑百盒多層的自動化測試體系,從全面黑盒自動化測試到系統的不同層次進行自動化測試。

單元自動化測試: 是指對軟體中的最小可測試單元進行檢查和驗證。

單元測試框架:Java語言的Junit、TestNG,C#語言的NUnit,以及Python語言的unittest、pytest等。

Code Review外掛:Java語言的基於Eclipse的ReviewClipse和Jupiter、Python語言的Review Board等。

介面自動化測試:

  • 模組介面測試:主要測試模組之間的呼叫和返回。

  • Web介面測試又分為:

    • 伺服器介面測試:指測試瀏覽器與伺服器的介面。Web開發一般分為前端和後端,前端開發人員用HTML/CSS/JavaScript等技術,後端開發人員用PHP/Java/C#/Python/Ruby等各種語言。使用者的操作是在前端頁面上,需要後端提供伺服器介面,前端通過呼叫這些介面來獲得需要的資料,通過HTTP協議實現前後端的資料傳遞。

    • 外部介面測試:指呼叫的介面由第三方系統提供,典型的例子就是第三方登入,使用者登入資訊的驗證由第三方完成,並返回給當前系統是否驗證通過。

UI自動化測試:

主流測試工具有UFT、Watir、Robot Framework、Selenium等。

除UI層所展示的功能外,前端程式碼同樣需要進行測試,針對前端最主要的開發語言JavaScript,QUnit是一個強大的單元測試框架。

在《Google測試之道》一書中提到,Google對產品測試型別劃分為:小測試、中測試、大測試。採用70%(小)、20%(中)、10%(大)的比例,大體對應測試金字塔中的Unit、Service、UI層。

自動化測試中最繁瑣的是:變化,變化會直接導致測試用例的執行失敗,所以需要對自動化指令碼進行不斷調整。如何控制失敗、降低維護成本是對自動化測試工具以及人員能力的 挑戰。

反過來講,一份永遠都執行通過的自動化測試用例已經失去了它存在的價值。

1.3 什麼樣的專案適合自動化測試

1) 任務測試明確,不會頻繁變動。

2) 每日構建後的測試驗證。

3) 比較頻繁的迴歸測試。

4) 軟體系統介面穩定,變動少。

5) 需要在多平臺上進行的相同測試案例、組合遍歷型的測試,大量的重複任務。

6) 軟體維護週期長。

7) 專案進度壓力不大。

8) 被測試軟體系統開發較為規範,能夠保證系統的可測試性。

9) 具備大量的自動化測試平臺。

10) 測試人員具備較強的程式設計能力。

上述10條並非全部滿足才能進行自動化,還需要大家在實際專案中酌情考慮。

一般情況下,滿足如下三條即可:

1) 軟體需求變動不頻繁

2) 專案週期較長

3) 自動化測試指令碼可重複使用

1.4 自動化測試及工具簡述

自動化測試: 藉助工具來輔助進行軟體測試的方法都可以稱為自動化測試。

常見的自動化測試工具:

  • UFT

    UFT(Unified Functional Testing)由QTP(Quick Test Professional software)與ST(Service Test)合併而來,由HP公司開發。它是一個企業級的自動化測試工具,提供了強大易用的錄製回放功能,同時相容物件識別模式與影象識別模式兩種識別方式,支援B/S與C/S兩種架構的軟體測試,是目前主流的自動化測試工具。

  • Robot Framework

    是一款基於Python語言編寫的自動化測試框架,具備良好的可擴充套件性,支援關鍵字驅動,可以同時測試多種型別的客戶端或者介面,可以進行分散式測試。

  • Watir

    Watir(Web Application Testing in Ruby)是一個基於Web模式的自動化功能測試工具。Watir是一個Ruby語言庫,使用Ruby語言進行指令碼開發。

  • Selenium

    Selenium也是一個用於Web應用程式測試的工具,支援多平臺、多瀏覽器、多語言去實現自動化測試。目前在Web自動化領域應用越來越廣泛。

1.5 Selenium工具介紹

Selenium: 主要用於Web應用程式的自動化測試,還支援所有基於Web的管理任務自動化。

Selenium特點:

  • 開源、免費

  • 多瀏覽器支援:Firefox、Chrome、IE、Opera、Edge

  • 多平臺支援:Windows、Linux、MAC

  • 多語言支援:Java、Python、Ruby、C#、JavaScript、C++

  • 對Web頁面良好的支援

  • 簡單(API簡單)、靈活(用開發語言驅動)

  • 支援分散式測試用例執行

Selenium構成:

  • Selenium IDE

    Selenium IDE是嵌入到Firefox瀏覽器中的一個外掛,實現簡單的瀏覽器操作的錄製與回放功能。IDE錄製的指令碼可以轉換成多種語言,從而幫助我們快速地開發指令碼。

  • Selenium Grid

    Selenium Grid是一種自動化的測試輔助工具,Grid通過利用現有的計算機基礎設施,能加快Web-App的功能測試。利用Grid可以很方便地實現在多臺機器上和異構環境中執行測試用例。

  • Selenum RC

    Selenium RC(Remote Control)是Selenium家族的核心部分。支援多種不同語言編寫的自動化測試指令碼,通過Selenium RC的伺服器作為代理伺服器去訪問應用。

    Selenium RC分為Client Libraries和Selenium Server。Client Libraries庫主要用於編寫測試指令碼,用來控制Selenium Server的庫。Selenium Server負責控制瀏覽器行為。總的來說,Selenium Server主要包括:Launcher、Http Proxy、Core。其中,Selenium Core是被Selenium Server嵌入到瀏覽器頁面中的。其實Selenium Core就是一堆JavaScript函式的集合,即通過這些JavaScript函式,我們才可以實現用程式對瀏覽器進行操作。Launcher用於啟動瀏覽器,把Selenium Core載入到瀏覽器頁面中,並把瀏覽器的代理設定為Selenium Server的Http Proxy。

  • Selenium 2.0

    Selenium 2.0 = Selenium1.0(即上述全部內容)+WebDriver

    WebDriver可以看作是Selenium RC的替代品。出於相容性考慮,2.0裡並沒有拋棄RC。

  • WebDriver與Selenium RC的區別

    Selenium RC是在瀏覽器中執行的JavaScript應用,使用瀏覽器內建的JavaScript翻譯器來翻譯和執行selenese命令(selenese是Selenium命令集合)。

    WebDriver是通過原生瀏覽器支援或者瀏覽器擴充套件來直接控制瀏覽器。針對各個瀏覽器而開發,取代了嵌入到被測Web應用中的JavaScript,與瀏覽器緊密整合,因此支援建立更高階的測試,避免了JavaScript安全模型導致的限制,除了來自瀏覽器廠商的支援外,WebDriver還利用作業系統級的呼叫,模擬使用者輸入。

1.6 前端技術介紹

1. HTML簡介

HTML(Hyper Text Markup Language)超文字標記語言,是網頁的基礎。它不是程式語言,而是標記語言,我們可以在HTML標籤中嵌入各種前端指令碼語言,如VBScript、JavaScript等。

<html>
    <head>
        <title>標題</title>
    </head>
    <body>
        <h1>正文</h1>
    </body>
</html>

<html>與</html> 之間的文字用於描述網頁。

<head>與</head> 之間的文字用於定義文件的頭部,它是所有頭部元素的容器。

<title>與</title> 之間的文字顯示在瀏覽器的標題欄。

<body>與</body> 之間的文字是可見的頁面內容。

<h1>與</h1> 之間的文字被顯示為正文,h1表示為一號字型。

2. JavaScript簡介

是由Netscape公司的LiveScript發展而來的前端指令碼語言(指令碼語言是一種輕量級的語言),是一種解釋性語言(程式碼執行不需要預編譯),被設計用來向HTML頁面新增互動行為,通常被直接嵌入到HTML頁面。

HTML中使用JavaScript,需要新增標籤<script>,並通過type屬性來定義指令碼語言:

<html>
    <body>
        <script type="text/javascript">
            document.write("Hello World!");
        </script>
    </body>
</html>

<script type="text/javascript"></script>就可以告訴瀏覽器,JavaScript指令碼從何處開始,到何處結束。使用document.write()可以向文件輸出內容。

3. XML簡介

XML是指擴充套件標記語言,是標準通用標記語言的一個子集:

  • HTML是用來顯示資料,其焦點是資料的外觀

  • XML是為傳輸和儲存資料,其焦點是資料的內容

<?xml version="1.0"?>
<note>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
</note>

<?xml version="1.0"?> 一個應該包含XML的宣告,它定義了XML文件的版本號。
<note></note>定義了文件裡的第一個元素,也叫根元素。
<to></to><from></from><heading></heading><body></body>為根元素的子元素,包含了傳送者與接收者的資訊。其中<to><from>是我們自己定義的,這在XML中是允許的。

這個XML文件僅僅是用標籤包裝了純粹的資訊,我們需要編寫軟體程式,才能傳送、接收和顯示出這個文件。

1.7 前端工具介紹

1. FireBug

FireBug是Firefox瀏覽器下的一套開發類外掛。它集HTML檢視和編輯、JavaScript控制檯、網路狀況監視器、Cookie檢視於一體。

2. FirePath

FirePath是FireBug外掛擴充套件的一個工具,用來編輯、檢查、生成的XPath1.0表示式、CSS3選擇器以及jQuery選擇器。可以幫助我們通過XPath和CSS來快速定位頁面上的元素。

3. Chrome開發人員工具與IE開發人員工具

Chrome和IE都提供了類似的開發人員工具,F12即可。

1.8 開發語言的選擇

自動化測試選取的語言,不一定非要和軟體開發使用的語言一致。

基於Python+Selenium編寫的自動化測試指令碼既可以測試基於Java開發的Web專案,也可以測試基於PHP開發的Web專案。

而選取一致的語言,也有好處,如:提高編碼能力、協助開發人員進行單元測試等。

1.9 總結

本章主要是以自動化基礎為切入點,為讀者講解了什麼是自動化測試,自動化測試的分類,自動化測試採用的語言、工具等內容。

沒有過多的深入內容,主要也是為了讓大家在開始下一步前,對自動化測試,尤其是web自動化測試,即UI層自動化測試有一個初步的瞭解。

相關推薦

Selenium2自動化測試實戰基於Python語言讀書筆記--3

第3章 Python基礎 由於作者寫的這本書完全是以Python語言為基礎的,所以需要讀者具備一定的Python程式設計能力。如果說最好的Python基礎教程,那應該說是《笨方法學Python》了。 3.1 Python哲學 <span style="colo

Selenium2自動化測試實戰基於Python語言讀書筆記--1

第1章 自動化測試基礎 1.1 軟體測試分類 根據專案流程階段劃分軟體測試 1) 單元測試:又稱模組測試,是對程式中的單個子程式或具有獨立功能的程式碼段進行測試的過程; 2)整合測試:是在單元測試的基礎上,先通過單元模組組裝成系統或子系統,再進行

10.Selenium2 自動化測試實戰-基於Python語言-顯示等待

WebDriver提供了兩種型別的等待:顯示等待和隱式等待。 1.顯示等待使WebDriver等待某個條件成立時繼續執行,否則在達到最大時長時丟擲超時異常(TimeoutException)。from selenium import webdriver from selen

4. Selenium2 自動化測試實戰-基於Python語言-跨目錄模組呼叫

projec/ |___model/ |      |___count.py |      |___new_count.py |___test.py count.py class A(): def add(self,a,b): return a

selenium2自動化測試實戰--基於Python語言

集成測試 包括 測試計劃 多語言 模擬 功能測試 很難 說明 簡單的 自動化測試基礎 一、 軟件測試分類 1.1 根據項目流程階段劃分軟件測試 1.1.1 單元測試   單元測試(或模塊測試)是對程序中的單個子程序或具有獨立功能的代碼段進行測試的過程。 1.1.2

《Selenium自動化測試實戰:基於Python》Selenium自動化測試框架入門

第1章  Selenium自動化測試框架入門  1.1  Selenium自動化測試框架概述   說到目前流行的自動化測試工具,相信只要做過軟體測試相關工作,就一定聽說過Selenium。   圖1-1是某企業招聘自動化測試工程師的資訊,大家可以看到在崗位任職條件方面明確

《Selenium自動化測試實戰:基於Python》之 Python與Selenium環境的搭建

第2章  Python與Selenium環境的搭建 購買連結:  京東:https://item.jd.com/13123910.html  噹噹:http://product.dangdang.com/29204520.html    2.1 

《Selenium自動化測試實戰:基於Python》之 Selenium IDE外掛的安裝與使用

第3章  Selenium IDE外掛的安裝與使用 京東:https://item.jd.com/13123910.html 噹噹:http://product.dangdang.com/29204520.html     可以在Chrome或Firefox瀏覽器的附加元件中找到Se

《Selenium自動化測試實戰:基於Python》之 基於Docker與Selenium Grid的測試技術

                       基於Docker與Selenium Grid的測試技術       &nb

《白話深度學習與Tensorflow》讀書筆記--1:機器學習是什麼

機器學習從學習的種類來說,可以分為兩種: 1.無監督學習,即人們獲得訓練的向量資料後在沒有標籤的情況下嘗試找出其內部蘊含關係的一種挖掘工作。 2.有監督學習,即每一個樣本都有著明確的標籤,最後總結出這些訓練向量與標籤的對映關係。 1.1 聚類 定義:是一種典型

<算法圖解>讀書筆記:1 算法簡介

猜數字 lis 能夠 else 平均情況 度量 長時間 什麽 表示法 閱讀書籍:[美]Aditya Bhargava◎著 袁國忠◎譯.人民郵電出版社.《算法圖解》 第1章 算法簡介 1.2 二分查找 一般而言,對於包含n個元素的列表,用二分查找最多需要\(log_2n\)

selenium自動化實戰-基於python語言(二: 編寫腳本)

獲取 pat 打開 border 命令 需要 框架 attribute 一個 上一篇文章說到顯示等待和隱式等待語句,我們繼續學習下面的命令方法。 8. 定位一組元素 這裏書上是自己寫了一個頁面代碼,通過訪問本地這個頁面來舉例。但我覺得找一個現有的頁面自己琢磨更有意思,而且

讀書筆記】《Python自然語言處理》1 語言處理與Python

1.1 語言計算:文字和詞彙 入門 nltk下載地址 使用pip安裝 >>>import nltk 檢驗是否成功。 >>>nltk.download() 選擇語料下載 使用python直譯器載入book模組中的條目 >&g

python爬蟲讀書筆記1

1.使用urllib2模組下載URL import urllib2 def download(url): return urllib2.urlopen(url).read() 2.捕獲異常 出現下載錯誤時,該函式能夠捕獲異常,然後返回None。 import urllib2

Python 《資料科學入門》 讀書筆記 2018-8-2011:30開始

接著看這本書。。看到第三章的時候,腦闊又疼了。用的時候再說吧,而且R軟體功能很強大。蹦過去了。 接著到了第四章。我一想說第四章講的線性代數。。我特麼高等代數都學過還看這個幹嘛啊。 又到了第五章,將統計,我說真巧,我就是統計專業的。 又到了第六章,一看,哇概率論,他咋知道我的專業是概率論與

程式設計師的職業素養 讀書筆記 - 7 驗收測試

需求的溝通 開發方與業務方之間最常見的溝通是關於需求的。業務方描述他們認為自己需要的東西,程式設計師按照自己理解的業務方表達的需求來開發。 在現實裡,關於需求的溝通是極其困難的,其中會出現各種問題。 過早精細化     做業務的人和寫程式的人都容易陷入一個陷阱,即過早進行精細化。

程序員的職業素養 讀書筆記 - 5 測試驅動開發

定性 失敗 測試 通過 修改 細節 擁有 驅動 存在 此事已有定論 TDD絕不僅僅是一種用於縮短編碼周期的簡單技巧。 每個開發人員都要適應和掌握TDD。 TDD的三項法則 1、在編好失敗單元測試之前,不要編寫任何產品代碼。 2、只要有一個單兇測試失敗了,就不要再寫

MOOC【Python語言程式設計】- 1周-選擇題

1.‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬Guido van Rossum正式對外發布Python版本的年份是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬

程序員的職業素養 讀書筆記 - 8 測試策略

單元測試 一起 graph tro 直接 開發人員 統架構 char cif QA應該找不到任何錯誤 QA也是團隊的一部分 QA和開發人員應該緊密協作,攜手保障系統的質量。 QA在團隊中要扮演的便是需要規約定義者(specifier)和特性描述者(ch

《流暢的python讀書筆記,第一python資料模型

這本書上來就講了魔法方法,也叫雙下方法、特殊方法,通過兩個例子對讓讀者瞭解了雙下方法的用法,更重要的是,讓我一窺Python的語言風格和給使用者的自由度。 第一個例子:一摞Python風格的紙牌: import collections Card = collections.namedtuple