html
功能測試人員,也就是咱們經常俗稱的進行點點點測試工程師。前 1-2 年作功能測試,使用其餘人開發的工具進行測試。這個階段的測試工做都比較初級,嚴重依賴於別人開發的工具和系統。當系統進行升級換代的時候,強哥會明顯的感受到有陣痛期,一下適應不了這種變化。前端
作了 2 年功能測試,強哥悟出了一個道理:功能測試人員通常最遵照行業規則,可是也最沒存在感。強哥發誓在下班之後學習自動化測試技術,擺脫這種隨便被人甩鍋的命運。python
自動化測試人員。強哥終於面試上了一個自動化測試的崗位,這一年天天晚上熬夜學習終於獲得了回報,試用期結束,強哥已經上手了第一份自動化測試的工做。web
他在部門內部受到了其餘同事尊重,尤爲是部門的功能測試人員,一雙雙膜拜的眼神。強哥內心竊喜,這一年的付出是值得的,如今我也能夠給別人臉色了。面試
自動化測試的工做內容,主要是使用編程語言編寫腳本啊,進行自動化測試。強哥明顯感到了測試效率的提高,一我的能夠幹兩我的的活,用老闆的話說:小強不錯,能打能扛。數據庫
2 年過去了,小強隱約感受到了幾點自動化測試工做的不足:編程
寫出來的代碼,功能測試人員看不懂,也沒有辦法用。平時他和功能測試的同事也是各幹各的,至關於在兩個部門。這就意味着,從老闆的角度來講,沒有發揮 1 + 1 > 2 的效應。flask
本身使用的是 Python 語言,部門的另一位自動化工程師用的是 Java 語言,她被招來作另外的項目測試。強哥很想去看看她的代碼是怎麼寫的,怎麼運行的,奈何看不懂,也不知道怎麼運行。同是一個崗位的人,卻沒辦法切磋技術,好不孤獨啊。後端
還有一個問題。前 3 個月本身寫的代碼,過幾個月本身再去看,竟然有點看不懂了,要調試一段時間才能弄清楚中間的思路。要是被別人知道了,確定會認爲本身很菜的,本身代碼本身都看不懂。瀏覽器
雖然看到了自動化崗位的一些不足,可是強哥內心清楚,相比以前的功能測試,瞧別人的臉色,如今簡直太幸福了。自從學習了 Python 自動化測試,他感受真正融入了這個行業,不由自主的開始關心行業動態,關心起 Python 這門編程語言的發展勢頭了。
在一次技術開發者大會上,強哥接觸到了 」測試開發「 這個崗位,心中好久的疑惑終於被解開了。進行技術分享的是國內某大型電商平臺的技術專家,詳細介紹了測試開發這個崗位的優點和進階路線。
強哥趕忙掏出一直放在雙肩包裏的袖珍筆記本,開始記錄:
測試開發是給測試部門開發交互界面友好的測試工具和效率工具,像你們熟知的 Postman 和 Jmeter 屬於測試開發的工做;
測試開發研發出來的產品,功能測試人員和其餘工做人員通過簡單培訓就能夠上手使用,充分發揮 1 + 1 > 2 的效應;
能夠將部門管理,BUG 管理,自動化運行,測試報告, 性能分析, 同事登陸等工做模塊所有集成到一個平臺,大大減小了部門內部和跨部門的溝通成本,提升整個部門和工做的工做效率。
測試開發是行業規則大的制定者。使用工具和平臺的人須要遵循這些規則。強哥終於知道本身之前作功能測試的時候是被誰左右了。他默默下定決心,要成爲測試開發,成爲規則制定者。
測試開發這個工做確實挺好的,商業價值和技術價值都很高,技術演講到後半段,強哥發現,事情也沒那麼美好,准入門檻挺高的,要學習的內容不少,初略總結下來,包含的最基本內容就有許多。
HTML,GUI ,手機端等頁面構建技術。用來給使用者觀察和使用的 UI 界面。強哥在自動化測試的時候學過 HTML,打算再學深一點,就能夠比較輕鬆的完成前端頁面技術積累。
服務端開發技術。最初強哥不理解這是個什麼技術,後來越聽越明白,其實就是進行測試的時候接觸的後端開發,之前常常和這幫人打交道,報了 BUG 去找他們,他們還死不認帳,幾回差點和他們打起來。強哥突然想到:若是我要學這個技術,那我豈不是能夠和後端開發作一樣的事情了?他們私底下都在作本身的產品和工具,我也能夠啊,搞很差還能融到資,賣點錢。
數據庫。數據庫這東西強哥也接觸過,不過了解得不太深刻,只會幾個簡單的 SQL 查詢語句,一旦設計到建表和多表查詢,那就只能召喚搜索引擎了。這方面可能還須要下點功夫。
服務部署。服務部署強哥仍是第一次聽,不少概念都不懂,不過有一個名詞強哥常常聽到,那就是 Docker,之前只知道概念,徹底不知道它幹嗎用的,今天終於算是啓蒙了。
聽完這個基礎技術準備,強哥感到熱血澎湃,都想馬上起身回家開始學習這些東西了。可沒過幾分鐘,站在臺上那位大佬就給他潑了一盆冷水。他一再強調,這些是入門測試開發的基礎內容,要真正開發一款好用的測試工具和平臺,只會簡單的使用這些技術是不夠的。
必需要對網絡協議有必定的瞭解,要對開發模式很是熟悉,要會使用版本控制,更重要的,要深刻編程語言的高級特性和編程技巧,若是 CS 基礎不夠,玩出來的都會是花架子,對職業發展沒有太多好處。
強哥心灰意冷,大學學的 CS 課程所有忘光了,如今要撿起來談何容易啊。沒想到一個小小的測試崗位要求這麼高。不過演講者仍是給出了一個比較可行的方法,那就是熟讀源碼,分析源碼。咱們使用的框架,好比 Selenium 和 Appium, 裏面包含了不少優秀的設計思想,強哥當年學習的時候被整得一臉懵逼,苦不堪言,一度想放棄,後來用得這次多了,源碼重讀的次數也愈來愈多,慢慢可以理解他們寫的代碼有多麼厲害了。想到這,強哥不禁得感嘆一聲,要是有我的帶我分析源碼該有多好啊,能少走好多彎路。
演講結束了,強哥決定回家試一試用 Python 語言寫一個最簡單的 UI 測試工具,在公交車上他已經思考好了大致的框架:
HTML 頁面展現;
Python 開發框架接受 HTML 頁面上的請求。如今還不知道有什麼框架,回去瞭解一下。
以前寫好的測試腳本。將腳本封裝成函數或類,開發框架接受到請求,調用對應的方法就完成了自動化測試。
回到家,強哥喝了口水就開始瞭解開發框架,上網瞭解了 Flask 和 Django 兩大框架,他趕忙把想到的架構圖畫下來。
若是用 Java 開發,把中間的開發框架換成 Springboot 就能夠了。
先把 HTML 寫好:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lemon Web Test</title>
</head>
<body>
請選擇你要測試的項目:
<form action="http://127.0.0.1:5000/ui-test/" method="get">
<select name="project">
<option>百度</option>
<option>豆瓣</option>
<option>Github</option>
</select>
<input type="submit">
</form>
</body>
</html>
強哥看網上 Flask 用的代碼很少,他初略看了一下官方文檔就開始依樣畫葫蘆寫簡單的 Demo。
from flask import Flask, request
# 初始化服務對象
app = Flask(__name__)
route("/ui-test/") # 定義訪問的網址 .
def ui_test():
# 獲取 HTML 數據,要測試的項目或者功能
project = request.args.get('project')
# 自動化測試腳本封裝的函數
if project == '百度':
# auto_test()
# 返回給用戶操做成功
return "test success"
# 運行服務,開放端口 5000
app.run(port=5000)
至於自動化腳本,他從之前寫的 Selenium 腳本隨便抽了個最簡單的拿出來用,封裝成 auto_test 函數。
def auto_test():
# 初始化了一個瀏覽器
driver = webdriver.Chrome()
# 進入項目路徑
driver.get('http://www.baidu.com')
# 找到要輸入的輸入框, 元素定位
input_ele = driver.find_element_by_id('kw')
input_ele.send_keys('檸檬班')
# 提交內容
input_ele.submit()
# 定位元素
e = WebDriverWait(driver, 20).until(
ec.presence_of_element_located((By.CSS_SELECTOR, 'h3.t')))
# 測試結果是否經過
if '檸檬班_騰訊課堂' in e.text:
driver.quit()
return 'Test Success'
driver.quit()