一狞换、測(cè)試從業(yè)者python知識(shí)學(xué)習(xí)體系整理
測(cè)試從業(yè)者學(xué)習(xí)python應(yīng)該掌握的內(nèi)容
首先是變量和數(shù)據(jù)類型苟呐,其次列表汪厨、字典以及Json的一些處理,再者就是循環(huán)判斷以及函數(shù)或類這些內(nèi)
其中的重點(diǎn):
1.循環(huán)判斷以及字典這塊是重點(diǎn)
2.函數(shù)和類蜂厅,類的學(xué)習(xí)這塊要花較多時(shí)間去學(xué)習(xí)它的集成匪凡、封裝、多態(tài)等掘猿,這是一個(gè)不斷積累的過程病游,先把前面的東西弄清楚了,然后去學(xué)如何用函數(shù)的方式去處理這些比較基礎(chǔ)的內(nèi)容
python大綱學(xué)習(xí)內(nèi)容詳見另一篇文章
二稠通、python接口自動(dòng)化
API測(cè)試不同于UI自動(dòng)化測(cè)試衬衬,它主要關(guān)注系統(tǒng)架構(gòu)的業(yè)務(wù)邏輯層,或者說多個(gè)或者兩模塊的邏輯關(guān)系改橘,重點(diǎn)在邏輯關(guān)系滋尉。
做接口測(cè)試前的準(zhǔn)備工作
1、接口文檔
2飞主、http協(xié)議的知識(shí)
3狮惜、對(duì)業(yè)務(wù)的熟悉程度
python做接口自動(dòng)化需要準(zhǔn)備的內(nèi)容
1.python3+第三方庫requests+pytest框架,需要的環(huán)境都要準(zhǔn)備好
? ? 選擇pytest這個(gè)框架的原因
? ? 1).非常容易上手既棺,入門簡(jiǎn)單讽挟,文檔豐富,文檔中有很多實(shí)例可以參考
? ? 2).能夠支持簡(jiǎn)單的單元測(cè)試和復(fù)雜的功能測(cè)試
? ? 3).支持參數(shù)化
? ? 4).執(zhí)行測(cè)試過程中可以將某些測(cè)試跳過丸冕,或者對(duì)某些預(yù)期失敗的case標(biāo)記成失敗
? ? 5).支持重復(fù)執(zhí)行失敗的case
? ? 6).支持運(yùn)行由nose, unittest編寫的測(cè)試case
? ? 7).具有很多第三方插件耽梅,并且可以自定義擴(kuò)展
? ? 8).方便的和持續(xù)集成工具集成
2.接口文檔的準(zhǔn)備
? ? 1).接口文檔至少包含四個(gè)部分1、請(qǐng)求的接口2胖烛、請(qǐng)求的方式3眼姐、請(qǐng)求的參數(shù)4、請(qǐng)求的返回結(jié)果
? ? 2).無接口文檔使用抓包工具獲取信息
? ? 3).接口測(cè)試包括接口自動(dòng)化和手工接口測(cè)試
3.開展接口自動(dòng)化
前提:明確開展的目的佩番,是要做單接口的監(jiān)控還是交易流程的監(jiān)控众旗,或者是在測(cè)試環(huán)境把所有接口都覆蓋,又或者接口自動(dòng)化測(cè)試是為了線上服務(wù)還是為了線下測(cè)試環(huán)境服務(wù)
例如:現(xiàn)在要做的是上單接口的監(jiān)控趟畏,監(jiān)控的目的只為了保障接口的可用性贡歧,證明這個(gè)接口是可用的就可以了。所以基于不同的目的設(shè)計(jì)接口測(cè)試是有不同的測(cè)試點(diǎn)的赋秀,比如單接口的監(jiān)控利朵,只需要設(shè)計(jì)正向的用例就可以了,證明接口是通的就可以了猎莲。因?yàn)榫€上做太多的測(cè)試容易產(chǎn)生特別多的臟數(shù)據(jù)绍弟。如果在測(cè)試環(huán)境要做每個(gè)接口的全覆蓋,那么每個(gè)接口的正向用例著洼,異常用例都是要覆蓋到的樟遣,如果用例特別多要根據(jù)功能的側(cè)重點(diǎn)來確定一些接口用例的范圍選擇一個(gè)最優(yōu)的集合做為接口用例的集合
注意點(diǎn):每個(gè)用例盡可能獨(dú)立執(zhí)行而叼,如果需要一些緩存數(shù)據(jù)要么寫死要么長(zhǎng)期有效的,避免一個(gè)接口的用例需要依賴其他接口豹悬,這樣做的原因是如果被依賴的接口失敗了可以避免依賴的接口執(zhí)行是失敗的
最后:環(huán)境葵陵、接口文檔、用例的設(shè)計(jì)的集合以及接口的目的都確定后可以開始寫了
4.實(shí)際接口自動(dòng)化代碼編寫說明
????首先根據(jù)接口文檔找到請(qǐng)求的url及接口地址加上host
????第二部分請(qǐng)求的參數(shù)
????第三部分如果有頭文件就把頭文件放進(jìn)來屿衅,如果沒有頭文件可以忽略
????第四發(fā)出請(qǐng)求
????第五對(duì)相應(yīng)結(jié)果進(jìn)行判斷
????相應(yīng)結(jié)果判斷關(guān)注的六部分:
? ? 1).返回的狀態(tài)碼檢查
? ? 2).接口返回的關(guān)鍵參數(shù)的檢查
? ? 3).接口完整性就是它的層級(jí)關(guān)系是否正確
? ? 4).參數(shù)的完整性
? ? 5).特殊參數(shù)的檢查
? ? 6).功能性的檢查
總結(jié)
首先環(huán)境的準(zhǔn)備埃难,其次做接口自動(dòng)化的目的,基于目的設(shè)計(jì)測(cè)試用例涤久,設(shè)計(jì)完測(cè)試用例確定返回結(jié)果驗(yàn)證的程度涡尘,這些都確定好后按照pytest模版寫用例就可以了。
3.Jenkins持續(xù)集成
首先準(zhǔn)備好Jenkins持續(xù)集成的服務(wù)器响迂,然后去創(chuàng)建一個(gè)任務(wù)考抄,創(chuàng)建完任務(wù)去配置必要的信息例如git源,然后執(zhí)行的命令構(gòu)建后的一些操作蔗彤,例如發(fā)郵件等等
創(chuàng)建任務(wù)的時(shí)候如果用git源川梅,用ssh這種方式的話,需要去設(shè)sshkey然遏,然后是設(shè)置這個(gè)任務(wù)的執(zhí)行頻率贫途,一般是有幾種方式:第一種周期進(jìn)行項(xiàng)目構(gòu)建,它不關(guān)注你代碼源是否是有變化的待侵,它是按照設(shè)定的時(shí)間定期去執(zhí)行設(shè)定的任務(wù)丢早,第二種是icm這種形式,它是定時(shí)檢查源代碼的變更秧倾,如果源代碼有變更怨酝,它就是執(zhí)行設(shè)定的任務(wù),如果源代碼沒有變更則不執(zhí)行那先,還有其它的方式农猬,都要根據(jù)實(shí)際需求去選擇對(duì)應(yīng)的方式。