一当纱、Python常用領(lǐng)域
Python用于簡(jiǎn)單腳本編程,如編寫(xiě)2048小游戲或12306的自動(dòng)搶票軟件;
Python用于系統(tǒng)編程,如開(kāi)發(fā)系統(tǒng)應(yīng)用嫌蚤;
-
Python用于開(kāi)發(fā)網(wǎng)絡(luò)爬蟲(chóng);
網(wǎng)絡(luò)爬蟲(chóng)的用途是進(jìn)行數(shù)據(jù)采集断傲,也就是將互聯(lián)網(wǎng)中的數(shù)據(jù)采集過(guò)來(lái)脱吱。網(wǎng)絡(luò)爬蟲(chóng)的難點(diǎn)其實(shí)并不在于爬蟲(chóng)本身,由于網(wǎng)站方為了避免被爬取回采取各種各樣的反爬蟲(chóng)措施认罩,而如果想要繼續(xù)從網(wǎng)站爬取數(shù)據(jù)就需要解決這些反爬蟲(chóng)措施箱蝠,所以網(wǎng)絡(luò)爬蟲(chóng)的難點(diǎn)在于反爬的攻克和處理。
Python用于Web開(kāi)發(fā),如個(gè)人博客宦搬、在線(xiàn)教育網(wǎng)站以及論壇等牙瓢;
Python用于自動(dòng)化運(yùn)維,如通過(guò)寫(xiě)Python腳本實(shí)現(xiàn)對(duì)于服務(wù)器集群進(jìn)行自動(dòng)化管理间校;
Python用于網(wǎng)絡(luò)編程一罩,如Socket編程等;
Python用于數(shù)據(jù)挖掘撇簿、機(jī)器學(xué)習(xí)等大數(shù)據(jù)與人工智能領(lǐng)域方向的程序開(kāi)發(fā)聂渊,如在人工智能領(lǐng)域;
Python用于自動(dòng)化測(cè)試四瘫,如UI自動(dòng)化測(cè)試(Python+Selenium等)汉嗽、接口測(cè)試(Python requests等)、性能測(cè)試(Python Locust等)找蜜、安全性測(cè)試(Python Scapy等)饼暑、兼容性測(cè)試(Python+Selenium等)等;
二、自動(dòng)化測(cè)試
什么是自動(dòng)化測(cè)試
廣義
上來(lái)講洗做,自動(dòng)化包括一切通過(guò)工具(程序)的方式來(lái)代替或輔助手工測(cè)試的行為都可以看做自動(dòng)化弓叛,包括性能測(cè)試工具(loadrunner、jmeter),或自己所寫(xiě)的一段程序诚纸,用于生成1到100個(gè)測(cè)試數(shù)據(jù)撰筷。所以實(shí)際上從廣義上來(lái)講:性能測(cè)試、接口測(cè)試等但凡用到測(cè)試工具的測(cè)試都稱(chēng)為"自動(dòng)化測(cè)試"畦徘。
狹義
上來(lái)講毕籽,通工具記錄或編寫(xiě)腳本的方式模擬手工測(cè)試的過(guò)程,通過(guò)回放或運(yùn)行腳本來(lái)執(zhí)行測(cè)試用例井辆,從而代替人工對(duì)系統(tǒng)的功能進(jìn)行驗(yàn)證关筒。
當(dāng)然,行業(yè)中經(jīng)常說(shuō)的“自動(dòng)化測(cè)試”及企業(yè)中要求的“自動(dòng)化測(cè)試”大多都是“基于產(chǎn)品或項(xiàng)目UI層的自動(dòng)化測(cè)試”杯缺。對(duì)于性能測(cè)試蒸播,接口測(cè)試一般不把它們歸納為自動(dòng)化測(cè)試的范疇。為什么要做自動(dòng)化測(cè)試
根據(jù)51testing的《中國(guó)軟件測(cè)試從業(yè)人員調(diào)查報(bào)告》萍肆,手工測(cè)試占到的89% 袍榆,相對(duì)開(kāi)發(fā)來(lái)說(shuō),測(cè)試的門(mén)檻底匾鸥,薪資普遍較底蜡塌,所要求的知識(shí)面雖然有一定廣度,但缺乏深度勿负。這是測(cè)試的普遍現(xiàn)狀馏艾。
正因?yàn)槭止y(cè)試人門(mén)檻不高劳曹,使大量的畢業(yè)生,甚至是非專(zhuān)業(yè)人員涌入這個(gè)行業(yè)琅摩。從而增加了這個(gè)行業(yè)的激烈競(jìng)爭(zhēng)铁孵。對(duì)于工作幾年扔處于手工測(cè)試的人員來(lái)說(shuō)都會(huì)有強(qiáng)列的危機(jī)感。由于工作的技術(shù)含量不高房资,薪資的漲幅遇到瓶頸蜕劝,另一方面受到新進(jìn)入者的威脅,同樣的工作公司花5K招來(lái)的人就可以做轰异,那么就不會(huì)花8K 的招岖沛。
這個(gè)問(wèn)題本不應(yīng)該出現(xiàn)討論技術(shù)的話(huà)題中,但他的確是大多測(cè)試人員不得不面對(duì)的一個(gè)問(wèn)題搭独。所以婴削,從測(cè)試人員自身的發(fā)展來(lái)說(shuō),我其實(shí)非常需要通過(guò)自動(dòng)化技術(shù)來(lái)增加自己有競(jìng)爭(zhēng)力牙肝。
自動(dòng)化測(cè)試最實(shí)在的優(yōu)勢(shì)在于——工作好找:有一個(gè)測(cè)試工程師(并不是本人)發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象唉俗,她申請(qǐng)過(guò)的幾乎所有測(cè)試職位,在招聘時(shí)都需要自動(dòng)化測(cè)試經(jīng)驗(yàn)配椭。但當(dāng)她開(kāi)始工作后虫溜,就發(fā)現(xiàn)這些公司都試圖做自動(dòng)化測(cè)試,但是結(jié)果大多不怎么地股缸。不過(guò)衡楞,盡管她參與的都是一些悲劇的項(xiàng)目,不過(guò)她總能把這些悲劇包裝成喜劇以應(yīng)對(duì)下一次面試乓序。-
自動(dòng)測(cè)試的優(yōu)勢(shì)
- 頻繁的回歸測(cè)試 - 快速反饋 - 幾乎無(wú)限制的測(cè)試用例迭代執(zhí)行 - 支持敏捷和極限編程 - 遵循測(cè)試用例的文檔 - 自定義缺陷報(bào)告 - 能找出手工測(cè)試中沒(méi)發(fā)現(xiàn)的缺陷
-
自動(dòng)化測(cè)試有那么多優(yōu)勢(shì)寺酪,為什么還有那么多項(xiàng)目做失敗了坎背?
我個(gè)人推論:
1替劈、公司自動(dòng)化測(cè)試人員能力不夠;
2、項(xiàng)目難度太大得滤,功能不穩(wěn)定陨献,需求變化太快,就盲目啟動(dòng)自動(dòng)化懂更,導(dǎo)致自動(dòng)化腳本開(kāi)發(fā)頻繁改變眨业,更不上需求變化的速度,最終以失敗告終 ;
3沮协、項(xiàng)目過(guò)于復(fù)雜龄捡,大部分功能無(wú)法實(shí)現(xiàn)自動(dòng)化,僅僅只有小部分功能實(shí)現(xiàn)自動(dòng)化慷暂,這個(gè)對(duì)于項(xiàng)目意義不大;
4聘殖、公司人員流動(dòng)大,導(dǎo)致自動(dòng)化腳本維護(hù)的難度加大,最終夭折; -
什么項(xiàng)目適合做自動(dòng)化測(cè)試奸腺?
假如你已經(jīng)決定要學(xué)習(xí)自動(dòng)化測(cè)試了餐禁,如何學(xué)習(xí)是要面臨的下一個(gè)問(wèn)題?這個(gè)問(wèn)題以被測(cè)試產(chǎn)品為出發(fā)點(diǎn)進(jìn)行分析突照,假如你所學(xué)的技術(shù)不能得到應(yīng)用(驗(yàn)證)帮非,將會(huì)使你的學(xué)習(xí)過(guò)程寸步難行。
首先考考慮產(chǎn)品是否適合做自動(dòng)化測(cè)試讹蘑。這方法比較普遍的共識(shí)是從三個(gè)方面進(jìn)行權(quán)衡末盔。- 軟件需求變動(dòng)不頻繁
測(cè)試腳本的穩(wěn)定性決定了自動(dòng)化測(cè)試的維護(hù)成本。如果軟件需求變動(dòng)過(guò)于頻繁座慰,測(cè)試人員需要根據(jù)變動(dòng)的需求來(lái)更新測(cè)試用例以及相關(guān)的測(cè)試腳本庄岖,而腳本的維護(hù)本身就是一個(gè)代碼開(kāi)發(fā)的過(guò)程,需要修改角骤、調(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è)試。 - 項(xiàng)目周期較長(zhǎng)
由于自動(dòng)化測(cè)試需求的確定又沾、自動(dòng)化測(cè)試框架的設(shè)計(jì)弊仪、測(cè)試腳本的編寫(xiě)與調(diào)試均需要相當(dāng)長(zhǎng)的時(shí)間來(lái)完成。這樣的過(guò)程本身就是一個(gè)測(cè)試軟件的開(kāi)發(fā)過(guò)程杖刷,需要較長(zhǎng)的時(shí)間來(lái)完成励饵。如果項(xiàng)目的周期比較短,沒(méi)有足夠的時(shí)間去支持這樣一個(gè)過(guò)程滑燃,那么自動(dòng)化測(cè)試便成為笑談役听。 - 自動(dòng)化測(cè)試腳本可重復(fù)使用
自動(dòng)化測(cè)試腳本的重復(fù)使用要從三個(gè)方面來(lái)考量,一方面所測(cè)試的項(xiàng)目之間是否很大的差異性(如C/S系統(tǒng)和B/S系統(tǒng)的差異)表窘;所選擇的測(cè)試工具是否適應(yīng)這種差異典予;最后,測(cè)試人員是否有能力開(kāi)發(fā)出適應(yīng)這種差異的自動(dòng)化測(cè)試框架乐严。
- 軟件需求變動(dòng)不頻繁
三瘤袖、主流自動(dòng)化測(cè)試框架
自動(dòng)化測(cè)試框架
桌面程序的工具有:QTP、 AutoRunner
web應(yīng)用的工具有:QTP昂验、AutoRunner捂敌、Robot Framework昭娩、watir、selenium-
測(cè)試框架選擇
由于B/S架構(gòu)的諸多優(yōu)勢(shì)黍匾,早幾年前大量C/S架構(gòu)的應(yīng)用轉(zhuǎn)為B/S結(jié)構(gòu)栏渺。從而也推動(dòng)了web開(kāi)發(fā)與測(cè)試技術(shù)的發(fā)展。這也導(dǎo)致QTP框架的落寞锐涯,Selenium框架及Robot Framework框架的大量興起磕诊。被測(cè)試有產(chǎn)品是C/S架構(gòu)的,那么推薦QTP ;
被測(cè)產(chǎn)品是B/S 結(jié)構(gòu)纹腌,那么推薦selenium ; -
市面主流自動(dòng)化測(cè)試框架
RFS: Robot Framework + Selenium
Selenium+unittest框架為什么不是QTP 或其它工具霎终?因?yàn)閟elenium 對(duì)B/S應(yīng)用支持很好,更重要的一點(diǎn)升薯,它支持多語(yǔ)言的開(kāi)發(fā)莱褒,真正的試用selenium ,你所要掌握的不僅僅是一個(gè)工具而已涎劈,你還需要學(xué)習(xí)一門(mén)語(yǔ)言广凸。
四、我們?cè)搶W(xué)什么
自然選擇主流框架蛛枚,假如你決定使用selenium 了之后谅海,你又面臨了一個(gè)新的問(wèn)題,選擇一門(mén)語(yǔ)言蹦浦。selenium 是支持java扭吁、python、ruby盲镶、php侥袜、C#、JavaScript 溉贿。
從語(yǔ)言易學(xué)性來(lái)講: ruby枫吧、python;
從語(yǔ)言應(yīng)用廣度來(lái)講: python、java顽照、C#由蘑、php;
從語(yǔ)言相關(guān)測(cè)試技術(shù)成熟度及資料來(lái)講: python、java代兵、ruby;
備注: 你可以考慮整個(gè)技術(shù)團(tuán)隊(duì)主流用什么語(yǔ)言,然后選擇相應(yīng)的語(yǔ)言;
備注: 我們?cè)谶@里自然選擇目前市面上最火爷狈,使用范圍廣植影,技術(shù)成熟度大的Python講解;
五涎永、Python自動(dòng)化測(cè)試-學(xué)習(xí)路線(xiàn)
學(xué)習(xí)路線(xiàn)規(guī)劃:
1.python(python不過(guò)關(guān)思币,別談自動(dòng)化);
2.Web基礎(chǔ)(網(wǎng)頁(yè)基礎(chǔ))
3.Selenium框架
4.unittest框架
5.Robot Framwork框架
6.項(xiàng)目
六鹿响、Python篇
Python 是一個(gè)高層次的結(jié)合了解釋性、編譯性谷饿、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言惶我。
Python 的設(shè)計(jì)具有很強(qiáng)的可讀性,相比其他語(yǔ)言經(jīng)常使用英文關(guān)鍵字博投,其他語(yǔ)言的一些標(biāo)點(diǎn)符號(hào)绸贡,它具有比其他語(yǔ)言更有特色語(yǔ)法結(jié)構(gòu)。
環(huán)境搭建
Python版本選擇: 3.5版本64位毅哗、3.5版本32位
Python IDE: PyCharm社區(qū)免費(fèi)版基礎(chǔ)語(yǔ)法
注釋
標(biāo)識(shí)符
保留字
行和縮進(jìn)
輸入輸出
運(yùn)算符數(shù)據(jù)類(lèi)型
Numbers數(shù)字
String字符串
List列表
Tuple元組
Dictionary字典
數(shù)據(jù)類(lèi)型轉(zhuǎn)換控制流
if語(yǔ)句
while語(yǔ)句
for語(yǔ)句
循環(huán)嵌套函數(shù)
函數(shù)定義
函數(shù)調(diào)用
函數(shù)參數(shù)
匿名函數(shù)
作用域模塊
import 語(yǔ)句
From…import 語(yǔ)句
From…import* 語(yǔ)句
定位模塊
命名空間與作用域
dir()函數(shù)
globals()和locals()函數(shù)
reload()函數(shù)正則表達(dá)式
re.match函數(shù)
re.search方法
檢索和替換
字符類(lèi)和特殊字符類(lèi)文件I/O
讀取鍵盤(pán)輸入
打開(kāi)和關(guān)閉文件
File對(duì)象的屬性
Close()方法
Write()方法
目錄操作異常處理
標(biāo)準(zhǔn)異常
try/except語(yǔ)句
try-finally 語(yǔ)句
異常的參數(shù)
觸發(fā)異常
用戶(hù)自定義異常JSON處理
encode函數(shù)
decode函數(shù)面向?qū)ο?br> 類(lèi)(Class)
類(lèi)變量
數(shù)據(jù)成員
方法重載
實(shí)例變量
繼承
實(shí)例化
方法
對(duì)象
七听怕、Web篇
Web就是在Http協(xié)議基礎(chǔ)之上, 利用瀏覽器進(jìn)行訪(fǎng)問(wèn)的網(wǎng)站。網(wǎng)頁(yè)開(kāi)發(fā)會(huì)涉及到HTML超文本標(biāo)記語(yǔ)言虑绵、CSS層疊樣式表尿瞭、Javascript腳本語(yǔ)言。
環(huán)境搭建
編輯工具: Hbuiderl
瀏覽器: 火狐/谷歌HTML基礎(chǔ)
基本結(jié)構(gòu)
常用元素
元素屬性
層次結(jié)構(gòu)CSS基礎(chǔ)
樣式表
選擇器
核心屬性Javascript基礎(chǔ)
變量類(lèi)型
if語(yǔ)句
while語(yǔ)句
for語(yǔ)句
數(shù)組
DOM操作
八翅睛、Selenium篇
Selenium 誕生于 2004 年声搁,當(dāng)在 ThoughtWorks 工作的 Jason Huggins 在測(cè)試一個(gè)內(nèi)部應(yīng)用時(shí)。作為一個(gè)聰明的家伙捕发,他意識(shí)到相對(duì)于每次改動(dòng)都需要手工進(jìn)行測(cè)試酥艳,他的時(shí)間應(yīng)該用得更有價(jià)值。他開(kāi)發(fā)了一個(gè)可以驅(qū)動(dòng)頁(yè)面進(jìn)行交互的 Javascript 庫(kù)爬骤,能讓多瀏覽器自動(dòng)返回測(cè)試結(jié)果充石。那個(gè)庫(kù)最終變成了 Selenium 的核心,它是 Selenium RC(遠(yuǎn)程控制)和 Selenium IDE 所有功能的基礎(chǔ)霞玄。
Selenium 2(又叫 Selenium Webdriver)骤铃,Selenium 1 (又叫 Selenium RC 或 Remote Control),Selenium RC 都是最主要的 Selenium 項(xiàng)目坷剧,直到 WebDriver 和 Selenium 合并而產(chǎn)生了最新且最強(qiáng)大的 Selenium 2.
Selenium IDE (集成開(kāi)發(fā)環(huán)境) 是一個(gè)創(chuàng)建測(cè)試腳本的原型工具惰爬。它是一個(gè) Firefox 插件,提供創(chuàng)建自動(dòng)化測(cè)試的建議接口惫企。
框架原理
自動(dòng)化測(cè)試流程
python+selenium環(huán)境搭建
Selenium WebDriver API實(shí)戰(zhàn)
自動(dòng)化測(cè)試用例設(shè)計(jì)
Jenkins+SVN持續(xù)集成管理
九撕瞧、unittest篇
自動(dòng)化測(cè)試的最后一步需要判斷結(jié)果是否正確,而正確設(shè)置斷言可以幫助判斷測(cè)試用例的執(zhí)行結(jié)果狞尔,從而提高自動(dòng)化測(cè)試的效率丛版,python unittest 提供了一個(gè)比較完整的斷言方法。
- Python+Unitest測(cè)試框架
生成HTMLTestRunner測(cè)試報(bào)告
測(cè)試套件
測(cè)試套件實(shí)例
整合HTMLTestRunner測(cè)試報(bào)告
易讀的測(cè)試報(bào)告
十偏序、Robot Framwork篇
Robot Framework是一個(gè)基于Python可擴(kuò)展地關(guān)鍵字驅(qū)動(dòng)的測(cè)試自動(dòng)化框架页畦,使用Apache License 2.0,由Robot Framework Foundation開(kāi)發(fā)和贊助研儒。Robot Framework被廣泛地使用在端到端地驗(yàn)收測(cè)試以及ATDD(acceptance-test-driven development)中豫缨,生態(tài)體系非常豐富独令。
- Robot FrameWork原理
- Robot FrameWork環(huán)境搭建
- Robot FrameWork工具使用
- Robot FrameWork系統(tǒng)關(guān)鍵字
- Robot FrameWord用戶(hù)自定義關(guān)鍵字封裝
- RFS Web自動(dòng)化測(cè)試實(shí)戰(zhàn)
- RFS集成JQuery
- 數(shù)據(jù)庫(kù)自動(dòng)化測(cè)試實(shí)戰(zhàn)
作者:西門(mén)奄
鏈接:http://www.reibang.com/u/77035eb804c3
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處好芭。