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

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

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

測試人員的角色

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

<br />

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

測試工具的選擇

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

<br />

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

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

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

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

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

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

  • 線性
  • 分層
  • 對(duì)象:Ping++的真實(shí)的接口
    • 支付對(duì)象的創(chuàng)建
    • 支付對(duì)象的撤銷
    • 支付對(duì)象的查詢
    • 支付對(duì)象的列表
    • 用戶
      • 新注冊(cè)的(已簽約的試用版用戶)
      • 未簽約的無限次使用的用戶,需要RSA私鑰
        • 賬號(hào):liutingli@cdtest.pro
        • 密碼:Welcome123!
        • 開發(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
- 未簽約的無限次試用的用戶,不需要RSA私鑰(可以用Postman來測試)
  - 賬號(hào):liu.tingli@qq.com
  - 密碼:
  - 舊的密鑰(無效):sk_test_aX50eTPuPaH8fzXDaTWzvnr1
  - 新的密鑰(有效):sk_test_5mvfXDq9G0C8vrrrjH8aXvXH
  - RSA私鑰:無需提供
  - 請(qǐng)求次數(shù):無限
  - 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)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

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