1. 程式人生 > >一分鐘瞭解自動化測試(進軍自動化必看)

一分鐘瞭解自動化測試(進軍自動化必看)

引子

寫在最前面:目前自動化測試並不屬於新鮮的事物,或者說自動化測試的各種方法論已經層出不窮,但是,能夠明白自動化測試並很好落地實施的團隊還不是非常多,我們接來下用通俗的方式來介紹自動化測試……

本文共有2410字,閱讀需要大約一分鐘。

首先我們從招聘崗位需求說起。看近期的職業機會,提到“軟體測試工程師”,基本上都有關於自動化測試的要求。例如:

  • 瞭解 selenium、appium或者其他自動化測試框架

  • 至少熟悉一門面向物件開發語言,有一定的程式碼功底優先

  • 熟悉Java或者python,有一定的測試自動化經驗和程式碼閱讀能力

  • 瞭解介面整合測試,會使用JMeter、Postman、SoapUI等介面測試工具

等等,上述內容不再一一列舉。突然自動化測試遍地開花,好像測試工程師的自動化測試能力成為了標配一般。本文就從自動化測試的要求入手,簡單的進行自動化測試掃盲,爭取讓各位在一分鐘之內瞭解自動化測試。

那麼我們就從“自動化測試”五個字來剖析。

測試

測試:這個我們熟悉。最經典的一個解釋“程式測試是為了發現錯誤而執行的過程。”這個來自於G.J.Myers的經典著作《軟體測試的藝術》的定義,給我們展示了測試的本質:過程。

測試是為了發現軟體的錯誤,而執行的過程,這個過程可以是以下內容:

  • 執行被測試的軟體,執行軟體的功能

  • 執行其他工具,去檢查軟體的內部和外部

總而言之,是一個過程,執行的過程。接下來就一張最常見的測試示意圖:

比如:測試主管讓測試工程師去把軟體的所有功能遍歷一遍,該測試工程師通過滑鼠、鍵盤、麥克風、手機螢幕觸控等,把軟體所有的功能,全部遍歷了,這個叫做什麼?熟悉測試的童鞋明白,這就是傳說的“手工目測”呀,這是“人肉測試”。

我們好好的畫這張圖,實際上是這樣的。

自動化

到這裡,結合上面的說法,自動化測試就是讓被測試的軟體自己執行起來,執行軟體的功能;或者就是讓其他的工具自己執行起來,去檢查軟體的內部和外部。

  • 既然測試是一個過程,那麼自動化測試,就是自動的執行的過程。

接下來我們探討的一個核心的問題:自動。什麼叫做自動呢?讓機器自己動,就是自動。讓機器按照人類的要求,把軟體的所有功能遍歷一遍,這是自動化。。這樣說會不會清晰一點?

重點來了,機器。讓機器去動,這可不是“吃雞”哦,這是人類命令機器去操作。不知道童鞋們有沒有思考過,機器怎麼知道人類的要求?上面的例子,測試主管只要告訴測試工程師,命令傳達就完成了。可是人類直接的溝通,遠比人機溝通容易啊。

  • 首先,機器聽不懂“人話”,無論中文,英文……

  • 其次,機器預設會的“組合語言”,應該是絕大部分的童鞋不會,並且短期掌握不來吧。

好吧,用“程式語言”。是時候拿出我們的另一張圖了:

機器學習一個程式語言,輕鬆和簡單到令人髮指的地步:安裝上去,機器就學會了。好在人類學習程式語言也不是特別難的的事情。看來這個可行。

有了程式語言,就有了人機交流的橋樑,剩下的事情,是幫機器挑選工具。做對應的測試,就需要找到對應的工具,這樣自動化就自動起來了。能到這裡,我希望各位童鞋瞭解了基本的“自動”原理。

同樣,好好的畫這張自動化測試的示意圖:

