Web自動(dòng)化Selenium+Python系列之一自動(dòng)化測(cè)試基礎(chǔ)
匯智妹一直央求寶哥出版一本《Selenium+Python自動(dòng)化測(cè)試》的書。經(jīng)寶哥思來(lái)想去,最終還是決定免費(fèi)公開出來(lái),希望給大家?guī)?lái)一些幫助。
今天首先介紹下自動(dòng)化測(cè)試的理論知識(shí)。
自動(dòng)化測(cè)試的未來(lái)
大概在2007年的時(shí)候,開始全球掀起實(shí)施敏捷開發(fā)模式的熱潮,敏捷模式流行的趨勢(shì)隨之引起測(cè)試領(lǐng)域發(fā)生了重大的變化。由于敏捷開發(fā)強(qiáng)調(diào)所謂的“小步快跑”方式,其迫使測(cè)試人員需要在更短的時(shí)間內(nèi)完成整個(gè)測(cè)試過(guò)程,而以前純手工測(cè)試的方式應(yīng)付這種“短平快”的開發(fā)節(jié)奏變得越來(lái)越吃力,于是縮短測(cè)試周期提升測(cè)試效率則變成了能否很好支撐開發(fā)的關(guān)鍵。而提升測(cè)試速度和效率,自動(dòng)化測(cè)試就變得比以往任何時(shí)候都顯得更加重要。測(cè)試自動(dòng)化成為必然的趨勢(shì),目前軟件開發(fā)所流行的敏捷、DevOps、持續(xù)交付、持續(xù)部署等等,通通都是以自動(dòng)化為根基的(不僅僅是測(cè)試的自動(dòng)化),沒(méi)有自動(dòng)化是做不到的,總結(jié)Google、Indeed和Github的趨勢(shì)研究 和 世界質(zhì)量報(bào)告、智能與信息報(bào)告等分析的結(jié)果,未來(lái)自動(dòng)化測(cè)試將有呈現(xiàn)9大趨勢(shì):

