哪些網(wǎng)站做京東的團(tuán)購(gòu)/seo優(yōu)化包括哪些內(nèi)容
一,線性測(cè)試
1.概念:
通過(guò)錄制或編寫(xiě)對(duì)應(yīng)應(yīng)用程序的操作步驟產(chǎn)生的線性腳本。單純的來(lái)模擬用戶完整的操作場(chǎng)景。
(操作,重復(fù)操作,數(shù)據(jù))都混合在一起。
2.優(yōu)點(diǎn):
每個(gè)腳本相對(duì)獨(dú)立,且不產(chǎn)生其他依賴和調(diào)用。
3.缺點(diǎn):
開(kāi)發(fā)成本高,用例之間存在重復(fù)的操作。比如重復(fù)的用戶登錄和退出。
維護(hù)成本高,由于重復(fù)的操作,當(dāng)重復(fù)的操作發(fā)生改變時(shí),則需要逐一進(jìn)行腳本的修改。
4.線性測(cè)試實(shí)例
用戶登錄
以下的用戶名密碼到時(shí)候自己去申請(qǐng),就不將筆者的用戶密碼貼出來(lái)了。
# coding=utf-8
'''
Created on 2016-7-20
@author: Jennifer
Project:簡(jiǎn)單元素操作登錄126郵箱,元素的clear(),send_keys(),click()操作
在定位的時(shí)候發(fā)現(xiàn)有些元素定位不到,最后發(fā)現(xiàn)有iframe,frame中實(shí)際上是嵌入了另一個(gè)頁(yè)面。
如果iframe有name或id的話,直接使用switch_to_frame("name值")或switch_to_frame("id值"),
這是最理想的方法,也是最簡(jiǎn)單好用的方法。
'''
from selenium import webdriver
import timedriver=webdriver.Firefox()
driver.get(r'http://www.126.com/') #字符串加r,防止轉(zhuǎn)義。
time.sleep(3)print '開(kāi)始登錄郵箱'try:assert '126' in driver.title #title是變量,不能title()
except AssertionError:print "error:網(wǎng)址輸入不正確"
else:print "記錄日志:網(wǎng)址輸入正確"# driver.switch_to_frame('x-URS-iframe') #跳轉(zhuǎn)到iframe框架driver.switch_to.frame('x-URS-iframe') #同上面語(yǔ)句一樣,跳轉(zhuǎn)到iframe框架username=driver.find_element_by_name('email')username.clear()username.send_keys('Jennifer···')time.sleep(0.1)userpasswd=driver.find_element_by_name('password')userpasswd.clear()userpasswd.send_keys('·····')time.sleep(0.1)loginbt=driver.find_element_by_id('dologin')loginbt.click()time.sleep(3)try:assert '網(wǎng)易郵箱' in driver.titleexcept AssertionError:print '郵箱登錄失敗'else:print '郵箱登錄成功'finally:#操作:收信,寫(xiě)信等操作,暫不寫(xiě)例子了driver.quit()print '測(cè)試結(jié)束'
二,模塊化驅(qū)動(dòng)測(cè)試
1.概念:
將重復(fù)的操作獨(dú)立成功共模塊,當(dāng)用例執(zhí)行過(guò)程中需要用到這一模塊操作時(shí)則被調(diào)用。
操作+(重復(fù)操作,數(shù)據(jù))混合在一起。
2.優(yōu)點(diǎn):
由于最大限度消除了重復(fù),從而提高了開(kāi)發(fā)效率和提高測(cè)試用例的可維護(hù)性。
3.缺點(diǎn):
雖然模塊化的步驟相同,但是測(cè)試數(shù)據(jù)不同。比如說(shuō)重復(fù)的登錄模塊,如果登錄用戶不同,依舊要重復(fù)編寫(xiě)登錄腳本。
4.實(shí)例
公共模塊:對(duì)登陸和退出進(jìn)行模塊化封裝
以下的用戶名密碼到時(shí)候自己去申請(qǐng),就不將筆者的用戶密碼貼出來(lái)了。
# coding=utf-8
'''
Created on 2016-7-27
@author: Jennifer
Project:模塊化驅(qū)動(dòng)測(cè)試實(shí)例,將重復(fù)的登錄腳本放在單獨(dú)的腳本中供其他用例調(diào)用
'''
import time
class Login():def user_login(self,driver):username=driver.find_element_by_name('email')username.clear()username.send_keys('username')time.sleep(0.1)userpasswd=driver.find_element_by_name('password')userpasswd.clear()userpasswd.send_keys('password')time.sleep(0.1)loginbt=driver.find_element_by_id('dologin')loginbt.click()time.sleep(3)def user_logout(self,driver):driver.find_element_by_link_text(u'退出').click()driver.quit()
寫(xiě)信用例:以下代碼用了各種定位方法,值得學(xué)習(xí),后續(xù)再重新對(duì)這部分進(jìn)行總結(jié)
直接調(diào)用模塊的登錄和退出方法。
收信用例:
直接調(diào)用模塊的登錄和退出方法。
# coding=utf-8
'''
Created on 2016-7-27
@author: Jennifer
Project:接收郵件
'''
from selenium import webdriver
import timefrom test_5_2_public import Login
driver=webdriver.Firefox()
driver.implicitly_wait(30)
driver.get(r'http://www.126.com/') #字符串加r,防止轉(zhuǎn)義。
time.sleep(3)
driver.switch_to.frame('x-URS-iframe')
#調(diào)用登錄模塊
Login().user_login(driver)
time.sleep(10)
#接收郵件
#點(diǎn)擊收信
#以下定位是查找span標(biāo)簽有個(gè)文本(text)包含(contains)'收 信' 的元素,該定位方法重要
driver.find_element_by_xpath("//span[contains(text(),'收 信')]").click()#校驗(yàn)是否進(jìn)入收件箱,沒(méi)報(bào)錯(cuò)即進(jìn)入
try:#點(diǎn)擊其中一封郵件driver.find_element_by_xpath("//div[@sign='letter']").click()
except Exception as e:print e
else:print '成功收信'#調(diào)用退出模塊
Login().user_logout(driver)
三,數(shù)據(jù)驅(qū)動(dòng)測(cè)試
1.概念:
它將測(cè)試中的測(cè)試數(shù)據(jù)和操作分離,數(shù)據(jù)存放在另外一個(gè)文件中單獨(dú)維護(hù)。
通過(guò)數(shù)據(jù)的改變從而驅(qū)動(dòng)自動(dòng)化測(cè)試的執(zhí)行,最終引起測(cè)試結(jié)果的改變。
操作+重復(fù)操作+數(shù)據(jù)分開(kāi)。
2.優(yōu)點(diǎn):
通過(guò)這種方式,將數(shù)據(jù)和重復(fù)操作分開(kāi),可以快速增加相似測(cè)試,完成不同數(shù)據(jù)情況下的測(cè)試。
3.缺點(diǎn)
暫無(wú)
4.實(shí)例
從excel表格讀取用戶名密碼,登錄郵箱。
以下的用戶名密碼到時(shí)候自己去申請(qǐng),就不將筆者的用戶密碼貼出來(lái)了。
# coding=utf-8 ''' Created on 2016-7-28 @author: Jennifer Project:數(shù)據(jù)驅(qū)動(dòng)測(cè)試,數(shù)據(jù)保存在excel中,需要導(dǎo)入xlrd模塊 ''' from selenium import webdriver import time import xlrd#將用戶密碼表格轉(zhuǎn)換為用戶密碼列表 def exceltolist(excelfile,colnameindex=0,by_index=0):excelfile=xlrd.open_workbook(excelfile) #打開(kāi)excel表格 # table = excelfile.sheets()[by_index] #默認(rèn)獲取sheet0頁(yè)table = excelfile.sheet_by_index(by_index)#默認(rèn)獲取sheet0頁(yè)nrows=table.nrows #獲取excel的sheet0頁(yè)的行數(shù)colnames=table.row_values(colnameindex) #默認(rèn)獲取第0行的列表數(shù)據(jù):name和password兩個(gè)值list =[] #建一個(gè)空列表,用來(lái)存放用戶密碼字典for rownum in range(1,nrows): #初始行為0,從第1行開(kāi)始row = table.row_values(rownum) #獲取某一行的列表數(shù)據(jù)if row:app = {} #建立一個(gè)空字典,存放某一組用戶密碼數(shù)據(jù)for i in range(len(colnames)): #目前是2app[colnames[i]] = row[i] #字典新增數(shù)據(jù):循環(huán)兩次,字典新增兩對(duì)key-valuelist.append(app) #將新增的字典數(shù)據(jù),添加到列表數(shù)據(jù)中 return listdef Login():file=r'D:\pythontest\rightpassword\userpassword.xls'userlist=exceltolist(file)for i in range(len(userlist)):driver=webdriver.Firefox()driver.get(r'http://www.126.com/') #字符串加r,防止轉(zhuǎn)義。time.sleep(3)driver.switch_to.frame('x-URS-iframe') #同上面語(yǔ)句一樣,跳轉(zhuǎn)到iframe框架username=driver.find_element_by_name('email')username.clear()username.send_keys(userlist[i]['name'])time.sleep(0.1)userpasswd=driver.find_element_by_name('password')userpasswd.clear()userpasswd.send_keys(userlist[i]['password'])time.sleep(0.1)loginbt=driver.find_element_by_id('dologin')loginbt.click()time.sleep(3)try:assert '網(wǎng)易郵箱' in driver.titleexcept AssertionError:print '用戶%s郵箱登錄失敗'%(userlist[i]['name'])else:print '用戶%s郵箱登錄成功'%(userlist[i]['name'])finally:driver.quit()if __name__=='__main__':Login()
四,關(guān)鍵字驅(qū)動(dòng)測(cè)試
1.概念:
通過(guò)關(guān)鍵字的改變從而驅(qū)動(dòng)自動(dòng)化測(cè)試的執(zhí)行,最終引起測(cè)試結(jié)果的改變。關(guān)鍵字驅(qū)動(dòng)工具有:RobotFramework(RIDE)。
2.優(yōu)點(diǎn)
視頻里有講解
自動(dòng)化測(cè)試【Requests接口自動(dòng)化測(cè)試實(shí)戰(zhàn)】