然後我們介紹各種常見的工具,來繼續討論自動化測試。進一步探討之前,我們先看看測試的常用分類。這裡不同的分類維度下,我們可以分為不同的測試,這裡我們認真分析一下。

  • 從軟體測試的實踐過程看:單元測試、整合測試、確認測試、系統測試、驗收測試……

  • 從軟體測試的方法策略看:白盒測試、黑盒測試、灰盒測試……

  • 從軟體測試的測試視角看:功能測試、效能測試、相容性測試、安全測試、探索性測試……

  • 從軟體測試的技術程度看:手工測試、自動化測試、測試開發……

以上這些維度下的分類,只有一部分測試可以通過“人肉測試”的“手工目測”完成,剩下的其實從廣義概念上,都是需要機器來完成的。我們把這一部分測試抽取出來:系統測試-黑盒測試-功能測試-手工測試。不可否認的講,這條線是目前軟體測試從業者的重點覆蓋範圍,該範圍之外的地方,便是自動化測試的用武之地。

自動化測試

接下來我們探討一下主流的自動化測試方案,無一例外,都有人機溝通的程式語言,加上機器操作的工具來組成。

  • 功能自動化測試

  • VBScript + QTP(HP UFT),商用功能自動化測試方案

  • Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium + 單元測試框架,開源功能自動化測試方案

  • 這裡我們多介紹一點,Selenium/Appium 本身不能算是測試工具,而只是機器用來操作瀏覽器的工具,並且這個工具能聽懂多種語言:

  • Java,C# 這兩個重 (zhòng) 語言

  • Python,Ruby 這兩個指令碼輕語言

  • PHP,JavaScript 這兩個專門處理 Web 的語言

  • 工具外加指定的語言,可以讓機器來操作瀏覽器,但是到此時還無法做到測試,於是才需要每個語言自己的單元測試框架,來一起完成這個功能自動化測試方案的構建。

  • 此外,業界還一種暫時臨時的方案,就是 Python 2 + Robot Framework + Selenium Library 外掛 + 單元測試框架 構成的一種測試方案,這個方案筆者不是非常推薦,主要基於兩點:

  • 理念:這是一種基於關鍵字的方案,那麼關鍵字是 QTP(HP UFT)的特長,並不是Selenium的本意

  • 技術:Python 2 終究是要退出歷史舞臺的,如果從零開始做自動化測試,還是直接入手 Python 3 吧,然而 Robot Framework 不支援 Python 3……

  • Python/Java/C#/JavaScprit/Ruby + Gauge,又一款開源的功能自動化測試方案

  • Thoughtworks 的基於BDD理念的自動化測試工具

  • Gauge 本身就是完整的測試方案

  • Gauge 是從需求分析師(BA)到測試工程師(QA)都覆蓋的測試方案

  • Java/Python + Macaca,阿里巴巴的功能自動化測試方案,缺點是文件少

  • JavaScript + TestCafe,DevExpress 的開源功能自動化測試方案

  • pure node.js - TestCafe不使用Selenium,並且不需要外掛來在實際瀏覽器中執行測試。 它建立在node.js的頂部,因此它與現代開發工具整合和工作良好

  • 無需額外的設定或配置- TestCafe是所有設定後立即執行測試npm install

  • 完整的測試工具 - 使用單個啟動命令,TestCafe啟動瀏覽器,執行測試,收集結果並生成報告

  • JavaScript + Postman,免費的Web介面功能自動化測試方案

  • Groovy + SoapUI,開源的Web介面功能自動化測試方案

  • 效能自動化測試

  • Java/C + HP LoadRunner,商業版效能測試方案

  • Java + JMeter,開源版效能測試方案

  • Python + locust,開源版效能測試方案

這裡,我們借用一張別人的圖,Martin Fowler,敏捷開發方法的創始人之一,他借用金字塔的概念來展示測試的層次。

