引子寫在最前面:目前自動(dòng)化測(cè)試并不屬于新鮮的事物,或者說自動(dòng)化測(cè)試的各種方法論已經(jīng)層出不窮,但是,能夠明白自動(dòng)化測(cè)試并很好落地實(shí)施的團(tuán)隊(duì)還不是非常多,我們接來下用通俗的方式來介紹自動(dòng)化測(cè)試……...
引子
寫在最前面:目前自動(dòng)化測(cè)試并不屬于新鮮的事物,或者說自動(dòng)化測(cè)試的各種方法論已經(jīng)層出不窮,但是,能夠明白自動(dòng)化測(cè)試并很好落地實(shí)施的團(tuán)隊(duì)還不是非常多,我們接來下用通俗的方式來介紹自動(dòng)化測(cè)試……本文共有2410字,閱讀需要大約一分鐘。
首先我們從招聘崗位需求說起??唇诘穆殬I(yè)機(jī)會(huì),提到“軟件測(cè)試工程師”,基本上都有關(guān)于自動(dòng)化測(cè)試的要求。例如:
了解 selenium、appium或者其他自動(dòng)化測(cè)試框架至少熟悉一門面向?qū)ο箝_發(fā)語言,有一定的代碼功底優(yōu)先熟悉Java或者python,有一定的測(cè)試自動(dòng)化經(jīng)驗(yàn)和代碼閱讀能力了解接口集成測(cè)試,會(huì)使用JMeter、Postman、SoapUI等接口測(cè)試工具等等,上述內(nèi)容不再一一列舉。突然自動(dòng)化測(cè)試遍地開花,好像測(cè)試工程師的自動(dòng)化測(cè)試能力成為了標(biāo)配一般。本文就從自動(dòng)化測(cè)試的要求入手,簡(jiǎn)單的進(jìn)行自動(dòng)化測(cè)試掃盲,爭(zhēng)取讓各位在一分鐘之內(nèi)了解自動(dòng)化測(cè)試。
那么我們就從“自動(dòng)化測(cè)試”五個(gè)字來剖析。
測(cè)試
測(cè)試:這個(gè)我們熟悉。最經(jīng)典的一個(gè)解釋“程序測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行的過程?!边@個(gè)來自于G.J.Myers的經(jīng)典著作《軟件測(cè)試的藝術(shù)》的定義,給我們展示了測(cè)試的本質(zhì):過程。
測(cè)試是為了發(fā)現(xiàn)軟件的錯(cuò)誤,而執(zhí)行的過程,這個(gè)過程可以是以下內(nèi)容:
運(yùn)行被測(cè)試的軟件,執(zhí)行軟件的功能運(yùn)行其他工具,去檢查軟件的內(nèi)部和外部總而言之,是一個(gè)過程,執(zhí)行的過程。接下來就一張最常見的測(cè)試示意圖:
確認(rèn)過眼神的手工測(cè)試?比如:測(cè)試主管讓測(cè)試工程師去把軟件的所有功能遍歷一遍,該測(cè)試工程師通過鼠標(biāo)、鍵盤、麥克風(fēng)、手機(jī)屏幕觸控等,把軟件所有的功能,全部遍歷了,這個(gè)叫做什么?熟悉測(cè)試的童鞋明白,這就是傳說的“手工目測(cè)”呀,這是“人肉測(cè)試”。
我們好好的畫這張圖,實(shí)際上是這樣的。
好吧,手工測(cè)試自動(dòng)化
到這里,結(jié)合上面的說法,自動(dòng)化測(cè)試就是讓被測(cè)試的軟件自己運(yùn)行起來,執(zhí)行軟件的功能;或者就是讓其他的工具自己運(yùn)行起來,去檢查軟件的內(nèi)部和外部。
既然測(cè)試是一個(gè)過程,那么自動(dòng)化測(cè)試,就是自動(dòng)的執(zhí)行的過程。接下來我們探討的一個(gè)核心的問題:自動(dòng)。什么叫做自動(dòng)呢?讓機(jī)器自己動(dòng),就是自動(dòng)。讓機(jī)器按照人類的要求,把軟件的所有功能遍歷一遍,這是自動(dòng)化。。這樣說會(huì)不會(huì)清晰一點(diǎn)?
重點(diǎn)來了,機(jī)器。讓機(jī)器去動(dòng),這可不是“吃雞”哦,這是人類命令機(jī)器去操作。不知道童鞋們有沒有思考過,機(jī)器怎么知道人類的要求?上面的例子,測(cè)試主管只要告訴測(cè)試工程師,命令傳達(dá)就完成了??墒侨祟愔苯拥臏贤?,遠(yuǎn)比人機(jī)溝通容易啊。
首先,機(jī)器聽不懂“人話”,無論中文,英文……其次,機(jī)器默認(rèn)會(huì)的“匯編語言”,應(yīng)該是絕大部分的童鞋不會(huì),并且短期掌握不來吧。好吧,用“編程語言”。是時(shí)候拿出我們的另一張圖了:
這個(gè)厲害了吧,自動(dòng)化測(cè)試機(jī)器學(xué)習(xí)一個(gè)編程語言,輕松和簡(jiǎn)單到令人發(fā)指的地步:安裝上去,機(jī)器就學(xué)會(huì)了。好在人類學(xué)習(xí)編程語言也不是特別難的的事情。看來這個(gè)可行。
有了編程語言,就有了人機(jī)交流的橋梁,剩下的事情,是幫機(jī)器挑選工具。做對(duì)應(yīng)的測(cè)試,就需要找到對(duì)應(yīng)的工具,這樣自動(dòng)化就自動(dòng)起來了。能到這里,我希望各位童鞋了解了基本的“自動(dòng)”原理。
同樣,好好的畫這張自動(dòng)化測(cè)試的示意圖:
這個(gè)呢?自動(dòng)化測(cè)試示意圖然后我們介紹各種常見的工具,來繼續(xù)討論自動(dòng)化測(cè)試。進(jìn)一步探討之前,我們先看看測(cè)試的常用分類。這里不同的分類維度下,我們可以分為不同的測(cè)試,這里我們認(rèn)真分析一下。
從軟件測(cè)試的實(shí)踐過程看:?jiǎn)卧獪y(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試……從軟件測(cè)試的方法策略看:白盒測(cè)試、黑盒測(cè)試、灰盒測(cè)試……從軟件測(cè)試的測(cè)試視角看:功能測(cè)試、性能測(cè)試、兼容性測(cè)試、安全測(cè)試、探索性測(cè)試……從軟件測(cè)試的技術(shù)程度看:手工測(cè)試、自動(dòng)化測(cè)試、測(cè)試開發(fā)……以上這些維度下的分類,只有一部分測(cè)試可以通過“人肉測(cè)試”的“手工目測(cè)”完成,剩下的其實(shí)從廣義概念上,都是需要機(jī)器來完成的。我們把這一部分測(cè)試抽取出來:系統(tǒng)測(cè)試-黑盒測(cè)試-功能測(cè)試-手工測(cè)試。不可否認(rèn)的講,這條線是目前軟件測(cè)試從業(yè)者的重點(diǎn)覆蓋范圍,該范圍之外的地方,便是自動(dòng)化測(cè)試的用武之地。
自動(dòng)化測(cè)試
接下來我們探討一下主流的自動(dòng)化測(cè)試方案,無一例外,都有人機(jī)溝通的編程語言,加上機(jī)器操作的工具來組成。
功能自動(dòng)化測(cè)試VBScript + QTP(HP UFT),商用功能自動(dòng)化測(cè)試方案Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium + 單元測(cè)試框架,開源功能自動(dòng)化測(cè)試方案這里我們多介紹一點(diǎn),Selenium/Appium 本身不能算是測(cè)試工具,而只是機(jī)器用來操作瀏覽器的工具,并且這個(gè)工具能聽懂多種語言:Java,C# 這兩個(gè)重 (zhòng) 語言Python,Ruby 這兩個(gè)腳本輕語言PHP,JavaScript 這兩個(gè)專門處理 Web 的語言工具外加指定的語言,可以讓機(jī)器來操作瀏覽器,但是到此時(shí)還無法做到測(cè)試,于是才需要每個(gè)語言自己的單元測(cè)試框架,來一起完成這個(gè)功能自動(dòng)化測(cè)試方案的構(gòu)建。此外,業(yè)界還一種暫時(shí)臨時(shí)的方案,就是 Python 2 + Robot Framework + Selenium Library 插件 + 單元測(cè)試框架 構(gòu)成的一種測(cè)試方案,這個(gè)方案筆者不是非常推薦,主要基于兩點(diǎn):理念:這是一種基于關(guān)鍵字的方案,那么關(guān)鍵字是 QTP(HP UFT)的特長(zhǎng),并不是Selenium的本意技術(shù):Python 2 終究是要退出歷史舞臺(tái)的,如果從零開始做自動(dòng)化測(cè)試,還是直接入手 Python 3 吧,然而 Robot Framework 不支持 Python 3……Python/Java/C#/JavaScprit/Ruby + Gauge,又一款開源的功能自動(dòng)化測(cè)試方案Thoughtworks 的基于BDD理念的自動(dòng)化測(cè)試工具Gauge 本身就是完整的測(cè)試方案Gauge 是從需求分析師(BA)到測(cè)試工程師(QA)都覆蓋的測(cè)試方案Java/Python + Macaca,阿里巴巴的功能自動(dòng)化測(cè)試方案,缺點(diǎn)是文檔少JavaScript + TestCafe,DevExpress 的開源功能自動(dòng)化測(cè)試方案pure node.js – TestCafe不使用Selenium,并且不需要插件來在實(shí)際瀏覽器中運(yùn)行測(cè)試。 它建立在node.js的頂部,因此它與現(xiàn)代開發(fā)工具集成和工作良好無需額外的設(shè)置或配置- TestCafe是所有設(shè)置后立即運(yùn)行測(cè)試npm install完整的測(cè)試工具 – 使用單個(gè)啟動(dòng)命令,TestCafe啟動(dòng)瀏覽器,運(yùn)行測(cè)試,收集結(jié)果并生成報(bào)告JavaScript + Postman,免費(fèi)的Web接口功能自動(dòng)化測(cè)試方案Groovy + SoapUI,開源的Web接口功能自動(dòng)化測(cè)試方案性能自動(dòng)化測(cè)試Java/C + HP LoadRunner,商業(yè)版性能測(cè)試方案Java + JMeter,開源版性能測(cè)試方案Python + locust,開源版性能測(cè)試方案這里,我們借用一張別人的圖,Martin Fowler,敏捷開發(fā)方法的創(chuàng)始人之一,他借用金字塔的概念來展示測(cè)試的層次。
Martin Fowler 的測(cè)試金字塔事實(shí)上,自動(dòng)化測(cè)試覆蓋了從 UI (功能測(cè)試)到契約(接口測(cè)試)以及底層代碼方法(單元測(cè)試)的整個(gè)過程,要想很好的掌握自動(dòng)化測(cè)試,那么的確需要以下三種領(lǐng)域的經(jīng)驗(yàn)積累:
編程語言,面向?qū)ο缶幊虄?yōu)先,因?yàn)榇罅康拈_源技術(shù)方案,都是基于面向?qū)ο蟮木幊谭绞降谌綔y(cè)試工具和測(cè)試框架,這些主要通過官網(wǎng)的文檔學(xué)習(xí)測(cè)試的理念與設(shè)計(jì),工具和語言,只是測(cè)試的手段,如何準(zhǔn)備測(cè)試數(shù)據(jù),如何設(shè)置測(cè)試的檢查點(diǎn)與測(cè)試步驟,這些決定了測(cè)試的成敗此外綜合的 前端與服務(wù)器后端技術(shù),是測(cè)試執(zhí)行的保障。加油吧童鞋們,一分鐘過去了么?
那么你現(xiàn)在了解到自動(dòng)化測(cè)試了么?如果依舊有疑問,歡迎聯(lián)系筆者進(jìn)一步的溝通交流,liu.tingli@qq.com。
接下來的寫作安排:
基于 Selenium 的測(cè)試方案構(gòu)建與測(cè)試過程中踩過的坑(系列文字)基于 Gauge 的自動(dòng)化測(cè)試方案(系列文字)基于 Postman 的Web 接口測(cè)試基于 SoapUI 的 Web 接口測(cè)試基于 requests Python 庫的Web接口自動(dòng)化測(cè)試構(gòu)建(系列文字)基于 JMeter 的性能測(cè)試方案(系列文字)基于 Python locust 庫的性能測(cè)試方案基于 HP LoadRunner 的性能測(cè)試方案(系列文字)