一、Python常用領(lǐng)域
- Python用于簡單腳本編程,如編寫2048小游戲或12306的自動(dòng)搶票軟件;
- Python用于系統(tǒng)編程哎媚,如開發(fā)系統(tǒng)應(yīng)用;
- Python用于開發(fā)網(wǎng)絡(luò)爬蟲喊儡;
網(wǎng)絡(luò)爬蟲的用途是進(jìn)行數(shù)據(jù)采集拨与,也就是將互聯(lián)網(wǎng)中的數(shù)據(jù)采集過來。網(wǎng)絡(luò)爬蟲的難點(diǎn)其實(shí)并不在于爬蟲本身艾猜,由于網(wǎng)站方為了避免被爬取回采取各種各樣的反爬蟲措施买喧,而如果想要繼續(xù)從網(wǎng)站爬取數(shù)據(jù)就需要解決這些反爬蟲措施捻悯,所以網(wǎng)絡(luò)爬蟲的難點(diǎn)在于反爬的攻克和處理。
- Python用于Web開發(fā)淤毛,如個(gè)人博客今缚、在線教育網(wǎng)站以及論壇等;
- Python用于自動(dòng)化運(yùn)維低淡,如通過寫Python腳本實(shí)現(xiàn)對于服務(wù)器集群進(jìn)行自動(dòng)化管理姓言;
- Python用于網(wǎng)絡(luò)編程,如Socket編程等蔗蹋;
- Python用于數(shù)據(jù)挖掘何荚、機(jī)器學(xué)習(xí)等大數(shù)據(jù)與人工智能領(lǐng)域方向的程序開發(fā),如在人工智能領(lǐng)域猪杭;
- Python用于自動(dòng)化測試餐塘,如UI自動(dòng)化測試(Python+Selenium等)、接口測試(Python requests等)皂吮、性能測試(Python Locust等)戒傻、安全性測試(Python Scapy等)、兼容性測試(Python+Selenium等)等;
二蜂筹、自動(dòng)化測試
什么是自動(dòng)化測試
廣義
上來講需纳,自動(dòng)化包括一切通過工具(程序)的方式來代替或輔助手工測試的行為都可以看做自動(dòng)化,包括性能測試工具(loadrunner狂票、jmeter),或自己所寫的一段程序候齿,用于生成1到100個(gè)測試數(shù)據(jù)熙暴。所以實(shí)際上從廣義上來講:性能測試闺属、接口測試等但凡用到測試工具的測試都稱為"自動(dòng)化測試"。
狹義
上來講周霉,通工具記錄或編寫腳本的方式模擬手工測試的過程掂器,通過回放或運(yùn)行腳本來執(zhí)行測試用例,從而代替人工對系統(tǒng)的功能進(jìn)行驗(yàn)證俱箱。
當(dāng)然国瓮,行業(yè)中經(jīng)常說的“自動(dòng)化測試”及企業(yè)中要求的“自動(dòng)化測試”大多都是“基于產(chǎn)品或項(xiàng)目UI層的自動(dòng)化測試”。對于性能測試狞谱,接口測試一般不把它們歸納為自動(dòng)化測試的范疇乃摹。為什么要做自動(dòng)化測試
根據(jù)51testing的《中國軟件測試從業(yè)人員調(diào)查報(bào)告》,手工測試占到的89% 跟衅,相對開發(fā)來說孵睬,測試的門檻底,薪資普遍較底伶跷,所要求的知識(shí)面雖然有一定廣度掰读,但缺乏深度秘狞。這是測試的普遍現(xiàn)狀。
正因?yàn)槭止y試人門檻不高蹈集,使大量的畢業(yè)生烁试,甚至是非專業(yè)人員涌入這個(gè)行業(yè)。從而增加了這個(gè)行業(yè)的激烈競爭拢肆。對于工作幾年扔處于手工測試的人員來說都會(huì)有強(qiáng)列的危機(jī)感减响。由于工作的技術(shù)含量不高,薪資的漲幅遇到瓶頸郭怪,另一方面受到新進(jìn)入者的威脅辩蛋,同樣的工作公司花5K招來的人就可以做,那么就不會(huì)花8K 的招移盆。
這個(gè)問題本不應(yīng)該出現(xiàn)討論技術(shù)的話題中悼院,但他的確是大多測試人員不得不面對的一個(gè)問題。所以咒循,從測試人員自身的發(fā)展來說据途,我其實(shí)非常需要通過自動(dòng)化技術(shù)來增加自己有競爭力。
自動(dòng)化測試最實(shí)在的優(yōu)勢在于——工作好找:有一個(gè)測試工程師(并不是本人)發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象叙甸,她申請過的幾乎所有測試職位颖医,在招聘時(shí)都需要自動(dòng)化測試經(jīng)驗(yàn)。但當(dāng)她開始工作后裆蒸,就發(fā)現(xiàn)這些公司都試圖做自動(dòng)化測試熔萧,但是結(jié)果大多不怎么地。不過僚祷,盡管她參與的都是一些悲劇的項(xiàng)目佛致,不過她總能把這些悲劇包裝成喜劇以應(yīng)對下一次面試。-
自動(dòng)測試的優(yōu)勢
- 頻繁的回歸測試 - 快速反饋 - 幾乎無限制的測試用例迭代執(zhí)行 - 支持敏捷和極限編程 - 遵循測試用例的文檔 - 自定義缺陷報(bào)告 - 能找出手工測試中沒發(fā)現(xiàn)的缺陷
-
自動(dòng)化測試有那么多優(yōu)勢辙谜,為什么還有那么多項(xiàng)目做失敗了俺榆?
我個(gè)人推論:
1、公司自動(dòng)化測試人員能力不夠;
2装哆、項(xiàng)目難度太大罐脊,功能不穩(wěn)定,需求變化太快蜕琴,就盲目啟動(dòng)自動(dòng)化萍桌,導(dǎo)致自動(dòng)化腳本開發(fā)頻繁改變,更不上需求變化的速度凌简,最終以失敗告終 ;
3上炎、項(xiàng)目過于復(fù)雜,大部分功能無法實(shí)現(xiàn)自動(dòng)化号醉,僅僅只有小部分功能實(shí)現(xiàn)自動(dòng)化反症,這個(gè)對于項(xiàng)目意義不大;
4辛块、公司人員流動(dòng)大,導(dǎo)致自動(dòng)化腳本維護(hù)的難度加大铅碍,最終夭折; -
什么項(xiàng)目適合做自動(dòng)化測試润绵?
假如你已經(jīng)決定要學(xué)習(xí)自動(dòng)化測試了,如何學(xué)習(xí)是要面臨的下一個(gè)問題胞谈?這個(gè)問題以被測試產(chǎn)品為出發(fā)點(diǎn)進(jìn)行分析尘盼,假如你所學(xué)的技術(shù)不能得到應(yīng)用(驗(yàn)證),將會(huì)使你的學(xué)習(xí)過程寸步難行烦绳。
首先考考慮產(chǎn)品是否適合做自動(dòng)化測試卿捎。這方法比較普遍的共識(shí)是從三個(gè)方面進(jìn)行權(quán)衡。- 軟件需求變動(dòng)不頻繁
測試腳本的穩(wěn)定性決定了自動(dòng)化測試的維護(hù)成本径密。如果軟件需求變動(dòng)過于頻繁午阵,測試人員需要根據(jù)變動(dòng)的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護(hù)本身就是一個(gè)代碼開發(fā)的過程享扔,需要修改底桂、調(diào)試,必要的時(shí)候還要修改自動(dòng)化測試的框架惧眠,如果所花費(fèi)的成本不低于利用其節(jié)省的測試成本籽懦,那么自動(dòng)化測試便是失敗的。項(xiàng)目中的某些模塊相對穩(wěn)定氛魁,而某些模塊需求變動(dòng)性很大暮顺。我們便可對相對穩(wěn)定的模塊進(jìn)行自動(dòng)化測試,而變動(dòng)較大的仍是用手工測試秀存。 - 項(xiàng)目周期較長
由于自動(dòng)化測試需求的確定捶码、自動(dòng)化測試框架的設(shè)計(jì)、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時(shí)間來完成应又。這樣的過程本身就是一個(gè)測試軟件的開發(fā)過程宙项,需要較長的時(shí)間來完成乏苦。如果項(xiàng)目的周期比較短株扛,沒有足夠的時(shí)間去支持這樣一個(gè)過程,那么自動(dòng)化測試便成為笑談汇荐。 - 自動(dòng)化測試腳本可重復(fù)使用
自動(dòng)化測試腳本的重復(fù)使用要從三個(gè)方面來考量洞就,一方面所測試的項(xiàng)目之間是否很大的差異性(如C/S系統(tǒng)和B/S系統(tǒng)的差異);所選擇的測試工具是否適應(yīng)這種差異掀淘;最后旬蟋,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動(dòng)化測試框架。
- 軟件需求變動(dòng)不頻繁
三革娄、主流自動(dòng)化測試框架
自動(dòng)化測試框架
桌面程序的工具有:QTP倾贰、 AutoRunner
web應(yīng)用的工具有:QTP冕碟、AutoRunner、Robot Framework匆浙、watir安寺、selenium-
測試框架選擇
由于B/S架構(gòu)的諸多優(yōu)勢,早幾年前大量C/S架構(gòu)的應(yīng)用轉(zhuǎn)為B/S結(jié)構(gòu)首尼。從而也推動(dòng)了web開發(fā)與測試技術(shù)的發(fā)展挑庶。這也導(dǎo)致QTP框架的落寞,Selenium框架及Robot Framework框架的大量興起软能。被測試有產(chǎn)品是C/S架構(gòu)的迎捺,那么推薦QTP ;
被測產(chǎn)品是B/S 結(jié)構(gòu),那么推薦selenium ; -
市面主流自動(dòng)化測試框架
RFS: Robot Framework + Selenium
Selenium+unittest框架為什么不是QTP 或其它工具查排?因?yàn)閟elenium 對B/S應(yīng)用支持很好凳枝,更重要的一點(diǎn),它支持多語言的開發(fā)跋核,真正的試用selenium 范舀,你所要掌握的不僅僅是一個(gè)工具而已,你還需要學(xué)習(xí)一門語言了罪。
四锭环、我們該學(xué)什么
自然選擇主流框架,假如你決定使用selenium 了之后泊藕,你又面臨了一個(gè)新的問題辅辩,選擇一門語言。selenium 是支持java娃圆、python玫锋、ruby、php讼呢、C#撩鹿、JavaScript 。
從語言易學(xué)性來講: ruby悦屏、python;
從語言應(yīng)用廣度來講: python节沦、java、C#础爬、php;
從語言相關(guān)測試技術(shù)成熟度及資料來講: python甫贯、java、ruby;
備注: 你可以考慮整個(gè)技術(shù)團(tuán)隊(duì)主流用什么語言看蚜,然后選擇相應(yīng)的語言;
備注: 我們在這里自然選擇目前市面上最火叫搁,使用范圍廣,技術(shù)成熟度大的Python講解;
五渴逻、Python自動(dòng)化測試-學(xué)習(xí)路線
學(xué)習(xí)路線規(guī)劃:
1.python(python不過關(guān)疾党,別談自動(dòng)化);
2.Web基礎(chǔ)(網(wǎng)頁基礎(chǔ))
3.Selenium框架
4.unittest框架
5.Robot Framwork框架
6.項(xiàng)目
六、Python篇
Python 是一個(gè)高層次的結(jié)合了解釋性惨奕、編譯性仿贬、互動(dòng)性和面向?qū)ο蟮哪_本語言。
Python 的設(shè)計(jì)具有很強(qiáng)的可讀性墓贿,相比其他語言經(jīng)常使用英文關(guān)鍵字茧泪,其他語言的一些標(biāo)點(diǎn)符號,它具有比其他語言更有特色語法結(jié)構(gòu)聋袋。
環(huán)境搭建
Python版本選擇: 3.5版本64位队伟、3.5版本32位
Python IDE: PyCharm社區(qū)免費(fèi)版基礎(chǔ)語法
注釋
標(biāo)識(shí)符
保留字
行和縮進(jìn)
輸入輸出
運(yùn)算符數(shù)據(jù)類型
Numbers數(shù)字
String字符串
List列表
Tuple元組
Dictionary字典
數(shù)據(jù)類型轉(zhuǎn)換控制流
if語句
while語句
for語句
循環(huán)嵌套函數(shù)
函數(shù)定義
函數(shù)調(diào)用
函數(shù)參數(shù)
匿名函數(shù)
作用域模塊
import 語句
From…import 語句
From…import* 語句
定位模塊
命名空間與作用域
dir()函數(shù)
globals()和locals()函數(shù)
reload()函數(shù)正則表達(dá)式
re.match函數(shù)
re.search方法
檢索和替換
字符類和特殊字符類文件I/O
讀取鍵盤輸入
打開和關(guān)閉文件
File對象的屬性
Close()方法
Write()方法
目錄操作異常處理
標(biāo)準(zhǔn)異常
try/except語句
try-finally 語句
異常的參數(shù)
觸發(fā)異常
用戶自定義異常JSON處理
encode函數(shù)
decode函數(shù)面向?qū)ο?br> 類(Class)
類變量
數(shù)據(jù)成員
方法重載
實(shí)例變量
繼承
實(shí)例化
方法
對象
七、Web篇
Web就是在Http協(xié)議基礎(chǔ)之上, 利用瀏覽器進(jìn)行訪問的網(wǎng)站幽勒。網(wǎng)頁開發(fā)會(huì)涉及到HTML超文本標(biāo)記語言嗜侮、CSS層疊樣式表、Javascript腳本語言啥容。
環(huán)境搭建
編輯工具: Hbuiderl
瀏覽器: 火狐/谷歌HTML基礎(chǔ)
基本結(jié)構(gòu)
常用元素
元素屬性
層次結(jié)構(gòu)CSS基礎(chǔ)
樣式表
選擇器
核心屬性Javascript基礎(chǔ)
變量類型
if語句
while語句
for語句
數(shù)組
DOM操作
八锈颗、Selenium篇
Selenium 誕生于 2004 年,當(dāng)在 ThoughtWorks 工作的 Jason Huggins 在測試一個(gè)內(nèi)部應(yīng)用時(shí)咪惠。作為一個(gè)聰明的家伙击吱,他意識(shí)到相對于每次改動(dòng)都需要手工進(jìn)行測試,他的時(shí)間應(yīng)該用得更有價(jià)值遥昧。他開發(fā)了一個(gè)可以驅(qū)動(dòng)頁面進(jìn)行交互的 Javascript 庫覆醇,能讓多瀏覽器自動(dòng)返回測試結(jié)果。那個(gè)庫最終變成了 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 (集成開發(fā)環(huán)境) 是一個(gè)創(chuàng)建測試腳本的原型工具。它是一個(gè) Firefox 插件威创,提供創(chuàng)建自動(dòng)化測試的建議接口落午。
框架原理
自動(dòng)化測試流程
python+selenium環(huán)境搭建
Selenium WebDriver API實(shí)戰(zhàn)
自動(dòng)化測試用例設(shè)計(jì)
Jenkins+SVN持續(xù)集成管理
九、unittest篇
自動(dòng)化測試的最后一步需要判斷結(jié)果是否正確那婉,而正確設(shè)置斷言可以幫助判斷測試用例的執(zhí)行結(jié)果板甘,從而提高自動(dòng)化測試的效率,python unittest 提供了一個(gè)比較完整的斷言方法详炬。
- Python+Unitest測試框架
生成HTMLTestRunner測試報(bào)告
測試套件
測試套件實(shí)例
整合HTMLTestRunner測試報(bào)告
易讀的測試報(bào)告
十、Robot Framwork篇
Robot Framework是一個(gè)基于Python可擴(kuò)展地關(guān)鍵字驅(qū)動(dòng)的測試自動(dòng)化框架,使用Apache License 2.0呛谜,由Robot Framework Foundation開發(fā)和贊助在跳。Robot Framework被廣泛地使用在端到端地驗(yàn)收測試以及ATDD(acceptance-test-driven development)中,生態(tài)體系非常豐富隐岛。
- Robot FrameWork原理
- Robot FrameWork環(huán)境搭建
- Robot FrameWork工具使用
- Robot FrameWork系統(tǒng)關(guān)鍵字
- Robot FrameWord用戶自定義關(guān)鍵字封裝
- RFS Web自動(dòng)化測試實(shí)戰(zhàn)
- RFS集成JQuery
- 數(shù)據(jù)庫自動(dòng)化測試實(shí)戰(zhàn)