HTTP 接口自動(dòng)化測(cè)試方案

HTTP 接口自動(dòng)化測(cè)試方案

<a name="toQ8V"></a>

測(cè)試人員的角色

  • 手工測(cè)試人員
    • 執(zhí)行
      • 讀懂測(cè)試用例
      • 明白業(yè)務(wù)邏輯
      • 準(zhǔn)備測(cè)試數(shù)據(jù)
      • 比較執(zhí)行結(jié)果
    • 持續(xù)執(zhí)行
      • 選擇持續(xù)集成的工具
      • 讓測(cè)試定時(shí)執(zhí)行
    • 關(guān)注點(diǎn):數(shù)據(jù)和對(duì)比
  • 中高級(jí)自動(dòng)化測(cè)試人員
    • 編寫(xiě)測(cè)試腳本
      • 腳本都是線性的
        image.png
        image.png
      • 編寫(xiě) JMeter 測(cè)試腳本
        • 線性的
        • 準(zhǔn)備數(shù)據(jù)
        • 請(qǐng)求接口
        • 解析響應(yīng)
        • 進(jìn)行斷言
        • 查看結(jié)果
      • 編寫(xiě) Postman 測(cè)試腳本
        • 線性的
        • 準(zhǔn)備數(shù)據(jù)
        • 請(qǐng)求接口
        • 解析響應(yīng)
        • 進(jìn)行斷言
        • 查看結(jié)果
      • 編寫(xiě) Python 測(cè)試腳本
        • 有測(cè)試的概念
          • 代碼可以直接告訴你:結(jié)果
          • 需要用“單元測(cè)試框架”或者 BDD(behavior driven development) 測(cè)試框架
            • 后者,沒(méi)有人用 Python 做 BDD,大部分用的 Java 的 Cucumber
            • 只考慮前者。
            • 只考慮 Python
            • 選擇有兩個(gè):pytest 和 unittest
              • unittest:安裝完 Python,就自帶了
              • pytest:安裝完 Python贮缕,沒(méi)有帶,需要 pip install pytest 才能有
                • 優(yōu)勢(shì):參數(shù)化,報(bào)告好看
          • 單元測(cè)試框架帶來(lái)的好處
            • 斷言:讓程序去判斷是不是通過(guò)胆胰,并且告訴執(zhí)行者
        • 無(wú)測(cè)試的概念
          • 用 Python 去執(zhí)行 HTTP 請(qǐng)求
          • 用 目測(cè) HTTP 響應(yīng)的結(jié)果
          • 栗子
            image.png
            image.png
          • 代碼
            image.png
          • 什么叫做無(wú)測(cè)試?代碼不會(huì)告訴你 “PASS”或者 “FAIL”刻获,必須目測(cè)
            • 看控制臺(tái)的輸出
            • 通過(guò)抓取通信蜀涨,看通信的內(nèi)容
    • 【抽離業(yè)務(wù)】編寫(xiě)業(yè)務(wù)代碼
      • 適用于:有測(cè)試分層的概念的方案
        image.png
        image.png
      • 分層
        image.png
        image.png
        • 測(cè)試腳本有調(diào)用,并不是所有的工作都在這一個(gè)腳本中完成
          • 主要:場(chǎng)景方法:構(gòu)建請(qǐng)求蝎毡,解析響應(yīng)(相當(dāng)于在手工界面測(cè)試的:輸入數(shù)據(jù)和點(diǎn)擊提交)
          • 次要:核心方法:做支持的厚柳,讀文件(CSV,Excel沐兵,Json别垮,Yaml……),字符處理
      • 場(chǎng)景方法
        • 依靠 業(yè)務(wù)類(lèi)
        • 連接 測(cè)試腳本 和 業(yè)務(wù)類(lèi)
        • 中間層扎谎,方便測(cè)試腳本的使用碳想,降低使用難度烧董,提高效率,節(jié)省時(shí)間
          • 栗子
            • 教會(huì)10個(gè)手工測(cè)試/初級(jí)自動(dòng)化測(cè)試:在測(cè)試腳本使用業(yè)務(wù)類(lèi):5 天
            • 教會(huì)10個(gè)手工測(cè)試/初級(jí)自動(dòng)化測(cè)試:在測(cè)試腳本使用場(chǎng)景方法:1 + 1 天
        • 寫(xiě) 業(yè)務(wù)類(lèi) 的人移袍,來(lái)寫(xiě)場(chǎng)景方法
      • 業(yè)務(wù)類(lèi)
        • 構(gòu)建請(qǐng)求
        • 解析響應(yīng)
        • 具體的實(shí)現(xiàn)解藻,交給“核心層”來(lái)做
    • 關(guān)注的點(diǎn):業(yè)務(wù),業(yè)務(wù)邏輯葡盗,是功能本身
  • 測(cè)試開(kāi)發(fā)/高級(jí)自動(dòng)化測(cè)試人員
    • 負(fù)責(zé)“核心層”
    • 真正的操作“核心工具”的人
    • 在 Python 中螟左,核心工具 = 各種第三方庫(kù)
    • 庫(kù) = 無(wú)數(shù)個(gè) “類(lèi)”
    • 類(lèi),python 編程的術(shù)語(yǔ)觅够,面向?qū)ο缶幊痰幕締卧?/li>

