先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7
深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年最新軟件測試全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,涵蓋了95%以上軟件測試知識點,真正體系化!
由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、大綱路線、講解視頻,并且后續(xù)會持續(xù)更新
如果你需要這些資料,可以添加V獲?。簐ip1024b (備注軟件測試)
正文
2. 基本流程
基本的接口功能自動化測試流程如下:
需求分析 -> 用例設(shè)計 -> 腳本開發(fā) -> 測試執(zhí)行 -> 結(jié)果分析
2.1 示例接口
接口名稱:豆瓣電影搜索
地址啥的會被屏蔽,發(fā)不出來,放在文末了
3. 需求分析
需求分析是參考需求、設(shè)計等文檔,在了解需求的基礎(chǔ)上還需清楚內(nèi)部的實現(xiàn)邏輯,并且可以在這一階段提出需求、設(shè)計存在的不合理或遺漏之處。
如:豆瓣電影搜索接口,我理解的需求即是支持對片名,演職人員及標(biāo)簽的搜索,并分頁返回搜索結(jié)果。
4. 用例設(shè)計
用例設(shè)計是在理解接口測試需求的基礎(chǔ)上,使用MindManager或XMind等思維導(dǎo)圖軟件編寫測試用例設(shè)計,主要內(nèi)容包括參數(shù)校驗,功能校驗、業(yè)務(wù)場景校驗、安全性及性能校驗等,常用的用例設(shè)計方法有等價類劃分法,邊界值分析法,場景分析法,因果圖,正交表等。
5. 腳本開發(fā)
依據(jù)上面編寫的測試用例設(shè)計,我們使用python+nosetests框架編寫了相關(guān)自動化測試腳本。可以完整實現(xiàn)接口自動化測試、自動執(zhí)行及郵件發(fā)送測試報告功能。
5.1 相關(guān)lib安裝
必要的lib庫如下,使用pip命令安裝即可:
pip install nose pip install nose-html-reporting pip install requests
5.2 接口調(diào)用
使用requests庫,我們可以很方便的編寫上述接口調(diào)用方法(如搜索q=劉德華,示例代碼如下):
#coding=utf-8 import requests import json url = ‘1’ params=dict(q=u’劉德華’) r = requests.get(url, params=params) print ‘Search Params:\n’, json.dumps(params, ensure_ascii=False) print ‘Search Response:\n’, json.dumps(r.json(), ensure_ascii=False, indent=4)
在實際編寫自動化測試腳本時,我們需要進(jìn)行一些封裝。如下代碼中我們對豆瓣電影搜索接口進(jìn)行了封裝,test_q方法只需使用nosetests提供的yield方法即可很方便的循環(huán)執(zhí)行列表qs中每一個測試集:
class test_doubanSearch(object): @staticmethod def search(params, expectNum=None): url = ‘1’ r = requests.get(url, params=params) print ‘Search Params:\n’, json.dumps(params, ensure_ascii=False) print ‘Search Response:\n’, json.dumps(r.json(), ensure_ascii=False, indent=4) def test_q(self): # 校驗搜索條件 q qs = [u’白夜追兇’, u’大話西游’, u’周星馳’, u’張藝謀’, u’周星馳,吳孟達(dá)’, u’張藝謀,鞏俐’, u’周星馳,大話西游’, u’白夜追兇,潘粵明’] for q in qs: params = dict(q=q) f = partial(test_doubanSearch.search, params) f.description = json.dumps(params, ensure_ascii=False).encode(‘utf-8’) yield (f,)
我們按照測試用例設(shè)計,依次編寫每個功能的自動化測試腳本即可。
5.3 結(jié)果校驗
在手工測試接口的時候,我們需要通過接口返回的結(jié)果判斷本次測試是否通過,自動化測試也是如此。
對于本次的接口,我們搜索“q=劉德華”,我們需要判斷返回的結(jié)果中是否含有“演職人員劉德華或片名劉德華”,搜索“tag=喜劇”時,需要判斷返回的結(jié)果中電影類型是否為“喜劇”,結(jié)果分頁時需要校驗返回的結(jié)果數(shù)是否正確等。完整結(jié)果校驗代碼如下:
class check_response(): @staticmethod def check_result(response, params, expectNum=None): # 由于搜索結(jié)果存在模糊匹配的情況,這里簡單處理只校驗第一個返回結(jié)果的正確性 if expectNum is not None: # 期望結(jié)果數(shù)目不為None時,只判斷返回結(jié)果數(shù)目 eq_(expectNum, len(response[‘subjects’]), ‘{0}!={1}’.format(expectNum, len(response[‘subjects’]))) else: if not response[‘subjects’]: # 結(jié)果為空,直接返回失敗 assert False else: # 結(jié)果不為空,校驗第一個結(jié)果 subject = response[‘subjects’][0] # 先校驗搜索條件tag if params.get(‘tag’): for word in params[‘tag’].split(‘,’): genres = subject[‘genres’] ok_(word in genres, ‘Check {0} failed!’.format(word.encode(‘utf-8’))) # 再校驗搜索條件q elif params.get(‘q’): # 依次判斷片名,導(dǎo)演或演員中是否含有搜索詞,任意一個含有則返回成功 for word in params[‘q’].split(‘,’): title = [subject[‘title’]] casts = [i[‘name’] for i in subject[‘casts’]] directors = [i[‘name’] for i in subject[‘directors’]] total = title + casts + directors ok_(any(word.lower() in i.lower() for i in total), ‘Check {0} failed!’.format(word.encode(‘utf-8’))) @staticmethod def check_pageSize(response): # 判斷分頁結(jié)果數(shù)目是否正確 count = response.get(‘count’) start = response.get(‘start’) total = response.get(‘total’) diff = total - start if diff >= count: expectPageSize = count elif count > diff > 0: expectPageSize = diff else: expectPageSize = 0 eq_(expectPageSize, len(response[‘subjects’]), ‘{0}!={1}’.format(expectPageSize, len(response[‘subjects’])))
5.4 執(zhí)行測試
對于上述測試腳本,我們使用nosetests命令可以方便的運行自動化測試,并可使用nose-html-reporting插件生成html格式測試報告。
運行命令如下:
nosetests -v test_doubanSearch.py:test_doubanSearch --with-html --html-report=TestReport.html
5.5 發(fā)送郵件報告
測試完成之后,我們可以使用smtplib模塊提供的方法發(fā)送html格式測試報告?;玖鞒淌亲x取測試報告 -> 添加郵件內(nèi)容及附件 -> 連接郵件服務(wù)器 -> 發(fā)送郵件 -> 退出,示例代碼如下:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def send_mail(): # 讀取測試報告內(nèi)容 with open(report_file, ‘r’) as f: content = f.read().decode(‘utf-8’) msg = MIMEMultipart(‘mixed’) # 添加郵件內(nèi)容 msg_html = MIMEText(content, ‘html’, ‘utf-8’) msg.attach(msg_html) # 添加附件 msg_attachment = MIMEText(content, ‘html’, ‘utf-8’) msg_attachment[“Content-Disposition”] = ‘a(chǎn)ttachment; filename=“{0}”’.format(report_file) msg.attach(msg_attachment) msg[‘Subject’] = mail_subjet msg[‘From’] = mail_user msg[‘To’] = ‘;’.join(mail_to) try: # 連接郵件服務(wù)器 s = smtplib.SMTP(mail_host, 25) # 登陸 s.login(mail_user, mail_pwd) # 發(fā)送郵件 s.sendmail(mail_user, mail_to, msg.as_string()) # 退出 s.quit() except Exception as e: print "Exceptioin ", e
6. 結(jié)果分析
打開nosetests運行完成后生成的測試報告,可以看出本次測試共執(zhí)行了51條測試用例,50條成功,1條失敗。
失敗的用例可以看到傳入的參數(shù)是:{“count”: -10, “tag”: “喜劇”},此時返回的結(jié)果數(shù)與我們的期望結(jié)果不一致(count為負(fù)數(shù)時,期望結(jié)果是接口報錯或使用默認(rèn)值20,但實際返回的結(jié)果數(shù)目是189。趕緊去給豆瓣提bug啦- -)
7. 測試報告
最終發(fā)送測試報告郵件,截圖如下:
重點:學(xué)習(xí)資料學(xué)習(xí)當(dāng)然離不開資料,這里當(dāng)然也給你們準(zhǔn)備了600G的學(xué)習(xí)資料
【需要的可以掃描文章末尾的qq群二維碼自助拿走】
【記得(備注“csdn000”)】
【或私信000】
網(wǎng)上學(xué)習(xí)資料一大堆,但如果學(xué)到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。
需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip1024b (備注軟件測試)
一個人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!
,可以添加V獲?。簐ip1024b (備注軟件測試)**
[外鏈圖片轉(zhuǎn)存中…(img-A1NVpKFf-1713222806625)]文章來源:http://www.zghlxwxcb.cn/news/detail-857547.html
一個人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!文章來源地址http://www.zghlxwxcb.cn/news/detail-857547.html
到了這里,關(guān)于接口測試的流程和步驟,主要測試哪些方面,測試工具,測試用例,以及測試框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!