1.移動(dòng)測(cè)試:由于移動(dòng)設(shè)備數(shù)量的增加以及移動(dòng)端研發(fā)技術(shù)的變化,移動(dòng)應(yīng)用軟件對(duì)軟件測(cè)試行業(yè)將產(chǎn)生重要的影響,主要包括有功能、性能、兼容性、安全性和易用性等方面的測(cè)試?;谝苿?dòng)端的自動(dòng)化測(cè)試遲早會(huì)超越網(wǎng)站自動(dòng)化測(cè)試。正是由于開源框架、移動(dòng)DevOps和APP市場(chǎng)的不斷增長(zhǎng),這為移動(dòng)自動(dòng)化測(cè)試開辟了一個(gè)很廣闊的前景。
2.大數(shù)據(jù)測(cè)試:隨著大數(shù)據(jù)行業(yè)的興起,如何管理眾多設(shè)備、應(yīng)用和網(wǎng)絡(luò)成為巨大的挑戰(zhàn),沒(méi)有好的質(zhì)量管理最終導(dǎo)致的錯(cuò)誤,必將付出慘重代價(jià),行業(yè)的興起,技術(shù)的提高,對(duì)于大數(shù)據(jù)測(cè)試的人員需求必然增長(zhǎng)。
3.接口測(cè)試:企業(yè)對(duì)微服務(wù)的投資增加,因?yàn)槲⒎?wù)可以在不改變其他應(yīng)用程序和流程情況下進(jìn)行測(cè)試,它更容易被測(cè)試和部署一個(gè)獨(dú)立的功能,這使得應(yīng)用軟件和產(chǎn)品可以加快上線速度。另一方面,為了對(duì)應(yīng)用程序進(jìn)行全面測(cè)試,測(cè)試應(yīng)用程序與其他應(yīng)用程序之間的依賴關(guān)系的接口測(cè)試,也是會(huì)需求量放大。
4. Web 服務(wù)和SOA的測(cè)試自動(dòng)化:Web服務(wù)和SOA體系結(jié)構(gòu)的測(cè)試作為對(duì)應(yīng)用程序的端到端進(jìn)行性能測(cè)試也將同等重要?,F(xiàn)在復(fù)雜應(yīng)用系統(tǒng)的集成,要求測(cè)試系統(tǒng)之間消息是否能正確傳輸和響應(yīng),因此,將有越來(lái)越多的企業(yè)投資于SOA和Web服務(wù)的自動(dòng)化測(cè)試。
5.基于TDD和BDD 的左移測(cè)試:在開發(fā)生命周期的早期開始進(jìn)行測(cè)試工作,幫助軟件開發(fā)在整個(gè)生命周期出現(xiàn)的缺陷更少。企業(yè)采用TDD和BDD方法開發(fā)應(yīng)用程序,因?yàn)榭梢约皶r(shí)無(wú)錯(cuò)誤的滿足客戶的要求。采用TDD和BDD的方法,開發(fā)團(tuán)隊(duì)可以得到與需求一樣的基于開發(fā)的想法,而不會(huì)有對(duì)需求的誤解而帶來(lái)的麻煩。
6 持續(xù)集成的自動(dòng)化:持續(xù)集成的自動(dòng)化可以讓開發(fā)人員將和測(cè)試人員進(jìn)行持續(xù)的同步工作,幫助他們互相之間要不斷的更新和反饋消息,以了解軟件質(zhì)量的實(shí)時(shí)狀況和快速的修復(fù)缺陷。
7. 物聯(lián)網(wǎng)和硬件測(cè)試:物聯(lián)網(wǎng)(Internet of Things,IOT)時(shí)代越來(lái)越近,專家預(yù)測(cè),大約有500億個(gè)對(duì)象連接到網(wǎng)絡(luò)上,他們將通過(guò)某種連接和傳感器連接,構(gòu)成了物物相息的環(huán)境。這自然會(huì)要求針對(duì)物聯(lián)網(wǎng)眾多對(duì)象進(jìn)行測(cè)試,特別是要驗(yàn)證持續(xù)產(chǎn)生的、來(lái)來(lái)回回傳輸?shù)臄?shù)據(jù)。硬件測(cè)試也將成為物聯(lián)網(wǎng)測(cè)試的重要趨勢(shì)。
8. 安全性:用戶使用移動(dòng)互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的頻率大大增加,近幾年安全性問(wèn)題將越來(lái)越受到人們的關(guān)注,系統(tǒng)的安全性非常重要,它要確保沒(méi)有數(shù)據(jù)和信息被黑客攻擊、竊取和濫用。因此自動(dòng)化測(cè)試領(lǐng)域中安全性測(cè)試占有重要地位。
9. Selenium自動(dòng)化: Selenium在自動(dòng)化測(cè)試工具中的使用率正在飛速增長(zhǎng)。很多商業(yè)工具提供了對(duì)Selenium的技術(shù)支持,以實(shí)現(xiàn)web應(yīng)用的自動(dòng)化測(cè)試。這些工具通過(guò)整合Selenium Web Driver與后臺(tái)架構(gòu),與Selenium打包在一起而發(fā)揮更好的作用,這種融合不僅可以幫助測(cè)試客戶端的應(yīng)用程序,而且測(cè)試那些通過(guò)API進(jìn)行交互的Web應(yīng)用。
什么是自動(dòng)化測(cè)試
所謂“自動(dòng)化測(cè)試”,一般是指在測(cè)試執(zhí)行過(guò)程中,通過(guò)工具自動(dòng)化的執(zhí)行本由人工來(lái)執(zhí)行完成的測(cè)試過(guò)程,重點(diǎn)強(qiáng)調(diào)是解決“測(cè)試執(zhí)行過(guò)程”的效率;它是把以人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過(guò)程。通常,在設(shè)計(jì)了測(cè)試用例并通過(guò)評(píng)審之后,由測(cè)試人員根據(jù)測(cè)試用例中描述的規(guī)程一步步執(zhí)行測(cè)試,得到實(shí)際結(jié)果與期望結(jié)果的比較。在此過(guò)程中,為了節(jié)省人力、時(shí)間或硬件資源,提高測(cè)試效率,便引入了自動(dòng)化測(cè)試的概念。
“測(cè)試自動(dòng)化”,是指在測(cè)試領(lǐng)域中的任何方面都可以通過(guò)各種自動(dòng)化的方式和手段來(lái)加快測(cè)試的效率,保證測(cè)試的質(zhì)量,縮短軟件交付的周期。所以它強(qiáng)調(diào)的階段是整個(gè)測(cè)試的過(guò)程而不僅僅是執(zhí)行過(guò)程。如測(cè)試數(shù)據(jù)準(zhǔn)備的自動(dòng)化、測(cè)試環(huán)境搭建的自動(dòng)化都,測(cè)試結(jié)果分析的自動(dòng)化等等,所以測(cè)試自動(dòng)化范圍更廣。當(dāng)前DevOps (DevOps(英文Development和Operations的組合)是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開發(fā)和運(yùn)營(yíng)工作必須緊密的合作越來(lái)越受到業(yè)界重視,在此情況下TestOps孕育而生,TestOps工程師的出現(xiàn)就是具備測(cè)試自動(dòng)化思維的工程師,毫無(wú)疑問(wèn)未來(lái)將是Dev + Test + Ops將成為主流模式。
測(cè)試自動(dòng)化的目的
測(cè)試自動(dòng)化的目的:最核心的目的是保證軟件的質(zhì)量。
第一個(gè)目的:提高軟件功能的測(cè)試覆蓋率。在公司做做測(cè)試時(shí),為了保證軟件無(wú)缺陷,我們需要在軟件研發(fā),版本升級(jí),缺陷修復(fù)等過(guò)程需要進(jìn)行回歸測(cè)試,回歸測(cè)試的工作量巨大,有限的時(shí)間很難保證完全測(cè)試完畢,所以如果通過(guò)自動(dòng)化,則可以一定程度上解決問(wèn)題,從而提升整個(gè)軟件質(zhì)量。
第二個(gè)目的:提高測(cè)試速度。主要表現(xiàn)在兩方面:一是執(zhí)行動(dòng)作的連續(xù)性提高,由于把測(cè)試過(guò)程腳本話,那么執(zhí)行過(guò)程就可以連續(xù)執(zhí)行,即使一個(gè)熟練的測(cè)試工程師執(zhí)行一次用例的時(shí)間也遠(yuǎn)遠(yuǎn)低于測(cè)試腳本的執(zhí)行速度,特別是執(zhí)行測(cè)試用例的數(shù)量是巨大的,這種時(shí)間的差異會(huì)越來(lái)越明顯。另外一個(gè)是測(cè)試的不間斷執(zhí)行,自動(dòng)化測(cè)試軟件可以在機(jī)器上連續(xù)24小時(shí)不間斷的運(yùn)行(理論上只要腳本不存在內(nèi)部錯(cuò)誤,軟件本身和硬件設(shè)備不出現(xiàn)異常),這一點(diǎn)是人力所無(wú)法完成的,以上兩點(diǎn)都可以提高測(cè)試的執(zhí)行周期,加快了軟件版本的迭代。
第三個(gè)目的:完成人力無(wú)法勝任的測(cè)試。如性能測(cè)試,現(xiàn)代大型互聯(lián)網(wǎng)系統(tǒng)支撐數(shù)以億計(jì)的用戶,同時(shí)并發(fā)的數(shù)量也是巨大的,2015年雙十一期間,淘寶每秒鐘訂單創(chuàng)建14萬(wàn)筆,支付寶支付達(dá)到了每秒8.59萬(wàn)筆。以上場(chǎng)景如果在測(cè)試階段,要求進(jìn)行測(cè)試,就需要模擬14萬(wàn)用戶并發(fā)創(chuàng)建訂單的用戶場(chǎng)景,難度是相當(dāng)高。首先要實(shí)施14萬(wàn)用戶在“同一時(shí)間“操作的真人版測(cè)試付出的成本就是巨大的,按照每個(gè)人1小時(shí)給50元費(fèi)用,一小時(shí)的人力成本就是700萬(wàn),迭代測(cè)試5次就是3500萬(wàn),何況如何組織14萬(wàn)人能夠同一時(shí)間發(fā)出動(dòng)作也是巨大的挑戰(zhàn)。所以性能測(cè)試用工具來(lái)解決是不錯(cuò)的方案之一。
適合測(cè)試自動(dòng)化的項(xiàng)目
以前某咨詢公司的調(diào)查分析,自動(dòng)化測(cè)試腳本只有執(zhí)行超過(guò)5次以上,ROI(投資回報(bào)率)才是合理的。按照這個(gè)結(jié)論,系統(tǒng)多年不需要升級(jí)的,沒(méi)有必要自動(dòng)化;系統(tǒng)UI變化頻率過(guò)高,造成腳本維護(hù)成本非常高,每次版本功能需要變化導(dǎo)致ui界面變化,都需要投入資源重新開發(fā)腳本,這種投入成本過(guò)高的不值得做自動(dòng)化測(cè)試。按照此分析結(jié)果很多項(xiàng)目都不能做自動(dòng)化測(cè)試,而用“測(cè)試自動(dòng)化”的思維來(lái)思考自動(dòng)化測(cè)試的實(shí)施,那么就可以在測(cè)試數(shù)據(jù)準(zhǔn)備上做自動(dòng)化,在部署測(cè)試環(huán)境上自動(dòng)化,看到軟件系統(tǒng)UI變化過(guò)快,就去完成接口(API)級(jí)別的自動(dòng)化測(cè)試。所以一名測(cè)試工程師要有“自動(dòng)化”的意識(shí),把“自動(dòng)化”植入思維中。只要日常工作中任何能幫你減少重復(fù)勞動(dòng)、提升測(cè)試工作效率的方面都可以嘗試用“自動(dòng)化”去幫忙解決,而不是緊緊狹義的理解“測(cè)試自動(dòng)化”就是“UI的測(cè)試自動(dòng)化”。測(cè)試人員隨時(shí)都要用測(cè)試自動(dòng)化的思維來(lái)看待項(xiàng)目,那么任何項(xiàng)目都可以做自動(dòng)化。