事實上,自動化測試覆蓋了從 UI (功能測試)到契約(介面測試)以及底層程式碼方法(單元測試)的整個過程,要想很好的掌握自動化測試,那麼的確需要以下三種領域的經驗積累:

  • 程式語言,面向物件程式設計優先,因為大量的開源技術方案,都是基於面向物件的程式設計方式

  • 第三方測試工具和測試框架,這些主要通過官網的文件學習

  • 測試的理念與設計,工具和語言,只是測試的手段,如何準備測試資料,如何設定測試的檢查點與測試步驟,這些決定了測試的成敗

此外綜合的 前端與伺服器後端技術,是測試執行的保障。加油吧童鞋們,一分鐘過去了麼?那麼你現在瞭解到自動化測試了麼?如果依舊有疑問,歡迎聯絡筆者進一步的溝通交流,672899761這個是我的交流群歡迎加群交流。

相關推薦

分鐘瞭解自動化測試進軍自動化

引子 寫在最前面:目前自動化測試並不屬於新鮮的事物,或者說自動化測試的各種方法論已經層出不窮,但是,能夠明白自動化測試並很好落地實施的團隊還不是非常多,我們接來下用通俗的方式來介紹自動化測試…… 本文共有2410字,閱讀需要大約一分鐘。 首先我們從招聘崗位需求說起。

為什麼要引入自動化測試Benefits of Test Automation

你的專案中為什麼要引入自動化測試?實施自動化測試有什麼好處? 降低QA成本 縮短測試時間 提高測試效率 提高產品質量(在產品測試中減少人為錯誤而導致的不良測試) 優化測試活動 更好地測試覆蓋 自動化測試的階段(Life Cycle)  

selenium Python自動化測試基本的鍵盤事件

#coding=utf-8 ''' Created on 2015-5-10 @author: user ''' ''' 幾種常用的鍵盤指令: send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace) send_keys(Keys.SPACE) 空

阿裏資深技術專家:在各階段中,3年經驗的程序員應該具備哪些技術能力進階

Java 後端 進階 3年工作經驗的Java程序員應該具備哪些技術能力,這可能是Java程序員們比較關心的內容。我這裏要說明一下,以下列舉的內容不是都要會的東西,但是你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。1、基本語法這包括static、final、transient等關鍵字的作用,

pcb板的布局規則有哪些PCB工程

可能 增強 焊盤 簡單介紹 網站 微軟 圖形 www 功能 PCB線路板是所有電子設備的重要部件,而PCB布局關系著電路性能的好壞,雖然現在許多的軟件已經可以實現PCB的自動布局,但由於信號頻率的不斷增強,很多的時候還是需要工程師要了解和掌握PCB而布局規則和原則。 PCB

中小型創業者一對一直播來臨,誰更適合做它的投資者

隨著一對多直播的火爆,一對一直播模式悄然興起。2016年直播的火爆元年風頭還未平,2018年的一對一直播已經全面上線,相對於一對多模式的直播中平臺微乎其微的收益,在傳統一對多模式中,一名主播面向多名觀眾,一百個人裡可能有一兩個刷禮物,剩下的人都在“白看”,而一對一模式呢,首先,按分鐘算錢,入

Java程式設計師!進阿里前這6大知識點你真的需要梳理一下了年後跳槽

如果你的目標僅僅是提高自己,那麼很容易實現,但是如果你的目標是成為一個高薪的Java架構師,那麼這就不簡單了。 工作越久,經驗值越高,越能為企業創造價值。業內人士表示,實際上,在工作中往往會受到職業限制。隨著分工的細化,一般的企業給員工安排工作崗位常常是“一錘子”買賣,多年一直不變。這樣一來,員

你和阿里資深架構師之間,差的不僅僅是年齡進階

導讀:閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步瞭解一個資深架構師所要掌握的各類知識點,你也可以按照文章中所列的知識體系對比自身,對自己進行查漏補缺,覺得本文對你有幫助的話,可以點贊關注一下。 目錄: 一、基礎篇 二、進階篇 三、高階篇 四、架構篇 五、

