談談工做中的那些事,自動化、性能、接口測試!

今天能夠說是一個特殊的日子,上午參加了集團測試小夥伴們的述職讓本身存在頗多感觸,還得弄個ppt幾天後和他們一塊兒分享。無奈~~~~說說那些事。
        回想剛畢業的本身懵懵懂懂,領導問會不會性能、會不會自動化,我立刻回答的確定是:會!最後不管好差都交差了,不過回想起來再去看看那時候本身弄的東西時顯得拿不出手。同感在今天的述職中也碰見了不少小夥伴都說到了這樣的事情讓我倍感亞歷山大,不過內心在想還好幾個大牛沒來否則今天這個就坑了。碰見的基本以下:工做了近兩年的A小夥伴上去說我這幾個月作了什麼收穫什麼,在作了什麼時就說我對XXX系統進行了性能測試,在查看了各項數據後對系統進行評估是合格的。對xxx功能模塊進行了自動化測試,對每次的迭代更新後都測試了減小了工做量。因而乎展現了他部分的性能報告、自動化腳本等,完了以後領導讓作點評,這讓我不知從何提及,在另一個同事的慫恿下說了點點。結束後上去了B\C......近10位小夥伴,可是在整個過程當中都有不少相同的問題,這其實和當初的本身同樣,校招略坑!
        簡單說說幾個方面吧,自動化測試(不管是web仍是以移動端)不是你們常常接觸的隨便找一個軟件而後錄製一下最後改吧改吧均可以了的,你那樣弄出來的自動化腳本是否擁有可重用性?是增長了工做量仍是減小了工做量?是否是隻是以爲本身這樣作了有高大上的感受?其實這些作的都是無用功。對自動化有必定的瞭解的人都知道所謂的自動化都是基於元素來的,若是在一個系統不穩定的、迭代塊的狀況下作自動化也是徒勞的。若是說本身連功能都作很差也就別想着作自動化了,若是本身連功能的測試用力都沒法寫好那麼也別想寫好自動化的測試用例了。前段時間和小夥伴分享的時候他們驚奇的說:自動化測試還要寫測試用力?當時我不知道怎麼來回答,一臉茫然。很早的時候你們都再說用例的可執行性,別人寫的用例你看不懂你確定會罵人的,那麼自動化測試同樣,你寫的自動化測試用例別人看不懂就無法寫腳本了。換而言之當計算機看不懂咱們寫的代碼時那麼他不會罵人只是不執行報錯而已。因此自動化測試用例是自動化測試的基礎(固然前提是系統穩定什麼的)。好比一個登陸的測試用例怎麼寫呢?小夥伴們都是:一、在用戶欄輸入xxxx,二、在密碼欄輸入xxxx,三、點擊登陸按鈕,登陸成功。不少小夥伴都是這樣,其實不對。相對標準的用例應該是這樣:
一、打開Firefox()瀏覽器
二、在打開的Firefox()瀏覽器地址欄輸入" http://www.xxxxxx.com"
三、在id爲username的用戶欄輸入正確的用戶賬號:xxxxxxx
四、在id爲password的密碼欄輸入正確的密碼:xxxxxx
五、點擊id爲login的「登陸」按鈕
六、用戶登陸成功,跳轉到xxxxx頁面
有的小朋友說這樣太麻煩了,其實這還不算標準的,其實咱們還有不少的東西沒有寫出來。好比你是否是應該在第6條後面再加一條斷言呢?登陸成功沒呢?登陸後跳轉的頁面對不呢?登陸後的用戶信息對嗎?這些你都要考慮進去,若是出現串cookie的狀況因此這些都是必要的!最後小夥伴們都問了那咱們是否是這樣將用例翻譯成腳本就好了呢?答案確定是否認呢?你以爲這樣的腳本有用嗎?我以爲沒有!由於這腳本沒有可用性,沒有可維護性。why?若是我要換一個賬號登陸你怎麼辦?不斷更改?若是元素id變了呢?這有複用性嗎?分享當時小夥伴們怒了,那這自動化根本就沒用還麻煩。答案實際上是否認的,只是咱們方式不對而已。按照剛纔的翻譯出來是這樣。
from selenium import webdriver
#一、打開Firefox()瀏覽器
dr = webdriver.Firefox()
#二、在打開的Firefox()瀏覽器地址欄輸入" http://www.xxxxxx.com"
dr.get(' http://www.xxxxx.cm')
#三、在id爲username的用戶欄輸入正確的用戶賬號:xxxxxxx
dr.find_element_by_id("username").send_keys("xxxxxx")
#四、在id爲password的密碼欄輸入正確的密碼:xxxxxx
dr.find_element_by_id("password").send_keys("xxxxxx")
#五、點擊id爲login的「登陸」按鈕
dr.find_element_by_id('login').click()
#六、用戶登陸成功,跳轉到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):
#三、在id爲username的用戶欄輸入正確的用戶賬號:xxxxxxx
self.dr.find_element_by_id("username").send_keys(user)
#四、在id爲password的密碼欄輸入正確的密碼:xxxxxx
self.dr.find_element_by_id("password").send_keys(pwd)
#五、點擊id爲login的「登陸」按鈕
self.dr.find_element_by_id('login').click()
if __name__ == '__main__':
unittest.main() 
一個登陸的自動化測試用例就是這樣的(完成度95%)。         性能測試須要的東西不少暫時先提一下:開發語言(方便些性能腳本)、中間件知識、服務器知識、數據庫知識、網絡知識這些差很少都須要會。因此這不是簡單活,後面簡單說下,睡覺了! 
相關文章
相關標籤/搜索