<br />

<a name="KHSXk"></a>

測(cè)試工具的選擇

  • JMeter:線性工具胶背,不用分層,一個(gè)人做所有
  • Postman:比 JMeter 還線性喘先,一個(gè)人做所有
  • Python:
    • 可以線性
    • 也可以分層
    • 關(guān)鍵點(diǎn):是否做業(yè)務(wù)類(lèi)(抽離業(yè)務(wù)類(lèi))

<br />

<a name="iWzn3"></a>

Python 的自動(dòng)化測(cè)試方案

  • 線性
    • 寫(xiě)多少個(gè) Python 的文件(*.py)
    • 有沒(méi)有涉及到“類(lèi)”
    • 有沒(méi)有涉及到測(cè)試:脫離目測(cè)對(duì)比钳吟,程序沒(méi)有直接告訴結(jié)果
    • 有沒(méi)有在文件中寫(xiě) “方法”
    • 有沒(méi)有編寫(xiě) 非 Python 的文件
    • 每個(gè)文件分別是什么
    • 要如何執(zhí)行來(lái)看測(cè)試結(jié)果
  • 分層
    • 一定寫(xiě)了“業(yè)務(wù)類(lèi)”或者“業(yè)務(wù)模塊”(沒(méi)有用面向?qū)ο螅昧嗣嫦蜻^(guò)程)
    • 直接執(zhí)行測(cè)試的數(shù)據(jù)是哪些文件窘拯?
    • 數(shù)據(jù)本身是關(guān)系型(一行一行的表格)红且?還是借助了“鍵值對(duì)”的方式?
    • 數(shù)據(jù)是如何使用的涤姊?不要用代碼來(lái)描述
    • 數(shù)據(jù)的使用是如何在用例腳本中實(shí)現(xiàn)的暇番?
    • 用例腳本是否用到了“類(lèi)”
    • 用例腳本如果用到了“類(lèi)”,是否是直接寫(xiě)的類(lèi)思喊,還是集成了別的“類(lèi)”
    • 如果用例腳本需要繼承“類(lèi)”壁酬,被繼承的類(lèi)是如何設(shè)計(jì)的(可以用類(lèi)圖表示),也可以直接描述恨课。
    • 用例腳本本身如果是個(gè)類(lèi)舆乔,這個(gè)類(lèi)是如何設(shè)計(jì)的(可以用類(lèi)圖表示),也可以直接描述剂公。
    • 如果用例腳本不是個(gè)類(lèi)希俩,那么“方法”是如何設(shè)計(jì)的,有哪些方法诬留,分別是什么用斜纪?
    • 用例腳本中需要調(diào)用的場(chǎng)景方法是怎么樣設(shè)計(jì)的,輸入?yún)?shù)文兑、輸出返回值?
    • 用例腳本中需要調(diào)用的核心方法是哪些腺劣?
    • 從以下開(kāi)始是高級(jí)水平:

  • 場(chǎng)景方法的步驟有哪些绿贞,具體的步驟描述
  • 場(chǎng)景方法顯然用到了業(yè)務(wù)類(lèi),業(yè)務(wù)類(lèi)是否需要繼承橘原?
  • 如果業(yè)務(wù)類(lèi)需要繼承別的“類(lèi)”籍铁,請(qǐng)?jiān)O(shè)計(jì)這個(gè)或者這些被繼承的“類(lèi)”(類(lèi)圖或者描述)
  • 業(yè)務(wù)類(lèi)本身要有什么設(shè)計(jì)(類(lèi)圖或者描述)
  • 業(yè)務(wù)類(lèi)本身是否需要?jiǎng)e的類(lèi)做支持涡上,非繼承方式的支持,而是調(diào)用(實(shí)例化)等支持拒名,具體有哪些吩愧?
  • HTTP 的請(qǐng)求究竟是怎么發(fā)出去的?描述數(shù)據(jù)輸入到 Python 的第三方庫(kù)的使用
  • HTTP 的響應(yīng)在 Python 的第三方庫(kù)中增显,是什么樣的結(jié)構(gòu)(類(lèi)雁佳,或者普通結(jié)構(gòu) list、dict等)
  • 如何需要把第三方庫(kù)進(jìn)行一個(gè)封裝同云,請(qǐng)?jiān)O(shè)計(jì)一個(gè)封裝后的類(lèi)(類(lèi)圖或者描述)