Python初學者學習知識點總結!零基礎

  計算機顧名思義就是可以做數學運算的機器,因此,計算機程式理所當然地可以處理各種數值,但是計算機能處理的遠遠不止數值,還可以處理文字、圖形、音訊、視訊網頁等各種資料,不同的資料,需要定義不同的資料型別。 python資料型別 1 Number(數字) 2 整數 3

Java程式設計思想重點筆記Java開發

Java程式設計思想,Java學習必讀經典,不管是初學者還是大牛都值得一讀,這裡總結書中的重點知識,這些知識不僅經常出現在各大知名公司的筆試面試過程中,而且在大型專案開發中也是常用的知識,既有簡單的概念理解題(比如is-a關係和has-a關係的區別),也有深入的涉及RTTI和JVM底層反編譯知識。

linux 學習之路學linux

轉載自:http://www.oschina.net/question/587367_156024 很多同學接觸Linux不多,對Linux平臺的開發更是一無所知。 而現在的趨勢越來越表明,作為一個優秀的軟體開發人員,或計算機IT行業從業人員, 掌握Linux是一種很重要的

vim的常見用法小白

vim的常見用法(小白必看) vim是一個非常常見的一個編輯檔案的命令,可是它的常見用法你知道嗎? 在講解基本用法之前,還有個關於vim的小技巧不得不說: 1.vim工作模式配置 在vim命令模式下: :set 模式資訊 :set nu ##行號

Stack Overflow 2017 開發者調查報告程式設計師

最近,Stack Overflow 釋出了一篇 2017 開發者調查報告,此次在全球有超過 64,000 名開發者參與調查,分別對其技能、工具、學習趨勢等資料進行了統計,比較遺憾的是中國參與調查的開發者很少,只有大概 300 人左右,所以有些調查結果可能跟中

python結合excel數據輕松實現接口自動化測試

判斷 原因 一個 軟件測試 測試 相等 fin 完成 想去 在剛剛進入測試行業的時候,最開始也是做功能測試,我想很多夥伴和我一樣,覺得自動化測試都很高端,很神秘。迫不及待的想去學習作自動化測試。 以前比較常用數據庫+python做自動化,後面發現excel個人覺得更加適合,

selenium+python自動化測試環境

get gre gpo exe ren 瀏覽器版本 art lap close python裝的是3.5,chrome瀏覽器版本是17年初的 1.chromedriver 在http://chromedriver.storage.googleapis.com/index.h

Appium移動自動化測試--Mac安裝Appium

set appstore 軟件 www. http version master question 配置 一、Appium安裝 1. 直接安裝:Appium官網下載:https://bitbucket.org/appium/appium.app/downloads/  這

移動端自動化測試appium環境搭建

mouseover 小試牛刀 ble web自動化 過程 bucket 搭建 node 服務 自動化測試有主要有兩個分類,接口自動化和ui自動化,ui自動化呢又分移動端的和web端的,當然還有c/s架構的,這種桌面程序應用的自動化,使用QTP,只不過現在沒人做了。 we

python用selenium做自動化測試

python 用selenium做自動化測試: 在w3school裡搜尋css python3 test_w3school_search.py XPath路徑表示式: http://www.ruanyifeng.com/blog/2009/07/xpath_pa

自動化測試-get和post的簡單應用

今天主要介紹兩種測試的介面post和get: get和post是http的兩種基本請求方式,區別在於get把引數包含在url中傳遞;給而post把引數以json或鍵值對的方式利用工具傳遞。 get的傳遞隨便找個遊覽器就可以進行介面測試: 舉個栗子:這是個獲取學生資訊的介面 介面資訊:1:url

Appium自動化測試之環境搭建

Appium介紹見官網:http://appium.io/docs/cn/about-appium/intro/#introduction-to-appium http://appium.io/docs/cn/appium-setup/platform-support/index.html