《Selenium自动化测试指南》—第1章1.1节自动化测试基础
本節(jié)書摘來自異步社區(qū)《Selenium自動(dòng)化測(cè)試指南》一書中的第1章1.1節(jié)自動(dòng)化測(cè)試基礎(chǔ),作者趙卓,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號(hào)查看。
1.1 自動(dòng)化測(cè)試基礎(chǔ)
Selenium自動(dòng)化測(cè)試指南
1.1.1 軟件測(cè)試概述
即使是經(jīng)驗(yàn)非常豐富的程序員,在編寫代碼時(shí)也很容易出現(xiàn)錯(cuò)誤,這些錯(cuò)誤也許是由于需求不明確,也許是由于設(shè)計(jì)問題,也許是編碼中出現(xiàn)了失誤等。但無論是怎樣的錯(cuò)誤,若不及時(shí)處理,都會(huì)降低軟件的可靠性,嚴(yán)重時(shí)甚至?xí)?dǎo)致整個(gè)軟件的失敗。
為了排除這些錯(cuò)誤,人們引入了軟件測(cè)試的概念。通俗地說,軟件測(cè)試就是為了發(fā)現(xiàn)程序中的錯(cuò)誤而分析或執(zhí)行程序的過程。
據(jù)研究機(jī)構(gòu)統(tǒng)計(jì)分析表明,國外軟件開發(fā)機(jī)構(gòu)40%的工作量都花在軟件測(cè)試上,軟件測(cè)試費(fèi)用占軟件開發(fā)總費(fèi)用的30%~50%。對(duì)于一些要求高可靠、高安全的軟件,測(cè)試費(fèi)用所占的比例更高。由此可見,要成功開發(fā)出高質(zhì)量的軟件產(chǎn)品,軟件測(cè)試必不可少。
軟件測(cè)試的主要工作是驗(yàn)證(Verification)和確認(rèn)(Validation)。
驗(yàn)證是保證軟件正確地實(shí)現(xiàn)了一些特定功能的一系列活動(dòng),即保證軟件以正確的方式做了該做的事。具體地講,驗(yàn)證主要完成以下任務(wù)。
(1)確定軟件生存周期中一個(gè)給定階段的產(chǎn)品是否達(dá)到當(dāng)前階段確立的需求。
(2)程序正確性的形式證明,即采用形式理論證明程序符合設(shè)計(jì)規(guī)約的規(guī)定。
(3)評(píng)審、審查、測(cè)試、檢查、審計(jì)等,或?qū)δ承╉?xiàng)處理、服務(wù)或文件等是否和規(guī)定的需求相一致進(jìn)行判斷并進(jìn)行報(bào)告。
確認(rèn)(Validation)的目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的邏輯正確性,即保證軟件做了所期望的事情。
(1)靜態(tài)確認(rèn),不在計(jì)算機(jī)上實(shí)際執(zhí)行程序,通過人工或程序分析來證明軟件的正確性。
(2)動(dòng)態(tài)確認(rèn),通過執(zhí)行程序進(jìn)行分析,測(cè)試程序的動(dòng)態(tài)行為,以證實(shí)軟件是否存在問題。
測(cè)試和改正活動(dòng)可以在軟件生命周期的任何階段進(jìn)行。然而,隨著開發(fā)的不斷進(jìn)行,找出并修正錯(cuò)誤的代價(jià)也會(huì)急劇增加。在需求階段就對(duì)其進(jìn)行修改,付出的代價(jià)會(huì)很少。如果代碼已經(jīng)編寫完畢,再進(jìn)行更改,則將付出代價(jià)會(huì)大許多。
軟件測(cè)試的分類
從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)的角度來看,軟件測(cè)試可以劃分為以下幾類。
白盒測(cè)試:需要了解內(nèi)部結(jié)構(gòu)和代碼。
黑盒測(cè)試:不關(guān)心內(nèi)部結(jié)構(gòu)和代碼。
灰盒測(cè)試:介于白盒測(cè)試和黑盒測(cè)試之間。
從是否執(zhí)行程序的角度來看,軟件測(cè)試可以劃分為以下幾類。
靜態(tài)測(cè)試:測(cè)試時(shí)不執(zhí)行被測(cè)試軟件。
動(dòng)態(tài)測(cè)試:測(cè)試時(shí)執(zhí)行被測(cè)試軟件。
按軟件開發(fā)過程的階段劃分,軟件測(cè)試可以劃分為以下幾類。
單元測(cè)試:測(cè)試軟件的單元模塊(單元模塊指某個(gè)功能、某個(gè)類等)。
集成測(cè)試:將各個(gè)“單元”集成到一起測(cè)試是否能正確運(yùn)行。
系統(tǒng)測(cè)試:測(cè)試軟件是否符合系統(tǒng)中的各項(xiàng)需求。
驗(yàn)收測(cè)試:類似系統(tǒng)測(cè)試,但由用戶執(zhí)行。
按測(cè)試的具體目標(biāo)進(jìn)行劃分,軟件測(cè)試可以劃分為以下幾類。
功能測(cè)試:測(cè)試軟件是否符合功能性需求,通常采用黑盒測(cè)試方法。
性能測(cè)試:測(cè)試軟件在各種狀態(tài)下的性能,找出性能瓶頸。
安全測(cè)試:測(cè)試該軟件防止非法入侵的能力。
回歸測(cè)試:在軟件被修正或運(yùn)行環(huán)境發(fā)生變化后進(jìn)行重新測(cè)試。
兼容性測(cè)試:測(cè)試該軟件與其他軟件、硬件的兼容能力。
安裝測(cè)試:測(cè)試軟件的安裝、卸載、升級(jí)是否正常。
各種軟件測(cè)試書籍對(duì)前面3種劃分方式介紹得很多,但在實(shí)際工作中,更習(xí)慣將測(cè)試按具體目標(biāo)進(jìn)行劃分。
1.1.2 自動(dòng)化測(cè)試簡(jiǎn)介
軟件測(cè)試一般是由測(cè)試人員執(zhí)行的,如果由機(jī)器來代替人執(zhí)行軟件測(cè)試,那么這種測(cè)試就叫自動(dòng)化測(cè)試。例如,由計(jì)算機(jī)代替人來單擊被測(cè)試軟件的界面,執(zhí)行一系列操作并進(jìn)行驗(yàn)證。
在各種測(cè)試中,都可以引入自動(dòng)化測(cè)試。
通過執(zhí)行自動(dòng)化測(cè)試,可以節(jié)省大量的人力、時(shí)間或硬件等資源,同時(shí)也能大大提高測(cè)試效率。
當(dāng)然,這聽起來很好,但如果要由機(jī)器代替人來執(zhí)行軟件測(cè)試,就得開發(fā)相應(yīng)的自動(dòng)化測(cè)試代碼。開發(fā)自動(dòng)化測(cè)試代碼也是需要人力、時(shí)間或硬件等資源的。因此,在資源有限的情況下,必須對(duì)軟件開發(fā)過程進(jìn)行分析,觀察哪些地方適合使用自動(dòng)化測(cè)試。使用自動(dòng)化測(cè)試通常需要同時(shí)滿足以下條件。
(1)軟件需求變動(dòng)不頻繁。
測(cè)試腳本的穩(wěn)定性決定了自動(dòng)化測(cè)試的維護(hù)成本。如果軟件需求變動(dòng)過于頻繁,測(cè)試人員需要根據(jù)變動(dòng)的需求來更新測(cè)試用例以及相關(guān)的測(cè)試腳本,而腳本的維護(hù)本身就是一個(gè)代碼開發(fā)的過程,需要修改和調(diào)試,必要的時(shí)候還要修改自動(dòng)化測(cè)試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測(cè)試成本,那么自動(dòng)化測(cè)試便是失敗的。
項(xiàng)目中的某些模塊相對(duì)穩(wěn)定,而某些模塊需求變動(dòng)性很大。可以對(duì)相對(duì)穩(wěn)定的模塊進(jìn)行自動(dòng)化測(cè)試,而變動(dòng)較大的仍采用手工測(cè)試。
(2)項(xiàng)目周期足夠長。
自動(dòng)化測(cè)試的過程包括自動(dòng)化測(cè)試需求的確定、自動(dòng)化測(cè)試框架的設(shè)計(jì)、測(cè)試腳本的編寫和調(diào)試等,這個(gè)過程本身就是一個(gè)測(cè)試軟件的開發(fā)過程,需要較長的時(shí)間來完成。如果項(xiàng)目的周期比較短,沒有足夠的時(shí)間去支持這樣一個(gè)過程,那么自動(dòng)化測(cè)試便也無從談起。
(3)自動(dòng)化測(cè)試腳本可重復(fù)使用。
如果費(fèi)盡心思開發(fā)了一套近乎完美的自動(dòng)化測(cè)試腳本,但是腳本的重復(fù)使用率很低,致使其間所耗費(fèi)的成本大于所創(chuàng)造的經(jīng)濟(jì)價(jià)值,自動(dòng)化測(cè)試便成為了測(cè)試人員的練手之作,而并非是真正可產(chǎn)生效益的測(cè)試手段了。
另外,在手工測(cè)試無法完成,需要投入大量時(shí)間與人力時(shí)也需要考慮引入自動(dòng)化測(cè)試,例如性能測(cè)試、配置測(cè)試、大數(shù)據(jù)量輸入測(cè)試等。
至于自動(dòng)化測(cè)試的開發(fā)過程,與軟件開發(fā)過程從本質(zhì)上來講是一樣的,這將在第6章中介紹。
1.1.3 Selenium簡(jiǎn)介
Selenium是一系列基于Web的自動(dòng)化測(cè)試工具。它提供了一系列測(cè)試函數(shù),用于支持Web自動(dòng)化測(cè)試。這些函數(shù)非常靈活,它們能夠通過多種方式定位界面元素,并可以將預(yù)期結(jié)果與系統(tǒng)實(shí)際表現(xiàn)進(jìn)行比較。
作為一款強(qiáng)大的測(cè)試工具,Selenium具有以下幾個(gè)特性。
(1)可對(duì)多瀏覽器進(jìn)行測(cè)試,如IE、Firefox、Safari、Chrome、Android手機(jī)瀏覽器等。
(2)支持多種語言,例如Java、C#、Python、Ruby、PHP等。
(3)跨平臺(tái),例如Windows、Lunix、iOS、Android等。
(4)開源免費(fèi)。
下面舉個(gè)例子來說明Selenium的使用,假設(shè)將要開始對(duì)京東商城的用戶登錄進(jìn)行手動(dòng)測(cè)試,測(cè)試步驟如下。
(1)進(jìn)入京東用戶登錄頁面https://passport.360buy.com/new/login.aspx,如圖1-1所示。
(2)輸入用戶名和密碼,單擊“登錄”按鈕。輸入過程中分別按不輸入用戶名,輸入錯(cuò)誤的用戶名,不輸入密碼,輸入錯(cuò)誤的密碼,輸入正確的用戶名和密碼的順序進(jìn)行測(cè)試。
(3)檢查登錄后的狀態(tài)是否符合預(yù)期結(jié)果。
這看上去是一個(gè)很簡(jiǎn)單的操作,但下面進(jìn)行一個(gè)極端的假設(shè):假設(shè)在測(cè)試時(shí),需要在6個(gè)瀏覽器上都測(cè)試通過(如IE、Firefox、Safari、Chrome、Android、iPhone),每天都有8個(gè)項(xiàng)目上線,而登錄功能屬于冒煙測(cè)試檢查點(diǎn),那么登錄功能也同樣得檢查8次。那么算上各個(gè)瀏覽器的測(cè)試,每天就得將登錄執(zhí)行6×8=48遍,而且每遍都要包含以下幾種檢查:不輸入用戶名,輸入錯(cuò)誤的用戶名,不輸入密碼,輸入錯(cuò)誤的密碼,最后輸入正確的用戶名和密碼。一個(gè)看似簡(jiǎn)單的操作一天要執(zhí)行這么多次(還沒有算上其他的功能),會(huì)讓測(cè)試人員感覺很煩。
如果使用Selenium,一切就好辦了,只需編寫少量代碼,就可以實(shí)現(xiàn)以下功能。
(1)計(jì)算機(jī)自動(dòng)打開瀏覽器并進(jìn)入京東用戶登錄頁面https://passport.360buy.com/new/login.aspx。
(2)計(jì)算機(jī)自動(dòng)輸入用戶名和密碼,并單擊“登錄”按鈕。分別按不輸入用戶名,輸入錯(cuò)誤的用戶名,不輸入密碼,輸入錯(cuò)誤的密碼,輸入正確的用戶名和密碼的順序進(jìn)行測(cè)試。
(3)計(jì)算機(jī)自動(dòng)檢查登錄后的提示文字是否為預(yù)期結(jié)果,然后自動(dòng)輸出測(cè)試報(bào)告。
(4)計(jì)算機(jī)自動(dòng)切換到另一個(gè)瀏覽器,重復(fù)執(zhí)行(1)~(3)步,直到每個(gè)瀏覽器都執(zhí)行完畢。
以后執(zhí)行的時(shí)候只需要執(zhí)行Selenium代碼即可,無需測(cè)試人員費(fèi)神,看上去是不是要輕松多了?
1.Selenium工具組
Selenium由以下幾個(gè)工具組成,每一種工具都扮演著獨(dú)特的角色。
Selenium IDE。Selenium IDE是一個(gè)用于構(gòu)建腳本的初級(jí)工具。它是一個(gè)Firefox插件,擁有一個(gè)易于使用的界面。Selenium IDE擁有錄制功能,能夠記錄用戶執(zhí)行的操作,并將其導(dǎo)出為可重復(fù)使用的腳本(支持多種編程語言),然后用于執(zhí)行測(cè)試。
Selenium 1。Selenium 1(Selenium-RC)是Selenium 最主要的測(cè)試工具之一,它所具有的某些功能即使是新版的Selenium 2也無法支持。它能夠通過多種語言(Java、JavaScript、Ruby、PHP、Python、Perl和 C#)編寫測(cè)試代碼,同時(shí)能支持幾乎所有瀏覽器的測(cè)試。
Selenium 2。Selenium 2(WebDriver)作為最新版的Selenium工具,代表未來Selenium的發(fā)展方向。這套全新的自動(dòng)化測(cè)試工具提供了許多功能,包括一套組織性更好、面向?qū)ο蟮腁PI,并克服了在之前Selenium 1版本中測(cè)試的局限性。
可以通過很少的修改就將Selenium 1的代碼移植到Selenium 2。同時(shí),Selenium 2也提供了向前兼容Selenium 1的接口。
Selenium Grid。Selenium Grid能夠讓Selenium 1的測(cè)試在多個(gè)不同的環(huán)境中運(yùn)行,也能讓測(cè)試并行執(zhí)行。也就是說,各個(gè)測(cè)試能夠在同一時(shí)間、不同機(jī)器上運(yùn)行。這有兩個(gè)好處。首先,如果擁有一套大規(guī)模的測(cè)試或執(zhí)行緩慢的測(cè)試,可以通過Selenium Grid將測(cè)試在同一時(shí)間、不同機(jī)器上運(yùn)行,從而大幅提高性能;其次,如果測(cè)試必須在多個(gè)環(huán)境中運(yùn)行,那么Selenium Grid具有的“同一時(shí)間、不同機(jī)器”的特性也能夠輕松做到這一點(diǎn)。不管怎么樣,Selenium Grid都能夠大幅提高測(cè)試的效率。
2.選擇合適的Selenium工具
大多數(shù)用戶都是從Selenium IDE開始的。如果沒有編程經(jīng)驗(yàn),可以通過Selenium IDE來快速熟悉Selenium的命令。使用IDE,可以快速創(chuàng)建簡(jiǎn)單的測(cè)試,有時(shí)甚至只需花幾分鐘的時(shí)間。
然而,并不建議所有的自動(dòng)化測(cè)試都使用Selenium IDE。為了有效地使用Selnium,需要使用Selenium 1或Selenium 2,并配合使用其中一種編程語言,自己創(chuàng)建并運(yùn)行測(cè)試。
雖然,Selenium 2是Selenium未來的發(fā)展方向,但Selenium 1和Selenium 2各有優(yōu)劣,這需要用戶進(jìn)行判斷。另外,Selenium 1和Selenium 2可以互相轉(zhuǎn)換。
Selenium Grid一般用于分布式測(cè)試和集群測(cè)試,需要在多臺(tái)機(jī)器同時(shí)執(zhí)行測(cè)試時(shí),可以選擇使用該工具。
本文僅用于學(xué)習(xí)和交流目的,不代表異步社區(qū)觀點(diǎn)。非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的《Selenium自动化测试指南》—第1章1.1节自动化测试基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HiveQL之Database相关操作
- 下一篇: 深度 | 人工智能全局概览:通用智能的当