今天可以說是一個特殊的日子,上午參加了集團測試小伙伴們的述職讓自己存在頗多感觸,還得弄個ppt幾天后和他們一起分享。無奈~~~~說說那些事。
回想剛畢業的自己懵懵懂懂,領導問會不會性能、會不會自動化,我馬上回答的肯定是:會!最后無論好差都交差了,不過回想起來再去看看那時候自己弄的東西時顯得拿不出手。同感在今天的述職中也遇見了很多小伙伴都說到了這樣的事情讓我倍感亞歷山大,不過心里在想還好幾個大牛沒來不然今天這個就坑了。遇見的基本如下:工作了近兩年的A小伙伴上去說我這幾個月做了什么收獲什么,在做了什么時就說我對XXX系統進行了性能測試,在查看了各項數據后對系統進行評估是合格的。對xxx功能模塊進行了自動化測試,對每次的迭代更新后都測試了減少了工作量。於是乎展示了他部分的性能報告、自動化腳本等,完了之后領導讓做點評,這讓我不知從何說起,在另外一個同事的慫恿下說了點點。結束后上去了B\C......近10位小伙伴,但是在整個過程中都有很多相同的問題,這其實和當初的自己一樣,校招略坑!
簡單說說幾個方面吧,自動化測試(無論是web還是以移動端)不是大家經常接觸的隨便找一個軟件然后錄制一下最后改吧改吧都可以了的,你那樣弄出來的自動化腳本是否擁有可重用性?是增加了工作量還是減少了工作量?是不是只是覺得自己這樣做了有高大上的感覺?其實這些做的都是無用功。對自動化有一定的了解的人都知道所謂的自動化都是基於元素來的,如果在一個系統不穩定的、迭代塊的情況下做自動化也是徒勞的。如果說自己連功能都做不好也就別想着做自動化了,如果自己連功能的測試用力都無法寫好那么也別想寫好自動化的測試用例了。前段時間和小伙伴分享的時候他們驚奇的說:自動化測試還要寫測試用力?當時我不知道怎么來回答,一臉茫然。很早的時候大家都再說用例的可執行性,別人寫的用例你看不懂你肯定會罵人的,那么自動化測試一樣,你寫的自動化測試用例別人看不懂就沒法寫腳本了。換而言之當計算機看不懂我們寫的代碼時那么他不會罵人只是不執行報錯而已。所以自動化測試用例是自動化測試的基礎(當然前提是系統穩定什么的)。比如一個登錄的測試用例怎么寫呢?小伙伴們都是:1、在用戶欄輸入xxxx,2、在密碼欄輸入xxxx,3、點擊登錄按鈕,登錄成功。很多小伙伴都是這樣,其實不對。相對標准的用例應該是這樣:
1、打開Firefox()瀏覽器
回想剛畢業的自己懵懵懂懂,領導問會不會性能、會不會自動化,我馬上回答的肯定是:會!最后無論好差都交差了,不過回想起來再去看看那時候自己弄的東西時顯得拿不出手。同感在今天的述職中也遇見了很多小伙伴都說到了這樣的事情讓我倍感亞歷山大,不過心里在想還好幾個大牛沒來不然今天這個就坑了。遇見的基本如下:工作了近兩年的A小伙伴上去說我這幾個月做了什么收獲什么,在做了什么時就說我對XXX系統進行了性能測試,在查看了各項數據后對系統進行評估是合格的。對xxx功能模塊進行了自動化測試,對每次的迭代更新后都測試了減少了工作量。於是乎展示了他部分的性能報告、自動化腳本等,完了之后領導讓做點評,這讓我不知從何說起,在另外一個同事的慫恿下說了點點。結束后上去了B\C......近10位小伙伴,但是在整個過程中都有很多相同的問題,這其實和當初的自己一樣,校招略坑!
簡單說說幾個方面吧,自動化測試(無論是web還是以移動端)不是大家經常接觸的隨便找一個軟件然后錄制一下最后改吧改吧都可以了的,你那樣弄出來的自動化腳本是否擁有可重用性?是增加了工作量還是減少了工作量?是不是只是覺得自己這樣做了有高大上的感覺?其實這些做的都是無用功。對自動化有一定的了解的人都知道所謂的自動化都是基於元素來的,如果在一個系統不穩定的、迭代塊的情況下做自動化也是徒勞的。如果說自己連功能都做不好也就別想着做自動化了,如果自己連功能的測試用力都無法寫好那么也別想寫好自動化的測試用例了。前段時間和小伙伴分享的時候他們驚奇的說:自動化測試還要寫測試用力?當時我不知道怎么來回答,一臉茫然。很早的時候大家都再說用例的可執行性,別人寫的用例你看不懂你肯定會罵人的,那么自動化測試一樣,你寫的自動化測試用例別人看不懂就沒法寫腳本了。換而言之當計算機看不懂我們寫的代碼時那么他不會罵人只是不執行報錯而已。所以自動化測試用例是自動化測試的基礎(當然前提是系統穩定什么的)。比如一個登錄的測試用例怎么寫呢?小伙伴們都是:1、在用戶欄輸入xxxx,2、在密碼欄輸入xxxx,3、點擊登錄按鈕,登錄成功。很多小伙伴都是這樣,其實不對。相對標准的用例應該是這樣:
1、打開Firefox()瀏覽器
2、在打開的Firefox()瀏覽器地址欄輸入"
http://www.xxxxxx.com"
3、在id為username的用戶欄輸入正確的用戶帳號:xxxxxxx
4、在id為password的密碼欄輸入正確的密碼:xxxxxx
5、點擊id為login的“登錄”按鈕
6、用戶登錄成功,跳轉到xxxxx頁面
有的小朋友說這樣太麻煩了,其實這還不算標准的,其實我們還有很多的東西沒有寫出來。比如你是不是應該在第6條后面再加一條斷言呢?登錄成功沒呢?登錄后跳轉的頁面對不呢?登錄后的用戶信息對嗎?這些你都要考慮進去,如果出現串cookie的情況所以這些都是必要的!最后小伙伴們都問了那我們是不是這樣將用例翻譯成腳本就行了呢?答案肯定是否定呢?你覺得這樣的腳本有用嗎?我覺得沒有!因為這腳本沒有可用性,沒有可維護性。why?如果我要換一個帳號登錄你怎么辦?不斷更改?如果元素id變了呢?這有復用性嗎?分享當時小伙伴們怒了,那這自動化根本就沒用還麻煩。答案其實是否定的,只是我們方式不對而已。按照剛才的翻譯出來是這樣。
一個登錄的自動化測試用例就是這樣的(完成度95%)。
性能測試需要的東西很多暫時先提一下:開發語言(方便些性能腳本)、中間件知識、服務器知識、數據庫知識、網絡知識這些差不多都需要會。所以這不是簡單活,后面簡單說下,睡覺了!
有的小朋友說這樣太麻煩了,其實這還不算標准的,其實我們還有很多的東西沒有寫出來。比如你是不是應該在第6條后面再加一條斷言呢?登錄成功沒呢?登錄后跳轉的頁面對不呢?登錄后的用戶信息對嗎?這些你都要考慮進去,如果出現串cookie的情況所以這些都是必要的!最后小伙伴們都問了那我們是不是這樣將用例翻譯成腳本就行了呢?答案肯定是否定呢?你覺得這樣的腳本有用嗎?我覺得沒有!因為這腳本沒有可用性,沒有可維護性。why?如果我要換一個帳號登錄你怎么辦?不斷更改?如果元素id變了呢?這有復用性嗎?分享當時小伙伴們怒了,那這自動化根本就沒用還麻煩。答案其實是否定的,只是我們方式不對而已。按照剛才的翻譯出來是這樣。
from selenium import webdriver
#1、打開Firefox()瀏覽器
dr = webdriver.Firefox()
#2、在打開的Firefox()瀏覽器地址欄輸入"
http://www.xxxxxx.com"
dr.get('
http://www.xxxxx.cm')
#3、在id為username的用戶欄輸入正確的用戶帳號:xxxxxxx
dr.find_element_by_id("username").send_keys("xxxxxx")
#4、在id為password的密碼欄輸入正確的密碼:xxxxxx
dr.find_element_by_id("password").send_keys("xxxxxx")
#5、點擊id為login的“登錄”按鈕
dr.find_element_by_id('login').click()
#6、用戶登錄成功,跳轉到xxxxx頁面
assert"xxxx" in dr.title #'xxxx'是否在title里面 也可以添加其他的斷言
草草的寫了一下最后的一個登錄測試腳本 應該是這樣的:
草草的寫了一下最后的一個登錄測試腳本 應該是這樣的:
from selenium import webdriver
import unittest
class TestLogin(unittest.TestCase):
Login_url = '
http://www.xxxx.com'
dr = None
def setUp(self):
print 'test start'
self.dr = webdriver.Firefox()
def tearDown(self):
self.dr.quit()
def test_Login(self):
username = 'sssss'
password = 'xxxxx' #可以調用外面的
self.dr.get(self.Login_url)
self.login(username,password)
t = self.dr.find_element_by_id('login') #查找元素為login的東西 登錄后的
self.assertTrue(username in t.text) #斷言
pass
def login(self,user,pwd):
#3、在id為username的用戶欄輸入正確的用戶帳號:xxxxxxx
self.dr.find_element_by_id("username").send_keys(user)
#4、在id為password的密碼欄輸入正確的密碼:xxxxxx
self.dr.find_element_by_id("password").send_keys(pwd)
#5、點擊id為login的“登錄”按鈕
self.dr.find_element_by_id('login').click()
if __name__ == '__main__':
unittest.main()
一個登錄的自動化測試用例就是這樣的(完成度95%)。
性能測試需要的東西很多暫時先提一下:開發語言(方便些性能腳本)、中間件知識、服務器知識、數據庫知識、網絡知識這些差不多都需要會。所以這不是簡單活,后面簡單說下,睡覺了!