<a name="gISES"></a>

Python 接口自動(dòng)化測(cè)試的代碼實(shí)現(xiàn)

  • 線性
  • 分層
  • 對(duì)象:Ping++的真實(shí)的接口
    • 支付對(duì)象的創(chuàng)建
    • 支付對(duì)象的撤銷(xiāo)
    • 支付對(duì)象的查詢(xún)
    • 支付對(duì)象的列表
    • 用戶(hù)
      • 新注冊(cè)的(已簽約的試用版用戶(hù))
      • 未簽約的無(wú)限次使用的用戶(hù)糖权,需要RSA私鑰
        • 賬號(hào):liutingli@cdtest.pro
        • 密碼:Welcome123!
        • 開(kāi)發(fā)密鑰:sk_test_CGmn58bPGizDqvDCeTCK8Oi5
        • RSA私鑰:

-----BEGIN PUBLIC KEY-----<br />MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4JmKJNk4w6qpV/vNF0HC<br />Eyg55CPoniRlRUKyKHuc9FXS1ckNo3gLONVJXT9i54+GB3bZWX0KXFvlMbXAKwUd<br />wdIIZcifRqpGDhJopMosCFpGXz+trnq8hWaJvlgzx4v+mAbDuy+r1Y1FEex9hPUN<br />zP0zTy86jyu+ZTmwJXJQZVbuNxvMC7tooGAVtiIRqJK5hygcXd4BFLR+igLkzMnG<br />9NGkg3Xsc2hLqpAwpUauXQdAvz7Rgfe9cEKfN2W+mvXA6DRcCS58qrjzmJw4WOZJ<br />M1cARi9iCdZy5wehIAJ4oHIA3R2lj+IFoyB9UQTgNmKK6bCNZn8+ZsjakfbGL/k7<br />8QIDAQAB<br />-----END PUBLIC KEY-----

  - 請(qǐng)求次數(shù):500/月
  - APP_ID: app_rPejT898avPSnDaL
- 未簽約的無(wú)限次試用的用戶(hù),不需要RSA私鑰(可以用Postman來(lái)測(cè)試)
  - 賬號(hào):liu.tingli@qq.com
  - 密碼:
  - 舊的密鑰(無(wú)效):sk_test_aX50eTPuPaH8fzXDaTWzvnr1
  - 新的密鑰(有效):sk_test_5mvfXDq9G0C8vrrrjH8aXvXH
  - RSA私鑰:無(wú)需提供
  - 請(qǐng)求次數(shù):無(wú)限
  - APP_ID:app_HGafHSLyDm9KT0OO
  - 管理平臺(tái):[https://dashboard2.pingxx.com/app/app_HGafHSLyDm9KT0OO/app-overview](https://dashboard2.pingxx.com/app/app_HGafHSLyDm9KT0OO/app-overview)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炸站,一起剝皮案震驚了整個(gè)濱河市星澳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旱易,老刑警劉巖禁偎,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阀坏,居然都是意外死亡如暖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)全释,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)装处,“玉大人,你說(shuō)我怎么就攤上這事浸船⊥ǎ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵李命,是天一觀的道長(zhǎng)登淘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)封字,這世上最難降的妖魔是什么黔州? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮阔籽,結(jié)果婚禮上流妻,老公的妹妹穿的比我還像新娘。我一直安慰自己笆制,他們只是感情好绅这,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著在辆,像睡著了一般证薇。 火紅的嫁衣襯著肌膚如雪度苔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天浑度,我揣著相機(jī)與錄音寇窑,去河邊找鬼。 笑死箩张,一個(gè)胖子當(dāng)著我的面吹牛甩骏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伏钠,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼横漏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了熟掂?” 一聲冷哼從身側(cè)響起缎浇,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赴肚,沒(méi)想到半個(gè)月后素跺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誉券,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年指厌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踊跟。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踩验,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出商玫,到底是詐尸還是另有隱情箕憾,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布拳昌,位于F島的核電站袭异,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏炬藤。R本人自食惡果不足惜御铃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沈矿。 院中可真熱鬧上真,春花似錦、人聲如沸羹膳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)溜徙。三九已至湃缎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蠢壹,已是汗流浹背嗓违。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留图贸,地道東北人蹂季。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像疏日,于是被迫代替她去往敵國(guó)和親偿洁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容